1 //===- IntrinsicsNVVM.td - Defines NVVM intrinsics ---------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines all of the NVVM-specific intrinsics for use with NVPTX.
12 //===----------------------------------------------------------------------===//
14 def llvm_anyi64ptr_ty : LLVMAnyPointerType<llvm_i64_ty>; // (space)i64*
20 def int_nvvm_clz_i : GCCBuiltin<"__nvvm_clz_i">,
21 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
22 def int_nvvm_clz_ll : GCCBuiltin<"__nvvm_clz_ll">,
23 Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem]>;
25 def int_nvvm_popc_i : GCCBuiltin<"__nvvm_popc_i">,
26 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
27 def int_nvvm_popc_ll : GCCBuiltin<"__nvvm_popc_ll">,
28 Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem]>;
30 def int_nvvm_prmt : GCCBuiltin<"__nvvm_prmt">,
31 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
32 [IntrNoMem, Commutative]>;
38 def int_nvvm_min_i : GCCBuiltin<"__nvvm_min_i">,
39 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
40 [IntrNoMem, Commutative]>;
41 def int_nvvm_min_ui : GCCBuiltin<"__nvvm_min_ui">,
42 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
43 [IntrNoMem, Commutative]>;
45 def int_nvvm_min_ll : GCCBuiltin<"__nvvm_min_ll">,
46 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
47 [IntrNoMem, Commutative]>;
48 def int_nvvm_min_ull : GCCBuiltin<"__nvvm_min_ull">,
49 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
50 [IntrNoMem, Commutative]>;
52 def int_nvvm_max_i : GCCBuiltin<"__nvvm_max_i">,
53 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
54 [IntrNoMem, Commutative]>;
55 def int_nvvm_max_ui : GCCBuiltin<"__nvvm_max_ui">,
56 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
57 [IntrNoMem, Commutative]>;
59 def int_nvvm_max_ll : GCCBuiltin<"__nvvm_max_ll">,
60 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
61 [IntrNoMem, Commutative]>;
62 def int_nvvm_max_ull : GCCBuiltin<"__nvvm_max_ull">,
63 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
64 [IntrNoMem, Commutative]>;
66 def int_nvvm_fmin_f : GCCBuiltin<"__nvvm_fmin_f">,
67 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
68 [IntrNoMem, Commutative]>;
69 def int_nvvm_fmin_ftz_f : GCCBuiltin<"__nvvm_fmin_ftz_f">,
70 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
71 [IntrNoMem, Commutative]>;
73 def int_nvvm_fmax_f : GCCBuiltin<"__nvvm_fmax_f">,
74 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty]
75 , [IntrNoMem, Commutative]>;
76 def int_nvvm_fmax_ftz_f : GCCBuiltin<"__nvvm_fmax_ftz_f">,
77 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
78 [IntrNoMem, Commutative]>;
80 def int_nvvm_fmin_d : GCCBuiltin<"__nvvm_fmin_d">,
81 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
82 [IntrNoMem, Commutative]>;
83 def int_nvvm_fmax_d : GCCBuiltin<"__nvvm_fmax_d">,
84 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
85 [IntrNoMem, Commutative]>;
91 def int_nvvm_mulhi_i : GCCBuiltin<"__nvvm_mulhi_i">,
92 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
93 [IntrNoMem, Commutative]>;
94 def int_nvvm_mulhi_ui : GCCBuiltin<"__nvvm_mulhi_ui">,
95 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
96 [IntrNoMem, Commutative]>;
98 def int_nvvm_mulhi_ll : GCCBuiltin<"__nvvm_mulhi_ll">,
99 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
100 [IntrNoMem, Commutative]>;
101 def int_nvvm_mulhi_ull : GCCBuiltin<"__nvvm_mulhi_ull">,
102 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
103 [IntrNoMem, Commutative]>;
105 def int_nvvm_mul_rn_ftz_f : GCCBuiltin<"__nvvm_mul_rn_ftz_f">,
106 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
107 [IntrNoMem, Commutative]>;
108 def int_nvvm_mul_rn_f : GCCBuiltin<"__nvvm_mul_rn_f">,
109 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
110 [IntrNoMem, Commutative]>;
111 def int_nvvm_mul_rz_ftz_f : GCCBuiltin<"__nvvm_mul_rz_ftz_f">,
112 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
113 [IntrNoMem, Commutative]>;
114 def int_nvvm_mul_rz_f : GCCBuiltin<"__nvvm_mul_rz_f">,
115 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
116 [IntrNoMem, Commutative]>;
117 def int_nvvm_mul_rm_ftz_f : GCCBuiltin<"__nvvm_mul_rm_ftz_f">,
118 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
119 [IntrNoMem, Commutative]>;
120 def int_nvvm_mul_rm_f : GCCBuiltin<"__nvvm_mul_rm_f">,
121 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
122 [IntrNoMem, Commutative]>;
123 def int_nvvm_mul_rp_ftz_f : GCCBuiltin<"__nvvm_mul_rp_ftz_f">,
124 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
125 [IntrNoMem, Commutative]>;
126 def int_nvvm_mul_rp_f : GCCBuiltin<"__nvvm_mul_rp_f">,
127 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
128 [IntrNoMem, Commutative]>;
130 def int_nvvm_mul_rn_d : GCCBuiltin<"__nvvm_mul_rn_d">,
131 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
132 [IntrNoMem, Commutative]>;
133 def int_nvvm_mul_rz_d : GCCBuiltin<"__nvvm_mul_rz_d">,
134 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
135 [IntrNoMem, Commutative]>;
136 def int_nvvm_mul_rm_d : GCCBuiltin<"__nvvm_mul_rm_d">,
137 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
138 [IntrNoMem, Commutative]>;
139 def int_nvvm_mul_rp_d : GCCBuiltin<"__nvvm_mul_rp_d">,
140 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
141 [IntrNoMem, Commutative]>;
143 def int_nvvm_mul24_i : GCCBuiltin<"__nvvm_mul24_i">,
144 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
145 [IntrNoMem, Commutative]>;
146 def int_nvvm_mul24_ui : GCCBuiltin<"__nvvm_mul24_ui">,
147 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
148 [IntrNoMem, Commutative]>;
154 def int_nvvm_div_approx_ftz_f : GCCBuiltin<"__nvvm_div_approx_ftz_f">,
155 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
156 [IntrNoMem, Commutative]>;
157 def int_nvvm_div_approx_f : GCCBuiltin<"__nvvm_div_approx_f">,
158 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
159 [IntrNoMem, Commutative]>;
161 def int_nvvm_div_rn_ftz_f : GCCBuiltin<"__nvvm_div_rn_ftz_f">,
162 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
163 [IntrNoMem, Commutative]>;
164 def int_nvvm_div_rn_f : GCCBuiltin<"__nvvm_div_rn_f">,
165 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
166 [IntrNoMem, Commutative]>;
168 def int_nvvm_div_rz_ftz_f : GCCBuiltin<"__nvvm_div_rz_ftz_f">,
169 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
170 [IntrNoMem, Commutative]>;
171 def int_nvvm_div_rz_f : GCCBuiltin<"__nvvm_div_rz_f">,
172 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
173 [IntrNoMem, Commutative]>;
175 def int_nvvm_div_rm_ftz_f : GCCBuiltin<"__nvvm_div_rm_ftz_f">,
176 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
177 [IntrNoMem, Commutative]>;
178 def int_nvvm_div_rm_f : GCCBuiltin<"__nvvm_div_rm_f">,
179 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
180 [IntrNoMem, Commutative]>;
182 def int_nvvm_div_rp_ftz_f : GCCBuiltin<"__nvvm_div_rp_ftz_f">,
183 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
184 [IntrNoMem, Commutative]>;
185 def int_nvvm_div_rp_f : GCCBuiltin<"__nvvm_div_rp_f">,
186 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
187 [IntrNoMem, Commutative]>;
189 def int_nvvm_div_rn_d : GCCBuiltin<"__nvvm_div_rn_d">,
190 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
191 [IntrNoMem, Commutative]>;
192 def int_nvvm_div_rz_d : GCCBuiltin<"__nvvm_div_rz_d">,
193 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
194 [IntrNoMem, Commutative]>;
195 def int_nvvm_div_rm_d : GCCBuiltin<"__nvvm_div_rm_d">,
196 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
197 [IntrNoMem, Commutative]>;
198 def int_nvvm_div_rp_d : GCCBuiltin<"__nvvm_div_rp_d">,
199 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
200 [IntrNoMem, Commutative]>;
206 def int_nvvm_brev32 : GCCBuiltin<"__nvvm_brev32">,
207 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
208 def int_nvvm_brev64 : GCCBuiltin<"__nvvm_brev64">,
209 Intrinsic<[llvm_i64_ty], [llvm_i64_ty], [IntrNoMem]>;
215 def int_nvvm_sad_i : GCCBuiltin<"__nvvm_sad_i">,
216 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
217 [IntrNoMem, Commutative]>;
218 def int_nvvm_sad_ui : GCCBuiltin<"__nvvm_sad_ui">,
219 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
220 [IntrNoMem, Commutative]>;
226 def int_nvvm_floor_ftz_f : GCCBuiltin<"__nvvm_floor_ftz_f">,
227 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
228 def int_nvvm_floor_f : GCCBuiltin<"__nvvm_floor_f">,
229 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
230 def int_nvvm_floor_d : GCCBuiltin<"__nvvm_floor_d">,
231 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
233 def int_nvvm_ceil_ftz_f : GCCBuiltin<"__nvvm_ceil_ftz_f">,
234 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
235 def int_nvvm_ceil_f : GCCBuiltin<"__nvvm_ceil_f">,
236 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
237 def int_nvvm_ceil_d : GCCBuiltin<"__nvvm_ceil_d">,
238 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
244 def int_nvvm_abs_i : GCCBuiltin<"__nvvm_abs_i">,
245 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
246 def int_nvvm_abs_ll : GCCBuiltin<"__nvvm_abs_ll">,
247 Intrinsic<[llvm_i64_ty], [llvm_i64_ty], [IntrNoMem]>;
249 def int_nvvm_fabs_ftz_f : GCCBuiltin<"__nvvm_fabs_ftz_f">,
250 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
251 def int_nvvm_fabs_f : GCCBuiltin<"__nvvm_fabs_f">,
252 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
254 def int_nvvm_fabs_d : GCCBuiltin<"__nvvm_fabs_d">,
255 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
261 def int_nvvm_round_ftz_f : GCCBuiltin<"__nvvm_round_ftz_f">,
262 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
263 def int_nvvm_round_f : GCCBuiltin<"__nvvm_round_f">,
264 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
266 def int_nvvm_round_d : GCCBuiltin<"__nvvm_round_d">,
267 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
273 def int_nvvm_trunc_ftz_f : GCCBuiltin<"__nvvm_trunc_ftz_f">,
274 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
275 def int_nvvm_trunc_f : GCCBuiltin<"__nvvm_trunc_f">,
276 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
278 def int_nvvm_trunc_d : GCCBuiltin<"__nvvm_trunc_d">,
279 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
285 def int_nvvm_saturate_ftz_f : GCCBuiltin<"__nvvm_saturate_ftz_f">,
286 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
287 def int_nvvm_saturate_f : GCCBuiltin<"__nvvm_saturate_f">,
288 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
290 def int_nvvm_saturate_d : GCCBuiltin<"__nvvm_saturate_d">,
291 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
297 def int_nvvm_ex2_approx_ftz_f : GCCBuiltin<"__nvvm_ex2_approx_ftz_f">,
298 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
299 def int_nvvm_ex2_approx_f : GCCBuiltin<"__nvvm_ex2_approx_f">,
300 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
301 def int_nvvm_ex2_approx_d : GCCBuiltin<"__nvvm_ex2_approx_d">,
302 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
304 def int_nvvm_lg2_approx_ftz_f : GCCBuiltin<"__nvvm_lg2_approx_ftz_f">,
305 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
306 def int_nvvm_lg2_approx_f : GCCBuiltin<"__nvvm_lg2_approx_f">,
307 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
308 def int_nvvm_lg2_approx_d : GCCBuiltin<"__nvvm_lg2_approx_d">,
309 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
315 def int_nvvm_sin_approx_ftz_f : GCCBuiltin<"__nvvm_sin_approx_ftz_f">,
316 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
317 def int_nvvm_sin_approx_f : GCCBuiltin<"__nvvm_sin_approx_f">,
318 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
320 def int_nvvm_cos_approx_ftz_f : GCCBuiltin<"__nvvm_cos_approx_ftz_f">,
321 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
322 def int_nvvm_cos_approx_f : GCCBuiltin<"__nvvm_cos_approx_f">,
323 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
329 def int_nvvm_fma_rn_ftz_f : GCCBuiltin<"__nvvm_fma_rn_ftz_f">,
330 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
331 [IntrNoMem, Commutative]>;
332 def int_nvvm_fma_rn_f : GCCBuiltin<"__nvvm_fma_rn_f">,
333 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
334 [IntrNoMem, Commutative]>;
335 def int_nvvm_fma_rz_ftz_f : GCCBuiltin<"__nvvm_fma_rz_ftz_f">,
336 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
337 [IntrNoMem, Commutative]>;
338 def int_nvvm_fma_rz_f : GCCBuiltin<"__nvvm_fma_rz_f">,
339 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
340 [IntrNoMem, Commutative]>;
341 def int_nvvm_fma_rm_ftz_f : GCCBuiltin<"__nvvm_fma_rm_ftz_f">,
342 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
343 [IntrNoMem, Commutative]>;
344 def int_nvvm_fma_rm_f : GCCBuiltin<"__nvvm_fma_rm_f">,
345 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
346 [IntrNoMem, Commutative]>;
347 def int_nvvm_fma_rp_ftz_f : GCCBuiltin<"__nvvm_fma_rp_ftz_f">,
348 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
349 [IntrNoMem, Commutative]>;
350 def int_nvvm_fma_rp_f : GCCBuiltin<"__nvvm_fma_rp_f">,
351 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
352 [IntrNoMem, Commutative]>;
354 def int_nvvm_fma_rn_d : GCCBuiltin<"__nvvm_fma_rn_d">,
355 Intrinsic<[llvm_double_ty],
356 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
357 [IntrNoMem, Commutative]>;
358 def int_nvvm_fma_rz_d : GCCBuiltin<"__nvvm_fma_rz_d">,
359 Intrinsic<[llvm_double_ty],
360 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
361 [IntrNoMem, Commutative]>;
362 def int_nvvm_fma_rm_d : GCCBuiltin<"__nvvm_fma_rm_d">,
363 Intrinsic<[llvm_double_ty],
364 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
365 [IntrNoMem, Commutative]>;
366 def int_nvvm_fma_rp_d : GCCBuiltin<"__nvvm_fma_rp_d">,
367 Intrinsic<[llvm_double_ty],
368 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
369 [IntrNoMem, Commutative]>;
375 def int_nvvm_rcp_rn_ftz_f : GCCBuiltin<"__nvvm_rcp_rn_ftz_f">,
376 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
377 def int_nvvm_rcp_rn_f : GCCBuiltin<"__nvvm_rcp_rn_f">,
378 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
379 def int_nvvm_rcp_rz_ftz_f : GCCBuiltin<"__nvvm_rcp_rz_ftz_f">,
380 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
381 def int_nvvm_rcp_rz_f : GCCBuiltin<"__nvvm_rcp_rz_f">,
382 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
383 def int_nvvm_rcp_rm_ftz_f : GCCBuiltin<"__nvvm_rcp_rm_ftz_f">,
384 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
385 def int_nvvm_rcp_rm_f : GCCBuiltin<"__nvvm_rcp_rm_f">,
386 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
387 def int_nvvm_rcp_rp_ftz_f : GCCBuiltin<"__nvvm_rcp_rp_ftz_f">,
388 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
389 def int_nvvm_rcp_rp_f : GCCBuiltin<"__nvvm_rcp_rp_f">,
390 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
392 def int_nvvm_rcp_rn_d : GCCBuiltin<"__nvvm_rcp_rn_d">,
393 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
394 def int_nvvm_rcp_rz_d : GCCBuiltin<"__nvvm_rcp_rz_d">,
395 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
396 def int_nvvm_rcp_rm_d : GCCBuiltin<"__nvvm_rcp_rm_d">,
397 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
398 def int_nvvm_rcp_rp_d : GCCBuiltin<"__nvvm_rcp_rp_d">,
399 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
401 def int_nvvm_rcp_approx_ftz_d : GCCBuiltin<"__nvvm_rcp_approx_ftz_d">,
402 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
408 def int_nvvm_sqrt_f : GCCBuiltin<"__nvvm_sqrt_f">,
409 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
410 def int_nvvm_sqrt_rn_ftz_f : GCCBuiltin<"__nvvm_sqrt_rn_ftz_f">,
411 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
412 def int_nvvm_sqrt_rn_f : GCCBuiltin<"__nvvm_sqrt_rn_f">,
413 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
414 def int_nvvm_sqrt_rz_ftz_f : GCCBuiltin<"__nvvm_sqrt_rz_ftz_f">,
415 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
416 def int_nvvm_sqrt_rz_f : GCCBuiltin<"__nvvm_sqrt_rz_f">,
417 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
418 def int_nvvm_sqrt_rm_ftz_f : GCCBuiltin<"__nvvm_sqrt_rm_ftz_f">,
419 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
420 def int_nvvm_sqrt_rm_f : GCCBuiltin<"__nvvm_sqrt_rm_f">,
421 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
422 def int_nvvm_sqrt_rp_ftz_f : GCCBuiltin<"__nvvm_sqrt_rp_ftz_f">,
423 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
424 def int_nvvm_sqrt_rp_f : GCCBuiltin<"__nvvm_sqrt_rp_f">,
425 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
426 def int_nvvm_sqrt_approx_ftz_f : GCCBuiltin<"__nvvm_sqrt_approx_ftz_f">,
427 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
428 def int_nvvm_sqrt_approx_f : GCCBuiltin<"__nvvm_sqrt_approx_f">,
429 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
431 def int_nvvm_sqrt_rn_d : GCCBuiltin<"__nvvm_sqrt_rn_d">,
432 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
433 def int_nvvm_sqrt_rz_d : GCCBuiltin<"__nvvm_sqrt_rz_d">,
434 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
435 def int_nvvm_sqrt_rm_d : GCCBuiltin<"__nvvm_sqrt_rm_d">,
436 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
437 def int_nvvm_sqrt_rp_d : GCCBuiltin<"__nvvm_sqrt_rp_d">,
438 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
444 def int_nvvm_rsqrt_approx_ftz_f : GCCBuiltin<"__nvvm_rsqrt_approx_ftz_f">,
445 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
446 def int_nvvm_rsqrt_approx_f : GCCBuiltin<"__nvvm_rsqrt_approx_f">,
447 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
448 def int_nvvm_rsqrt_approx_d : GCCBuiltin<"__nvvm_rsqrt_approx_d">,
449 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
455 def int_nvvm_add_rn_ftz_f : GCCBuiltin<"__nvvm_add_rn_ftz_f">,
456 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
457 [IntrNoMem, Commutative]>;
458 def int_nvvm_add_rn_f : GCCBuiltin<"__nvvm_add_rn_f">,
459 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
460 [IntrNoMem, Commutative]>;
461 def int_nvvm_add_rz_ftz_f : GCCBuiltin<"__nvvm_add_rz_ftz_f">,
462 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
463 [IntrNoMem, Commutative]>;
464 def int_nvvm_add_rz_f : GCCBuiltin<"__nvvm_add_rz_f">,
465 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
466 [IntrNoMem, Commutative]>;
467 def int_nvvm_add_rm_ftz_f : GCCBuiltin<"__nvvm_add_rm_ftz_f">,
468 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
469 [IntrNoMem, Commutative]>;
470 def int_nvvm_add_rm_f : GCCBuiltin<"__nvvm_add_rm_f">,
471 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
472 [IntrNoMem, Commutative]>;
473 def int_nvvm_add_rp_ftz_f : GCCBuiltin<"__nvvm_add_rp_ftz_f">,
474 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
475 [IntrNoMem, Commutative]>;
476 def int_nvvm_add_rp_f : GCCBuiltin<"__nvvm_add_rp_f">,
477 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
478 [IntrNoMem, Commutative]>;
480 def int_nvvm_add_rn_d : GCCBuiltin<"__nvvm_add_rn_d">,
481 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
482 [IntrNoMem, Commutative]>;
483 def int_nvvm_add_rz_d : GCCBuiltin<"__nvvm_add_rz_d">,
484 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
485 [IntrNoMem, Commutative]>;
486 def int_nvvm_add_rm_d : GCCBuiltin<"__nvvm_add_rm_d">,
487 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
488 [IntrNoMem, Commutative]>;
489 def int_nvvm_add_rp_d : GCCBuiltin<"__nvvm_add_rp_d">,
490 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
491 [IntrNoMem, Commutative]>;
497 def int_nvvm_d2f_rn_ftz : GCCBuiltin<"__nvvm_d2f_rn_ftz">,
498 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
499 def int_nvvm_d2f_rn : GCCBuiltin<"__nvvm_d2f_rn">,
500 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
501 def int_nvvm_d2f_rz_ftz : GCCBuiltin<"__nvvm_d2f_rz_ftz">,
502 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
503 def int_nvvm_d2f_rz : GCCBuiltin<"__nvvm_d2f_rz">,
504 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
505 def int_nvvm_d2f_rm_ftz : GCCBuiltin<"__nvvm_d2f_rm_ftz">,
506 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
507 def int_nvvm_d2f_rm : GCCBuiltin<"__nvvm_d2f_rm">,
508 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
509 def int_nvvm_d2f_rp_ftz : GCCBuiltin<"__nvvm_d2f_rp_ftz">,
510 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
511 def int_nvvm_d2f_rp : GCCBuiltin<"__nvvm_d2f_rp">,
512 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
514 def int_nvvm_d2i_rn : GCCBuiltin<"__nvvm_d2i_rn">,
515 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
516 def int_nvvm_d2i_rz : GCCBuiltin<"__nvvm_d2i_rz">,
517 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
518 def int_nvvm_d2i_rm : GCCBuiltin<"__nvvm_d2i_rm">,
519 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
520 def int_nvvm_d2i_rp : GCCBuiltin<"__nvvm_d2i_rp">,
521 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
523 def int_nvvm_d2ui_rn : GCCBuiltin<"__nvvm_d2ui_rn">,
524 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
525 def int_nvvm_d2ui_rz : GCCBuiltin<"__nvvm_d2ui_rz">,
526 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
527 def int_nvvm_d2ui_rm : GCCBuiltin<"__nvvm_d2ui_rm">,
528 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
529 def int_nvvm_d2ui_rp : GCCBuiltin<"__nvvm_d2ui_rp">,
530 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
532 def int_nvvm_i2d_rn : GCCBuiltin<"__nvvm_i2d_rn">,
533 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
534 def int_nvvm_i2d_rz : GCCBuiltin<"__nvvm_i2d_rz">,
535 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
536 def int_nvvm_i2d_rm : GCCBuiltin<"__nvvm_i2d_rm">,
537 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
538 def int_nvvm_i2d_rp : GCCBuiltin<"__nvvm_i2d_rp">,
539 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
541 def int_nvvm_ui2d_rn : GCCBuiltin<"__nvvm_ui2d_rn">,
542 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
543 def int_nvvm_ui2d_rz : GCCBuiltin<"__nvvm_ui2d_rz">,
544 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
545 def int_nvvm_ui2d_rm : GCCBuiltin<"__nvvm_ui2d_rm">,
546 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
547 def int_nvvm_ui2d_rp : GCCBuiltin<"__nvvm_ui2d_rp">,
548 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
550 def int_nvvm_f2i_rn_ftz : GCCBuiltin<"__nvvm_f2i_rn_ftz">,
551 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
552 def int_nvvm_f2i_rn : GCCBuiltin<"__nvvm_f2i_rn">,
553 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
554 def int_nvvm_f2i_rz_ftz : GCCBuiltin<"__nvvm_f2i_rz_ftz">,
555 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
556 def int_nvvm_f2i_rz : GCCBuiltin<"__nvvm_f2i_rz">,
557 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
558 def int_nvvm_f2i_rm_ftz : GCCBuiltin<"__nvvm_f2i_rm_ftz">,
559 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
560 def int_nvvm_f2i_rm : GCCBuiltin<"__nvvm_f2i_rm">,
561 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
562 def int_nvvm_f2i_rp_ftz : GCCBuiltin<"__nvvm_f2i_rp_ftz">,
563 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
564 def int_nvvm_f2i_rp : GCCBuiltin<"__nvvm_f2i_rp">,
565 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
567 def int_nvvm_f2ui_rn_ftz : GCCBuiltin<"__nvvm_f2ui_rn_ftz">,
568 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
569 def int_nvvm_f2ui_rn : GCCBuiltin<"__nvvm_f2ui_rn">,
570 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
571 def int_nvvm_f2ui_rz_ftz : GCCBuiltin<"__nvvm_f2ui_rz_ftz">,
572 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
573 def int_nvvm_f2ui_rz : GCCBuiltin<"__nvvm_f2ui_rz">,
574 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
575 def int_nvvm_f2ui_rm_ftz : GCCBuiltin<"__nvvm_f2ui_rm_ftz">,
576 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
577 def int_nvvm_f2ui_rm : GCCBuiltin<"__nvvm_f2ui_rm">,
578 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
579 def int_nvvm_f2ui_rp_ftz : GCCBuiltin<"__nvvm_f2ui_rp_ftz">,
580 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
581 def int_nvvm_f2ui_rp : GCCBuiltin<"__nvvm_f2ui_rp">,
582 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
584 def int_nvvm_i2f_rn : GCCBuiltin<"__nvvm_i2f_rn">,
585 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
586 def int_nvvm_i2f_rz : GCCBuiltin<"__nvvm_i2f_rz">,
587 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
588 def int_nvvm_i2f_rm : GCCBuiltin<"__nvvm_i2f_rm">,
589 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
590 def int_nvvm_i2f_rp : GCCBuiltin<"__nvvm_i2f_rp">,
591 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
593 def int_nvvm_ui2f_rn : GCCBuiltin<"__nvvm_ui2f_rn">,
594 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
595 def int_nvvm_ui2f_rz : GCCBuiltin<"__nvvm_ui2f_rz">,
596 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
597 def int_nvvm_ui2f_rm : GCCBuiltin<"__nvvm_ui2f_rm">,
598 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
599 def int_nvvm_ui2f_rp : GCCBuiltin<"__nvvm_ui2f_rp">,
600 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
602 def int_nvvm_lohi_i2d : GCCBuiltin<"__nvvm_lohi_i2d">,
603 Intrinsic<[llvm_double_ty], [llvm_i32_ty, llvm_i32_ty],
604 [IntrNoMem, Commutative]>;
606 def int_nvvm_d2i_lo : GCCBuiltin<"__nvvm_d2i_lo">,
607 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
608 def int_nvvm_d2i_hi : GCCBuiltin<"__nvvm_d2i_hi">,
609 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
611 def int_nvvm_f2ll_rn_ftz : GCCBuiltin<"__nvvm_f2ll_rn_ftz">,
612 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
613 def int_nvvm_f2ll_rn : GCCBuiltin<"__nvvm_f2ll_rn">,
614 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
615 def int_nvvm_f2ll_rz_ftz : GCCBuiltin<"__nvvm_f2ll_rz_ftz">,
616 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
617 def int_nvvm_f2ll_rz : GCCBuiltin<"__nvvm_f2ll_rz">,
618 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
619 def int_nvvm_f2ll_rm_ftz : GCCBuiltin<"__nvvm_f2ll_rm_ftz">,
620 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
621 def int_nvvm_f2ll_rm : GCCBuiltin<"__nvvm_f2ll_rm">,
622 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
623 def int_nvvm_f2ll_rp_ftz : GCCBuiltin<"__nvvm_f2ll_rp_ftz">,
624 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
625 def int_nvvm_f2ll_rp : GCCBuiltin<"__nvvm_f2ll_rp">,
626 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
628 def int_nvvm_f2ull_rn_ftz : GCCBuiltin<"__nvvm_f2ull_rn_ftz">,
629 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
630 def int_nvvm_f2ull_rn : GCCBuiltin<"__nvvm_f2ull_rn">,
631 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
632 def int_nvvm_f2ull_rz_ftz : GCCBuiltin<"__nvvm_f2ull_rz_ftz">,
633 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
634 def int_nvvm_f2ull_rz : GCCBuiltin<"__nvvm_f2ull_rz">,
635 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
636 def int_nvvm_f2ull_rm_ftz : GCCBuiltin<"__nvvm_f2ull_rm_ftz">,
637 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
638 def int_nvvm_f2ull_rm : GCCBuiltin<"__nvvm_f2ull_rm">,
639 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
640 def int_nvvm_f2ull_rp_ftz : GCCBuiltin<"__nvvm_f2ull_rp_ftz">,
641 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
642 def int_nvvm_f2ull_rp : GCCBuiltin<"__nvvm_f2ull_rp">,
643 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
645 def int_nvvm_d2ll_rn : GCCBuiltin<"__nvvm_d2ll_rn">,
646 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
647 def int_nvvm_d2ll_rz : GCCBuiltin<"__nvvm_d2ll_rz">,
648 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
649 def int_nvvm_d2ll_rm : GCCBuiltin<"__nvvm_d2ll_rm">,
650 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
651 def int_nvvm_d2ll_rp : GCCBuiltin<"__nvvm_d2ll_rp">,
652 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
654 def int_nvvm_d2ull_rn : GCCBuiltin<"__nvvm_d2ull_rn">,
655 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
656 def int_nvvm_d2ull_rz : GCCBuiltin<"__nvvm_d2ull_rz">,
657 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
658 def int_nvvm_d2ull_rm : GCCBuiltin<"__nvvm_d2ull_rm">,
659 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
660 def int_nvvm_d2ull_rp : GCCBuiltin<"__nvvm_d2ull_rp">,
661 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
663 def int_nvvm_ll2f_rn : GCCBuiltin<"__nvvm_ll2f_rn">,
664 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
665 def int_nvvm_ll2f_rz : GCCBuiltin<"__nvvm_ll2f_rz">,
666 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
667 def int_nvvm_ll2f_rm : GCCBuiltin<"__nvvm_ll2f_rm">,
668 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
669 def int_nvvm_ll2f_rp : GCCBuiltin<"__nvvm_ll2f_rp">,
670 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
671 def int_nvvm_ull2f_rn : GCCBuiltin<"__nvvm_ull2f_rn">,
672 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
673 def int_nvvm_ull2f_rz : GCCBuiltin<"__nvvm_ull2f_rz">,
674 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
675 def int_nvvm_ull2f_rm : GCCBuiltin<"__nvvm_ull2f_rm">,
676 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
677 def int_nvvm_ull2f_rp : GCCBuiltin<"__nvvm_ull2f_rp">,
678 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
680 def int_nvvm_ll2d_rn : GCCBuiltin<"__nvvm_ll2d_rn">,
681 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
682 def int_nvvm_ll2d_rz : GCCBuiltin<"__nvvm_ll2d_rz">,
683 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
684 def int_nvvm_ll2d_rm : GCCBuiltin<"__nvvm_ll2d_rm">,
685 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
686 def int_nvvm_ll2d_rp : GCCBuiltin<"__nvvm_ll2d_rp">,
687 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
688 def int_nvvm_ull2d_rn : GCCBuiltin<"__nvvm_ull2d_rn">,
689 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
690 def int_nvvm_ull2d_rz : GCCBuiltin<"__nvvm_ull2d_rz">,
691 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
692 def int_nvvm_ull2d_rm : GCCBuiltin<"__nvvm_ull2d_rm">,
693 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
694 def int_nvvm_ull2d_rp : GCCBuiltin<"__nvvm_ull2d_rp">,
695 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
697 def int_nvvm_f2h_rn_ftz : GCCBuiltin<"__nvvm_f2h_rn_ftz">,
698 Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
699 def int_nvvm_f2h_rn : GCCBuiltin<"__nvvm_f2h_rn">,
700 Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
702 def int_nvvm_h2f : GCCBuiltin<"__nvvm_h2f">,
703 Intrinsic<[llvm_float_ty], [llvm_i16_ty], [IntrNoMem]>;
709 def int_nvvm_bitcast_f2i : GCCBuiltin<"__nvvm_bitcast_f2i">,
710 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
711 def int_nvvm_bitcast_i2f : GCCBuiltin<"__nvvm_bitcast_i2f">,
712 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
714 def int_nvvm_bitcast_ll2d : GCCBuiltin<"__nvvm_bitcast_ll2d">,
715 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
716 def int_nvvm_bitcast_d2ll : GCCBuiltin<"__nvvm_bitcast_d2ll">,
717 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
720 // Atomic not available as an llvm intrinsic.
721 def int_nvvm_atomic_load_add_f32 : Intrinsic<[llvm_float_ty],
722 [LLVMAnyPointerType<llvm_float_ty>, llvm_float_ty],
723 [IntrReadWriteArgMem, NoCapture<0>]>;
724 def int_nvvm_atomic_load_inc_32 : Intrinsic<[llvm_i32_ty],
725 [LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
726 [IntrReadWriteArgMem, NoCapture<0>]>;
727 def int_nvvm_atomic_load_dec_32 : Intrinsic<[llvm_i32_ty],
728 [LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
729 [IntrReadWriteArgMem, NoCapture<0>]>;
732 def int_cuda_syncthreads : GCCBuiltin<"__syncthreads">,
733 Intrinsic<[], [], [IntrNoDuplicate]>;
734 def int_nvvm_barrier0 : GCCBuiltin<"__nvvm_bar0">,
735 Intrinsic<[], [], [IntrNoDuplicate]>;
736 def int_nvvm_barrier0_popc : GCCBuiltin<"__nvvm_bar0_popc">,
737 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoDuplicate]>;
738 def int_nvvm_barrier0_and : GCCBuiltin<"__nvvm_bar0_and">,
739 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoDuplicate]>;
740 def int_nvvm_barrier0_or : GCCBuiltin<"__nvvm_bar0_or">,
741 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoDuplicate]>;
744 def int_nvvm_membar_cta : GCCBuiltin<"__nvvm_membar_cta">,
745 Intrinsic<[], [], []>;
746 def int_nvvm_membar_gl : GCCBuiltin<"__nvvm_membar_gl">,
747 Intrinsic<[], [], []>;
748 def int_nvvm_membar_sys : GCCBuiltin<"__nvvm_membar_sys">,
749 Intrinsic<[], [], []>;
752 // Accessing special registers
753 def int_nvvm_read_ptx_sreg_tid_x :
754 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
755 GCCBuiltin<"__nvvm_read_ptx_sreg_tid_x">;
756 def int_nvvm_read_ptx_sreg_tid_y :
757 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
758 GCCBuiltin<"__nvvm_read_ptx_sreg_tid_y">;
759 def int_nvvm_read_ptx_sreg_tid_z :
760 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
761 GCCBuiltin<"__nvvm_read_ptx_sreg_tid_z">;
763 def int_nvvm_read_ptx_sreg_ntid_x :
764 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
765 GCCBuiltin<"__nvvm_read_ptx_sreg_ntid_x">;
766 def int_nvvm_read_ptx_sreg_ntid_y :
767 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
768 GCCBuiltin<"__nvvm_read_ptx_sreg_ntid_y">;
769 def int_nvvm_read_ptx_sreg_ntid_z :
770 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
771 GCCBuiltin<"__nvvm_read_ptx_sreg_ntid_z">;
773 def int_nvvm_read_ptx_sreg_ctaid_x :
774 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
775 GCCBuiltin<"__nvvm_read_ptx_sreg_ctaid_x">;
776 def int_nvvm_read_ptx_sreg_ctaid_y :
777 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
778 GCCBuiltin<"__nvvm_read_ptx_sreg_ctaid_y">;
779 def int_nvvm_read_ptx_sreg_ctaid_z :
780 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
781 GCCBuiltin<"__nvvm_read_ptx_sreg_ctaid_z">;
783 def int_nvvm_read_ptx_sreg_nctaid_x :
784 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
785 GCCBuiltin<"__nvvm_read_ptx_sreg_nctaid_x">;
786 def int_nvvm_read_ptx_sreg_nctaid_y :
787 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
788 GCCBuiltin<"__nvvm_read_ptx_sreg_nctaid_y">;
789 def int_nvvm_read_ptx_sreg_nctaid_z :
790 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
791 GCCBuiltin<"__nvvm_read_ptx_sreg_nctaid_z">;
793 def int_nvvm_read_ptx_sreg_warpsize :
794 Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
795 GCCBuiltin<"__nvvm_read_ptx_sreg_warpsize">;
798 // Generated within nvvm. Use for ldu on sm_20 or later
799 // @TODO: Revisit this, Changed LLVMAnyPointerType to LLVMPointerType
800 def int_nvvm_ldu_global_i : Intrinsic<[llvm_anyint_ty],
801 [LLVMPointerType<LLVMMatchType<0>>], [IntrReadMem, NoCapture<0>],
802 "llvm.nvvm.ldu.global.i">;
803 def int_nvvm_ldu_global_f : Intrinsic<[llvm_anyfloat_ty],
804 [LLVMPointerType<LLVMMatchType<0>>], [IntrReadMem, NoCapture<0>],
805 "llvm.nvvm.ldu.global.f">;
806 def int_nvvm_ldu_global_p : Intrinsic<[llvm_anyptr_ty],
807 [LLVMPointerType<LLVMMatchType<0>>], [IntrReadMem, NoCapture<0>],
808 "llvm.nvvm.ldu.global.p">;
810 // Generated within nvvm. Use for ldg on sm_35 or later
811 def int_nvvm_ldg_global_i : Intrinsic<[llvm_anyint_ty],
812 [LLVMPointerType<LLVMMatchType<0>>], [IntrReadMem, NoCapture<0>],
813 "llvm.nvvm.ldg.global.i">;
814 def int_nvvm_ldg_global_f : Intrinsic<[llvm_anyfloat_ty],
815 [LLVMPointerType<LLVMMatchType<0>>], [IntrReadMem, NoCapture<0>],
816 "llvm.nvvm.ldg.global.f">;
817 def int_nvvm_ldg_global_p : Intrinsic<[llvm_anyptr_ty],
818 [LLVMPointerType<LLVMMatchType<0>>], [IntrReadMem, NoCapture<0>],
819 "llvm.nvvm.ldg.global.p">;
821 // Use for generic pointers
822 // - These intrinsics are used to convert address spaces.
823 // - The input pointer and output pointer must have the same type, except for
824 // the address-space. (This restriction is not enforced here as there is
825 // currently no way to describe it).
826 // - This complements the llvm bitcast, which can be used to cast one type
827 // of pointer to another type of pointer, while the address space remains
829 def int_nvvm_ptr_local_to_gen: Intrinsic<[llvm_anyptr_ty],
830 [llvm_anyptr_ty], [IntrNoMem],
831 "llvm.nvvm.ptr.local.to.gen">;
832 def int_nvvm_ptr_shared_to_gen: Intrinsic<[llvm_anyptr_ty],
833 [llvm_anyptr_ty], [IntrNoMem],
834 "llvm.nvvm.ptr.shared.to.gen">;
835 def int_nvvm_ptr_global_to_gen: Intrinsic<[llvm_anyptr_ty],
836 [llvm_anyptr_ty], [IntrNoMem],
837 "llvm.nvvm.ptr.global.to.gen">;
838 def int_nvvm_ptr_constant_to_gen: Intrinsic<[llvm_anyptr_ty],
839 [llvm_anyptr_ty], [IntrNoMem],
840 "llvm.nvvm.ptr.constant.to.gen">;
842 def int_nvvm_ptr_gen_to_global: Intrinsic<[llvm_anyptr_ty],
843 [llvm_anyptr_ty], [IntrNoMem],
844 "llvm.nvvm.ptr.gen.to.global">;
845 def int_nvvm_ptr_gen_to_shared: Intrinsic<[llvm_anyptr_ty],
846 [llvm_anyptr_ty], [IntrNoMem],
847 "llvm.nvvm.ptr.gen.to.shared">;
848 def int_nvvm_ptr_gen_to_local: Intrinsic<[llvm_anyptr_ty],
849 [llvm_anyptr_ty], [IntrNoMem],
850 "llvm.nvvm.ptr.gen.to.local">;
851 def int_nvvm_ptr_gen_to_constant: Intrinsic<[llvm_anyptr_ty],
852 [llvm_anyptr_ty], [IntrNoMem],
853 "llvm.nvvm.ptr.gen.to.constant">;
855 // Used in nvvm internally to help address space opt and ptx code generation
856 // This is for params that are passed to kernel functions by pointer by-val.
857 def int_nvvm_ptr_gen_to_param: Intrinsic<[llvm_anyptr_ty],
860 "llvm.nvvm.ptr.gen.to.param">;
862 // Move intrinsics, used in nvvm internally
864 def int_nvvm_move_i16 : Intrinsic<[llvm_i16_ty], [llvm_i16_ty], [IntrNoMem],
865 "llvm.nvvm.move.i16">;
866 def int_nvvm_move_i32 : Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem],
867 "llvm.nvvm.move.i32">;
868 def int_nvvm_move_i64 : Intrinsic<[llvm_i64_ty], [llvm_i64_ty], [IntrNoMem],
869 "llvm.nvvm.move.i64">;
870 def int_nvvm_move_float : Intrinsic<[llvm_float_ty], [llvm_float_ty],
871 [IntrNoMem], "llvm.nvvm.move.float">;
872 def int_nvvm_move_double : Intrinsic<[llvm_double_ty], [llvm_double_ty],
873 [IntrNoMem], "llvm.nvvm.move.double">;
874 def int_nvvm_move_ptr : Intrinsic<[llvm_anyptr_ty], [llvm_anyptr_ty],
875 [IntrNoMem, NoCapture<0>], "llvm.nvvm.move.ptr">;
878 // For getting the handle from a texture or surface variable
879 def int_nvvm_texsurf_handle
880 : Intrinsic<[llvm_i64_ty], [llvm_metadata_ty, llvm_anyi64ptr_ty],
881 [IntrNoMem], "llvm.nvvm.texsurf.handle">;
882 def int_nvvm_texsurf_handle_internal
883 : Intrinsic<[llvm_i64_ty], [llvm_anyptr_ty],
884 [IntrNoMem], "llvm.nvvm.texsurf.handle.internal">;
887 def int_nvvm_compiler_error :
888 Intrinsic<[], [llvm_anyptr_ty], [], "llvm.nvvm.compiler.error">;
889 def int_nvvm_compiler_warn :
890 Intrinsic<[], [llvm_anyptr_ty], [], "llvm.nvvm.compiler.warn">;
892 // isspacep.{const, global, local, shared}
893 def int_nvvm_isspacep_const
894 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
895 "llvm.nvvm.isspacep.const">,
896 GCCBuiltin<"__nvvm_isspacep_const">;
897 def int_nvvm_isspacep_global
898 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
899 "llvm.nvvm.isspacep.global">,
900 GCCBuiltin<"__nvvm_isspacep_global">;
901 def int_nvvm_isspacep_local
902 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
903 "llvm.nvvm.isspacep.local">,
904 GCCBuiltin<"__nvvm_isspacep_local">;
905 def int_nvvm_isspacep_shared
906 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
907 "llvm.nvvm.isspacep.shared">,
908 GCCBuiltin<"__nvvm_isspacep_shared">;
910 // Environment register read
911 def int_nvvm_read_ptx_sreg_envreg0
912 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
913 "llvm.nvvm.read.ptx.sreg.envreg0">,
914 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg0">;
915 def int_nvvm_read_ptx_sreg_envreg1
916 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
917 "llvm.nvvm.read.ptx.sreg.envreg1">,
918 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg1">;
919 def int_nvvm_read_ptx_sreg_envreg2
920 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
921 "llvm.nvvm.read.ptx.sreg.envreg2">,
922 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg2">;
923 def int_nvvm_read_ptx_sreg_envreg3
924 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
925 "llvm.nvvm.read.ptx.sreg.envreg3">,
926 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg3">;
927 def int_nvvm_read_ptx_sreg_envreg4
928 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
929 "llvm.nvvm.read.ptx.sreg.envreg4">,
930 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg4">;
931 def int_nvvm_read_ptx_sreg_envreg5
932 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
933 "llvm.nvvm.read.ptx.sreg.envreg5">,
934 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg5">;
935 def int_nvvm_read_ptx_sreg_envreg6
936 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
937 "llvm.nvvm.read.ptx.sreg.envreg6">,
938 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg6">;
939 def int_nvvm_read_ptx_sreg_envreg7
940 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
941 "llvm.nvvm.read.ptx.sreg.envreg7">,
942 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg7">;
943 def int_nvvm_read_ptx_sreg_envreg8
944 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
945 "llvm.nvvm.read.ptx.sreg.envreg8">,
946 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg8">;
947 def int_nvvm_read_ptx_sreg_envreg9
948 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
949 "llvm.nvvm.read.ptx.sreg.envreg9">,
950 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg9">;
951 def int_nvvm_read_ptx_sreg_envreg10
952 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
953 "llvm.nvvm.read.ptx.sreg.envreg10">,
954 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg10">;
955 def int_nvvm_read_ptx_sreg_envreg11
956 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
957 "llvm.nvvm.read.ptx.sreg.envreg11">,
958 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg11">;
959 def int_nvvm_read_ptx_sreg_envreg12
960 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
961 "llvm.nvvm.read.ptx.sreg.envreg12">,
962 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg12">;
963 def int_nvvm_read_ptx_sreg_envreg13
964 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
965 "llvm.nvvm.read.ptx.sreg.envreg13">,
966 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg13">;
967 def int_nvvm_read_ptx_sreg_envreg14
968 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
969 "llvm.nvvm.read.ptx.sreg.envreg14">,
970 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg14">;
971 def int_nvvm_read_ptx_sreg_envreg15
972 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
973 "llvm.nvvm.read.ptx.sreg.envreg15">,
974 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg15">;
975 def int_nvvm_read_ptx_sreg_envreg16
976 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
977 "llvm.nvvm.read.ptx.sreg.envreg16">,
978 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg16">;
979 def int_nvvm_read_ptx_sreg_envreg17
980 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
981 "llvm.nvvm.read.ptx.sreg.envreg17">,
982 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg17">;
983 def int_nvvm_read_ptx_sreg_envreg18
984 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
985 "llvm.nvvm.read.ptx.sreg.envreg18">,
986 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg18">;
987 def int_nvvm_read_ptx_sreg_envreg19
988 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
989 "llvm.nvvm.read.ptx.sreg.envreg19">,
990 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg19">;
991 def int_nvvm_read_ptx_sreg_envreg20
992 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
993 "llvm.nvvm.read.ptx.sreg.envreg20">,
994 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg20">;
995 def int_nvvm_read_ptx_sreg_envreg21
996 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
997 "llvm.nvvm.read.ptx.sreg.envreg21">,
998 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg21">;
999 def int_nvvm_read_ptx_sreg_envreg22
1000 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1001 "llvm.nvvm.read.ptx.sreg.envreg22">,
1002 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg22">;
1003 def int_nvvm_read_ptx_sreg_envreg23
1004 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1005 "llvm.nvvm.read.ptx.sreg.envreg23">,
1006 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg23">;
1007 def int_nvvm_read_ptx_sreg_envreg24
1008 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1009 "llvm.nvvm.read.ptx.sreg.envreg24">,
1010 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg24">;
1011 def int_nvvm_read_ptx_sreg_envreg25
1012 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1013 "llvm.nvvm.read.ptx.sreg.envreg25">,
1014 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg25">;
1015 def int_nvvm_read_ptx_sreg_envreg26
1016 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1017 "llvm.nvvm.read.ptx.sreg.envreg26">,
1018 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg26">;
1019 def int_nvvm_read_ptx_sreg_envreg27
1020 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1021 "llvm.nvvm.read.ptx.sreg.envreg27">,
1022 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg27">;
1023 def int_nvvm_read_ptx_sreg_envreg28
1024 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1025 "llvm.nvvm.read.ptx.sreg.envreg28">,
1026 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg28">;
1027 def int_nvvm_read_ptx_sreg_envreg29
1028 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1029 "llvm.nvvm.read.ptx.sreg.envreg29">,
1030 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg29">;
1031 def int_nvvm_read_ptx_sreg_envreg30
1032 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1033 "llvm.nvvm.read.ptx.sreg.envreg30">,
1034 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg30">;
1035 def int_nvvm_read_ptx_sreg_envreg31
1036 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1037 "llvm.nvvm.read.ptx.sreg.envreg31">,
1038 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg31">;
1042 def int_nvvm_tex_1d_v4f32_i32
1043 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1044 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
1045 "llvm.nvvm.tex.1d.v4f32.i32">;
1046 def int_nvvm_tex_1d_v4f32_f32
1047 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1048 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
1049 "llvm.nvvm.tex.1d.v4f32.f32">;
1050 def int_nvvm_tex_1d_level_v4f32_f32
1051 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1052 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1053 "llvm.nvvm.tex.1d.level.v4f32.f32">;
1054 def int_nvvm_tex_1d_grad_v4f32_f32
1055 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1056 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1058 "llvm.nvvm.tex.1d.grad.v4f32.f32">;
1059 def int_nvvm_tex_1d_v4i32_i32
1060 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1061 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
1062 "llvm.nvvm.tex.1d.v4i32.i32">;
1063 def int_nvvm_tex_1d_v4i32_f32
1064 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1065 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
1066 "llvm.nvvm.tex.1d.v4i32.f32">;
1067 def int_nvvm_tex_1d_level_v4i32_f32
1068 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1069 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1070 "llvm.nvvm.tex.1d.level.v4i32.f32.level">;
1071 def int_nvvm_tex_1d_grad_v4i32_f32
1072 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1073 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1075 "llvm.nvvm.tex.1d.grad.v4i32.f32">;
1077 def int_nvvm_tex_1d_array_v4f32_i32
1078 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1079 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1080 "llvm.nvvm.tex.1d.array.v4f32.i32">;
1081 def int_nvvm_tex_1d_array_v4f32_f32
1082 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1083 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1084 "llvm.nvvm.tex.1d.array.v4f32.f32">;
1085 def int_nvvm_tex_1d_array_level_v4f32_f32
1086 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1087 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1089 "llvm.nvvm.tex.1d.array.level.v4f32.f32">;
1090 def int_nvvm_tex_1d_array_grad_v4f32_f32
1091 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1092 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1093 llvm_float_ty, llvm_float_ty], [],
1094 "llvm.nvvm.tex.1d.array.grad.v4f32.f32">;
1095 def int_nvvm_tex_1d_array_v4i32_i32
1096 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1097 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1098 "llvm.nvvm.tex.1d.array.v4i32.i32">;
1099 def int_nvvm_tex_1d_array_v4i32_f32
1100 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1101 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1102 "llvm.nvvm.tex.1d.array.v4i32.f32">;
1103 def int_nvvm_tex_1d_array_level_v4i32_f32
1104 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1105 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1107 "llvm.nvvm.tex.1d.array.level.v4i32.f32">;
1108 def int_nvvm_tex_1d_array_grad_v4i32_f32
1109 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1110 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1111 llvm_float_ty, llvm_float_ty], [],
1112 "llvm.nvvm.tex.1d.array.grad.v4i32.f32">;
1114 def int_nvvm_tex_2d_v4f32_i32
1115 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1116 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1117 "llvm.nvvm.tex.2d.v4f32.i32">;
1118 def int_nvvm_tex_2d_v4f32_f32
1119 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1120 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1121 "llvm.nvvm.tex.2d.v4f32.f32">;
1122 def int_nvvm_tex_2d_level_v4f32_f32
1123 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1124 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1126 "llvm.nvvm.tex.2d.level.v4f32.f32">;
1127 def int_nvvm_tex_2d_grad_v4f32_f32
1128 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1129 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1130 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1131 "llvm.nvvm.tex.2d.grad.v4f32.f32">;
1132 def int_nvvm_tex_2d_v4i32_i32
1133 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1134 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1135 "llvm.nvvm.tex.2d.v4i32.i32">;
1136 def int_nvvm_tex_2d_v4i32_f32
1137 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1138 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1139 "llvm.nvvm.tex.2d.v4i32.f32">;
1140 def int_nvvm_tex_2d_level_v4i32_f32
1141 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1142 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1144 "llvm.nvvm.tex.2d.level.v4i32.f32">;
1145 def int_nvvm_tex_2d_grad_v4i32_f32
1146 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1147 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1148 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1149 "llvm.nvvm.tex.2d.grad.v4i32.f32">;
1151 def int_nvvm_tex_2d_array_v4f32_i32
1152 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1153 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1155 "llvm.nvvm.tex.2d.array.v4f32.i32">;
1156 def int_nvvm_tex_2d_array_v4f32_f32
1157 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1158 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1160 "llvm.nvvm.tex.2d.array.v4f32.f32">;
1161 def int_nvvm_tex_2d_array_level_v4f32_f32
1162 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1163 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1164 llvm_float_ty, llvm_float_ty], [],
1165 "llvm.nvvm.tex.2d.array.level.v4f32.f32">;
1166 def int_nvvm_tex_2d_array_grad_v4f32_f32
1167 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1168 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1169 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1171 "llvm.nvvm.tex.2d.array.grad.v4f32.f32">;
1172 def int_nvvm_tex_2d_array_v4i32_i32
1173 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1174 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1176 "llvm.nvvm.tex.2d.array.v4i32.i32">;
1177 def int_nvvm_tex_2d_array_v4i32_f32
1178 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1179 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1181 "llvm.nvvm.tex.2d.array.v4i32.f32">;
1182 def int_nvvm_tex_2d_array_level_v4i32_f32
1183 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1184 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1185 llvm_float_ty, llvm_float_ty], [],
1186 "llvm.nvvm.tex.2d.array.level.v4i32.f32">;
1187 def int_nvvm_tex_2d_array_grad_v4i32_f32
1188 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1189 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1190 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1192 "llvm.nvvm.tex.2d.array.grad.v4i32.f32">;
1194 def int_nvvm_tex_3d_v4f32_i32
1195 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1196 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1197 [], "llvm.nvvm.tex.3d.v4f32.i32">;
1198 def int_nvvm_tex_3d_v4f32_f32
1199 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1200 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1202 "llvm.nvvm.tex.3d.v4f32.f32">;
1203 def int_nvvm_tex_3d_level_v4f32_f32
1204 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1205 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1206 llvm_float_ty, llvm_float_ty], [],
1207 "llvm.nvvm.tex.3d.level.v4f32.f32">;
1208 def int_nvvm_tex_3d_grad_v4f32_f32
1209 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1210 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1211 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1212 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1213 "llvm.nvvm.tex.3d.grad.v4f32.f32">;
1214 def int_nvvm_tex_3d_v4i32_i32
1215 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1216 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1217 [], "llvm.nvvm.tex.3d.v4i32.i32">;
1218 def int_nvvm_tex_3d_v4i32_f32
1219 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1220 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1222 "llvm.nvvm.tex.3d.v4i32.f32">;
1223 def int_nvvm_tex_3d_level_v4i32_f32
1224 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1225 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1226 llvm_float_ty, llvm_float_ty], [],
1227 "llvm.nvvm.tex.3d.level.v4i32.f32">;
1228 def int_nvvm_tex_3d_grad_v4i32_f32
1229 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1230 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1231 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1232 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1233 "llvm.nvvm.tex.3d.grad.v4i32.f32">;
1236 def int_nvvm_suld_1d_i8_trap
1237 : Intrinsic<[llvm_i16_ty],
1238 [llvm_i64_ty, llvm_i32_ty], [],
1239 "llvm.nvvm.suld.1d.i8.trap">;
1240 def int_nvvm_suld_1d_i16_trap
1241 : Intrinsic<[llvm_i16_ty],
1242 [llvm_i64_ty, llvm_i32_ty], [],
1243 "llvm.nvvm.suld.1d.i16.trap">;
1244 def int_nvvm_suld_1d_i32_trap
1245 : Intrinsic<[llvm_i32_ty],
1246 [llvm_i64_ty, llvm_i32_ty], [],
1247 "llvm.nvvm.suld.1d.i32.trap">;
1248 def int_nvvm_suld_1d_v2i8_trap
1249 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1250 [llvm_i64_ty, llvm_i32_ty], [],
1251 "llvm.nvvm.suld.1d.v2i8.trap">;
1252 def int_nvvm_suld_1d_v2i16_trap
1253 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1254 [llvm_i64_ty, llvm_i32_ty], [],
1255 "llvm.nvvm.suld.1d.v2i16.trap">;
1256 def int_nvvm_suld_1d_v2i32_trap
1257 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1258 [llvm_i64_ty, llvm_i32_ty], [],
1259 "llvm.nvvm.suld.1d.v2i32.trap">;
1260 def int_nvvm_suld_1d_v4i8_trap
1261 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1262 [llvm_i64_ty, llvm_i32_ty], [],
1263 "llvm.nvvm.suld.1d.v4i8.trap">;
1264 def int_nvvm_suld_1d_v4i16_trap
1265 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1266 [llvm_i64_ty, llvm_i32_ty], [],
1267 "llvm.nvvm.suld.1d.v4i16.trap">;
1268 def int_nvvm_suld_1d_v4i32_trap
1269 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1270 [llvm_i64_ty, llvm_i32_ty], [],
1271 "llvm.nvvm.suld.1d.v4i32.trap">;
1273 def int_nvvm_suld_1d_array_i8_trap
1274 : Intrinsic<[llvm_i16_ty],
1275 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1276 "llvm.nvvm.suld.1d.array.i8.trap">;
1277 def int_nvvm_suld_1d_array_i16_trap
1278 : Intrinsic<[llvm_i16_ty],
1279 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1280 "llvm.nvvm.suld.1d.array.i16.trap">;
1281 def int_nvvm_suld_1d_array_i32_trap
1282 : Intrinsic<[llvm_i32_ty],
1283 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1284 "llvm.nvvm.suld.1d.array.i32.trap">;
1285 def int_nvvm_suld_1d_array_v2i8_trap
1286 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1287 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1288 "llvm.nvvm.suld.1d.array.v2i8.trap">;
1289 def int_nvvm_suld_1d_array_v2i16_trap
1290 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1291 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1292 "llvm.nvvm.suld.1d.array.v2i16.trap">;
1293 def int_nvvm_suld_1d_array_v2i32_trap
1294 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1295 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1296 "llvm.nvvm.suld.1d.array.v2i32.trap">;
1297 def int_nvvm_suld_1d_array_v4i8_trap
1298 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1299 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1300 "llvm.nvvm.suld.1d.array.v4i8.trap">;
1301 def int_nvvm_suld_1d_array_v4i16_trap
1302 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1303 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1304 "llvm.nvvm.suld.1d.array.v4i16.trap">;
1305 def int_nvvm_suld_1d_array_v4i32_trap
1306 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1307 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1308 "llvm.nvvm.suld.1d.array.v4i32.trap">;
1310 def int_nvvm_suld_2d_i8_trap
1311 : Intrinsic<[llvm_i16_ty],
1312 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1313 "llvm.nvvm.suld.2d.i8.trap">;
1314 def int_nvvm_suld_2d_i16_trap
1315 : Intrinsic<[llvm_i16_ty],
1316 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1317 "llvm.nvvm.suld.2d.i16.trap">;
1318 def int_nvvm_suld_2d_i32_trap
1319 : Intrinsic<[llvm_i32_ty],
1320 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1321 "llvm.nvvm.suld.2d.i32.trap">;
1322 def int_nvvm_suld_2d_v2i8_trap
1323 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1324 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1325 "llvm.nvvm.suld.2d.v2i8.trap">;
1326 def int_nvvm_suld_2d_v2i16_trap
1327 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1328 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1329 "llvm.nvvm.suld.2d.v2i16.trap">;
1330 def int_nvvm_suld_2d_v2i32_trap
1331 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1332 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1333 "llvm.nvvm.suld.2d.v2i32.trap">;
1334 def int_nvvm_suld_2d_v4i8_trap
1335 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1336 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1337 "llvm.nvvm.suld.2d.v4i8.trap">;
1338 def int_nvvm_suld_2d_v4i16_trap
1339 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1340 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1341 "llvm.nvvm.suld.2d.v4i16.trap">;
1342 def int_nvvm_suld_2d_v4i32_trap
1343 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1344 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1345 "llvm.nvvm.suld.2d.v4i32.trap">;
1347 def int_nvvm_suld_2d_array_i8_trap
1348 : Intrinsic<[llvm_i16_ty],
1349 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1350 "llvm.nvvm.suld.2d.array.i8.trap">;
1351 def int_nvvm_suld_2d_array_i16_trap
1352 : Intrinsic<[llvm_i16_ty],
1353 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1354 "llvm.nvvm.suld.2d.array.i16.trap">;
1355 def int_nvvm_suld_2d_array_i32_trap
1356 : Intrinsic<[llvm_i32_ty],
1357 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1358 "llvm.nvvm.suld.2d.array.i32.trap">;
1359 def int_nvvm_suld_2d_array_v2i8_trap
1360 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1361 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1362 "llvm.nvvm.suld.2d.array.v2i8.trap">;
1363 def int_nvvm_suld_2d_array_v2i16_trap
1364 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1365 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1366 "llvm.nvvm.suld.2d.array.v2i16.trap">;
1367 def int_nvvm_suld_2d_array_v2i32_trap
1368 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1369 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1370 "llvm.nvvm.suld.2d.array.v2i32.trap">;
1371 def int_nvvm_suld_2d_array_v4i8_trap
1372 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1373 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1374 "llvm.nvvm.suld.2d.array.v4i8.trap">;
1375 def int_nvvm_suld_2d_array_v4i16_trap
1376 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1377 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1378 "llvm.nvvm.suld.2d.array.v4i16.trap">;
1379 def int_nvvm_suld_2d_array_v4i32_trap
1380 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1381 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1382 "llvm.nvvm.suld.2d.array.v4i32.trap">;
1384 def int_nvvm_suld_3d_i8_trap
1385 : Intrinsic<[llvm_i16_ty],
1386 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1387 "llvm.nvvm.suld.3d.i8.trap">;
1388 def int_nvvm_suld_3d_i16_trap
1389 : Intrinsic<[llvm_i16_ty],
1390 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1391 "llvm.nvvm.suld.3d.i16.trap">;
1392 def int_nvvm_suld_3d_i32_trap
1393 : Intrinsic<[llvm_i32_ty],
1394 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1395 "llvm.nvvm.suld.3d.i32.trap">;
1396 def int_nvvm_suld_3d_v2i8_trap
1397 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1398 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1399 "llvm.nvvm.suld.3d.v2i8.trap">;
1400 def int_nvvm_suld_3d_v2i16_trap
1401 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1402 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1403 "llvm.nvvm.suld.3d.v2i16.trap">;
1404 def int_nvvm_suld_3d_v2i32_trap
1405 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1406 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1407 "llvm.nvvm.suld.3d.v2i32.trap">;
1408 def int_nvvm_suld_3d_v4i8_trap
1409 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1410 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1411 "llvm.nvvm.suld.3d.v4i8.trap">;
1412 def int_nvvm_suld_3d_v4i16_trap
1413 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1414 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1415 "llvm.nvvm.suld.3d.v4i16.trap">;
1416 def int_nvvm_suld_3d_v4i32_trap
1417 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1418 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1419 "llvm.nvvm.suld.3d.v4i32.trap">;
1421 //===- Texture Query ------------------------------------------------------===//
1423 def int_nvvm_txq_channel_order
1424 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1425 "llvm.nvvm.txq.channel.order">,
1426 GCCBuiltin<"__nvvm_txq_channel_order">;
1427 def int_nvvm_txq_channel_data_type
1428 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1429 "llvm.nvvm.txq.channel.data.type">,
1430 GCCBuiltin<"__nvvm_txq_channel_data_type">;
1431 def int_nvvm_txq_width
1432 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1433 "llvm.nvvm.txq.width">,
1434 GCCBuiltin<"__nvvm_txq_width">;
1435 def int_nvvm_txq_height
1436 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1437 "llvm.nvvm.txq.height">,
1438 GCCBuiltin<"__nvvm_txq_height">;
1439 def int_nvvm_txq_depth
1440 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1441 "llvm.nvvm.txq.depth">,
1442 GCCBuiltin<"__nvvm_txq_depth">;
1443 def int_nvvm_txq_array_size
1444 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1445 "llvm.nvvm.txq.array.size">,
1446 GCCBuiltin<"__nvvm_txq_array_size">;
1447 def int_nvvm_txq_num_samples
1448 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1449 "llvm.nvvm.txq.num.samples">,
1450 GCCBuiltin<"__nvvm_txq_num_samples">;
1451 def int_nvvm_txq_num_mipmap_levels
1452 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1453 "llvm.nvvm.txq.num.mipmap.levels">,
1454 GCCBuiltin<"__nvvm_txq_num_mipmap_levels">;
1456 //===- Surface Query ------------------------------------------------------===//
1458 def int_nvvm_suq_channel_order
1459 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1460 "llvm.nvvm.suq.channel.order">,
1461 GCCBuiltin<"__nvvm_suq_channel_order">;
1462 def int_nvvm_suq_channel_data_type
1463 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1464 "llvm.nvvm.suq.channel.data.type">,
1465 GCCBuiltin<"__nvvm_suq_channel_data_type">;
1466 def int_nvvm_suq_width
1467 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1468 "llvm.nvvm.suq.width">,
1469 GCCBuiltin<"__nvvm_suq_width">;
1470 def int_nvvm_suq_height
1471 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1472 "llvm.nvvm.suq.height">,
1473 GCCBuiltin<"__nvvm_suq_height">;
1474 def int_nvvm_suq_depth
1475 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1476 "llvm.nvvm.suq.depth">,
1477 GCCBuiltin<"__nvvm_suq_depth">;
1478 def int_nvvm_suq_array_size
1479 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
1480 "llvm.nvvm.suq.array.size">,
1481 GCCBuiltin<"__nvvm_suq_array_size">;
1484 //===- Handle Query -------------------------------------------------------===//
1486 def int_nvvm_istypep_sampler
1487 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
1488 "llvm.nvvm.istypep.sampler">,
1489 GCCBuiltin<"__nvvm_istypep_sampler">;
1490 def int_nvvm_istypep_surface
1491 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
1492 "llvm.nvvm.istypep.surface">,
1493 GCCBuiltin<"__nvvm_istypep_surface">;
1494 def int_nvvm_istypep_texture
1495 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
1496 "llvm.nvvm.istypep.texture">,
1497 GCCBuiltin<"__nvvm_istypep_texture">;
1501 //===- Surface Stores -----------------------------------------------------===//
1505 def int_nvvm_sust_b_1d_i8_trap
1506 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
1507 "llvm.nvvm.sust.b.1d.i8.trap">,
1508 GCCBuiltin<"__nvvm_sust_b_1d_i8_trap">;
1509 def int_nvvm_sust_b_1d_i16_trap
1510 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
1511 "llvm.nvvm.sust.b.1d.i16.trap">,
1512 GCCBuiltin<"__nvvm_sust_b_1d_i16_trap">;
1513 def int_nvvm_sust_b_1d_i32_trap
1514 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1515 "llvm.nvvm.sust.b.1d.i32.trap">,
1516 GCCBuiltin<"__nvvm_sust_b_1d_i32_trap">;
1517 def int_nvvm_sust_b_1d_v2i8_trap
1518 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
1519 "llvm.nvvm.sust.b.1d.v2i8.trap">,
1520 GCCBuiltin<"__nvvm_sust_b_1d_v2i8_trap">;
1521 def int_nvvm_sust_b_1d_v2i16_trap
1522 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
1523 "llvm.nvvm.sust.b.1d.v2i16.trap">,
1524 GCCBuiltin<"__nvvm_sust_b_1d_v2i16_trap">;
1525 def int_nvvm_sust_b_1d_v2i32_trap
1526 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1527 "llvm.nvvm.sust.b.1d.v2i32.trap">,
1528 GCCBuiltin<"__nvvm_sust_b_1d_v2i32_trap">;
1529 def int_nvvm_sust_b_1d_v4i8_trap
1530 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
1531 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1532 "llvm.nvvm.sust.b.1d.v4i8.trap">,
1533 GCCBuiltin<"__nvvm_sust_b_1d_v4i8_trap">;
1534 def int_nvvm_sust_b_1d_v4i16_trap
1535 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
1536 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1537 "llvm.nvvm.sust.b.1d.v4i16.trap">,
1538 GCCBuiltin<"__nvvm_sust_b_1d_v4i16_trap">;
1539 def int_nvvm_sust_b_1d_v4i32_trap
1540 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1541 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1542 "llvm.nvvm.sust.b.1d.v4i32.trap">,
1543 GCCBuiltin<"__nvvm_sust_b_1d_v4i32_trap">;
1546 def int_nvvm_sust_b_1d_array_i8_trap
1547 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1548 "llvm.nvvm.sust.b.1d.array.i8.trap">,
1549 GCCBuiltin<"__nvvm_sust_b_1d_array_i8_trap">;
1550 def int_nvvm_sust_b_1d_array_i16_trap
1551 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1552 "llvm.nvvm.sust.b.1d.array.i16.trap">,
1553 GCCBuiltin<"__nvvm_sust_b_1d_array_i16_trap">;
1554 def int_nvvm_sust_b_1d_array_i32_trap
1555 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1556 "llvm.nvvm.sust.b.1d.array.i32.trap">,
1557 GCCBuiltin<"__nvvm_sust_b_1d_array_i32_trap">;
1558 def int_nvvm_sust_b_1d_array_v2i8_trap
1559 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1560 llvm_i16_ty, llvm_i16_ty], [],
1561 "llvm.nvvm.sust.b.1d.array.v2i8.trap">,
1562 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_trap">;
1563 def int_nvvm_sust_b_1d_array_v2i16_trap
1564 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1565 llvm_i16_ty, llvm_i16_ty], [],
1566 "llvm.nvvm.sust.b.1d.array.v2i16.trap">,
1567 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_trap">;
1568 def int_nvvm_sust_b_1d_array_v2i32_trap
1569 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1570 llvm_i32_ty, llvm_i32_ty], [],
1571 "llvm.nvvm.sust.b.1d.array.v2i32.trap">,
1572 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_trap">;
1573 def int_nvvm_sust_b_1d_array_v4i8_trap
1574 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1575 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1576 "llvm.nvvm.sust.b.1d.array.v4i8.trap">,
1577 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_trap">;
1578 def int_nvvm_sust_b_1d_array_v4i16_trap
1579 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1580 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1581 "llvm.nvvm.sust.b.1d.array.v4i16.trap">,
1582 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_trap">;
1583 def int_nvvm_sust_b_1d_array_v4i32_trap
1584 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1585 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1586 "llvm.nvvm.sust.b.1d.array.v4i32.trap">,
1587 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_trap">;
1590 def int_nvvm_sust_b_2d_i8_trap
1591 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1592 "llvm.nvvm.sust.b.2d.i8.trap">,
1593 GCCBuiltin<"__nvvm_sust_b_2d_i8_trap">;
1594 def int_nvvm_sust_b_2d_i16_trap
1595 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1596 "llvm.nvvm.sust.b.2d.i16.trap">,
1597 GCCBuiltin<"__nvvm_sust_b_2d_i16_trap">;
1598 def int_nvvm_sust_b_2d_i32_trap
1599 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1600 "llvm.nvvm.sust.b.2d.i32.trap">,
1601 GCCBuiltin<"__nvvm_sust_b_2d_i32_trap">;
1602 def int_nvvm_sust_b_2d_v2i8_trap
1603 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1604 llvm_i16_ty, llvm_i16_ty], [],
1605 "llvm.nvvm.sust.b.2d.v2i8.trap">,
1606 GCCBuiltin<"__nvvm_sust_b_2d_v2i8_trap">;
1607 def int_nvvm_sust_b_2d_v2i16_trap
1608 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1609 llvm_i16_ty, llvm_i16_ty], [],
1610 "llvm.nvvm.sust.b.2d.v2i16.trap">,
1611 GCCBuiltin<"__nvvm_sust_b_2d_v2i16_trap">;
1612 def int_nvvm_sust_b_2d_v2i32_trap
1613 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1614 llvm_i32_ty, llvm_i32_ty], [],
1615 "llvm.nvvm.sust.b.2d.v2i32.trap">,
1616 GCCBuiltin<"__nvvm_sust_b_2d_v2i32_trap">;
1617 def int_nvvm_sust_b_2d_v4i8_trap
1618 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1619 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1620 "llvm.nvvm.sust.b.2d.v4i8.trap">,
1621 GCCBuiltin<"__nvvm_sust_b_2d_v4i8_trap">;
1622 def int_nvvm_sust_b_2d_v4i16_trap
1623 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1624 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1625 "llvm.nvvm.sust.b.2d.v4i16.trap">,
1626 GCCBuiltin<"__nvvm_sust_b_2d_v4i16_trap">;
1627 def int_nvvm_sust_b_2d_v4i32_trap
1628 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1629 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1630 "llvm.nvvm.sust.b.2d.v4i32.trap">,
1631 GCCBuiltin<"__nvvm_sust_b_2d_v4i32_trap">;
1634 def int_nvvm_sust_b_2d_array_i8_trap
1635 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1636 llvm_i32_ty, llvm_i16_ty], [],
1637 "llvm.nvvm.sust.b.2d.array.i8.trap">,
1638 GCCBuiltin<"__nvvm_sust_b_2d_array_i8_trap">;
1639 def int_nvvm_sust_b_2d_array_i16_trap
1640 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1641 llvm_i32_ty, llvm_i16_ty], [],
1642 "llvm.nvvm.sust.b.2d.array.i16.trap">,
1643 GCCBuiltin<"__nvvm_sust_b_2d_array_i16_trap">;
1644 def int_nvvm_sust_b_2d_array_i32_trap
1645 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1646 llvm_i32_ty, llvm_i32_ty], [],
1647 "llvm.nvvm.sust.b.2d.array.i32.trap">,
1648 GCCBuiltin<"__nvvm_sust_b_2d_array_i32_trap">;
1649 def int_nvvm_sust_b_2d_array_v2i8_trap
1650 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1651 llvm_i16_ty, llvm_i16_ty], [],
1652 "llvm.nvvm.sust.b.2d.array.v2i8.trap">,
1653 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_trap">;
1654 def int_nvvm_sust_b_2d_array_v2i16_trap
1655 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1656 llvm_i16_ty, llvm_i16_ty], [],
1657 "llvm.nvvm.sust.b.2d.array.v2i16.trap">,
1658 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_trap">;
1659 def int_nvvm_sust_b_2d_array_v2i32_trap
1660 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1661 llvm_i32_ty, llvm_i32_ty], [],
1662 "llvm.nvvm.sust.b.2d.array.v2i32.trap">,
1663 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_trap">;
1664 def int_nvvm_sust_b_2d_array_v4i8_trap
1665 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1666 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1667 "llvm.nvvm.sust.b.2d.array.v4i8.trap">,
1668 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_trap">;
1669 def int_nvvm_sust_b_2d_array_v4i16_trap
1670 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1671 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1672 "llvm.nvvm.sust.b.2d.array.v4i16.trap">,
1673 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_trap">;
1674 def int_nvvm_sust_b_2d_array_v4i32_trap
1675 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1676 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1677 "llvm.nvvm.sust.b.2d.array.v4i32.trap">,
1678 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_trap">;
1681 def int_nvvm_sust_b_3d_i8_trap
1682 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1683 llvm_i32_ty, llvm_i16_ty], [],
1684 "llvm.nvvm.sust.b.3d.i8.trap">,
1685 GCCBuiltin<"__nvvm_sust_b_3d_i8_trap">;
1686 def int_nvvm_sust_b_3d_i16_trap
1687 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1688 llvm_i32_ty, llvm_i16_ty], [],
1689 "llvm.nvvm.sust.b.3d.i16.trap">,
1690 GCCBuiltin<"__nvvm_sust_b_3d_i16_trap">;
1691 def int_nvvm_sust_b_3d_i32_trap
1692 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1693 llvm_i32_ty, llvm_i32_ty], [],
1694 "llvm.nvvm.sust.b.3d.i32.trap">,
1695 GCCBuiltin<"__nvvm_sust_b_3d_i32_trap">;
1696 def int_nvvm_sust_b_3d_v2i8_trap
1697 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1698 llvm_i16_ty, llvm_i16_ty], [],
1699 "llvm.nvvm.sust.b.3d.v2i8.trap">,
1700 GCCBuiltin<"__nvvm_sust_b_3d_v2i8_trap">;
1701 def int_nvvm_sust_b_3d_v2i16_trap
1702 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1703 llvm_i16_ty, llvm_i16_ty], [],
1704 "llvm.nvvm.sust.b.3d.v2i16.trap">,
1705 GCCBuiltin<"__nvvm_sust_b_3d_v2i16_trap">;
1706 def int_nvvm_sust_b_3d_v2i32_trap
1707 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1708 llvm_i32_ty, llvm_i32_ty], [],
1709 "llvm.nvvm.sust.b.3d.v2i32.trap">,
1710 GCCBuiltin<"__nvvm_sust_b_3d_v2i32_trap">;
1711 def int_nvvm_sust_b_3d_v4i8_trap
1712 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1713 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1714 "llvm.nvvm.sust.b.3d.v4i8.trap">,
1715 GCCBuiltin<"__nvvm_sust_b_3d_v4i8_trap">;
1716 def int_nvvm_sust_b_3d_v4i16_trap
1717 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1718 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1719 "llvm.nvvm.sust.b.3d.v4i16.trap">,
1720 GCCBuiltin<"__nvvm_sust_b_3d_v4i16_trap">;
1721 def int_nvvm_sust_b_3d_v4i32_trap
1722 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1723 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1724 "llvm.nvvm.sust.b.3d.v4i32.trap">,
1725 GCCBuiltin<"__nvvm_sust_b_3d_v4i32_trap">;
1729 def int_nvvm_sust_p_1d_i8_trap
1730 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
1731 "llvm.nvvm.sust.p.1d.i8.trap">,
1732 GCCBuiltin<"__nvvm_sust_p_1d_i8_trap">;
1733 def int_nvvm_sust_p_1d_i16_trap
1734 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
1735 "llvm.nvvm.sust.p.1d.i16.trap">,
1736 GCCBuiltin<"__nvvm_sust_p_1d_i16_trap">;
1737 def int_nvvm_sust_p_1d_i32_trap
1738 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1739 "llvm.nvvm.sust.p.1d.i32.trap">,
1740 GCCBuiltin<"__nvvm_sust_p_1d_i32_trap">;
1741 def int_nvvm_sust_p_1d_v2i8_trap
1742 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
1743 "llvm.nvvm.sust.p.1d.v2i8.trap">,
1744 GCCBuiltin<"__nvvm_sust_p_1d_v2i8_trap">;
1745 def int_nvvm_sust_p_1d_v2i16_trap
1746 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
1747 "llvm.nvvm.sust.p.1d.v2i16.trap">,
1748 GCCBuiltin<"__nvvm_sust_p_1d_v2i16_trap">;
1749 def int_nvvm_sust_p_1d_v2i32_trap
1750 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1751 "llvm.nvvm.sust.p.1d.v2i32.trap">,
1752 GCCBuiltin<"__nvvm_sust_p_1d_v2i32_trap">;
1753 def int_nvvm_sust_p_1d_v4i8_trap
1754 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
1755 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1756 "llvm.nvvm.sust.p.1d.v4i8.trap">,
1757 GCCBuiltin<"__nvvm_sust_p_1d_v4i8_trap">;
1758 def int_nvvm_sust_p_1d_v4i16_trap
1759 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
1760 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1761 "llvm.nvvm.sust.p.1d.v4i16.trap">,
1762 GCCBuiltin<"__nvvm_sust_p_1d_v4i16_trap">;
1763 def int_nvvm_sust_p_1d_v4i32_trap
1764 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1765 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1766 "llvm.nvvm.sust.p.1d.v4i32.trap">,
1767 GCCBuiltin<"__nvvm_sust_p_1d_v4i32_trap">;
1770 def int_nvvm_sust_p_1d_array_i8_trap
1771 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1772 "llvm.nvvm.sust.p.1d.array.i8.trap">,
1773 GCCBuiltin<"__nvvm_sust_p_1d_array_i8_trap">;
1774 def int_nvvm_sust_p_1d_array_i16_trap
1775 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1776 "llvm.nvvm.sust.p.1d.array.i16.trap">,
1777 GCCBuiltin<"__nvvm_sust_p_1d_array_i16_trap">;
1778 def int_nvvm_sust_p_1d_array_i32_trap
1779 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1780 "llvm.nvvm.sust.p.1d.array.i32.trap">,
1781 GCCBuiltin<"__nvvm_sust_p_1d_array_i32_trap">;
1782 def int_nvvm_sust_p_1d_array_v2i8_trap
1783 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1784 llvm_i16_ty, llvm_i16_ty], [],
1785 "llvm.nvvm.sust.p.1d.array.v2i8.trap">,
1786 GCCBuiltin<"__nvvm_sust_p_1d_array_v2i8_trap">;
1787 def int_nvvm_sust_p_1d_array_v2i16_trap
1788 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1789 llvm_i16_ty, llvm_i16_ty], [],
1790 "llvm.nvvm.sust.p.1d.array.v2i16.trap">,
1791 GCCBuiltin<"__nvvm_sust_p_1d_array_v2i16_trap">;
1792 def int_nvvm_sust_p_1d_array_v2i32_trap
1793 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1794 llvm_i32_ty, llvm_i32_ty], [],
1795 "llvm.nvvm.sust.p.1d.array.v2i32.trap">,
1796 GCCBuiltin<"__nvvm_sust_p_1d_array_v2i32_trap">;
1797 def int_nvvm_sust_p_1d_array_v4i8_trap
1798 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1799 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1800 "llvm.nvvm.sust.p.1d.array.v4i8.trap">,
1801 GCCBuiltin<"__nvvm_sust_p_1d_array_v4i8_trap">;
1802 def int_nvvm_sust_p_1d_array_v4i16_trap
1803 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1804 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1805 "llvm.nvvm.sust.p.1d.array.v4i16.trap">,
1806 GCCBuiltin<"__nvvm_sust_p_1d_array_v4i16_trap">;
1807 def int_nvvm_sust_p_1d_array_v4i32_trap
1808 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1809 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1810 "llvm.nvvm.sust.p.1d.array.v4i32.trap">,
1811 GCCBuiltin<"__nvvm_sust_p_1d_array_v4i32_trap">;
1814 def int_nvvm_sust_p_2d_i8_trap
1815 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1816 "llvm.nvvm.sust.p.2d.i8.trap">,
1817 GCCBuiltin<"__nvvm_sust_p_2d_i8_trap">;
1818 def int_nvvm_sust_p_2d_i16_trap
1819 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
1820 "llvm.nvvm.sust.p.2d.i16.trap">,
1821 GCCBuiltin<"__nvvm_sust_p_2d_i16_trap">;
1822 def int_nvvm_sust_p_2d_i32_trap
1823 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1824 "llvm.nvvm.sust.p.2d.i32.trap">,
1825 GCCBuiltin<"__nvvm_sust_p_2d_i32_trap">;
1826 def int_nvvm_sust_p_2d_v2i8_trap
1827 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1828 llvm_i16_ty, llvm_i16_ty], [],
1829 "llvm.nvvm.sust.p.2d.v2i8.trap">,
1830 GCCBuiltin<"__nvvm_sust_p_2d_v2i8_trap">;
1831 def int_nvvm_sust_p_2d_v2i16_trap
1832 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1833 llvm_i16_ty, llvm_i16_ty], [],
1834 "llvm.nvvm.sust.p.2d.v2i16.trap">,
1835 GCCBuiltin<"__nvvm_sust_p_2d_v2i16_trap">;
1836 def int_nvvm_sust_p_2d_v2i32_trap
1837 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1838 llvm_i32_ty, llvm_i32_ty], [],
1839 "llvm.nvvm.sust.p.2d.v2i32.trap">,
1840 GCCBuiltin<"__nvvm_sust_p_2d_v2i32_trap">;
1841 def int_nvvm_sust_p_2d_v4i8_trap
1842 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1843 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1844 "llvm.nvvm.sust.p.2d.v4i8.trap">,
1845 GCCBuiltin<"__nvvm_sust_p_2d_v4i8_trap">;
1846 def int_nvvm_sust_p_2d_v4i16_trap
1847 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
1848 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1849 "llvm.nvvm.sust.p.2d.v4i16.trap">,
1850 GCCBuiltin<"__nvvm_sust_p_2d_v4i16_trap">;
1851 def int_nvvm_sust_p_2d_v4i32_trap
1852 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1853 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1854 "llvm.nvvm.sust.p.2d.v4i32.trap">,
1855 GCCBuiltin<"__nvvm_sust_p_2d_v4i32_trap">;
1858 def int_nvvm_sust_p_2d_array_i8_trap
1859 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1860 llvm_i32_ty, llvm_i16_ty], [],
1861 "llvm.nvvm.sust.p.2d.array.i8.trap">,
1862 GCCBuiltin<"__nvvm_sust_p_2d_array_i8_trap">;
1863 def int_nvvm_sust_p_2d_array_i16_trap
1864 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1865 llvm_i32_ty, llvm_i16_ty], [],
1866 "llvm.nvvm.sust.p.2d.array.i16.trap">,
1867 GCCBuiltin<"__nvvm_sust_p_2d_array_i16_trap">;
1868 def int_nvvm_sust_p_2d_array_i32_trap
1869 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1870 llvm_i32_ty, llvm_i32_ty], [],
1871 "llvm.nvvm.sust.p.2d.array.i32.trap">,
1872 GCCBuiltin<"__nvvm_sust_p_2d_array_i32_trap">;
1873 def int_nvvm_sust_p_2d_array_v2i8_trap
1874 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1875 llvm_i16_ty, llvm_i16_ty], [],
1876 "llvm.nvvm.sust.p.2d.array.v2i8.trap">,
1877 GCCBuiltin<"__nvvm_sust_p_2d_array_v2i8_trap">;
1878 def int_nvvm_sust_p_2d_array_v2i16_trap
1879 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1880 llvm_i16_ty, llvm_i16_ty], [],
1881 "llvm.nvvm.sust.p.2d.array.v2i16.trap">,
1882 GCCBuiltin<"__nvvm_sust_p_2d_array_v2i16_trap">;
1883 def int_nvvm_sust_p_2d_array_v2i32_trap
1884 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1885 llvm_i32_ty, llvm_i32_ty], [],
1886 "llvm.nvvm.sust.p.2d.array.v2i32.trap">,
1887 GCCBuiltin<"__nvvm_sust_p_2d_array_v2i32_trap">;
1888 def int_nvvm_sust_p_2d_array_v4i8_trap
1889 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1890 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1891 "llvm.nvvm.sust.p.2d.array.v4i8.trap">,
1892 GCCBuiltin<"__nvvm_sust_p_2d_array_v4i8_trap">;
1893 def int_nvvm_sust_p_2d_array_v4i16_trap
1894 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1895 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1896 "llvm.nvvm.sust.p.2d.array.v4i16.trap">,
1897 GCCBuiltin<"__nvvm_sust_p_2d_array_v4i16_trap">;
1898 def int_nvvm_sust_p_2d_array_v4i32_trap
1899 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1900 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1901 "llvm.nvvm.sust.p.2d.array.v4i32.trap">,
1902 GCCBuiltin<"__nvvm_sust_p_2d_array_v4i32_trap">;
1905 def int_nvvm_sust_p_3d_i8_trap
1906 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1907 llvm_i32_ty, llvm_i16_ty], [],
1908 "llvm.nvvm.sust.p.3d.i8.trap">,
1909 GCCBuiltin<"__nvvm_sust_p_3d_i8_trap">;
1910 def int_nvvm_sust_p_3d_i16_trap
1911 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1912 llvm_i32_ty, llvm_i16_ty], [],
1913 "llvm.nvvm.sust.p.3d.i16.trap">,
1914 GCCBuiltin<"__nvvm_sust_p_3d_i16_trap">;
1915 def int_nvvm_sust_p_3d_i32_trap
1916 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1917 llvm_i32_ty, llvm_i32_ty], [],
1918 "llvm.nvvm.sust.p.3d.i32.trap">,
1919 GCCBuiltin<"__nvvm_sust_p_3d_i32_trap">;
1920 def int_nvvm_sust_p_3d_v2i8_trap
1921 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1922 llvm_i16_ty, llvm_i16_ty], [],
1923 "llvm.nvvm.sust.p.3d.v2i8.trap">,
1924 GCCBuiltin<"__nvvm_sust_p_3d_v2i8_trap">;
1925 def int_nvvm_sust_p_3d_v2i16_trap
1926 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1927 llvm_i16_ty, llvm_i16_ty], [],
1928 "llvm.nvvm.sust.p.3d.v2i16.trap">,
1929 GCCBuiltin<"__nvvm_sust_p_3d_v2i16_trap">;
1930 def int_nvvm_sust_p_3d_v2i32_trap
1931 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1932 llvm_i32_ty, llvm_i32_ty], [],
1933 "llvm.nvvm.sust.p.3d.v2i32.trap">,
1934 GCCBuiltin<"__nvvm_sust_p_3d_v2i32_trap">;
1935 def int_nvvm_sust_p_3d_v4i8_trap
1936 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1937 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1938 "llvm.nvvm.sust.p.3d.v4i8.trap">,
1939 GCCBuiltin<"__nvvm_sust_p_3d_v4i8_trap">;
1940 def int_nvvm_sust_p_3d_v4i16_trap
1941 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1942 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
1943 "llvm.nvvm.sust.p.3d.v4i16.trap">,
1944 GCCBuiltin<"__nvvm_sust_p_3d_v4i16_trap">;
1945 def int_nvvm_sust_p_3d_v4i32_trap
1946 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
1947 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1948 "llvm.nvvm.sust.p.3d.v4i32.trap">,
1949 GCCBuiltin<"__nvvm_sust_p_3d_v4i32_trap">;
1953 // Old PTX back-end intrinsics retained here for backwards-compatibility
1955 multiclass PTXReadSpecialRegisterIntrinsic_v4i32<string prefix> {
1956 // FIXME: Do we need the 128-bit integer type version?
1957 // def _r64 : Intrinsic<[llvm_i128_ty], [], [IntrNoMem]>;
1959 // FIXME: Enable this once v4i32 support is enabled in back-end.
1960 // def _v4i16 : Intrinsic<[llvm_v4i32_ty], [], [IntrNoMem]>;
1962 def _x : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
1963 GCCBuiltin<!strconcat(prefix, "_x")>;
1964 def _y : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
1965 GCCBuiltin<!strconcat(prefix, "_y")>;
1966 def _z : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
1967 GCCBuiltin<!strconcat(prefix, "_z")>;
1968 def _w : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
1969 GCCBuiltin<!strconcat(prefix, "_w")>;
1972 class PTXReadSpecialRegisterIntrinsic_r32<string name>
1973 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
1976 class PTXReadSpecialRegisterIntrinsic_r64<string name>
1977 : Intrinsic<[llvm_i64_ty], [], [IntrNoMem]>,
1980 defm int_ptx_read_tid : PTXReadSpecialRegisterIntrinsic_v4i32
1981 <"__builtin_ptx_read_tid">;
1982 defm int_ptx_read_ntid : PTXReadSpecialRegisterIntrinsic_v4i32
1983 <"__builtin_ptx_read_ntid">;
1985 def int_ptx_read_laneid : PTXReadSpecialRegisterIntrinsic_r32
1986 <"__builtin_ptx_read_laneid">;
1987 def int_ptx_read_warpid : PTXReadSpecialRegisterIntrinsic_r32
1988 <"__builtin_ptx_read_warpid">;
1989 def int_ptx_read_nwarpid : PTXReadSpecialRegisterIntrinsic_r32
1990 <"__builtin_ptx_read_nwarpid">;
1992 defm int_ptx_read_ctaid : PTXReadSpecialRegisterIntrinsic_v4i32
1993 <"__builtin_ptx_read_ctaid">;
1994 defm int_ptx_read_nctaid : PTXReadSpecialRegisterIntrinsic_v4i32
1995 <"__builtin_ptx_read_nctaid">;
1997 def int_ptx_read_smid : PTXReadSpecialRegisterIntrinsic_r32
1998 <"__builtin_ptx_read_smid">;
1999 def int_ptx_read_nsmid : PTXReadSpecialRegisterIntrinsic_r32
2000 <"__builtin_ptx_read_nsmid">;
2001 def int_ptx_read_gridid : PTXReadSpecialRegisterIntrinsic_r32
2002 <"__builtin_ptx_read_gridid">;
2004 def int_ptx_read_lanemask_eq : PTXReadSpecialRegisterIntrinsic_r32
2005 <"__builtin_ptx_read_lanemask_eq">;
2006 def int_ptx_read_lanemask_le : PTXReadSpecialRegisterIntrinsic_r32
2007 <"__builtin_ptx_read_lanemask_le">;
2008 def int_ptx_read_lanemask_lt : PTXReadSpecialRegisterIntrinsic_r32
2009 <"__builtin_ptx_read_lanemask_lt">;
2010 def int_ptx_read_lanemask_ge : PTXReadSpecialRegisterIntrinsic_r32
2011 <"__builtin_ptx_read_lanemask_ge">;
2012 def int_ptx_read_lanemask_gt : PTXReadSpecialRegisterIntrinsic_r32
2013 <"__builtin_ptx_read_lanemask_gt">;
2015 def int_ptx_read_clock : PTXReadSpecialRegisterIntrinsic_r32
2016 <"__builtin_ptx_read_clock">;
2017 def int_ptx_read_clock64 : PTXReadSpecialRegisterIntrinsic_r64
2018 <"__builtin_ptx_read_clock64">;
2020 def int_ptx_read_pm0 : PTXReadSpecialRegisterIntrinsic_r32
2021 <"__builtin_ptx_read_pm0">;
2022 def int_ptx_read_pm1 : PTXReadSpecialRegisterIntrinsic_r32
2023 <"__builtin_ptx_read_pm1">;
2024 def int_ptx_read_pm2 : PTXReadSpecialRegisterIntrinsic_r32
2025 <"__builtin_ptx_read_pm2">;
2026 def int_ptx_read_pm3 : PTXReadSpecialRegisterIntrinsic_r32
2027 <"__builtin_ptx_read_pm3">;
2029 def int_ptx_bar_sync : Intrinsic<[], [llvm_i32_ty], []>,
2030 GCCBuiltin<"__builtin_ptx_bar_sync">;