166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
# File 'lib/BOAST/DataTypes.rb', line 166
def decl
return "integer(kind=#{@size})" if BOAST::get_lang == FORTRAN
if BOAST::get_lang == C then
if @vector_length == 1 then
s = ""
s += "u" if not @signed
return s+"int#{8*@size}_t"
elsif @vector_length > 1 then
if BOAST::get_architecture == BOAST::X86 then
return "__m#{@total_size*8}#{@total_size*8>64 ? "i" : ""}"
elsif BOAST::get_architecture == BOAST::ARM then
raise "Unsupported vector length in NEON: #{@total_size*8} (#{@size} x 8 x #{@vector_length})!" if @total_size * 8 != 64 and @total_size * 8 != 128
return "#{ @signed ? "" : "u"}int#{@size*8}x#{@vector_length}_t"
else
raise "Unsupported architecture!"
end
end
elsif BOAST::get_lang == CL then
char=""
char += "u" if not @signed
case @size
when 1
char += "char"
when 2
char += "short"
when 4
char += "int"
when 8
char += "long"
else
raise "Unsupported integer size!"
end
if @vector_length > 1 then
char += "#{@vector_length}"
end
return char
elsif BOAST::get_lang == CUDA then
if @vector_length > 1 then
char=""
char += "u" if not @signed
case @size
when 1
char += "char"
when 2
char += "short"
when 4
char += "int"
when 8
char += "longlong"
else
raise "Unsupported integer size!"
end
return char + "#{@vector_length}"
else
char = ""
char += "unsigned " if not @signed
return char += "char" if @size==1
return char += "short" if @size==2
return char += "int" if @size==4
return char += "long long" if @size==8
end
end
end
|