blob: 609aebdd5d2d91c358008f40967eda671525df50 [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001//===- IntrinsicsNVVM.td - Defines NVVM intrinsics ---------*- tablegen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file defines all of the NVVM-specific intrinsics for use with NVPTX.
11//
12//===----------------------------------------------------------------------===//
13
14// The following intrinsics were once defined here, but are now auto-upgraded
15// to target-generic LLVM intrinsics.
16//
17// * llvm.nvvm.brev32 --> llvm.bitreverse.i32
18// * llvm.nvvm.brev64 --> llvm.bitreverse.i64
19// * llvm.nvvm.clz.i --> llvm.ctlz.i32
20// * llvm.nvvm.clz.ll --> trunc i64 llvm.ctlz.i64(x) to i32
21// * llvm.nvvm.popc.i --> llvm.ctpop.i32
22// * llvm.nvvm.popc.ll --> trunc i64 llvm.ctpop.i64 to i32
23// * llvm.nvvm.abs.i --> select(x >= -x, x, -x)
24// * llvm.nvvm.abs.ll --> ibid.
25// * llvm.nvvm.max.i --> select(x sge y, x, y)
26// * llvm.nvvm.max.ll --> ibid.
27// * llvm.nvvm.max.ui --> select(x uge y, x, y)
28// * llvm.nvvm.max.ull --> ibid.
29// * llvm.nvvm.max.i --> select(x sle y, x, y)
30// * llvm.nvvm.max.ll --> ibid.
31// * llvm.nvvm.max.ui --> select(x ule y, x, y)
32// * llvm.nvvm.max.ull --> ibid.
33// * llvm.nvvm.h2f --> llvm.convert.to.fp16.f32
34
35def llvm_anyi64ptr_ty : LLVMAnyPointerType<llvm_i64_ty>; // (space)i64*
36
37//
38// MISC
39//
40
41let TargetPrefix = "nvvm" in {
42 def int_nvvm_prmt : GCCBuiltin<"__nvvm_prmt">,
43 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
44 [IntrNoMem, Commutative]>;
45
46//
47// Min Max
48//
49
50 def int_nvvm_fmin_f : GCCBuiltin<"__nvvm_fmin_f">,
51 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
52 [IntrNoMem, Commutative]>;
53 def int_nvvm_fmin_ftz_f : GCCBuiltin<"__nvvm_fmin_ftz_f">,
54 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
55 [IntrNoMem, Commutative]>;
56
57 def int_nvvm_fmax_f : GCCBuiltin<"__nvvm_fmax_f">,
58 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty]
59 , [IntrNoMem, Commutative]>;
60 def int_nvvm_fmax_ftz_f : GCCBuiltin<"__nvvm_fmax_ftz_f">,
61 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
62 [IntrNoMem, Commutative]>;
63
64 def int_nvvm_fmin_d : GCCBuiltin<"__nvvm_fmin_d">,
65 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
66 [IntrNoMem, Commutative]>;
67 def int_nvvm_fmax_d : GCCBuiltin<"__nvvm_fmax_d">,
68 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
69 [IntrNoMem, Commutative]>;
70
71//
72// Multiplication
73//
74
75 def int_nvvm_mulhi_i : GCCBuiltin<"__nvvm_mulhi_i">,
76 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
77 [IntrNoMem, Commutative]>;
78 def int_nvvm_mulhi_ui : GCCBuiltin<"__nvvm_mulhi_ui">,
79 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
80 [IntrNoMem, Commutative]>;
81
82 def int_nvvm_mulhi_ll : GCCBuiltin<"__nvvm_mulhi_ll">,
83 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
84 [IntrNoMem, Commutative]>;
85 def int_nvvm_mulhi_ull : GCCBuiltin<"__nvvm_mulhi_ull">,
86 Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i64_ty],
87 [IntrNoMem, Commutative]>;
88
89 def int_nvvm_mul_rn_ftz_f : GCCBuiltin<"__nvvm_mul_rn_ftz_f">,
90 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
91 [IntrNoMem, Commutative]>;
92 def int_nvvm_mul_rn_f : GCCBuiltin<"__nvvm_mul_rn_f">,
93 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
94 [IntrNoMem, Commutative]>;
95 def int_nvvm_mul_rz_ftz_f : GCCBuiltin<"__nvvm_mul_rz_ftz_f">,
96 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
97 [IntrNoMem, Commutative]>;
98 def int_nvvm_mul_rz_f : GCCBuiltin<"__nvvm_mul_rz_f">,
99 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
100 [IntrNoMem, Commutative]>;
101 def int_nvvm_mul_rm_ftz_f : GCCBuiltin<"__nvvm_mul_rm_ftz_f">,
102 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
103 [IntrNoMem, Commutative]>;
104 def int_nvvm_mul_rm_f : GCCBuiltin<"__nvvm_mul_rm_f">,
105 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
106 [IntrNoMem, Commutative]>;
107 def int_nvvm_mul_rp_ftz_f : GCCBuiltin<"__nvvm_mul_rp_ftz_f">,
108 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
109 [IntrNoMem, Commutative]>;
110 def int_nvvm_mul_rp_f : GCCBuiltin<"__nvvm_mul_rp_f">,
111 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
112 [IntrNoMem, Commutative]>;
113
114 def int_nvvm_mul_rn_d : GCCBuiltin<"__nvvm_mul_rn_d">,
115 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
116 [IntrNoMem, Commutative]>;
117 def int_nvvm_mul_rz_d : GCCBuiltin<"__nvvm_mul_rz_d">,
118 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
119 [IntrNoMem, Commutative]>;
120 def int_nvvm_mul_rm_d : GCCBuiltin<"__nvvm_mul_rm_d">,
121 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
122 [IntrNoMem, Commutative]>;
123 def int_nvvm_mul_rp_d : GCCBuiltin<"__nvvm_mul_rp_d">,
124 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
125 [IntrNoMem, Commutative]>;
126
127 def int_nvvm_mul24_i : GCCBuiltin<"__nvvm_mul24_i">,
128 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
129 [IntrNoMem, Commutative]>;
130 def int_nvvm_mul24_ui : GCCBuiltin<"__nvvm_mul24_ui">,
131 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
132 [IntrNoMem, Commutative]>;
133
134//
135// Div
136//
137
138 def int_nvvm_div_approx_ftz_f : GCCBuiltin<"__nvvm_div_approx_ftz_f">,
139 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
140 [IntrNoMem, Commutative]>;
141 def int_nvvm_div_approx_f : GCCBuiltin<"__nvvm_div_approx_f">,
142 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
143 [IntrNoMem, Commutative]>;
144
145 def int_nvvm_div_rn_ftz_f : GCCBuiltin<"__nvvm_div_rn_ftz_f">,
146 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
147 [IntrNoMem, Commutative]>;
148 def int_nvvm_div_rn_f : GCCBuiltin<"__nvvm_div_rn_f">,
149 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
150 [IntrNoMem, Commutative]>;
151
152 def int_nvvm_div_rz_ftz_f : GCCBuiltin<"__nvvm_div_rz_ftz_f">,
153 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
154 [IntrNoMem, Commutative]>;
155 def int_nvvm_div_rz_f : GCCBuiltin<"__nvvm_div_rz_f">,
156 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
157 [IntrNoMem, Commutative]>;
158
159 def int_nvvm_div_rm_ftz_f : GCCBuiltin<"__nvvm_div_rm_ftz_f">,
160 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
161 [IntrNoMem, Commutative]>;
162 def int_nvvm_div_rm_f : GCCBuiltin<"__nvvm_div_rm_f">,
163 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
164 [IntrNoMem, Commutative]>;
165
166 def int_nvvm_div_rp_ftz_f : GCCBuiltin<"__nvvm_div_rp_ftz_f">,
167 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
168 [IntrNoMem, Commutative]>;
169 def int_nvvm_div_rp_f : GCCBuiltin<"__nvvm_div_rp_f">,
170 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
171 [IntrNoMem, Commutative]>;
172
173 def int_nvvm_div_rn_d : GCCBuiltin<"__nvvm_div_rn_d">,
174 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
175 [IntrNoMem, Commutative]>;
176 def int_nvvm_div_rz_d : GCCBuiltin<"__nvvm_div_rz_d">,
177 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
178 [IntrNoMem, Commutative]>;
179 def int_nvvm_div_rm_d : GCCBuiltin<"__nvvm_div_rm_d">,
180 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
181 [IntrNoMem, Commutative]>;
182 def int_nvvm_div_rp_d : GCCBuiltin<"__nvvm_div_rp_d">,
183 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
184 [IntrNoMem, Commutative]>;
185
186//
187// Sad
188//
189
190 def int_nvvm_sad_i : GCCBuiltin<"__nvvm_sad_i">,
191 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
192 [IntrNoMem, Commutative]>;
193 def int_nvvm_sad_ui : GCCBuiltin<"__nvvm_sad_ui">,
194 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
195 [IntrNoMem, Commutative]>;
196
197//
198// Floor Ceil
199//
200
201 def int_nvvm_floor_ftz_f : GCCBuiltin<"__nvvm_floor_ftz_f">,
202 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
203 def int_nvvm_floor_f : GCCBuiltin<"__nvvm_floor_f">,
204 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
205 def int_nvvm_floor_d : GCCBuiltin<"__nvvm_floor_d">,
206 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
207
208 def int_nvvm_ceil_ftz_f : GCCBuiltin<"__nvvm_ceil_ftz_f">,
209 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
210 def int_nvvm_ceil_f : GCCBuiltin<"__nvvm_ceil_f">,
211 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
212 def int_nvvm_ceil_d : GCCBuiltin<"__nvvm_ceil_d">,
213 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
214
215//
216// Abs
217//
218
219 def int_nvvm_fabs_ftz_f : GCCBuiltin<"__nvvm_fabs_ftz_f">,
220 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
221 def int_nvvm_fabs_f : GCCBuiltin<"__nvvm_fabs_f">,
222 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
223 def int_nvvm_fabs_d : GCCBuiltin<"__nvvm_fabs_d">,
224 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
225
226//
227// Round
228//
229
230 def int_nvvm_round_ftz_f : GCCBuiltin<"__nvvm_round_ftz_f">,
231 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
232 def int_nvvm_round_f : GCCBuiltin<"__nvvm_round_f">,
233 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
234
235 def int_nvvm_round_d : GCCBuiltin<"__nvvm_round_d">,
236 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
237
238//
239// Trunc
240//
241
242 def int_nvvm_trunc_ftz_f : GCCBuiltin<"__nvvm_trunc_ftz_f">,
243 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
244 def int_nvvm_trunc_f : GCCBuiltin<"__nvvm_trunc_f">,
245 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
246
247 def int_nvvm_trunc_d : GCCBuiltin<"__nvvm_trunc_d">,
248 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
249
250//
251// Saturate
252//
253
254 def int_nvvm_saturate_ftz_f : GCCBuiltin<"__nvvm_saturate_ftz_f">,
255 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
256 def int_nvvm_saturate_f : GCCBuiltin<"__nvvm_saturate_f">,
257 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
258
259 def int_nvvm_saturate_d : GCCBuiltin<"__nvvm_saturate_d">,
260 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
261
262//
263// Exp2 Log2
264//
265
266 def int_nvvm_ex2_approx_ftz_f : GCCBuiltin<"__nvvm_ex2_approx_ftz_f">,
267 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
268 def int_nvvm_ex2_approx_f : GCCBuiltin<"__nvvm_ex2_approx_f">,
269 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
270 def int_nvvm_ex2_approx_d : GCCBuiltin<"__nvvm_ex2_approx_d">,
271 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
272
273 def int_nvvm_lg2_approx_ftz_f : GCCBuiltin<"__nvvm_lg2_approx_ftz_f">,
274 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
275 def int_nvvm_lg2_approx_f : GCCBuiltin<"__nvvm_lg2_approx_f">,
276 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
277 def int_nvvm_lg2_approx_d : GCCBuiltin<"__nvvm_lg2_approx_d">,
278 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
279
280//
281// Sin Cos
282//
283
284 def int_nvvm_sin_approx_ftz_f : GCCBuiltin<"__nvvm_sin_approx_ftz_f">,
285 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
286 def int_nvvm_sin_approx_f : GCCBuiltin<"__nvvm_sin_approx_f">,
287 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
288
289 def int_nvvm_cos_approx_ftz_f : GCCBuiltin<"__nvvm_cos_approx_ftz_f">,
290 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
291 def int_nvvm_cos_approx_f : GCCBuiltin<"__nvvm_cos_approx_f">,
292 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
293
294//
295// Fma
296//
297
298 def int_nvvm_fma_rn_ftz_f : GCCBuiltin<"__nvvm_fma_rn_ftz_f">,
299 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
300 [IntrNoMem, Commutative]>;
301 def int_nvvm_fma_rn_f : GCCBuiltin<"__nvvm_fma_rn_f">,
302 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
303 [IntrNoMem, Commutative]>;
304 def int_nvvm_fma_rz_ftz_f : GCCBuiltin<"__nvvm_fma_rz_ftz_f">,
305 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
306 [IntrNoMem, Commutative]>;
307 def int_nvvm_fma_rz_f : GCCBuiltin<"__nvvm_fma_rz_f">,
308 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
309 [IntrNoMem, Commutative]>;
310 def int_nvvm_fma_rm_ftz_f : GCCBuiltin<"__nvvm_fma_rm_ftz_f">,
311 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
312 [IntrNoMem, Commutative]>;
313 def int_nvvm_fma_rm_f : GCCBuiltin<"__nvvm_fma_rm_f">,
314 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
315 [IntrNoMem, Commutative]>;
316 def int_nvvm_fma_rp_ftz_f : GCCBuiltin<"__nvvm_fma_rp_ftz_f">,
317 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
318 [IntrNoMem, Commutative]>;
319 def int_nvvm_fma_rp_f : GCCBuiltin<"__nvvm_fma_rp_f">,
320 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty, llvm_float_ty],
321 [IntrNoMem, Commutative]>;
322
323 def int_nvvm_fma_rn_d : GCCBuiltin<"__nvvm_fma_rn_d">,
324 Intrinsic<[llvm_double_ty],
325 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
326 [IntrNoMem, Commutative]>;
327 def int_nvvm_fma_rz_d : GCCBuiltin<"__nvvm_fma_rz_d">,
328 Intrinsic<[llvm_double_ty],
329 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
330 [IntrNoMem, Commutative]>;
331 def int_nvvm_fma_rm_d : GCCBuiltin<"__nvvm_fma_rm_d">,
332 Intrinsic<[llvm_double_ty],
333 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
334 [IntrNoMem, Commutative]>;
335 def int_nvvm_fma_rp_d : GCCBuiltin<"__nvvm_fma_rp_d">,
336 Intrinsic<[llvm_double_ty],
337 [llvm_double_ty, llvm_double_ty, llvm_double_ty],
338 [IntrNoMem, Commutative]>;
339
340//
341// Rcp
342//
343
344 def int_nvvm_rcp_rn_ftz_f : GCCBuiltin<"__nvvm_rcp_rn_ftz_f">,
345 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
346 def int_nvvm_rcp_rn_f : GCCBuiltin<"__nvvm_rcp_rn_f">,
347 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
348 def int_nvvm_rcp_rz_ftz_f : GCCBuiltin<"__nvvm_rcp_rz_ftz_f">,
349 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
350 def int_nvvm_rcp_rz_f : GCCBuiltin<"__nvvm_rcp_rz_f">,
351 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
352 def int_nvvm_rcp_rm_ftz_f : GCCBuiltin<"__nvvm_rcp_rm_ftz_f">,
353 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
354 def int_nvvm_rcp_rm_f : GCCBuiltin<"__nvvm_rcp_rm_f">,
355 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
356 def int_nvvm_rcp_rp_ftz_f : GCCBuiltin<"__nvvm_rcp_rp_ftz_f">,
357 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
358 def int_nvvm_rcp_rp_f : GCCBuiltin<"__nvvm_rcp_rp_f">,
359 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
360
361 def int_nvvm_rcp_rn_d : GCCBuiltin<"__nvvm_rcp_rn_d">,
362 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
363 def int_nvvm_rcp_rz_d : GCCBuiltin<"__nvvm_rcp_rz_d">,
364 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
365 def int_nvvm_rcp_rm_d : GCCBuiltin<"__nvvm_rcp_rm_d">,
366 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
367 def int_nvvm_rcp_rp_d : GCCBuiltin<"__nvvm_rcp_rp_d">,
368 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
369
370 def int_nvvm_rcp_approx_ftz_d : GCCBuiltin<"__nvvm_rcp_approx_ftz_d">,
371 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
372
373//
374// Sqrt
375//
376
377 def int_nvvm_sqrt_f : GCCBuiltin<"__nvvm_sqrt_f">,
378 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
379 def int_nvvm_sqrt_rn_ftz_f : GCCBuiltin<"__nvvm_sqrt_rn_ftz_f">,
380 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
381 def int_nvvm_sqrt_rn_f : GCCBuiltin<"__nvvm_sqrt_rn_f">,
382 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
383 def int_nvvm_sqrt_rz_ftz_f : GCCBuiltin<"__nvvm_sqrt_rz_ftz_f">,
384 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
385 def int_nvvm_sqrt_rz_f : GCCBuiltin<"__nvvm_sqrt_rz_f">,
386 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
387 def int_nvvm_sqrt_rm_ftz_f : GCCBuiltin<"__nvvm_sqrt_rm_ftz_f">,
388 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
389 def int_nvvm_sqrt_rm_f : GCCBuiltin<"__nvvm_sqrt_rm_f">,
390 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
391 def int_nvvm_sqrt_rp_ftz_f : GCCBuiltin<"__nvvm_sqrt_rp_ftz_f">,
392 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
393 def int_nvvm_sqrt_rp_f : GCCBuiltin<"__nvvm_sqrt_rp_f">,
394 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
395 def int_nvvm_sqrt_approx_ftz_f : GCCBuiltin<"__nvvm_sqrt_approx_ftz_f">,
396 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
397 def int_nvvm_sqrt_approx_f : GCCBuiltin<"__nvvm_sqrt_approx_f">,
398 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
399
400 def int_nvvm_sqrt_rn_d : GCCBuiltin<"__nvvm_sqrt_rn_d">,
401 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
402 def int_nvvm_sqrt_rz_d : GCCBuiltin<"__nvvm_sqrt_rz_d">,
403 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
404 def int_nvvm_sqrt_rm_d : GCCBuiltin<"__nvvm_sqrt_rm_d">,
405 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
406 def int_nvvm_sqrt_rp_d : GCCBuiltin<"__nvvm_sqrt_rp_d">,
407 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
408
409//
410// Rsqrt
411//
412
413 def int_nvvm_rsqrt_approx_ftz_f : GCCBuiltin<"__nvvm_rsqrt_approx_ftz_f">,
414 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
415 def int_nvvm_rsqrt_approx_f : GCCBuiltin<"__nvvm_rsqrt_approx_f">,
416 Intrinsic<[llvm_float_ty], [llvm_float_ty], [IntrNoMem]>;
417 def int_nvvm_rsqrt_approx_d : GCCBuiltin<"__nvvm_rsqrt_approx_d">,
418 Intrinsic<[llvm_double_ty], [llvm_double_ty], [IntrNoMem]>;
419
420//
421// Add
422//
423
424 def int_nvvm_add_rn_ftz_f : GCCBuiltin<"__nvvm_add_rn_ftz_f">,
425 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
426 [IntrNoMem, Commutative]>;
427 def int_nvvm_add_rn_f : GCCBuiltin<"__nvvm_add_rn_f">,
428 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
429 [IntrNoMem, Commutative]>;
430 def int_nvvm_add_rz_ftz_f : GCCBuiltin<"__nvvm_add_rz_ftz_f">,
431 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
432 [IntrNoMem, Commutative]>;
433 def int_nvvm_add_rz_f : GCCBuiltin<"__nvvm_add_rz_f">,
434 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
435 [IntrNoMem, Commutative]>;
436 def int_nvvm_add_rm_ftz_f : GCCBuiltin<"__nvvm_add_rm_ftz_f">,
437 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
438 [IntrNoMem, Commutative]>;
439 def int_nvvm_add_rm_f : GCCBuiltin<"__nvvm_add_rm_f">,
440 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
441 [IntrNoMem, Commutative]>;
442 def int_nvvm_add_rp_ftz_f : GCCBuiltin<"__nvvm_add_rp_ftz_f">,
443 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
444 [IntrNoMem, Commutative]>;
445 def int_nvvm_add_rp_f : GCCBuiltin<"__nvvm_add_rp_f">,
446 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_float_ty],
447 [IntrNoMem, Commutative]>;
448
449 def int_nvvm_add_rn_d : GCCBuiltin<"__nvvm_add_rn_d">,
450 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
451 [IntrNoMem, Commutative]>;
452 def int_nvvm_add_rz_d : GCCBuiltin<"__nvvm_add_rz_d">,
453 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
454 [IntrNoMem, Commutative]>;
455 def int_nvvm_add_rm_d : GCCBuiltin<"__nvvm_add_rm_d">,
456 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
457 [IntrNoMem, Commutative]>;
458 def int_nvvm_add_rp_d : GCCBuiltin<"__nvvm_add_rp_d">,
459 Intrinsic<[llvm_double_ty], [llvm_double_ty, llvm_double_ty],
460 [IntrNoMem, Commutative]>;
461
462//
463// Convert
464//
465
466 def int_nvvm_d2f_rn_ftz : GCCBuiltin<"__nvvm_d2f_rn_ftz">,
467 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
468 def int_nvvm_d2f_rn : GCCBuiltin<"__nvvm_d2f_rn">,
469 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
470 def int_nvvm_d2f_rz_ftz : GCCBuiltin<"__nvvm_d2f_rz_ftz">,
471 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
472 def int_nvvm_d2f_rz : GCCBuiltin<"__nvvm_d2f_rz">,
473 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
474 def int_nvvm_d2f_rm_ftz : GCCBuiltin<"__nvvm_d2f_rm_ftz">,
475 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
476 def int_nvvm_d2f_rm : GCCBuiltin<"__nvvm_d2f_rm">,
477 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
478 def int_nvvm_d2f_rp_ftz : GCCBuiltin<"__nvvm_d2f_rp_ftz">,
479 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
480 def int_nvvm_d2f_rp : GCCBuiltin<"__nvvm_d2f_rp">,
481 Intrinsic<[llvm_float_ty], [llvm_double_ty], [IntrNoMem]>;
482
483 def int_nvvm_d2i_rn : GCCBuiltin<"__nvvm_d2i_rn">,
484 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
485 def int_nvvm_d2i_rz : GCCBuiltin<"__nvvm_d2i_rz">,
486 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
487 def int_nvvm_d2i_rm : GCCBuiltin<"__nvvm_d2i_rm">,
488 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
489 def int_nvvm_d2i_rp : GCCBuiltin<"__nvvm_d2i_rp">,
490 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
491
492 def int_nvvm_d2ui_rn : GCCBuiltin<"__nvvm_d2ui_rn">,
493 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
494 def int_nvvm_d2ui_rz : GCCBuiltin<"__nvvm_d2ui_rz">,
495 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
496 def int_nvvm_d2ui_rm : GCCBuiltin<"__nvvm_d2ui_rm">,
497 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
498 def int_nvvm_d2ui_rp : GCCBuiltin<"__nvvm_d2ui_rp">,
499 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
500
501 def int_nvvm_i2d_rn : GCCBuiltin<"__nvvm_i2d_rn">,
502 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
503 def int_nvvm_i2d_rz : GCCBuiltin<"__nvvm_i2d_rz">,
504 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
505 def int_nvvm_i2d_rm : GCCBuiltin<"__nvvm_i2d_rm">,
506 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
507 def int_nvvm_i2d_rp : GCCBuiltin<"__nvvm_i2d_rp">,
508 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
509
510 def int_nvvm_ui2d_rn : GCCBuiltin<"__nvvm_ui2d_rn">,
511 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
512 def int_nvvm_ui2d_rz : GCCBuiltin<"__nvvm_ui2d_rz">,
513 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
514 def int_nvvm_ui2d_rm : GCCBuiltin<"__nvvm_ui2d_rm">,
515 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
516 def int_nvvm_ui2d_rp : GCCBuiltin<"__nvvm_ui2d_rp">,
517 Intrinsic<[llvm_double_ty], [llvm_i32_ty], [IntrNoMem]>;
518
519 def int_nvvm_f2i_rn_ftz : GCCBuiltin<"__nvvm_f2i_rn_ftz">,
520 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
521 def int_nvvm_f2i_rn : GCCBuiltin<"__nvvm_f2i_rn">,
522 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
523 def int_nvvm_f2i_rz_ftz : GCCBuiltin<"__nvvm_f2i_rz_ftz">,
524 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
525 def int_nvvm_f2i_rz : GCCBuiltin<"__nvvm_f2i_rz">,
526 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
527 def int_nvvm_f2i_rm_ftz : GCCBuiltin<"__nvvm_f2i_rm_ftz">,
528 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
529 def int_nvvm_f2i_rm : GCCBuiltin<"__nvvm_f2i_rm">,
530 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
531 def int_nvvm_f2i_rp_ftz : GCCBuiltin<"__nvvm_f2i_rp_ftz">,
532 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
533 def int_nvvm_f2i_rp : GCCBuiltin<"__nvvm_f2i_rp">,
534 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
535
536 def int_nvvm_f2ui_rn_ftz : GCCBuiltin<"__nvvm_f2ui_rn_ftz">,
537 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
538 def int_nvvm_f2ui_rn : GCCBuiltin<"__nvvm_f2ui_rn">,
539 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
540 def int_nvvm_f2ui_rz_ftz : GCCBuiltin<"__nvvm_f2ui_rz_ftz">,
541 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
542 def int_nvvm_f2ui_rz : GCCBuiltin<"__nvvm_f2ui_rz">,
543 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
544 def int_nvvm_f2ui_rm_ftz : GCCBuiltin<"__nvvm_f2ui_rm_ftz">,
545 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
546 def int_nvvm_f2ui_rm : GCCBuiltin<"__nvvm_f2ui_rm">,
547 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
548 def int_nvvm_f2ui_rp_ftz : GCCBuiltin<"__nvvm_f2ui_rp_ftz">,
549 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
550 def int_nvvm_f2ui_rp : GCCBuiltin<"__nvvm_f2ui_rp">,
551 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
552
553 def int_nvvm_i2f_rn : GCCBuiltin<"__nvvm_i2f_rn">,
554 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
555 def int_nvvm_i2f_rz : GCCBuiltin<"__nvvm_i2f_rz">,
556 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
557 def int_nvvm_i2f_rm : GCCBuiltin<"__nvvm_i2f_rm">,
558 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
559 def int_nvvm_i2f_rp : GCCBuiltin<"__nvvm_i2f_rp">,
560 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
561
562 def int_nvvm_ui2f_rn : GCCBuiltin<"__nvvm_ui2f_rn">,
563 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
564 def int_nvvm_ui2f_rz : GCCBuiltin<"__nvvm_ui2f_rz">,
565 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
566 def int_nvvm_ui2f_rm : GCCBuiltin<"__nvvm_ui2f_rm">,
567 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
568 def int_nvvm_ui2f_rp : GCCBuiltin<"__nvvm_ui2f_rp">,
569 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
570
571 def int_nvvm_lohi_i2d : GCCBuiltin<"__nvvm_lohi_i2d">,
572 Intrinsic<[llvm_double_ty], [llvm_i32_ty, llvm_i32_ty],
573 [IntrNoMem, Commutative]>;
574
575 def int_nvvm_d2i_lo : GCCBuiltin<"__nvvm_d2i_lo">,
576 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
577 def int_nvvm_d2i_hi : GCCBuiltin<"__nvvm_d2i_hi">,
578 Intrinsic<[llvm_i32_ty], [llvm_double_ty], [IntrNoMem]>;
579
580 def int_nvvm_f2ll_rn_ftz : GCCBuiltin<"__nvvm_f2ll_rn_ftz">,
581 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
582 def int_nvvm_f2ll_rn : GCCBuiltin<"__nvvm_f2ll_rn">,
583 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
584 def int_nvvm_f2ll_rz_ftz : GCCBuiltin<"__nvvm_f2ll_rz_ftz">,
585 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
586 def int_nvvm_f2ll_rz : GCCBuiltin<"__nvvm_f2ll_rz">,
587 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
588 def int_nvvm_f2ll_rm_ftz : GCCBuiltin<"__nvvm_f2ll_rm_ftz">,
589 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
590 def int_nvvm_f2ll_rm : GCCBuiltin<"__nvvm_f2ll_rm">,
591 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
592 def int_nvvm_f2ll_rp_ftz : GCCBuiltin<"__nvvm_f2ll_rp_ftz">,
593 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
594 def int_nvvm_f2ll_rp : GCCBuiltin<"__nvvm_f2ll_rp">,
595 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
596
597 def int_nvvm_f2ull_rn_ftz : GCCBuiltin<"__nvvm_f2ull_rn_ftz">,
598 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
599 def int_nvvm_f2ull_rn : GCCBuiltin<"__nvvm_f2ull_rn">,
600 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
601 def int_nvvm_f2ull_rz_ftz : GCCBuiltin<"__nvvm_f2ull_rz_ftz">,
602 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
603 def int_nvvm_f2ull_rz : GCCBuiltin<"__nvvm_f2ull_rz">,
604 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
605 def int_nvvm_f2ull_rm_ftz : GCCBuiltin<"__nvvm_f2ull_rm_ftz">,
606 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
607 def int_nvvm_f2ull_rm : GCCBuiltin<"__nvvm_f2ull_rm">,
608 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
609 def int_nvvm_f2ull_rp_ftz : GCCBuiltin<"__nvvm_f2ull_rp_ftz">,
610 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
611 def int_nvvm_f2ull_rp : GCCBuiltin<"__nvvm_f2ull_rp">,
612 Intrinsic<[llvm_i64_ty], [llvm_float_ty], [IntrNoMem]>;
613
614 def int_nvvm_d2ll_rn : GCCBuiltin<"__nvvm_d2ll_rn">,
615 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
616 def int_nvvm_d2ll_rz : GCCBuiltin<"__nvvm_d2ll_rz">,
617 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
618 def int_nvvm_d2ll_rm : GCCBuiltin<"__nvvm_d2ll_rm">,
619 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
620 def int_nvvm_d2ll_rp : GCCBuiltin<"__nvvm_d2ll_rp">,
621 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
622
623 def int_nvvm_d2ull_rn : GCCBuiltin<"__nvvm_d2ull_rn">,
624 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
625 def int_nvvm_d2ull_rz : GCCBuiltin<"__nvvm_d2ull_rz">,
626 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
627 def int_nvvm_d2ull_rm : GCCBuiltin<"__nvvm_d2ull_rm">,
628 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
629 def int_nvvm_d2ull_rp : GCCBuiltin<"__nvvm_d2ull_rp">,
630 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
631
632 def int_nvvm_ll2f_rn : GCCBuiltin<"__nvvm_ll2f_rn">,
633 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
634 def int_nvvm_ll2f_rz : GCCBuiltin<"__nvvm_ll2f_rz">,
635 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
636 def int_nvvm_ll2f_rm : GCCBuiltin<"__nvvm_ll2f_rm">,
637 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
638 def int_nvvm_ll2f_rp : GCCBuiltin<"__nvvm_ll2f_rp">,
639 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
640 def int_nvvm_ull2f_rn : GCCBuiltin<"__nvvm_ull2f_rn">,
641 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
642 def int_nvvm_ull2f_rz : GCCBuiltin<"__nvvm_ull2f_rz">,
643 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
644 def int_nvvm_ull2f_rm : GCCBuiltin<"__nvvm_ull2f_rm">,
645 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
646 def int_nvvm_ull2f_rp : GCCBuiltin<"__nvvm_ull2f_rp">,
647 Intrinsic<[llvm_float_ty], [llvm_i64_ty], [IntrNoMem]>;
648
649 def int_nvvm_ll2d_rn : GCCBuiltin<"__nvvm_ll2d_rn">,
650 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
651 def int_nvvm_ll2d_rz : GCCBuiltin<"__nvvm_ll2d_rz">,
652 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
653 def int_nvvm_ll2d_rm : GCCBuiltin<"__nvvm_ll2d_rm">,
654 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
655 def int_nvvm_ll2d_rp : GCCBuiltin<"__nvvm_ll2d_rp">,
656 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
657 def int_nvvm_ull2d_rn : GCCBuiltin<"__nvvm_ull2d_rn">,
658 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
659 def int_nvvm_ull2d_rz : GCCBuiltin<"__nvvm_ull2d_rz">,
660 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
661 def int_nvvm_ull2d_rm : GCCBuiltin<"__nvvm_ull2d_rm">,
662 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
663 def int_nvvm_ull2d_rp : GCCBuiltin<"__nvvm_ull2d_rp">,
664 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
665
666 def int_nvvm_f2h_rn_ftz : GCCBuiltin<"__nvvm_f2h_rn_ftz">,
667 Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
668 def int_nvvm_f2h_rn : GCCBuiltin<"__nvvm_f2h_rn">,
669 Intrinsic<[llvm_i16_ty], [llvm_float_ty], [IntrNoMem]>;
670
671//
672// Bitcast
673//
674
675 def int_nvvm_bitcast_f2i : GCCBuiltin<"__nvvm_bitcast_f2i">,
676 Intrinsic<[llvm_i32_ty], [llvm_float_ty], [IntrNoMem]>;
677 def int_nvvm_bitcast_i2f : GCCBuiltin<"__nvvm_bitcast_i2f">,
678 Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
679
680 def int_nvvm_bitcast_ll2d : GCCBuiltin<"__nvvm_bitcast_ll2d">,
681 Intrinsic<[llvm_double_ty], [llvm_i64_ty], [IntrNoMem]>;
682 def int_nvvm_bitcast_d2ll : GCCBuiltin<"__nvvm_bitcast_d2ll">,
683 Intrinsic<[llvm_i64_ty], [llvm_double_ty], [IntrNoMem]>;
684
685// FNS
686
687 def int_nvvm_fns : GCCBuiltin<"__nvvm_fns">,
688 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
689 [IntrNoMem]>;
690
691// Atomics not available as llvm intrinsics.
692 def int_nvvm_atomic_load_add_f32 : Intrinsic<[llvm_float_ty],
693 [LLVMAnyPointerType<llvm_float_ty>, llvm_float_ty],
694 [IntrArgMemOnly, NoCapture<0>]>;
695 // Atomic add of f64 requires sm_60.
696 def int_nvvm_atomic_load_add_f64 : Intrinsic<[llvm_double_ty],
697 [LLVMAnyPointerType<llvm_double_ty>, llvm_double_ty],
698 [IntrArgMemOnly, NoCapture<0>]>;
699
700 def int_nvvm_atomic_load_inc_32 : Intrinsic<[llvm_i32_ty],
701 [LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
702 [IntrArgMemOnly, NoCapture<0>]>;
703 def int_nvvm_atomic_load_dec_32 : Intrinsic<[llvm_i32_ty],
704 [LLVMAnyPointerType<llvm_i32_ty>, llvm_i32_ty],
705 [IntrArgMemOnly, NoCapture<0>]>;
706
707 class SCOPED_ATOMIC2_impl<LLVMType elty>
708 : Intrinsic<[elty],
709 [LLVMAnyPointerType<LLVMMatchType<0>>, LLVMMatchType<0>],
710 [IntrArgMemOnly, NoCapture<0>]>;
711 class SCOPED_ATOMIC3_impl<LLVMType elty>
712 : Intrinsic<[elty],
713 [LLVMAnyPointerType<LLVMMatchType<0>>, LLVMMatchType<0>,
714 LLVMMatchType<0>],
715 [IntrArgMemOnly, NoCapture<0>]>;
716
717 multiclass PTXAtomicWithScope2<LLVMType elty> {
718 def _cta : SCOPED_ATOMIC2_impl<elty>;
719 def _sys : SCOPED_ATOMIC2_impl<elty>;
720 }
721 multiclass PTXAtomicWithScope3<LLVMType elty> {
722 def _cta : SCOPED_ATOMIC3_impl<elty>;
723 def _sys : SCOPED_ATOMIC3_impl<elty>;
724 }
725 multiclass PTXAtomicWithScope2_fi {
726 defm _f: PTXAtomicWithScope2<llvm_anyfloat_ty>;
727 defm _i: PTXAtomicWithScope2<llvm_anyint_ty>;
728 }
729 defm int_nvvm_atomic_add_gen : PTXAtomicWithScope2_fi;
730 defm int_nvvm_atomic_inc_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
731 defm int_nvvm_atomic_dec_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
732 defm int_nvvm_atomic_exch_gen_i: PTXAtomicWithScope2<llvm_anyint_ty>;
733 defm int_nvvm_atomic_xor_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
734 defm int_nvvm_atomic_max_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
735 defm int_nvvm_atomic_min_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
736 defm int_nvvm_atomic_or_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
737 defm int_nvvm_atomic_and_gen_i : PTXAtomicWithScope2<llvm_anyint_ty>;
738 defm int_nvvm_atomic_cas_gen_i : PTXAtomicWithScope3<llvm_anyint_ty>;
739
740// Bar.Sync
741
742 // The builtin for "bar.sync 0" is called __syncthreads. Unlike most of the
743 // intrinsics in this file, this one is a user-facing API.
744 def int_nvvm_barrier0 : GCCBuiltin<"__syncthreads">,
745 Intrinsic<[], [], [IntrConvergent]>;
746 // Synchronize all threads in the CTA at barrier 'n'.
747 def int_nvvm_barrier_n : GCCBuiltin<"__nvvm_bar_n">,
748 Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>;
749 // Synchronize 'm', a multiple of warp size, (arg 2) threads in
750 // the CTA at barrier 'n' (arg 1).
751 def int_nvvm_barrier : GCCBuiltin<"__nvvm_bar">,
752 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [IntrConvergent]>;
753 def int_nvvm_barrier0_popc : GCCBuiltin<"__nvvm_bar0_popc">,
754 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>;
755 def int_nvvm_barrier0_and : GCCBuiltin<"__nvvm_bar0_and">,
756 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>;
757 def int_nvvm_barrier0_or : GCCBuiltin<"__nvvm_bar0_or">,
758 Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrConvergent]>;
759
760 def int_nvvm_bar_sync :
761 Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>,
762 GCCBuiltin<"__nvvm_bar_sync">;
763 def int_nvvm_bar_warp_sync :
764 Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>,
765 GCCBuiltin<"__nvvm_bar_warp_sync">;
766
767 // barrier.sync id[, cnt]
768 def int_nvvm_barrier_sync :
769 Intrinsic<[], [llvm_i32_ty], [IntrConvergent]>,
770 GCCBuiltin<"__nvvm_barrier_sync">;
771 def int_nvvm_barrier_sync_cnt :
772 Intrinsic<[], [llvm_i32_ty, llvm_i32_ty], [IntrConvergent]>,
773 GCCBuiltin<"__nvvm_barrier_sync_cnt">;
774
775 // Membar
776 def int_nvvm_membar_cta : GCCBuiltin<"__nvvm_membar_cta">,
777 Intrinsic<[], [], []>;
778 def int_nvvm_membar_gl : GCCBuiltin<"__nvvm_membar_gl">,
779 Intrinsic<[], [], []>;
780 def int_nvvm_membar_sys : GCCBuiltin<"__nvvm_membar_sys">,
781 Intrinsic<[], [], []>;
782
783// Generated within nvvm. Use for ldu on sm_20 or later. Second arg is the
784// pointer's alignment.
785def int_nvvm_ldu_global_i : Intrinsic<[llvm_anyint_ty],
786 [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
787 [IntrReadMem, IntrArgMemOnly, NoCapture<0>],
788 "llvm.nvvm.ldu.global.i">;
789def int_nvvm_ldu_global_f : Intrinsic<[llvm_anyfloat_ty],
790 [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
791 [IntrReadMem, IntrArgMemOnly, NoCapture<0>],
792 "llvm.nvvm.ldu.global.f">;
793def int_nvvm_ldu_global_p : Intrinsic<[llvm_anyptr_ty],
794 [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
795 [IntrReadMem, IntrArgMemOnly, NoCapture<0>],
796 "llvm.nvvm.ldu.global.p">;
797
798// Generated within nvvm. Use for ldg on sm_35 or later. Second arg is the
799// pointer's alignment.
800def int_nvvm_ldg_global_i : Intrinsic<[llvm_anyint_ty],
801 [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
802 [IntrReadMem, IntrArgMemOnly, NoCapture<0>],
803 "llvm.nvvm.ldg.global.i">;
804def int_nvvm_ldg_global_f : Intrinsic<[llvm_anyfloat_ty],
805 [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
806 [IntrReadMem, IntrArgMemOnly, NoCapture<0>],
807 "llvm.nvvm.ldg.global.f">;
808def int_nvvm_ldg_global_p : Intrinsic<[llvm_anyptr_ty],
809 [LLVMAnyPointerType<LLVMMatchType<0>>, llvm_i32_ty],
810 [IntrReadMem, IntrArgMemOnly, NoCapture<0>],
811 "llvm.nvvm.ldg.global.p">;
812
813// Use for generic pointers
814// - These intrinsics are used to convert address spaces.
815// - The input pointer and output pointer must have the same type, except for
816// the address-space. (This restriction is not enforced here as there is
817// currently no way to describe it).
818// - This complements the llvm bitcast, which can be used to cast one type
819// of pointer to another type of pointer, while the address space remains
820// the same.
821def int_nvvm_ptr_local_to_gen: Intrinsic<[llvm_anyptr_ty],
822 [llvm_anyptr_ty], [IntrNoMem],
823 "llvm.nvvm.ptr.local.to.gen">;
824def int_nvvm_ptr_shared_to_gen: Intrinsic<[llvm_anyptr_ty],
825 [llvm_anyptr_ty], [IntrNoMem],
826 "llvm.nvvm.ptr.shared.to.gen">;
827def int_nvvm_ptr_global_to_gen: Intrinsic<[llvm_anyptr_ty],
828 [llvm_anyptr_ty], [IntrNoMem],
829 "llvm.nvvm.ptr.global.to.gen">;
830def int_nvvm_ptr_constant_to_gen: Intrinsic<[llvm_anyptr_ty],
831 [llvm_anyptr_ty], [IntrNoMem],
832 "llvm.nvvm.ptr.constant.to.gen">;
833
834def int_nvvm_ptr_gen_to_global: Intrinsic<[llvm_anyptr_ty],
835 [llvm_anyptr_ty], [IntrNoMem],
836 "llvm.nvvm.ptr.gen.to.global">;
837def int_nvvm_ptr_gen_to_shared: Intrinsic<[llvm_anyptr_ty],
838 [llvm_anyptr_ty], [IntrNoMem],
839 "llvm.nvvm.ptr.gen.to.shared">;
840def int_nvvm_ptr_gen_to_local: Intrinsic<[llvm_anyptr_ty],
841 [llvm_anyptr_ty], [IntrNoMem],
842 "llvm.nvvm.ptr.gen.to.local">;
843def int_nvvm_ptr_gen_to_constant: Intrinsic<[llvm_anyptr_ty],
844 [llvm_anyptr_ty], [IntrNoMem],
845 "llvm.nvvm.ptr.gen.to.constant">;
846
847// Used in nvvm internally to help address space opt and ptx code generation
848// This is for params that are passed to kernel functions by pointer by-val.
849def int_nvvm_ptr_gen_to_param: Intrinsic<[llvm_anyptr_ty],
850 [llvm_anyptr_ty],
851 [IntrNoMem],
852 "llvm.nvvm.ptr.gen.to.param">;
853
854// Move intrinsics, used in nvvm internally
855
856def int_nvvm_move_i16 : Intrinsic<[llvm_i16_ty], [llvm_i16_ty], [IntrNoMem],
857 "llvm.nvvm.move.i16">;
858def int_nvvm_move_i32 : Intrinsic<[llvm_i32_ty], [llvm_i32_ty], [IntrNoMem],
859 "llvm.nvvm.move.i32">;
860def int_nvvm_move_i64 : Intrinsic<[llvm_i64_ty], [llvm_i64_ty], [IntrNoMem],
861 "llvm.nvvm.move.i64">;
862def int_nvvm_move_float : Intrinsic<[llvm_float_ty], [llvm_float_ty],
863 [IntrNoMem], "llvm.nvvm.move.float">;
864def int_nvvm_move_double : Intrinsic<[llvm_double_ty], [llvm_double_ty],
865 [IntrNoMem], "llvm.nvvm.move.double">;
866def int_nvvm_move_ptr : Intrinsic<[llvm_anyptr_ty], [llvm_anyptr_ty],
867 [IntrNoMem, NoCapture<0>], "llvm.nvvm.move.ptr">;
868
869
870// For getting the handle from a texture or surface variable
871def int_nvvm_texsurf_handle
872 : Intrinsic<[llvm_i64_ty], [llvm_metadata_ty, llvm_anyi64ptr_ty],
873 [IntrNoMem], "llvm.nvvm.texsurf.handle">;
874def int_nvvm_texsurf_handle_internal
875 : Intrinsic<[llvm_i64_ty], [llvm_anyptr_ty],
876 [IntrNoMem], "llvm.nvvm.texsurf.handle.internal">;
877
878/// Error / Warn
879def int_nvvm_compiler_error :
880 Intrinsic<[], [llvm_anyptr_ty], [], "llvm.nvvm.compiler.error">;
881def int_nvvm_compiler_warn :
882 Intrinsic<[], [llvm_anyptr_ty], [], "llvm.nvvm.compiler.warn">;
883
884def int_nvvm_reflect :
885 Intrinsic<[llvm_i32_ty], [llvm_anyptr_ty], [IntrNoMem], "llvm.nvvm.reflect">;
886
887// isspacep.{const, global, local, shared}
888def int_nvvm_isspacep_const
889 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
890 "llvm.nvvm.isspacep.const">,
891 GCCBuiltin<"__nvvm_isspacep_const">;
892def int_nvvm_isspacep_global
893 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
894 "llvm.nvvm.isspacep.global">,
895 GCCBuiltin<"__nvvm_isspacep_global">;
896def int_nvvm_isspacep_local
897 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
898 "llvm.nvvm.isspacep.local">,
899 GCCBuiltin<"__nvvm_isspacep_local">;
900def int_nvvm_isspacep_shared
901 : Intrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem],
902 "llvm.nvvm.isspacep.shared">,
903 GCCBuiltin<"__nvvm_isspacep_shared">;
904
905// Environment register read
906def int_nvvm_read_ptx_sreg_envreg0
907 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
908 "llvm.nvvm.read.ptx.sreg.envreg0">,
909 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg0">;
910def int_nvvm_read_ptx_sreg_envreg1
911 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
912 "llvm.nvvm.read.ptx.sreg.envreg1">,
913 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg1">;
914def int_nvvm_read_ptx_sreg_envreg2
915 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
916 "llvm.nvvm.read.ptx.sreg.envreg2">,
917 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg2">;
918def int_nvvm_read_ptx_sreg_envreg3
919 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
920 "llvm.nvvm.read.ptx.sreg.envreg3">,
921 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg3">;
922def int_nvvm_read_ptx_sreg_envreg4
923 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
924 "llvm.nvvm.read.ptx.sreg.envreg4">,
925 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg4">;
926def int_nvvm_read_ptx_sreg_envreg5
927 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
928 "llvm.nvvm.read.ptx.sreg.envreg5">,
929 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg5">;
930def int_nvvm_read_ptx_sreg_envreg6
931 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
932 "llvm.nvvm.read.ptx.sreg.envreg6">,
933 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg6">;
934def int_nvvm_read_ptx_sreg_envreg7
935 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
936 "llvm.nvvm.read.ptx.sreg.envreg7">,
937 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg7">;
938def int_nvvm_read_ptx_sreg_envreg8
939 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
940 "llvm.nvvm.read.ptx.sreg.envreg8">,
941 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg8">;
942def int_nvvm_read_ptx_sreg_envreg9
943 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
944 "llvm.nvvm.read.ptx.sreg.envreg9">,
945 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg9">;
946def int_nvvm_read_ptx_sreg_envreg10
947 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
948 "llvm.nvvm.read.ptx.sreg.envreg10">,
949 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg10">;
950def int_nvvm_read_ptx_sreg_envreg11
951 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
952 "llvm.nvvm.read.ptx.sreg.envreg11">,
953 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg11">;
954def int_nvvm_read_ptx_sreg_envreg12
955 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
956 "llvm.nvvm.read.ptx.sreg.envreg12">,
957 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg12">;
958def int_nvvm_read_ptx_sreg_envreg13
959 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
960 "llvm.nvvm.read.ptx.sreg.envreg13">,
961 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg13">;
962def int_nvvm_read_ptx_sreg_envreg14
963 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
964 "llvm.nvvm.read.ptx.sreg.envreg14">,
965 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg14">;
966def int_nvvm_read_ptx_sreg_envreg15
967 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
968 "llvm.nvvm.read.ptx.sreg.envreg15">,
969 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg15">;
970def int_nvvm_read_ptx_sreg_envreg16
971 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
972 "llvm.nvvm.read.ptx.sreg.envreg16">,
973 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg16">;
974def int_nvvm_read_ptx_sreg_envreg17
975 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
976 "llvm.nvvm.read.ptx.sreg.envreg17">,
977 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg17">;
978def int_nvvm_read_ptx_sreg_envreg18
979 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
980 "llvm.nvvm.read.ptx.sreg.envreg18">,
981 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg18">;
982def int_nvvm_read_ptx_sreg_envreg19
983 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
984 "llvm.nvvm.read.ptx.sreg.envreg19">,
985 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg19">;
986def int_nvvm_read_ptx_sreg_envreg20
987 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
988 "llvm.nvvm.read.ptx.sreg.envreg20">,
989 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg20">;
990def int_nvvm_read_ptx_sreg_envreg21
991 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
992 "llvm.nvvm.read.ptx.sreg.envreg21">,
993 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg21">;
994def int_nvvm_read_ptx_sreg_envreg22
995 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
996 "llvm.nvvm.read.ptx.sreg.envreg22">,
997 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg22">;
998def int_nvvm_read_ptx_sreg_envreg23
999 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1000 "llvm.nvvm.read.ptx.sreg.envreg23">,
1001 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg23">;
1002def int_nvvm_read_ptx_sreg_envreg24
1003 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1004 "llvm.nvvm.read.ptx.sreg.envreg24">,
1005 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg24">;
1006def int_nvvm_read_ptx_sreg_envreg25
1007 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1008 "llvm.nvvm.read.ptx.sreg.envreg25">,
1009 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg25">;
1010def int_nvvm_read_ptx_sreg_envreg26
1011 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1012 "llvm.nvvm.read.ptx.sreg.envreg26">,
1013 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg26">;
1014def int_nvvm_read_ptx_sreg_envreg27
1015 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1016 "llvm.nvvm.read.ptx.sreg.envreg27">,
1017 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg27">;
1018def int_nvvm_read_ptx_sreg_envreg28
1019 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1020 "llvm.nvvm.read.ptx.sreg.envreg28">,
1021 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg28">;
1022def int_nvvm_read_ptx_sreg_envreg29
1023 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1024 "llvm.nvvm.read.ptx.sreg.envreg29">,
1025 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg29">;
1026def int_nvvm_read_ptx_sreg_envreg30
1027 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1028 "llvm.nvvm.read.ptx.sreg.envreg30">,
1029 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg30">;
1030def int_nvvm_read_ptx_sreg_envreg31
1031 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem],
1032 "llvm.nvvm.read.ptx.sreg.envreg31">,
1033 GCCBuiltin<"__nvvm_read_ptx_sreg_envreg31">;
1034
1035
1036// Texture Fetch
1037// texmode_independent
1038def int_nvvm_tex_1d_v4f32_s32
1039 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1040 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
1041 "llvm.nvvm.tex.1d.v4f32.s32">;
1042def int_nvvm_tex_1d_v4f32_f32
1043 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1044 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
1045 "llvm.nvvm.tex.1d.v4f32.f32">;
1046def int_nvvm_tex_1d_level_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, llvm_float_ty], [],
1049 "llvm.nvvm.tex.1d.level.v4f32.f32">;
1050def int_nvvm_tex_1d_grad_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_float_ty], [],
1054 "llvm.nvvm.tex.1d.grad.v4f32.f32">;
1055def int_nvvm_tex_1d_v4s32_s32
1056 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1057 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
1058 "llvm.nvvm.tex.1d.v4s32.s32">;
1059def int_nvvm_tex_1d_v4s32_f32
1060 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1061 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
1062 "llvm.nvvm.tex.1d.v4s32.f32">;
1063def int_nvvm_tex_1d_level_v4s32_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, llvm_float_ty], [],
1066 "llvm.nvvm.tex.1d.level.v4s32.f32">;
1067def int_nvvm_tex_1d_grad_v4s32_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_float_ty], [],
1071 "llvm.nvvm.tex.1d.grad.v4s32.f32">;
1072def int_nvvm_tex_1d_v4u32_s32
1073 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1074 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [],
1075 "llvm.nvvm.tex.1d.v4u32.s32">;
1076def int_nvvm_tex_1d_v4u32_f32
1077 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1078 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [],
1079 "llvm.nvvm.tex.1d.v4u32.f32">;
1080def int_nvvm_tex_1d_level_v4u32_f32
1081 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1082 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1083 "llvm.nvvm.tex.1d.level.v4u32.f32">;
1084def int_nvvm_tex_1d_grad_v4u32_f32
1085 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1086 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1087 llvm_float_ty], [],
1088 "llvm.nvvm.tex.1d.grad.v4u32.f32">;
1089
1090def int_nvvm_tex_1d_array_v4f32_s32
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_i32_ty], [],
1093 "llvm.nvvm.tex.1d.array.v4f32.s32">;
1094def int_nvvm_tex_1d_array_v4f32_f32
1095 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1096 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1097 "llvm.nvvm.tex.1d.array.v4f32.f32">;
1098def int_nvvm_tex_1d_array_level_v4f32_f32
1099 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1100 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1101 llvm_float_ty], [],
1102 "llvm.nvvm.tex.1d.array.level.v4f32.f32">;
1103def int_nvvm_tex_1d_array_grad_v4f32_f32
1104 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1105 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1106 llvm_float_ty, llvm_float_ty], [],
1107 "llvm.nvvm.tex.1d.array.grad.v4f32.f32">;
1108def int_nvvm_tex_1d_array_v4s32_s32
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_i32_ty], [],
1111 "llvm.nvvm.tex.1d.array.v4s32.s32">;
1112def int_nvvm_tex_1d_array_v4s32_f32
1113 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1114 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1115 "llvm.nvvm.tex.1d.array.v4s32.f32">;
1116def int_nvvm_tex_1d_array_level_v4s32_f32
1117 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1118 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1119 llvm_float_ty], [],
1120 "llvm.nvvm.tex.1d.array.level.v4s32.f32">;
1121def int_nvvm_tex_1d_array_grad_v4s32_f32
1122 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1123 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1124 llvm_float_ty, llvm_float_ty], [],
1125 "llvm.nvvm.tex.1d.array.grad.v4s32.f32">;
1126def int_nvvm_tex_1d_array_v4u32_s32
1127 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1128 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1129 "llvm.nvvm.tex.1d.array.v4u32.s32">;
1130def int_nvvm_tex_1d_array_v4u32_f32
1131 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1132 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1133 "llvm.nvvm.tex.1d.array.v4u32.f32">;
1134def int_nvvm_tex_1d_array_level_v4u32_f32
1135 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1136 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1137 llvm_float_ty], [],
1138 "llvm.nvvm.tex.1d.array.level.v4u32.f32">;
1139def int_nvvm_tex_1d_array_grad_v4u32_f32
1140 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1141 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1142 llvm_float_ty, llvm_float_ty], [],
1143 "llvm.nvvm.tex.1d.array.grad.v4u32.f32">;
1144
1145def int_nvvm_tex_2d_v4f32_s32
1146 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1147 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1148 "llvm.nvvm.tex.2d.v4f32.s32">;
1149def int_nvvm_tex_2d_v4f32_f32
1150 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1151 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1152 "llvm.nvvm.tex.2d.v4f32.f32">;
1153def int_nvvm_tex_2d_level_v4f32_f32
1154 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1155 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1156 llvm_float_ty], [],
1157 "llvm.nvvm.tex.2d.level.v4f32.f32">;
1158def int_nvvm_tex_2d_grad_v4f32_f32
1159 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1160 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1161 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1162 "llvm.nvvm.tex.2d.grad.v4f32.f32">;
1163def int_nvvm_tex_2d_v4s32_s32
1164 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1165 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1166 "llvm.nvvm.tex.2d.v4s32.s32">;
1167def int_nvvm_tex_2d_v4s32_f32
1168 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1169 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1170 "llvm.nvvm.tex.2d.v4s32.f32">;
1171def int_nvvm_tex_2d_level_v4s32_f32
1172 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1173 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1174 llvm_float_ty], [],
1175 "llvm.nvvm.tex.2d.level.v4s32.f32">;
1176def int_nvvm_tex_2d_grad_v4s32_f32
1177 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1178 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1179 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1180 "llvm.nvvm.tex.2d.grad.v4s32.f32">;
1181def int_nvvm_tex_2d_v4u32_s32
1182 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1183 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1184 "llvm.nvvm.tex.2d.v4u32.s32">;
1185def int_nvvm_tex_2d_v4u32_f32
1186 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1187 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1188 "llvm.nvvm.tex.2d.v4u32.f32">;
1189def int_nvvm_tex_2d_level_v4u32_f32
1190 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1191 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1192 llvm_float_ty], [],
1193 "llvm.nvvm.tex.2d.level.v4u32.f32">;
1194def int_nvvm_tex_2d_grad_v4u32_f32
1195 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1196 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1197 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1198 "llvm.nvvm.tex.2d.grad.v4u32.f32">;
1199
1200def int_nvvm_tex_2d_array_v4f32_s32
1201 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1202 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1203 llvm_i32_ty], [],
1204 "llvm.nvvm.tex.2d.array.v4f32.s32">;
1205def int_nvvm_tex_2d_array_v4f32_f32
1206 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1207 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1208 llvm_float_ty], [],
1209 "llvm.nvvm.tex.2d.array.v4f32.f32">;
1210def int_nvvm_tex_2d_array_level_v4f32_f32
1211 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1212 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1213 llvm_float_ty, llvm_float_ty], [],
1214 "llvm.nvvm.tex.2d.array.level.v4f32.f32">;
1215def int_nvvm_tex_2d_array_grad_v4f32_f32
1216 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1217 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1218 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1219 llvm_float_ty], [],
1220 "llvm.nvvm.tex.2d.array.grad.v4f32.f32">;
1221def int_nvvm_tex_2d_array_v4s32_s32
1222 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1223 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1224 llvm_i32_ty], [],
1225 "llvm.nvvm.tex.2d.array.v4s32.s32">;
1226def int_nvvm_tex_2d_array_v4s32_f32
1227 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1228 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1229 llvm_float_ty], [],
1230 "llvm.nvvm.tex.2d.array.v4s32.f32">;
1231def int_nvvm_tex_2d_array_level_v4s32_f32
1232 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1233 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1234 llvm_float_ty, llvm_float_ty], [],
1235 "llvm.nvvm.tex.2d.array.level.v4s32.f32">;
1236def int_nvvm_tex_2d_array_grad_v4s32_f32
1237 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1238 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1239 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1240 llvm_float_ty], [],
1241 "llvm.nvvm.tex.2d.array.grad.v4s32.f32">;
1242def int_nvvm_tex_2d_array_v4u32_s32
1243 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1244 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1245 llvm_i32_ty], [],
1246 "llvm.nvvm.tex.2d.array.v4u32.s32">;
1247def int_nvvm_tex_2d_array_v4u32_f32
1248 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1249 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1250 llvm_float_ty], [],
1251 "llvm.nvvm.tex.2d.array.v4u32.f32">;
1252def int_nvvm_tex_2d_array_level_v4u32_f32
1253 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1254 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1255 llvm_float_ty, llvm_float_ty], [],
1256 "llvm.nvvm.tex.2d.array.level.v4u32.f32">;
1257def int_nvvm_tex_2d_array_grad_v4u32_f32
1258 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1259 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1260 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1261 llvm_float_ty], [],
1262 "llvm.nvvm.tex.2d.array.grad.v4u32.f32">;
1263
1264def int_nvvm_tex_3d_v4f32_s32
1265 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1266 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1267 [], "llvm.nvvm.tex.3d.v4f32.s32">;
1268def int_nvvm_tex_3d_v4f32_f32
1269 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1270 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1271 llvm_float_ty], [],
1272 "llvm.nvvm.tex.3d.v4f32.f32">;
1273def int_nvvm_tex_3d_level_v4f32_f32
1274 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1275 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1276 llvm_float_ty, llvm_float_ty], [],
1277 "llvm.nvvm.tex.3d.level.v4f32.f32">;
1278def int_nvvm_tex_3d_grad_v4f32_f32
1279 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1280 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1281 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1282 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1283 "llvm.nvvm.tex.3d.grad.v4f32.f32">;
1284def int_nvvm_tex_3d_v4s32_s32
1285 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1286 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1287 [], "llvm.nvvm.tex.3d.v4s32.s32">;
1288def int_nvvm_tex_3d_v4s32_f32
1289 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1290 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1291 llvm_float_ty], [],
1292 "llvm.nvvm.tex.3d.v4s32.f32">;
1293def int_nvvm_tex_3d_level_v4s32_f32
1294 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1295 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1296 llvm_float_ty, llvm_float_ty], [],
1297 "llvm.nvvm.tex.3d.level.v4s32.f32">;
1298def int_nvvm_tex_3d_grad_v4s32_f32
1299 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1300 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1301 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1302 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1303 "llvm.nvvm.tex.3d.grad.v4s32.f32">;
1304def int_nvvm_tex_3d_v4u32_s32
1305 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1306 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1307 [], "llvm.nvvm.tex.3d.v4u32.s32">;
1308def int_nvvm_tex_3d_v4u32_f32
1309 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1310 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1311 llvm_float_ty], [],
1312 "llvm.nvvm.tex.3d.v4u32.f32">;
1313def int_nvvm_tex_3d_level_v4u32_f32
1314 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1315 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1316 llvm_float_ty, llvm_float_ty], [],
1317 "llvm.nvvm.tex.3d.level.v4u32.f32">;
1318def int_nvvm_tex_3d_grad_v4u32_f32
1319 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1320 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1321 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1322 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1323 "llvm.nvvm.tex.3d.grad.v4u32.f32">;
1324
1325def int_nvvm_tex_cube_v4f32_f32
1326 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1327 [llvm_i64_ty, llvm_i64_ty,
1328 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1329 "llvm.nvvm.tex.cube.v4f32.f32">;
1330def int_nvvm_tex_cube_level_v4f32_f32
1331 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1332 [llvm_i64_ty, llvm_i64_ty,
1333 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1334 "llvm.nvvm.tex.cube.level.v4f32.f32">;
1335def int_nvvm_tex_cube_v4s32_f32
1336 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1337 [llvm_i64_ty, llvm_i64_ty,
1338 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1339 "llvm.nvvm.tex.cube.v4s32.f32">;
1340def int_nvvm_tex_cube_level_v4s32_f32
1341 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1342 [llvm_i64_ty, llvm_i64_ty,
1343 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1344 "llvm.nvvm.tex.cube.level.v4s32.f32">;
1345def int_nvvm_tex_cube_v4u32_f32
1346 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1347 [llvm_i64_ty, llvm_i64_ty,
1348 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1349 "llvm.nvvm.tex.cube.v4u32.f32">;
1350def int_nvvm_tex_cube_level_v4u32_f32
1351 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1352 [llvm_i64_ty, llvm_i64_ty,
1353 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1354 "llvm.nvvm.tex.cube.level.v4u32.f32">;
1355
1356def int_nvvm_tex_cube_array_v4f32_f32
1357 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1358 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
1359 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1360 "llvm.nvvm.tex.cube.array.v4f32.f32">;
1361def int_nvvm_tex_cube_array_level_v4f32_f32
1362 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1363 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
1364 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1365 "llvm.nvvm.tex.cube.array.level.v4f32.f32">;
1366def int_nvvm_tex_cube_array_v4s32_f32
1367 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1368 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
1369 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1370 "llvm.nvvm.tex.cube.array.v4s32.f32">;
1371def int_nvvm_tex_cube_array_level_v4s32_f32
1372 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1373 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
1374 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1375 "llvm.nvvm.tex.cube.array.level.v4s32.f32">;
1376def int_nvvm_tex_cube_array_v4u32_f32
1377 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1378 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
1379 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1380 "llvm.nvvm.tex.cube.array.v4u32.f32">;
1381def int_nvvm_tex_cube_array_level_v4u32_f32
1382 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1383 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty,
1384 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1385 "llvm.nvvm.tex.cube.array.level.v4u32.f32">;
1386
1387def int_nvvm_tld4_r_2d_v4f32_f32
1388 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1389 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1390 "llvm.nvvm.tld4.r.2d.v4f32.f32">;
1391def int_nvvm_tld4_g_2d_v4f32_f32
1392 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1393 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1394 "llvm.nvvm.tld4.g.2d.v4f32.f32">;
1395def int_nvvm_tld4_b_2d_v4f32_f32
1396 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1397 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1398 "llvm.nvvm.tld4.b.2d.v4f32.f32">;
1399def int_nvvm_tld4_a_2d_v4f32_f32
1400 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1401 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1402 "llvm.nvvm.tld4.a.2d.v4f32.f32">;
1403def int_nvvm_tld4_r_2d_v4s32_f32
1404 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1405 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1406 "llvm.nvvm.tld4.r.2d.v4s32.f32">;
1407def int_nvvm_tld4_g_2d_v4s32_f32
1408 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1409 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1410 "llvm.nvvm.tld4.g.2d.v4s32.f32">;
1411def int_nvvm_tld4_b_2d_v4s32_f32
1412 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1413 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1414 "llvm.nvvm.tld4.b.2d.v4s32.f32">;
1415def int_nvvm_tld4_a_2d_v4s32_f32
1416 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1417 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1418 "llvm.nvvm.tld4.a.2d.v4s32.f32">;
1419def int_nvvm_tld4_r_2d_v4u32_f32
1420 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1421 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1422 "llvm.nvvm.tld4.r.2d.v4u32.f32">;
1423def int_nvvm_tld4_g_2d_v4u32_f32
1424 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1425 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1426 "llvm.nvvm.tld4.g.2d.v4u32.f32">;
1427def int_nvvm_tld4_b_2d_v4u32_f32
1428 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1429 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1430 "llvm.nvvm.tld4.b.2d.v4u32.f32">;
1431def int_nvvm_tld4_a_2d_v4u32_f32
1432 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1433 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1434 "llvm.nvvm.tld4.a.2d.v4u32.f32">;
1435
1436
1437// texmode_unified
1438def int_nvvm_tex_unified_1d_v4f32_s32
1439 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1440 [llvm_i64_ty, llvm_i32_ty], [],
1441 "llvm.nvvm.tex.unified.1d.v4f32.s32">;
1442def int_nvvm_tex_unified_1d_v4f32_f32
1443 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1444 [llvm_i64_ty, llvm_float_ty], [],
1445 "llvm.nvvm.tex.unified.1d.v4f32.f32">;
1446def int_nvvm_tex_unified_1d_level_v4f32_f32
1447 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1448 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1449 "llvm.nvvm.tex.unified.1d.level.v4f32.f32">;
1450def int_nvvm_tex_unified_1d_grad_v4f32_f32
1451 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1452 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1453 llvm_float_ty], [],
1454 "llvm.nvvm.tex.unified.1d.grad.v4f32.f32">;
1455def int_nvvm_tex_unified_1d_v4s32_s32
1456 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1457 [llvm_i64_ty, llvm_i32_ty], [],
1458 "llvm.nvvm.tex.unified.1d.v4s32.s32">;
1459def int_nvvm_tex_unified_1d_v4s32_f32
1460 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1461 [llvm_i64_ty, llvm_float_ty], [],
1462 "llvm.nvvm.tex.unified.1d.v4s32.f32">;
1463def int_nvvm_tex_unified_1d_level_v4s32_f32
1464 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1465 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1466 "llvm.nvvm.tex.unified.1d.level.v4s32.f32">;
1467def int_nvvm_tex_unified_1d_grad_v4s32_f32
1468 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1469 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1470 llvm_float_ty], [],
1471 "llvm.nvvm.tex.unified.1d.grad.v4s32.f32">;
1472def int_nvvm_tex_unified_1d_v4u32_s32
1473 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1474 [llvm_i64_ty, llvm_i32_ty], [],
1475 "llvm.nvvm.tex.unified.1d.v4u32.s32">;
1476def int_nvvm_tex_unified_1d_v4u32_f32
1477 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1478 [llvm_i64_ty, llvm_float_ty], [],
1479 "llvm.nvvm.tex.unified.1d.v4u32.f32">;
1480def int_nvvm_tex_unified_1d_level_v4u32_f32
1481 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1482 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1483 "llvm.nvvm.tex.unified.1d.level.v4u32.f32">;
1484def int_nvvm_tex_unified_1d_grad_v4u32_f32
1485 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1486 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1487 llvm_float_ty], [],
1488 "llvm.nvvm.tex.unified.1d.grad.v4u32.f32">;
1489
1490def int_nvvm_tex_unified_1d_array_v4f32_s32
1491 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1492 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1493 "llvm.nvvm.tex.unified.1d.array.v4f32.s32">;
1494def int_nvvm_tex_unified_1d_array_v4f32_f32
1495 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1496 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1497 "llvm.nvvm.tex.unified.1d.array.v4f32.f32">;
1498def int_nvvm_tex_unified_1d_array_level_v4f32_f32
1499 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1500 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1501 llvm_float_ty], [],
1502 "llvm.nvvm.tex.unified.1d.array.level.v4f32.f32">;
1503def int_nvvm_tex_unified_1d_array_grad_v4f32_f32
1504 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1505 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1506 llvm_float_ty, llvm_float_ty], [],
1507 "llvm.nvvm.tex.unified.1d.array.grad.v4f32.f32">;
1508def int_nvvm_tex_unified_1d_array_v4s32_s32
1509 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1510 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1511 "llvm.nvvm.tex.unified.1d.array.v4s32.s32">;
1512def int_nvvm_tex_unified_1d_array_v4s32_f32
1513 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1514 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1515 "llvm.nvvm.tex.unified.1d.array.v4s32.f32">;
1516def int_nvvm_tex_unified_1d_array_level_v4s32_f32
1517 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1518 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1519 llvm_float_ty], [],
1520 "llvm.nvvm.tex.unified.1d.array.level.v4s32.f32">;
1521def int_nvvm_tex_unified_1d_array_grad_v4s32_f32
1522 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1523 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1524 llvm_float_ty, llvm_float_ty], [],
1525 "llvm.nvvm.tex.unified.1d.array.grad.v4s32.f32">;
1526def int_nvvm_tex_unified_1d_array_v4u32_s32
1527 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1528 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1529 "llvm.nvvm.tex.unified.1d.array.v4u32.s32">;
1530def int_nvvm_tex_unified_1d_array_v4u32_f32
1531 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1532 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [],
1533 "llvm.nvvm.tex.unified.1d.array.v4u32.f32">;
1534def int_nvvm_tex_unified_1d_array_level_v4u32_f32
1535 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1536 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1537 llvm_float_ty], [],
1538 "llvm.nvvm.tex.unified.1d.array.level.v4u32.f32">;
1539def int_nvvm_tex_unified_1d_array_grad_v4u32_f32
1540 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1541 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1542 llvm_float_ty, llvm_float_ty], [],
1543 "llvm.nvvm.tex.unified.1d.array.grad.v4u32.f32">;
1544
1545def int_nvvm_tex_unified_2d_v4f32_s32
1546 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1547 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1548 "llvm.nvvm.tex.unified.2d.v4f32.s32">;
1549def int_nvvm_tex_unified_2d_v4f32_f32
1550 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1551 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1552 "llvm.nvvm.tex.unified.2d.v4f32.f32">;
1553def int_nvvm_tex_unified_2d_level_v4f32_f32
1554 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1555 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1556 llvm_float_ty], [],
1557 "llvm.nvvm.tex.unified.2d.level.v4f32.f32">;
1558def int_nvvm_tex_unified_2d_grad_v4f32_f32
1559 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1560 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1561 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1562 "llvm.nvvm.tex.unified.2d.grad.v4f32.f32">;
1563def int_nvvm_tex_unified_2d_v4s32_s32
1564 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1565 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1566 "llvm.nvvm.tex.unified.2d.v4s32.s32">;
1567def int_nvvm_tex_unified_2d_v4s32_f32
1568 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1569 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1570 "llvm.nvvm.tex.unified.2d.v4s32.f32">;
1571def int_nvvm_tex_unified_2d_level_v4s32_f32
1572 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1573 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1574 llvm_float_ty], [],
1575 "llvm.nvvm.tex.unified.2d.level.v4s32.f32">;
1576def int_nvvm_tex_unified_2d_grad_v4s32_f32
1577 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1578 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1579 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1580 "llvm.nvvm.tex.unified.2d.grad.v4s32.f32">;
1581def int_nvvm_tex_unified_2d_v4u32_s32
1582 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1583 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1584 "llvm.nvvm.tex.unified.2d.v4u32.s32">;
1585def int_nvvm_tex_unified_2d_v4u32_f32
1586 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1587 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1588 "llvm.nvvm.tex.unified.2d.v4u32.f32">;
1589def int_nvvm_tex_unified_2d_level_v4u32_f32
1590 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1591 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1592 llvm_float_ty], [],
1593 "llvm.nvvm.tex.unified.2d.level.v4u32.f32">;
1594def int_nvvm_tex_unified_2d_grad_v4u32_f32
1595 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1596 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1597 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1598 "llvm.nvvm.tex.unified.2d.grad.v4u32.f32">;
1599
1600def int_nvvm_tex_unified_2d_array_v4f32_s32
1601 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1602 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1603 llvm_i32_ty], [],
1604 "llvm.nvvm.tex.unified.2d.array.v4f32.s32">;
1605def int_nvvm_tex_unified_2d_array_v4f32_f32
1606 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1607 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1608 llvm_float_ty], [],
1609 "llvm.nvvm.tex.unified.2d.array.v4f32.f32">;
1610def int_nvvm_tex_unified_2d_array_level_v4f32_f32
1611 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1612 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1613 llvm_float_ty, llvm_float_ty], [],
1614 "llvm.nvvm.tex.unified.2d.array.level.v4f32.f32">;
1615def int_nvvm_tex_unified_2d_array_grad_v4f32_f32
1616 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1617 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1618 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1619 llvm_float_ty], [],
1620 "llvm.nvvm.tex.unified.2d.array.grad.v4f32.f32">;
1621def int_nvvm_tex_unified_2d_array_v4s32_s32
1622 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1623 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1624 llvm_i32_ty], [],
1625 "llvm.nvvm.tex.unified.2d.array.v4s32.s32">;
1626def int_nvvm_tex_unified_2d_array_v4s32_f32
1627 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1628 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1629 llvm_float_ty], [],
1630 "llvm.nvvm.tex.unified.2d.array.v4s32.f32">;
1631def int_nvvm_tex_unified_2d_array_level_v4s32_f32
1632 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1633 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1634 llvm_float_ty, llvm_float_ty], [],
1635 "llvm.nvvm.tex.unified.2d.array.level.v4s32.f32">;
1636def int_nvvm_tex_unified_2d_array_grad_v4s32_f32
1637 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1638 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1639 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1640 llvm_float_ty], [],
1641 "llvm.nvvm.tex.unified.2d.array.grad.v4s32.f32">;
1642def int_nvvm_tex_unified_2d_array_v4u32_s32
1643 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1644 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
1645 llvm_i32_ty], [],
1646 "llvm.nvvm.tex.unified.2d.array.v4u32.s32">;
1647def int_nvvm_tex_unified_2d_array_v4u32_f32
1648 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1649 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1650 llvm_float_ty], [],
1651 "llvm.nvvm.tex.unified.2d.array.v4u32.f32">;
1652def int_nvvm_tex_unified_2d_array_level_v4u32_f32
1653 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1654 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1655 llvm_float_ty, llvm_float_ty], [],
1656 "llvm.nvvm.tex.unified.2d.array.level.v4u32.f32">;
1657def int_nvvm_tex_unified_2d_array_grad_v4u32_f32
1658 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1659 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty,
1660 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1661 llvm_float_ty], [],
1662 "llvm.nvvm.tex.unified.2d.array.grad.v4u32.f32">;
1663
1664def int_nvvm_tex_unified_3d_v4f32_s32
1665 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1666 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1667 [], "llvm.nvvm.tex.unified.3d.v4f32.s32">;
1668def int_nvvm_tex_unified_3d_v4f32_f32
1669 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1670 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1671 llvm_float_ty], [],
1672 "llvm.nvvm.tex.unified.3d.v4f32.f32">;
1673def int_nvvm_tex_unified_3d_level_v4f32_f32
1674 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1675 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1676 llvm_float_ty, llvm_float_ty], [],
1677 "llvm.nvvm.tex.unified.3d.level.v4f32.f32">;
1678def int_nvvm_tex_unified_3d_grad_v4f32_f32
1679 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1680 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1681 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1682 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1683 "llvm.nvvm.tex.unified.3d.grad.v4f32.f32">;
1684def int_nvvm_tex_unified_3d_v4s32_s32
1685 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1686 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1687 [], "llvm.nvvm.tex.unified.3d.v4s32.s32">;
1688def int_nvvm_tex_unified_3d_v4s32_f32
1689 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1690 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1691 llvm_float_ty], [],
1692 "llvm.nvvm.tex.unified.3d.v4s32.f32">;
1693def int_nvvm_tex_unified_3d_level_v4s32_f32
1694 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1695 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1696 llvm_float_ty, llvm_float_ty], [],
1697 "llvm.nvvm.tex.unified.3d.level.v4s32.f32">;
1698def int_nvvm_tex_unified_3d_grad_v4s32_f32
1699 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1700 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1701 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1702 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1703 "llvm.nvvm.tex.unified.3d.grad.v4s32.f32">;
1704def int_nvvm_tex_unified_3d_v4u32_s32
1705 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1706 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1707 [], "llvm.nvvm.tex.unified.3d.v4u32.s32">;
1708def int_nvvm_tex_unified_3d_v4u32_f32
1709 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1710 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1711 llvm_float_ty], [],
1712 "llvm.nvvm.tex.unified.3d.v4u32.f32">;
1713def int_nvvm_tex_unified_3d_level_v4u32_f32
1714 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1715 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1716 llvm_float_ty, llvm_float_ty], [],
1717 "llvm.nvvm.tex.unified.3d.level.v4u32.f32">;
1718def int_nvvm_tex_unified_3d_grad_v4u32_f32
1719 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1720 [llvm_i64_ty, llvm_float_ty, llvm_float_ty,
1721 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty,
1722 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1723 "llvm.nvvm.tex.unified.3d.grad.v4u32.f32">;
1724
1725def int_nvvm_tex_unified_cube_v4f32_f32
1726 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1727 [llvm_i64_ty,
1728 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1729 "llvm.nvvm.tex.unified.cube.v4f32.f32">;
1730def int_nvvm_tex_unified_cube_level_v4f32_f32
1731 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1732 [llvm_i64_ty,
1733 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1734 "llvm.nvvm.tex.unified.cube.level.v4f32.f32">;
1735def int_nvvm_tex_unified_cube_v4s32_f32
1736 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1737 [llvm_i64_ty,
1738 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1739 "llvm.nvvm.tex.unified.cube.v4s32.f32">;
1740def int_nvvm_tex_unified_cube_level_v4s32_f32
1741 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1742 [llvm_i64_ty,
1743 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1744 "llvm.nvvm.tex.unified.cube.level.v4s32.f32">;
1745def int_nvvm_tex_unified_cube_v4u32_f32
1746 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1747 [llvm_i64_ty,
1748 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1749 "llvm.nvvm.tex.unified.cube.v4u32.f32">;
1750def int_nvvm_tex_unified_cube_level_v4u32_f32
1751 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1752 [llvm_i64_ty,
1753 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1754 "llvm.nvvm.tex.unified.cube.level.v4u32.f32">;
1755
1756def int_nvvm_tex_unified_cube_array_v4f32_f32
1757 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1758 [llvm_i64_ty, llvm_i32_ty,
1759 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1760 "llvm.nvvm.tex.unified.cube.array.v4f32.f32">;
1761def int_nvvm_tex_unified_cube_array_level_v4f32_f32
1762 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1763 [llvm_i64_ty, llvm_i32_ty,
1764 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1765 "llvm.nvvm.tex.unified.cube.array.level.v4f32.f32">;
1766def int_nvvm_tex_unified_cube_array_v4s32_f32
1767 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1768 [llvm_i64_ty, llvm_i32_ty,
1769 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1770 "llvm.nvvm.tex.unified.cube.array.v4s32.f32">;
1771def int_nvvm_tex_unified_cube_array_level_v4s32_f32
1772 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1773 [llvm_i64_ty, llvm_i32_ty,
1774 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1775 "llvm.nvvm.tex.unified.cube.array.level.v4s32.f32">;
1776def int_nvvm_tex_unified_cube_array_v4u32_f32
1777 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1778 [llvm_i64_ty, llvm_i32_ty,
1779 llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1780 "llvm.nvvm.tex.unified.cube.array.v4u32.f32">;
1781def int_nvvm_tex_unified_cube_array_level_v4u32_f32
1782 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1783 [llvm_i64_ty, llvm_i32_ty,
1784 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [],
1785 "llvm.nvvm.tex.unified.cube.array.level.v4u32.f32">;
1786
1787def int_nvvm_tld4_unified_r_2d_v4f32_f32
1788 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1789 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1790 "llvm.nvvm.tld4.unified.r.2d.v4f32.f32">;
1791def int_nvvm_tld4_unified_g_2d_v4f32_f32
1792 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1793 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1794 "llvm.nvvm.tld4.unified.g.2d.v4f32.f32">;
1795def int_nvvm_tld4_unified_b_2d_v4f32_f32
1796 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1797 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1798 "llvm.nvvm.tld4.unified.b.2d.v4f32.f32">;
1799def int_nvvm_tld4_unified_a_2d_v4f32_f32
1800 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty],
1801 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1802 "llvm.nvvm.tld4.unified.a.2d.v4f32.f32">;
1803def int_nvvm_tld4_unified_r_2d_v4s32_f32
1804 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1805 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1806 "llvm.nvvm.tld4.unified.r.2d.v4s32.f32">;
1807def int_nvvm_tld4_unified_g_2d_v4s32_f32
1808 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1809 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1810 "llvm.nvvm.tld4.unified.g.2d.v4s32.f32">;
1811def int_nvvm_tld4_unified_b_2d_v4s32_f32
1812 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1813 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1814 "llvm.nvvm.tld4.unified.b.2d.v4s32.f32">;
1815def int_nvvm_tld4_unified_a_2d_v4s32_f32
1816 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1817 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1818 "llvm.nvvm.tld4.unified.a.2d.v4s32.f32">;
1819def int_nvvm_tld4_unified_r_2d_v4u32_f32
1820 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1821 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1822 "llvm.nvvm.tld4.unified.r.2d.v4u32.f32">;
1823def int_nvvm_tld4_unified_g_2d_v4u32_f32
1824 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1825 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1826 "llvm.nvvm.tld4.unified.g.2d.v4u32.f32">;
1827def int_nvvm_tld4_unified_b_2d_v4u32_f32
1828 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1829 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1830 "llvm.nvvm.tld4.unified.b.2d.v4u32.f32">;
1831def int_nvvm_tld4_unified_a_2d_v4u32_f32
1832 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1833 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [],
1834 "llvm.nvvm.tld4.unified.a.2d.v4u32.f32">;
1835
1836
1837//=== Surface Load
1838// .clamp variants
1839def int_nvvm_suld_1d_i8_clamp
1840 : Intrinsic<[llvm_i16_ty],
1841 [llvm_i64_ty, llvm_i32_ty], [],
1842 "llvm.nvvm.suld.1d.i8.clamp">;
1843def int_nvvm_suld_1d_i16_clamp
1844 : Intrinsic<[llvm_i16_ty],
1845 [llvm_i64_ty, llvm_i32_ty], [],
1846 "llvm.nvvm.suld.1d.i16.clamp">;
1847def int_nvvm_suld_1d_i32_clamp
1848 : Intrinsic<[llvm_i32_ty],
1849 [llvm_i64_ty, llvm_i32_ty], [],
1850 "llvm.nvvm.suld.1d.i32.clamp">;
1851def int_nvvm_suld_1d_i64_clamp
1852 : Intrinsic<[llvm_i64_ty],
1853 [llvm_i64_ty, llvm_i32_ty], [],
1854 "llvm.nvvm.suld.1d.i64.clamp">;
1855def int_nvvm_suld_1d_v2i8_clamp
1856 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1857 [llvm_i64_ty, llvm_i32_ty], [],
1858 "llvm.nvvm.suld.1d.v2i8.clamp">;
1859def int_nvvm_suld_1d_v2i16_clamp
1860 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1861 [llvm_i64_ty, llvm_i32_ty], [],
1862 "llvm.nvvm.suld.1d.v2i16.clamp">;
1863def int_nvvm_suld_1d_v2i32_clamp
1864 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1865 [llvm_i64_ty, llvm_i32_ty], [],
1866 "llvm.nvvm.suld.1d.v2i32.clamp">;
1867def int_nvvm_suld_1d_v2i64_clamp
1868 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
1869 [llvm_i64_ty, llvm_i32_ty], [],
1870 "llvm.nvvm.suld.1d.v2i64.clamp">;
1871def int_nvvm_suld_1d_v4i8_clamp
1872 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1873 [llvm_i64_ty, llvm_i32_ty], [],
1874 "llvm.nvvm.suld.1d.v4i8.clamp">;
1875def int_nvvm_suld_1d_v4i16_clamp
1876 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1877 [llvm_i64_ty, llvm_i32_ty], [],
1878 "llvm.nvvm.suld.1d.v4i16.clamp">;
1879def int_nvvm_suld_1d_v4i32_clamp
1880 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1881 [llvm_i64_ty, llvm_i32_ty], [],
1882 "llvm.nvvm.suld.1d.v4i32.clamp">;
1883
1884def int_nvvm_suld_1d_array_i8_clamp
1885 : Intrinsic<[llvm_i16_ty],
1886 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1887 "llvm.nvvm.suld.1d.array.i8.clamp">;
1888def int_nvvm_suld_1d_array_i16_clamp
1889 : Intrinsic<[llvm_i16_ty],
1890 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1891 "llvm.nvvm.suld.1d.array.i16.clamp">;
1892def int_nvvm_suld_1d_array_i32_clamp
1893 : Intrinsic<[llvm_i32_ty],
1894 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1895 "llvm.nvvm.suld.1d.array.i32.clamp">;
1896def int_nvvm_suld_1d_array_i64_clamp
1897 : Intrinsic<[llvm_i64_ty],
1898 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1899 "llvm.nvvm.suld.1d.array.i64.clamp">;
1900def int_nvvm_suld_1d_array_v2i8_clamp
1901 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1902 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1903 "llvm.nvvm.suld.1d.array.v2i8.clamp">;
1904def int_nvvm_suld_1d_array_v2i16_clamp
1905 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1906 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1907 "llvm.nvvm.suld.1d.array.v2i16.clamp">;
1908def int_nvvm_suld_1d_array_v2i32_clamp
1909 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1910 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1911 "llvm.nvvm.suld.1d.array.v2i32.clamp">;
1912def int_nvvm_suld_1d_array_v2i64_clamp
1913 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
1914 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1915 "llvm.nvvm.suld.1d.array.v2i64.clamp">;
1916def int_nvvm_suld_1d_array_v4i8_clamp
1917 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1918 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1919 "llvm.nvvm.suld.1d.array.v4i8.clamp">;
1920def int_nvvm_suld_1d_array_v4i16_clamp
1921 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1922 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1923 "llvm.nvvm.suld.1d.array.v4i16.clamp">;
1924def int_nvvm_suld_1d_array_v4i32_clamp
1925 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1926 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1927 "llvm.nvvm.suld.1d.array.v4i32.clamp">;
1928
1929def int_nvvm_suld_2d_i8_clamp
1930 : Intrinsic<[llvm_i16_ty],
1931 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1932 "llvm.nvvm.suld.2d.i8.clamp">;
1933def int_nvvm_suld_2d_i16_clamp
1934 : Intrinsic<[llvm_i16_ty],
1935 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1936 "llvm.nvvm.suld.2d.i16.clamp">;
1937def int_nvvm_suld_2d_i32_clamp
1938 : Intrinsic<[llvm_i32_ty],
1939 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1940 "llvm.nvvm.suld.2d.i32.clamp">;
1941def int_nvvm_suld_2d_i64_clamp
1942 : Intrinsic<[llvm_i64_ty],
1943 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1944 "llvm.nvvm.suld.2d.i64.clamp">;
1945def int_nvvm_suld_2d_v2i8_clamp
1946 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1947 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1948 "llvm.nvvm.suld.2d.v2i8.clamp">;
1949def int_nvvm_suld_2d_v2i16_clamp
1950 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1951 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1952 "llvm.nvvm.suld.2d.v2i16.clamp">;
1953def int_nvvm_suld_2d_v2i32_clamp
1954 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
1955 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1956 "llvm.nvvm.suld.2d.v2i32.clamp">;
1957def int_nvvm_suld_2d_v2i64_clamp
1958 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
1959 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1960 "llvm.nvvm.suld.2d.v2i64.clamp">;
1961def int_nvvm_suld_2d_v4i8_clamp
1962 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1963 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1964 "llvm.nvvm.suld.2d.v4i8.clamp">;
1965def int_nvvm_suld_2d_v4i16_clamp
1966 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
1967 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1968 "llvm.nvvm.suld.2d.v4i16.clamp">;
1969def int_nvvm_suld_2d_v4i32_clamp
1970 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
1971 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
1972 "llvm.nvvm.suld.2d.v4i32.clamp">;
1973
1974def int_nvvm_suld_2d_array_i8_clamp
1975 : Intrinsic<[llvm_i16_ty],
1976 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1977 "llvm.nvvm.suld.2d.array.i8.clamp">;
1978def int_nvvm_suld_2d_array_i16_clamp
1979 : Intrinsic<[llvm_i16_ty],
1980 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1981 "llvm.nvvm.suld.2d.array.i16.clamp">;
1982def int_nvvm_suld_2d_array_i32_clamp
1983 : Intrinsic<[llvm_i32_ty],
1984 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1985 "llvm.nvvm.suld.2d.array.i32.clamp">;
1986def int_nvvm_suld_2d_array_i64_clamp
1987 : Intrinsic<[llvm_i64_ty],
1988 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1989 "llvm.nvvm.suld.2d.array.i64.clamp">;
1990def int_nvvm_suld_2d_array_v2i8_clamp
1991 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1992 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1993 "llvm.nvvm.suld.2d.array.v2i8.clamp">;
1994def int_nvvm_suld_2d_array_v2i16_clamp
1995 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
1996 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
1997 "llvm.nvvm.suld.2d.array.v2i16.clamp">;
1998def int_nvvm_suld_2d_array_v2i32_clamp
1999 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2000 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2001 "llvm.nvvm.suld.2d.array.v2i32.clamp">;
2002def int_nvvm_suld_2d_array_v2i64_clamp
2003 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2004 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2005 "llvm.nvvm.suld.2d.array.v2i64.clamp">;
2006def int_nvvm_suld_2d_array_v4i8_clamp
2007 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2008 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2009 "llvm.nvvm.suld.2d.array.v4i8.clamp">;
2010def int_nvvm_suld_2d_array_v4i16_clamp
2011 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2012 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2013 "llvm.nvvm.suld.2d.array.v4i16.clamp">;
2014def int_nvvm_suld_2d_array_v4i32_clamp
2015 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2016 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2017 "llvm.nvvm.suld.2d.array.v4i32.clamp">;
2018
2019def int_nvvm_suld_3d_i8_clamp
2020 : Intrinsic<[llvm_i16_ty],
2021 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2022 "llvm.nvvm.suld.3d.i8.clamp">;
2023def int_nvvm_suld_3d_i16_clamp
2024 : Intrinsic<[llvm_i16_ty],
2025 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2026 "llvm.nvvm.suld.3d.i16.clamp">;
2027def int_nvvm_suld_3d_i32_clamp
2028 : Intrinsic<[llvm_i32_ty],
2029 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2030 "llvm.nvvm.suld.3d.i32.clamp">;
2031def int_nvvm_suld_3d_i64_clamp
2032 : Intrinsic<[llvm_i64_ty],
2033 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2034 "llvm.nvvm.suld.3d.i64.clamp">;
2035def int_nvvm_suld_3d_v2i8_clamp
2036 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2037 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2038 "llvm.nvvm.suld.3d.v2i8.clamp">;
2039def int_nvvm_suld_3d_v2i16_clamp
2040 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2041 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2042 "llvm.nvvm.suld.3d.v2i16.clamp">;
2043def int_nvvm_suld_3d_v2i32_clamp
2044 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2045 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2046 "llvm.nvvm.suld.3d.v2i32.clamp">;
2047def int_nvvm_suld_3d_v2i64_clamp
2048 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2049 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2050 "llvm.nvvm.suld.3d.v2i64.clamp">;
2051def int_nvvm_suld_3d_v4i8_clamp
2052 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2053 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2054 "llvm.nvvm.suld.3d.v4i8.clamp">;
2055def int_nvvm_suld_3d_v4i16_clamp
2056 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2057 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2058 "llvm.nvvm.suld.3d.v4i16.clamp">;
2059def int_nvvm_suld_3d_v4i32_clamp
2060 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2061 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2062 "llvm.nvvm.suld.3d.v4i32.clamp">;
2063
2064// .trap variants
2065def int_nvvm_suld_1d_i8_trap
2066 : Intrinsic<[llvm_i16_ty],
2067 [llvm_i64_ty, llvm_i32_ty], [],
2068 "llvm.nvvm.suld.1d.i8.trap">;
2069def int_nvvm_suld_1d_i16_trap
2070 : Intrinsic<[llvm_i16_ty],
2071 [llvm_i64_ty, llvm_i32_ty], [],
2072 "llvm.nvvm.suld.1d.i16.trap">;
2073def int_nvvm_suld_1d_i32_trap
2074 : Intrinsic<[llvm_i32_ty],
2075 [llvm_i64_ty, llvm_i32_ty], [],
2076 "llvm.nvvm.suld.1d.i32.trap">;
2077def int_nvvm_suld_1d_i64_trap
2078 : Intrinsic<[llvm_i64_ty],
2079 [llvm_i64_ty, llvm_i32_ty], [],
2080 "llvm.nvvm.suld.1d.i64.trap">;
2081def int_nvvm_suld_1d_v2i8_trap
2082 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2083 [llvm_i64_ty, llvm_i32_ty], [],
2084 "llvm.nvvm.suld.1d.v2i8.trap">;
2085def int_nvvm_suld_1d_v2i16_trap
2086 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2087 [llvm_i64_ty, llvm_i32_ty], [],
2088 "llvm.nvvm.suld.1d.v2i16.trap">;
2089def int_nvvm_suld_1d_v2i32_trap
2090 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2091 [llvm_i64_ty, llvm_i32_ty], [],
2092 "llvm.nvvm.suld.1d.v2i32.trap">;
2093def int_nvvm_suld_1d_v2i64_trap
2094 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2095 [llvm_i64_ty, llvm_i32_ty], [],
2096 "llvm.nvvm.suld.1d.v2i64.trap">;
2097def int_nvvm_suld_1d_v4i8_trap
2098 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2099 [llvm_i64_ty, llvm_i32_ty], [],
2100 "llvm.nvvm.suld.1d.v4i8.trap">;
2101def int_nvvm_suld_1d_v4i16_trap
2102 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2103 [llvm_i64_ty, llvm_i32_ty], [],
2104 "llvm.nvvm.suld.1d.v4i16.trap">;
2105def int_nvvm_suld_1d_v4i32_trap
2106 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2107 [llvm_i64_ty, llvm_i32_ty], [],
2108 "llvm.nvvm.suld.1d.v4i32.trap">;
2109
2110def int_nvvm_suld_1d_array_i8_trap
2111 : Intrinsic<[llvm_i16_ty],
2112 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2113 "llvm.nvvm.suld.1d.array.i8.trap">;
2114def int_nvvm_suld_1d_array_i16_trap
2115 : Intrinsic<[llvm_i16_ty],
2116 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2117 "llvm.nvvm.suld.1d.array.i16.trap">;
2118def int_nvvm_suld_1d_array_i32_trap
2119 : Intrinsic<[llvm_i32_ty],
2120 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2121 "llvm.nvvm.suld.1d.array.i32.trap">;
2122def int_nvvm_suld_1d_array_i64_trap
2123 : Intrinsic<[llvm_i64_ty],
2124 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2125 "llvm.nvvm.suld.1d.array.i64.trap">;
2126def int_nvvm_suld_1d_array_v2i8_trap
2127 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2128 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2129 "llvm.nvvm.suld.1d.array.v2i8.trap">;
2130def int_nvvm_suld_1d_array_v2i16_trap
2131 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2132 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2133 "llvm.nvvm.suld.1d.array.v2i16.trap">;
2134def int_nvvm_suld_1d_array_v2i32_trap
2135 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2136 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2137 "llvm.nvvm.suld.1d.array.v2i32.trap">;
2138def int_nvvm_suld_1d_array_v2i64_trap
2139 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2140 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2141 "llvm.nvvm.suld.1d.array.v2i64.trap">;
2142def int_nvvm_suld_1d_array_v4i8_trap
2143 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2144 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2145 "llvm.nvvm.suld.1d.array.v4i8.trap">;
2146def int_nvvm_suld_1d_array_v4i16_trap
2147 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2148 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2149 "llvm.nvvm.suld.1d.array.v4i16.trap">;
2150def int_nvvm_suld_1d_array_v4i32_trap
2151 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2152 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2153 "llvm.nvvm.suld.1d.array.v4i32.trap">;
2154
2155def int_nvvm_suld_2d_i8_trap
2156 : Intrinsic<[llvm_i16_ty],
2157 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2158 "llvm.nvvm.suld.2d.i8.trap">;
2159def int_nvvm_suld_2d_i16_trap
2160 : Intrinsic<[llvm_i16_ty],
2161 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2162 "llvm.nvvm.suld.2d.i16.trap">;
2163def int_nvvm_suld_2d_i32_trap
2164 : Intrinsic<[llvm_i32_ty],
2165 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2166 "llvm.nvvm.suld.2d.i32.trap">;
2167def int_nvvm_suld_2d_i64_trap
2168 : Intrinsic<[llvm_i64_ty],
2169 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2170 "llvm.nvvm.suld.2d.i64.trap">;
2171def int_nvvm_suld_2d_v2i8_trap
2172 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2173 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2174 "llvm.nvvm.suld.2d.v2i8.trap">;
2175def int_nvvm_suld_2d_v2i16_trap
2176 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2177 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2178 "llvm.nvvm.suld.2d.v2i16.trap">;
2179def int_nvvm_suld_2d_v2i32_trap
2180 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2181 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2182 "llvm.nvvm.suld.2d.v2i32.trap">;
2183def int_nvvm_suld_2d_v2i64_trap
2184 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2185 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2186 "llvm.nvvm.suld.2d.v2i64.trap">;
2187def int_nvvm_suld_2d_v4i8_trap
2188 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2189 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2190 "llvm.nvvm.suld.2d.v4i8.trap">;
2191def int_nvvm_suld_2d_v4i16_trap
2192 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2193 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2194 "llvm.nvvm.suld.2d.v4i16.trap">;
2195def int_nvvm_suld_2d_v4i32_trap
2196 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2197 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2198 "llvm.nvvm.suld.2d.v4i32.trap">;
2199
2200def int_nvvm_suld_2d_array_i8_trap
2201 : Intrinsic<[llvm_i16_ty],
2202 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2203 "llvm.nvvm.suld.2d.array.i8.trap">;
2204def int_nvvm_suld_2d_array_i16_trap
2205 : Intrinsic<[llvm_i16_ty],
2206 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2207 "llvm.nvvm.suld.2d.array.i16.trap">;
2208def int_nvvm_suld_2d_array_i32_trap
2209 : Intrinsic<[llvm_i32_ty],
2210 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2211 "llvm.nvvm.suld.2d.array.i32.trap">;
2212def int_nvvm_suld_2d_array_i64_trap
2213 : Intrinsic<[llvm_i64_ty],
2214 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2215 "llvm.nvvm.suld.2d.array.i64.trap">;
2216def int_nvvm_suld_2d_array_v2i8_trap
2217 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2218 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2219 "llvm.nvvm.suld.2d.array.v2i8.trap">;
2220def int_nvvm_suld_2d_array_v2i16_trap
2221 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2222 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2223 "llvm.nvvm.suld.2d.array.v2i16.trap">;
2224def int_nvvm_suld_2d_array_v2i32_trap
2225 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2226 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2227 "llvm.nvvm.suld.2d.array.v2i32.trap">;
2228def int_nvvm_suld_2d_array_v2i64_trap
2229 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2230 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2231 "llvm.nvvm.suld.2d.array.v2i64.trap">;
2232def int_nvvm_suld_2d_array_v4i8_trap
2233 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2234 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2235 "llvm.nvvm.suld.2d.array.v4i8.trap">;
2236def int_nvvm_suld_2d_array_v4i16_trap
2237 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2238 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2239 "llvm.nvvm.suld.2d.array.v4i16.trap">;
2240def int_nvvm_suld_2d_array_v4i32_trap
2241 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2242 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2243 "llvm.nvvm.suld.2d.array.v4i32.trap">;
2244
2245def int_nvvm_suld_3d_i8_trap
2246 : Intrinsic<[llvm_i16_ty],
2247 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2248 "llvm.nvvm.suld.3d.i8.trap">;
2249def int_nvvm_suld_3d_i16_trap
2250 : Intrinsic<[llvm_i16_ty],
2251 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2252 "llvm.nvvm.suld.3d.i16.trap">;
2253def int_nvvm_suld_3d_i32_trap
2254 : Intrinsic<[llvm_i32_ty],
2255 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2256 "llvm.nvvm.suld.3d.i32.trap">;
2257def int_nvvm_suld_3d_i64_trap
2258 : Intrinsic<[llvm_i64_ty],
2259 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2260 "llvm.nvvm.suld.3d.i64.trap">;
2261def int_nvvm_suld_3d_v2i8_trap
2262 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2263 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2264 "llvm.nvvm.suld.3d.v2i8.trap">;
2265def int_nvvm_suld_3d_v2i16_trap
2266 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2267 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2268 "llvm.nvvm.suld.3d.v2i16.trap">;
2269def int_nvvm_suld_3d_v2i32_trap
2270 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2271 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2272 "llvm.nvvm.suld.3d.v2i32.trap">;
2273def int_nvvm_suld_3d_v2i64_trap
2274 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2275 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2276 "llvm.nvvm.suld.3d.v2i64.trap">;
2277def int_nvvm_suld_3d_v4i8_trap
2278 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2279 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2280 "llvm.nvvm.suld.3d.v4i8.trap">;
2281def int_nvvm_suld_3d_v4i16_trap
2282 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2283 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2284 "llvm.nvvm.suld.3d.v4i16.trap">;
2285def int_nvvm_suld_3d_v4i32_trap
2286 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2287 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2288 "llvm.nvvm.suld.3d.v4i32.trap">;
2289
2290// .zero variants
2291def int_nvvm_suld_1d_i8_zero
2292 : Intrinsic<[llvm_i16_ty],
2293 [llvm_i64_ty, llvm_i32_ty], [],
2294 "llvm.nvvm.suld.1d.i8.zero">;
2295def int_nvvm_suld_1d_i16_zero
2296 : Intrinsic<[llvm_i16_ty],
2297 [llvm_i64_ty, llvm_i32_ty], [],
2298 "llvm.nvvm.suld.1d.i16.zero">;
2299def int_nvvm_suld_1d_i32_zero
2300 : Intrinsic<[llvm_i32_ty],
2301 [llvm_i64_ty, llvm_i32_ty], [],
2302 "llvm.nvvm.suld.1d.i32.zero">;
2303def int_nvvm_suld_1d_i64_zero
2304 : Intrinsic<[llvm_i64_ty],
2305 [llvm_i64_ty, llvm_i32_ty], [],
2306 "llvm.nvvm.suld.1d.i64.zero">;
2307def int_nvvm_suld_1d_v2i8_zero
2308 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2309 [llvm_i64_ty, llvm_i32_ty], [],
2310 "llvm.nvvm.suld.1d.v2i8.zero">;
2311def int_nvvm_suld_1d_v2i16_zero
2312 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2313 [llvm_i64_ty, llvm_i32_ty], [],
2314 "llvm.nvvm.suld.1d.v2i16.zero">;
2315def int_nvvm_suld_1d_v2i32_zero
2316 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2317 [llvm_i64_ty, llvm_i32_ty], [],
2318 "llvm.nvvm.suld.1d.v2i32.zero">;
2319def int_nvvm_suld_1d_v2i64_zero
2320 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2321 [llvm_i64_ty, llvm_i32_ty], [],
2322 "llvm.nvvm.suld.1d.v2i64.zero">;
2323def int_nvvm_suld_1d_v4i8_zero
2324 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2325 [llvm_i64_ty, llvm_i32_ty], [],
2326 "llvm.nvvm.suld.1d.v4i8.zero">;
2327def int_nvvm_suld_1d_v4i16_zero
2328 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2329 [llvm_i64_ty, llvm_i32_ty], [],
2330 "llvm.nvvm.suld.1d.v4i16.zero">;
2331def int_nvvm_suld_1d_v4i32_zero
2332 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2333 [llvm_i64_ty, llvm_i32_ty], [],
2334 "llvm.nvvm.suld.1d.v4i32.zero">;
2335
2336def int_nvvm_suld_1d_array_i8_zero
2337 : Intrinsic<[llvm_i16_ty],
2338 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2339 "llvm.nvvm.suld.1d.array.i8.zero">;
2340def int_nvvm_suld_1d_array_i16_zero
2341 : Intrinsic<[llvm_i16_ty],
2342 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2343 "llvm.nvvm.suld.1d.array.i16.zero">;
2344def int_nvvm_suld_1d_array_i32_zero
2345 : Intrinsic<[llvm_i32_ty],
2346 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2347 "llvm.nvvm.suld.1d.array.i32.zero">;
2348def int_nvvm_suld_1d_array_i64_zero
2349 : Intrinsic<[llvm_i64_ty],
2350 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2351 "llvm.nvvm.suld.1d.array.i64.zero">;
2352def int_nvvm_suld_1d_array_v2i8_zero
2353 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2354 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2355 "llvm.nvvm.suld.1d.array.v2i8.zero">;
2356def int_nvvm_suld_1d_array_v2i16_zero
2357 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2358 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2359 "llvm.nvvm.suld.1d.array.v2i16.zero">;
2360def int_nvvm_suld_1d_array_v2i32_zero
2361 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2362 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2363 "llvm.nvvm.suld.1d.array.v2i32.zero">;
2364def int_nvvm_suld_1d_array_v2i64_zero
2365 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2366 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2367 "llvm.nvvm.suld.1d.array.v2i64.zero">;
2368def int_nvvm_suld_1d_array_v4i8_zero
2369 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2370 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2371 "llvm.nvvm.suld.1d.array.v4i8.zero">;
2372def int_nvvm_suld_1d_array_v4i16_zero
2373 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2374 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2375 "llvm.nvvm.suld.1d.array.v4i16.zero">;
2376def int_nvvm_suld_1d_array_v4i32_zero
2377 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2378 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2379 "llvm.nvvm.suld.1d.array.v4i32.zero">;
2380
2381def int_nvvm_suld_2d_i8_zero
2382 : Intrinsic<[llvm_i16_ty],
2383 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2384 "llvm.nvvm.suld.2d.i8.zero">;
2385def int_nvvm_suld_2d_i16_zero
2386 : Intrinsic<[llvm_i16_ty],
2387 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2388 "llvm.nvvm.suld.2d.i16.zero">;
2389def int_nvvm_suld_2d_i32_zero
2390 : Intrinsic<[llvm_i32_ty],
2391 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2392 "llvm.nvvm.suld.2d.i32.zero">;
2393def int_nvvm_suld_2d_i64_zero
2394 : Intrinsic<[llvm_i64_ty],
2395 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2396 "llvm.nvvm.suld.2d.i64.zero">;
2397def int_nvvm_suld_2d_v2i8_zero
2398 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2399 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2400 "llvm.nvvm.suld.2d.v2i8.zero">;
2401def int_nvvm_suld_2d_v2i16_zero
2402 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2403 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2404 "llvm.nvvm.suld.2d.v2i16.zero">;
2405def int_nvvm_suld_2d_v2i32_zero
2406 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2407 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2408 "llvm.nvvm.suld.2d.v2i32.zero">;
2409def int_nvvm_suld_2d_v2i64_zero
2410 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2411 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2412 "llvm.nvvm.suld.2d.v2i64.zero">;
2413def int_nvvm_suld_2d_v4i8_zero
2414 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2415 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2416 "llvm.nvvm.suld.2d.v4i8.zero">;
2417def int_nvvm_suld_2d_v4i16_zero
2418 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2419 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2420 "llvm.nvvm.suld.2d.v4i16.zero">;
2421def int_nvvm_suld_2d_v4i32_zero
2422 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2423 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2424 "llvm.nvvm.suld.2d.v4i32.zero">;
2425
2426def int_nvvm_suld_2d_array_i8_zero
2427 : Intrinsic<[llvm_i16_ty],
2428 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2429 "llvm.nvvm.suld.2d.array.i8.zero">;
2430def int_nvvm_suld_2d_array_i16_zero
2431 : Intrinsic<[llvm_i16_ty],
2432 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2433 "llvm.nvvm.suld.2d.array.i16.zero">;
2434def int_nvvm_suld_2d_array_i32_zero
2435 : Intrinsic<[llvm_i32_ty],
2436 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2437 "llvm.nvvm.suld.2d.array.i32.zero">;
2438def int_nvvm_suld_2d_array_i64_zero
2439 : Intrinsic<[llvm_i64_ty],
2440 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2441 "llvm.nvvm.suld.2d.array.i64.zero">;
2442def int_nvvm_suld_2d_array_v2i8_zero
2443 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2444 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2445 "llvm.nvvm.suld.2d.array.v2i8.zero">;
2446def int_nvvm_suld_2d_array_v2i16_zero
2447 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2448 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2449 "llvm.nvvm.suld.2d.array.v2i16.zero">;
2450def int_nvvm_suld_2d_array_v2i32_zero
2451 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2452 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2453 "llvm.nvvm.suld.2d.array.v2i32.zero">;
2454def int_nvvm_suld_2d_array_v2i64_zero
2455 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2456 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2457 "llvm.nvvm.suld.2d.array.v2i64.zero">;
2458def int_nvvm_suld_2d_array_v4i8_zero
2459 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2460 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2461 "llvm.nvvm.suld.2d.array.v4i8.zero">;
2462def int_nvvm_suld_2d_array_v4i16_zero
2463 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2464 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2465 "llvm.nvvm.suld.2d.array.v4i16.zero">;
2466def int_nvvm_suld_2d_array_v4i32_zero
2467 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2468 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2469 "llvm.nvvm.suld.2d.array.v4i32.zero">;
2470
2471def int_nvvm_suld_3d_i8_zero
2472 : Intrinsic<[llvm_i16_ty],
2473 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2474 "llvm.nvvm.suld.3d.i8.zero">;
2475def int_nvvm_suld_3d_i16_zero
2476 : Intrinsic<[llvm_i16_ty],
2477 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2478 "llvm.nvvm.suld.3d.i16.zero">;
2479def int_nvvm_suld_3d_i32_zero
2480 : Intrinsic<[llvm_i32_ty],
2481 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2482 "llvm.nvvm.suld.3d.i32.zero">;
2483def int_nvvm_suld_3d_i64_zero
2484 : Intrinsic<[llvm_i64_ty],
2485 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2486 "llvm.nvvm.suld.3d.i64.zero">;
2487def int_nvvm_suld_3d_v2i8_zero
2488 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2489 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2490 "llvm.nvvm.suld.3d.v2i8.zero">;
2491def int_nvvm_suld_3d_v2i16_zero
2492 : Intrinsic<[llvm_i16_ty, llvm_i16_ty],
2493 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2494 "llvm.nvvm.suld.3d.v2i16.zero">;
2495def int_nvvm_suld_3d_v2i32_zero
2496 : Intrinsic<[llvm_i32_ty, llvm_i32_ty],
2497 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2498 "llvm.nvvm.suld.3d.v2i32.zero">;
2499def int_nvvm_suld_3d_v2i64_zero
2500 : Intrinsic<[llvm_i64_ty, llvm_i64_ty],
2501 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2502 "llvm.nvvm.suld.3d.v2i64.zero">;
2503def int_nvvm_suld_3d_v4i8_zero
2504 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2505 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2506 "llvm.nvvm.suld.3d.v4i8.zero">;
2507def int_nvvm_suld_3d_v4i16_zero
2508 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty],
2509 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2510 "llvm.nvvm.suld.3d.v4i16.zero">;
2511def int_nvvm_suld_3d_v4i32_zero
2512 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
2513 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2514 "llvm.nvvm.suld.3d.v4i32.zero">;
2515
2516//===- Texture Query ------------------------------------------------------===//
2517
2518def int_nvvm_txq_channel_order
2519 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2520 "llvm.nvvm.txq.channel.order">,
2521 GCCBuiltin<"__nvvm_txq_channel_order">;
2522def int_nvvm_txq_channel_data_type
2523 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2524 "llvm.nvvm.txq.channel.data.type">,
2525 GCCBuiltin<"__nvvm_txq_channel_data_type">;
2526def int_nvvm_txq_width
2527 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2528 "llvm.nvvm.txq.width">,
2529 GCCBuiltin<"__nvvm_txq_width">;
2530def int_nvvm_txq_height
2531 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2532 "llvm.nvvm.txq.height">,
2533 GCCBuiltin<"__nvvm_txq_height">;
2534def int_nvvm_txq_depth
2535 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2536 "llvm.nvvm.txq.depth">,
2537 GCCBuiltin<"__nvvm_txq_depth">;
2538def int_nvvm_txq_array_size
2539 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2540 "llvm.nvvm.txq.array.size">,
2541 GCCBuiltin<"__nvvm_txq_array_size">;
2542def int_nvvm_txq_num_samples
2543 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2544 "llvm.nvvm.txq.num.samples">,
2545 GCCBuiltin<"__nvvm_txq_num_samples">;
2546def int_nvvm_txq_num_mipmap_levels
2547 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2548 "llvm.nvvm.txq.num.mipmap.levels">,
2549 GCCBuiltin<"__nvvm_txq_num_mipmap_levels">;
2550
2551//===- Surface Query ------------------------------------------------------===//
2552
2553def int_nvvm_suq_channel_order
2554 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2555 "llvm.nvvm.suq.channel.order">,
2556 GCCBuiltin<"__nvvm_suq_channel_order">;
2557def int_nvvm_suq_channel_data_type
2558 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2559 "llvm.nvvm.suq.channel.data.type">,
2560 GCCBuiltin<"__nvvm_suq_channel_data_type">;
2561def int_nvvm_suq_width
2562 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2563 "llvm.nvvm.suq.width">,
2564 GCCBuiltin<"__nvvm_suq_width">;
2565def int_nvvm_suq_height
2566 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2567 "llvm.nvvm.suq.height">,
2568 GCCBuiltin<"__nvvm_suq_height">;
2569def int_nvvm_suq_depth
2570 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2571 "llvm.nvvm.suq.depth">,
2572 GCCBuiltin<"__nvvm_suq_depth">;
2573def int_nvvm_suq_array_size
2574 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem],
2575 "llvm.nvvm.suq.array.size">,
2576 GCCBuiltin<"__nvvm_suq_array_size">;
2577
2578
2579//===- Handle Query -------------------------------------------------------===//
2580
2581def int_nvvm_istypep_sampler
2582 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
2583 "llvm.nvvm.istypep.sampler">,
2584 GCCBuiltin<"__nvvm_istypep_sampler">;
2585def int_nvvm_istypep_surface
2586 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
2587 "llvm.nvvm.istypep.surface">,
2588 GCCBuiltin<"__nvvm_istypep_surface">;
2589def int_nvvm_istypep_texture
2590 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem],
2591 "llvm.nvvm.istypep.texture">,
2592 GCCBuiltin<"__nvvm_istypep_texture">;
2593
2594
2595
2596//===- Surface Stores -----------------------------------------------------===//
2597
2598// Unformatted
2599// .clamp variant
2600def int_nvvm_sust_b_1d_i8_clamp
2601 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
2602 "llvm.nvvm.sust.b.1d.i8.clamp">,
2603 GCCBuiltin<"__nvvm_sust_b_1d_i8_clamp">;
2604def int_nvvm_sust_b_1d_i16_clamp
2605 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
2606 "llvm.nvvm.sust.b.1d.i16.clamp">,
2607 GCCBuiltin<"__nvvm_sust_b_1d_i16_clamp">;
2608def int_nvvm_sust_b_1d_i32_clamp
2609 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2610 "llvm.nvvm.sust.b.1d.i32.clamp">,
2611 GCCBuiltin<"__nvvm_sust_b_1d_i32_clamp">;
2612def int_nvvm_sust_b_1d_i64_clamp
2613 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [],
2614 "llvm.nvvm.sust.b.1d.i64.clamp">,
2615 GCCBuiltin<"__nvvm_sust_b_1d_i64_clamp">;
2616def int_nvvm_sust_b_1d_v2i8_clamp
2617 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
2618 "llvm.nvvm.sust.b.1d.v2i8.clamp">,
2619 GCCBuiltin<"__nvvm_sust_b_1d_v2i8_clamp">;
2620def int_nvvm_sust_b_1d_v2i16_clamp
2621 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
2622 "llvm.nvvm.sust.b.1d.v2i16.clamp">,
2623 GCCBuiltin<"__nvvm_sust_b_1d_v2i16_clamp">;
2624def int_nvvm_sust_b_1d_v2i32_clamp
2625 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2626 "llvm.nvvm.sust.b.1d.v2i32.clamp">,
2627 GCCBuiltin<"__nvvm_sust_b_1d_v2i32_clamp">;
2628def int_nvvm_sust_b_1d_v2i64_clamp
2629 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [],
2630 "llvm.nvvm.sust.b.1d.v2i64.clamp">,
2631 GCCBuiltin<"__nvvm_sust_b_1d_v2i64_clamp">;
2632def int_nvvm_sust_b_1d_v4i8_clamp
2633 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
2634 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2635 "llvm.nvvm.sust.b.1d.v4i8.clamp">,
2636 GCCBuiltin<"__nvvm_sust_b_1d_v4i8_clamp">;
2637def int_nvvm_sust_b_1d_v4i16_clamp
2638 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
2639 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2640 "llvm.nvvm.sust.b.1d.v4i16.clamp">,
2641 GCCBuiltin<"__nvvm_sust_b_1d_v4i16_clamp">;
2642def int_nvvm_sust_b_1d_v4i32_clamp
2643 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2644 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2645 "llvm.nvvm.sust.b.1d.v4i32.clamp">,
2646 GCCBuiltin<"__nvvm_sust_b_1d_v4i32_clamp">;
2647
2648
2649def int_nvvm_sust_b_1d_array_i8_clamp
2650 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2651 "llvm.nvvm.sust.b.1d.array.i8.clamp">,
2652 GCCBuiltin<"__nvvm_sust_b_1d_array_i8_clamp">;
2653def int_nvvm_sust_b_1d_array_i16_clamp
2654 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2655 "llvm.nvvm.sust.b.1d.array.i16.clamp">,
2656 GCCBuiltin<"__nvvm_sust_b_1d_array_i16_clamp">;
2657def int_nvvm_sust_b_1d_array_i32_clamp
2658 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2659 "llvm.nvvm.sust.b.1d.array.i32.clamp">,
2660 GCCBuiltin<"__nvvm_sust_b_1d_array_i32_clamp">;
2661def int_nvvm_sust_b_1d_array_i64_clamp
2662 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
2663 "llvm.nvvm.sust.b.1d.array.i64.clamp">,
2664 GCCBuiltin<"__nvvm_sust_b_1d_array_i64_clamp">;
2665def int_nvvm_sust_b_1d_array_v2i8_clamp
2666 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2667 llvm_i16_ty, llvm_i16_ty], [],
2668 "llvm.nvvm.sust.b.1d.array.v2i8.clamp">,
2669 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_clamp">;
2670def int_nvvm_sust_b_1d_array_v2i16_clamp
2671 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2672 llvm_i16_ty, llvm_i16_ty], [],
2673 "llvm.nvvm.sust.b.1d.array.v2i16.clamp">,
2674 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_clamp">;
2675def int_nvvm_sust_b_1d_array_v2i32_clamp
2676 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2677 llvm_i32_ty, llvm_i32_ty], [],
2678 "llvm.nvvm.sust.b.1d.array.v2i32.clamp">,
2679 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_clamp">;
2680def int_nvvm_sust_b_1d_array_v2i64_clamp
2681 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2682 llvm_i64_ty, llvm_i64_ty], [],
2683 "llvm.nvvm.sust.b.1d.array.v2i64.clamp">,
2684 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i64_clamp">;
2685def int_nvvm_sust_b_1d_array_v4i8_clamp
2686 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
2687 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2688 "llvm.nvvm.sust.b.1d.array.v4i8.clamp">,
2689 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_clamp">;
2690def int_nvvm_sust_b_1d_array_v4i16_clamp
2691 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
2692 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2693 "llvm.nvvm.sust.b.1d.array.v4i16.clamp">,
2694 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_clamp">;
2695def int_nvvm_sust_b_1d_array_v4i32_clamp
2696 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2697 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2698 "llvm.nvvm.sust.b.1d.array.v4i32.clamp">,
2699 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_clamp">;
2700
2701
2702def int_nvvm_sust_b_2d_i8_clamp
2703 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2704 "llvm.nvvm.sust.b.2d.i8.clamp">,
2705 GCCBuiltin<"__nvvm_sust_b_2d_i8_clamp">;
2706def int_nvvm_sust_b_2d_i16_clamp
2707 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2708 "llvm.nvvm.sust.b.2d.i16.clamp">,
2709 GCCBuiltin<"__nvvm_sust_b_2d_i16_clamp">;
2710def int_nvvm_sust_b_2d_i32_clamp
2711 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2712 "llvm.nvvm.sust.b.2d.i32.clamp">,
2713 GCCBuiltin<"__nvvm_sust_b_2d_i32_clamp">;
2714def int_nvvm_sust_b_2d_i64_clamp
2715 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
2716 "llvm.nvvm.sust.b.2d.i64.clamp">,
2717 GCCBuiltin<"__nvvm_sust_b_2d_i64_clamp">;
2718def int_nvvm_sust_b_2d_v2i8_clamp
2719 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2720 llvm_i16_ty, llvm_i16_ty], [],
2721 "llvm.nvvm.sust.b.2d.v2i8.clamp">,
2722 GCCBuiltin<"__nvvm_sust_b_2d_v2i8_clamp">;
2723def int_nvvm_sust_b_2d_v2i16_clamp
2724 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2725 llvm_i16_ty, llvm_i16_ty], [],
2726 "llvm.nvvm.sust.b.2d.v2i16.clamp">,
2727 GCCBuiltin<"__nvvm_sust_b_2d_v2i16_clamp">;
2728def int_nvvm_sust_b_2d_v2i32_clamp
2729 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2730 llvm_i32_ty, llvm_i32_ty], [],
2731 "llvm.nvvm.sust.b.2d.v2i32.clamp">,
2732 GCCBuiltin<"__nvvm_sust_b_2d_v2i32_clamp">;
2733def int_nvvm_sust_b_2d_v2i64_clamp
2734 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2735 llvm_i64_ty, llvm_i64_ty], [],
2736 "llvm.nvvm.sust.b.2d.v2i64.clamp">,
2737 GCCBuiltin<"__nvvm_sust_b_2d_v2i64_clamp">;
2738def int_nvvm_sust_b_2d_v4i8_clamp
2739 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
2740 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2741 "llvm.nvvm.sust.b.2d.v4i8.clamp">,
2742 GCCBuiltin<"__nvvm_sust_b_2d_v4i8_clamp">;
2743def int_nvvm_sust_b_2d_v4i16_clamp
2744 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
2745 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2746 "llvm.nvvm.sust.b.2d.v4i16.clamp">,
2747 GCCBuiltin<"__nvvm_sust_b_2d_v4i16_clamp">;
2748def int_nvvm_sust_b_2d_v4i32_clamp
2749 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2750 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2751 "llvm.nvvm.sust.b.2d.v4i32.clamp">,
2752 GCCBuiltin<"__nvvm_sust_b_2d_v4i32_clamp">;
2753
2754
2755def int_nvvm_sust_b_2d_array_i8_clamp
2756 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2757 llvm_i32_ty, llvm_i16_ty], [],
2758 "llvm.nvvm.sust.b.2d.array.i8.clamp">,
2759 GCCBuiltin<"__nvvm_sust_b_2d_array_i8_clamp">;
2760def int_nvvm_sust_b_2d_array_i16_clamp
2761 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2762 llvm_i32_ty, llvm_i16_ty], [],
2763 "llvm.nvvm.sust.b.2d.array.i16.clamp">,
2764 GCCBuiltin<"__nvvm_sust_b_2d_array_i16_clamp">;
2765def int_nvvm_sust_b_2d_array_i32_clamp
2766 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2767 llvm_i32_ty, llvm_i32_ty], [],
2768 "llvm.nvvm.sust.b.2d.array.i32.clamp">,
2769 GCCBuiltin<"__nvvm_sust_b_2d_array_i32_clamp">;
2770def int_nvvm_sust_b_2d_array_i64_clamp
2771 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2772 llvm_i32_ty, llvm_i64_ty], [],
2773 "llvm.nvvm.sust.b.2d.array.i64.clamp">,
2774 GCCBuiltin<"__nvvm_sust_b_2d_array_i64_clamp">;
2775def int_nvvm_sust_b_2d_array_v2i8_clamp
2776 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2777 llvm_i16_ty, llvm_i16_ty], [],
2778 "llvm.nvvm.sust.b.2d.array.v2i8.clamp">,
2779 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_clamp">;
2780def int_nvvm_sust_b_2d_array_v2i16_clamp
2781 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2782 llvm_i16_ty, llvm_i16_ty], [],
2783 "llvm.nvvm.sust.b.2d.array.v2i16.clamp">,
2784 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_clamp">;
2785def int_nvvm_sust_b_2d_array_v2i32_clamp
2786 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2787 llvm_i32_ty, llvm_i32_ty], [],
2788 "llvm.nvvm.sust.b.2d.array.v2i32.clamp">,
2789 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_clamp">;
2790def int_nvvm_sust_b_2d_array_v2i64_clamp
2791 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2792 llvm_i64_ty, llvm_i64_ty], [],
2793 "llvm.nvvm.sust.b.2d.array.v2i64.clamp">,
2794 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i64_clamp">;
2795def int_nvvm_sust_b_2d_array_v4i8_clamp
2796 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2797 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2798 "llvm.nvvm.sust.b.2d.array.v4i8.clamp">,
2799 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_clamp">;
2800def int_nvvm_sust_b_2d_array_v4i16_clamp
2801 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2802 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2803 "llvm.nvvm.sust.b.2d.array.v4i16.clamp">,
2804 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_clamp">;
2805def int_nvvm_sust_b_2d_array_v4i32_clamp
2806 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2807 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2808 "llvm.nvvm.sust.b.2d.array.v4i32.clamp">,
2809 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_clamp">;
2810
2811
2812def int_nvvm_sust_b_3d_i8_clamp
2813 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2814 llvm_i32_ty, llvm_i16_ty], [],
2815 "llvm.nvvm.sust.b.3d.i8.clamp">,
2816 GCCBuiltin<"__nvvm_sust_b_3d_i8_clamp">;
2817def int_nvvm_sust_b_3d_i16_clamp
2818 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2819 llvm_i32_ty, llvm_i16_ty], [],
2820 "llvm.nvvm.sust.b.3d.i16.clamp">,
2821 GCCBuiltin<"__nvvm_sust_b_3d_i16_clamp">;
2822def int_nvvm_sust_b_3d_i32_clamp
2823 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2824 llvm_i32_ty, llvm_i32_ty], [],
2825 "llvm.nvvm.sust.b.3d.i32.clamp">,
2826 GCCBuiltin<"__nvvm_sust_b_3d_i32_clamp">;
2827def int_nvvm_sust_b_3d_i64_clamp
2828 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2829 llvm_i32_ty, llvm_i64_ty], [],
2830 "llvm.nvvm.sust.b.3d.i64.clamp">,
2831 GCCBuiltin<"__nvvm_sust_b_3d_i64_clamp">;
2832def int_nvvm_sust_b_3d_v2i8_clamp
2833 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2834 llvm_i16_ty, llvm_i16_ty], [],
2835 "llvm.nvvm.sust.b.3d.v2i8.clamp">,
2836 GCCBuiltin<"__nvvm_sust_b_3d_v2i8_clamp">;
2837def int_nvvm_sust_b_3d_v2i16_clamp
2838 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2839 llvm_i16_ty, llvm_i16_ty], [],
2840 "llvm.nvvm.sust.b.3d.v2i16.clamp">,
2841 GCCBuiltin<"__nvvm_sust_b_3d_v2i16_clamp">;
2842def int_nvvm_sust_b_3d_v2i32_clamp
2843 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2844 llvm_i32_ty, llvm_i32_ty], [],
2845 "llvm.nvvm.sust.b.3d.v2i32.clamp">,
2846 GCCBuiltin<"__nvvm_sust_b_3d_v2i32_clamp">;
2847def int_nvvm_sust_b_3d_v2i64_clamp
2848 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2849 llvm_i64_ty, llvm_i64_ty], [],
2850 "llvm.nvvm.sust.b.3d.v2i64.clamp">,
2851 GCCBuiltin<"__nvvm_sust_b_3d_v2i64_clamp">;
2852def int_nvvm_sust_b_3d_v4i8_clamp
2853 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2854 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2855 "llvm.nvvm.sust.b.3d.v4i8.clamp">,
2856 GCCBuiltin<"__nvvm_sust_b_3d_v4i8_clamp">;
2857def int_nvvm_sust_b_3d_v4i16_clamp
2858 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2859 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2860 "llvm.nvvm.sust.b.3d.v4i16.clamp">,
2861 GCCBuiltin<"__nvvm_sust_b_3d_v4i16_clamp">;
2862def int_nvvm_sust_b_3d_v4i32_clamp
2863 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2864 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2865 "llvm.nvvm.sust.b.3d.v4i32.clamp">,
2866 GCCBuiltin<"__nvvm_sust_b_3d_v4i32_clamp">;
2867
2868
2869// .trap variant
2870def int_nvvm_sust_b_1d_i8_trap
2871 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
2872 "llvm.nvvm.sust.b.1d.i8.trap">,
2873 GCCBuiltin<"__nvvm_sust_b_1d_i8_trap">;
2874def int_nvvm_sust_b_1d_i16_trap
2875 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
2876 "llvm.nvvm.sust.b.1d.i16.trap">,
2877 GCCBuiltin<"__nvvm_sust_b_1d_i16_trap">;
2878def int_nvvm_sust_b_1d_i32_trap
2879 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
2880 "llvm.nvvm.sust.b.1d.i32.trap">,
2881 GCCBuiltin<"__nvvm_sust_b_1d_i32_trap">;
2882def int_nvvm_sust_b_1d_i64_trap
2883 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [],
2884 "llvm.nvvm.sust.b.1d.i64.trap">,
2885 GCCBuiltin<"__nvvm_sust_b_1d_i64_trap">;
2886def int_nvvm_sust_b_1d_v2i8_trap
2887 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
2888 "llvm.nvvm.sust.b.1d.v2i8.trap">,
2889 GCCBuiltin<"__nvvm_sust_b_1d_v2i8_trap">;
2890def int_nvvm_sust_b_1d_v2i16_trap
2891 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
2892 "llvm.nvvm.sust.b.1d.v2i16.trap">,
2893 GCCBuiltin<"__nvvm_sust_b_1d_v2i16_trap">;
2894def int_nvvm_sust_b_1d_v2i32_trap
2895 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2896 "llvm.nvvm.sust.b.1d.v2i32.trap">,
2897 GCCBuiltin<"__nvvm_sust_b_1d_v2i32_trap">;
2898def int_nvvm_sust_b_1d_v2i64_trap
2899 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [],
2900 "llvm.nvvm.sust.b.1d.v2i64.trap">,
2901 GCCBuiltin<"__nvvm_sust_b_1d_v2i64_trap">;
2902def int_nvvm_sust_b_1d_v4i8_trap
2903 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
2904 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2905 "llvm.nvvm.sust.b.1d.v4i8.trap">,
2906 GCCBuiltin<"__nvvm_sust_b_1d_v4i8_trap">;
2907def int_nvvm_sust_b_1d_v4i16_trap
2908 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
2909 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2910 "llvm.nvvm.sust.b.1d.v4i16.trap">,
2911 GCCBuiltin<"__nvvm_sust_b_1d_v4i16_trap">;
2912def int_nvvm_sust_b_1d_v4i32_trap
2913 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2914 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2915 "llvm.nvvm.sust.b.1d.v4i32.trap">,
2916 GCCBuiltin<"__nvvm_sust_b_1d_v4i32_trap">;
2917
2918
2919def int_nvvm_sust_b_1d_array_i8_trap
2920 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2921 "llvm.nvvm.sust.b.1d.array.i8.trap">,
2922 GCCBuiltin<"__nvvm_sust_b_1d_array_i8_trap">;
2923def int_nvvm_sust_b_1d_array_i16_trap
2924 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2925 "llvm.nvvm.sust.b.1d.array.i16.trap">,
2926 GCCBuiltin<"__nvvm_sust_b_1d_array_i16_trap">;
2927def int_nvvm_sust_b_1d_array_i32_trap
2928 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2929 "llvm.nvvm.sust.b.1d.array.i32.trap">,
2930 GCCBuiltin<"__nvvm_sust_b_1d_array_i32_trap">;
2931def int_nvvm_sust_b_1d_array_i64_trap
2932 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
2933 "llvm.nvvm.sust.b.1d.array.i64.trap">,
2934 GCCBuiltin<"__nvvm_sust_b_1d_array_i64_trap">;
2935def int_nvvm_sust_b_1d_array_v2i8_trap
2936 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2937 llvm_i16_ty, llvm_i16_ty], [],
2938 "llvm.nvvm.sust.b.1d.array.v2i8.trap">,
2939 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_trap">;
2940def int_nvvm_sust_b_1d_array_v2i16_trap
2941 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2942 llvm_i16_ty, llvm_i16_ty], [],
2943 "llvm.nvvm.sust.b.1d.array.v2i16.trap">,
2944 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_trap">;
2945def int_nvvm_sust_b_1d_array_v2i32_trap
2946 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2947 llvm_i32_ty, llvm_i32_ty], [],
2948 "llvm.nvvm.sust.b.1d.array.v2i32.trap">,
2949 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_trap">;
2950def int_nvvm_sust_b_1d_array_v2i64_trap
2951 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2952 llvm_i64_ty, llvm_i64_ty], [],
2953 "llvm.nvvm.sust.b.1d.array.v2i64.trap">,
2954 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i64_trap">;
2955def int_nvvm_sust_b_1d_array_v4i8_trap
2956 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
2957 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2958 "llvm.nvvm.sust.b.1d.array.v4i8.trap">,
2959 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_trap">;
2960def int_nvvm_sust_b_1d_array_v4i16_trap
2961 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
2962 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
2963 "llvm.nvvm.sust.b.1d.array.v4i16.trap">,
2964 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_trap">;
2965def int_nvvm_sust_b_1d_array_v4i32_trap
2966 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
2967 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2968 "llvm.nvvm.sust.b.1d.array.v4i32.trap">,
2969 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_trap">;
2970
2971
2972def int_nvvm_sust_b_2d_i8_trap
2973 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2974 "llvm.nvvm.sust.b.2d.i8.trap">,
2975 GCCBuiltin<"__nvvm_sust_b_2d_i8_trap">;
2976def int_nvvm_sust_b_2d_i16_trap
2977 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
2978 "llvm.nvvm.sust.b.2d.i16.trap">,
2979 GCCBuiltin<"__nvvm_sust_b_2d_i16_trap">;
2980def int_nvvm_sust_b_2d_i32_trap
2981 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
2982 "llvm.nvvm.sust.b.2d.i32.trap">,
2983 GCCBuiltin<"__nvvm_sust_b_2d_i32_trap">;
2984def int_nvvm_sust_b_2d_i64_trap
2985 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
2986 "llvm.nvvm.sust.b.2d.i64.trap">,
2987 GCCBuiltin<"__nvvm_sust_b_2d_i64_trap">;
2988def int_nvvm_sust_b_2d_v2i8_trap
2989 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2990 llvm_i16_ty, llvm_i16_ty], [],
2991 "llvm.nvvm.sust.b.2d.v2i8.trap">,
2992 GCCBuiltin<"__nvvm_sust_b_2d_v2i8_trap">;
2993def int_nvvm_sust_b_2d_v2i16_trap
2994 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
2995 llvm_i16_ty, llvm_i16_ty], [],
2996 "llvm.nvvm.sust.b.2d.v2i16.trap">,
2997 GCCBuiltin<"__nvvm_sust_b_2d_v2i16_trap">;
2998def int_nvvm_sust_b_2d_v2i32_trap
2999 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3000 llvm_i32_ty, llvm_i32_ty], [],
3001 "llvm.nvvm.sust.b.2d.v2i32.trap">,
3002 GCCBuiltin<"__nvvm_sust_b_2d_v2i32_trap">;
3003def int_nvvm_sust_b_2d_v2i64_trap
3004 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3005 llvm_i64_ty, llvm_i64_ty], [],
3006 "llvm.nvvm.sust.b.2d.v2i64.trap">,
3007 GCCBuiltin<"__nvvm_sust_b_2d_v2i64_trap">;
3008def int_nvvm_sust_b_2d_v4i8_trap
3009 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3010 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3011 "llvm.nvvm.sust.b.2d.v4i8.trap">,
3012 GCCBuiltin<"__nvvm_sust_b_2d_v4i8_trap">;
3013def int_nvvm_sust_b_2d_v4i16_trap
3014 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3015 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3016 "llvm.nvvm.sust.b.2d.v4i16.trap">,
3017 GCCBuiltin<"__nvvm_sust_b_2d_v4i16_trap">;
3018def int_nvvm_sust_b_2d_v4i32_trap
3019 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3020 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3021 "llvm.nvvm.sust.b.2d.v4i32.trap">,
3022 GCCBuiltin<"__nvvm_sust_b_2d_v4i32_trap">;
3023
3024
3025def int_nvvm_sust_b_2d_array_i8_trap
3026 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3027 llvm_i32_ty, llvm_i16_ty], [],
3028 "llvm.nvvm.sust.b.2d.array.i8.trap">,
3029 GCCBuiltin<"__nvvm_sust_b_2d_array_i8_trap">;
3030def int_nvvm_sust_b_2d_array_i16_trap
3031 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3032 llvm_i32_ty, llvm_i16_ty], [],
3033 "llvm.nvvm.sust.b.2d.array.i16.trap">,
3034 GCCBuiltin<"__nvvm_sust_b_2d_array_i16_trap">;
3035def int_nvvm_sust_b_2d_array_i32_trap
3036 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3037 llvm_i32_ty, llvm_i32_ty], [],
3038 "llvm.nvvm.sust.b.2d.array.i32.trap">,
3039 GCCBuiltin<"__nvvm_sust_b_2d_array_i32_trap">;
3040def int_nvvm_sust_b_2d_array_i64_trap
3041 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3042 llvm_i32_ty, llvm_i64_ty], [],
3043 "llvm.nvvm.sust.b.2d.array.i64.trap">,
3044 GCCBuiltin<"__nvvm_sust_b_2d_array_i64_trap">;
3045def int_nvvm_sust_b_2d_array_v2i8_trap
3046 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3047 llvm_i16_ty, llvm_i16_ty], [],
3048 "llvm.nvvm.sust.b.2d.array.v2i8.trap">,
3049 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_trap">;
3050def int_nvvm_sust_b_2d_array_v2i16_trap
3051 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3052 llvm_i16_ty, llvm_i16_ty], [],
3053 "llvm.nvvm.sust.b.2d.array.v2i16.trap">,
3054 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_trap">;
3055def int_nvvm_sust_b_2d_array_v2i32_trap
3056 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3057 llvm_i32_ty, llvm_i32_ty], [],
3058 "llvm.nvvm.sust.b.2d.array.v2i32.trap">,
3059 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_trap">;
3060def int_nvvm_sust_b_2d_array_v2i64_trap
3061 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3062 llvm_i64_ty, llvm_i64_ty], [],
3063 "llvm.nvvm.sust.b.2d.array.v2i64.trap">,
3064 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i64_trap">;
3065def int_nvvm_sust_b_2d_array_v4i8_trap
3066 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3067 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3068 "llvm.nvvm.sust.b.2d.array.v4i8.trap">,
3069 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_trap">;
3070def int_nvvm_sust_b_2d_array_v4i16_trap
3071 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3072 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3073 "llvm.nvvm.sust.b.2d.array.v4i16.trap">,
3074 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_trap">;
3075def int_nvvm_sust_b_2d_array_v4i32_trap
3076 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3077 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3078 "llvm.nvvm.sust.b.2d.array.v4i32.trap">,
3079 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_trap">;
3080
3081
3082def int_nvvm_sust_b_3d_i8_trap
3083 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3084 llvm_i32_ty, llvm_i16_ty], [],
3085 "llvm.nvvm.sust.b.3d.i8.trap">,
3086 GCCBuiltin<"__nvvm_sust_b_3d_i8_trap">;
3087def int_nvvm_sust_b_3d_i16_trap
3088 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3089 llvm_i32_ty, llvm_i16_ty], [],
3090 "llvm.nvvm.sust.b.3d.i16.trap">,
3091 GCCBuiltin<"__nvvm_sust_b_3d_i16_trap">;
3092def int_nvvm_sust_b_3d_i32_trap
3093 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3094 llvm_i32_ty, llvm_i32_ty], [],
3095 "llvm.nvvm.sust.b.3d.i32.trap">,
3096 GCCBuiltin<"__nvvm_sust_b_3d_i32_trap">;
3097def int_nvvm_sust_b_3d_i64_trap
3098 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3099 llvm_i32_ty, llvm_i64_ty], [],
3100 "llvm.nvvm.sust.b.3d.i64.trap">,
3101 GCCBuiltin<"__nvvm_sust_b_3d_i64_trap">;
3102def int_nvvm_sust_b_3d_v2i8_trap
3103 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3104 llvm_i16_ty, llvm_i16_ty], [],
3105 "llvm.nvvm.sust.b.3d.v2i8.trap">,
3106 GCCBuiltin<"__nvvm_sust_b_3d_v2i8_trap">;
3107def int_nvvm_sust_b_3d_v2i16_trap
3108 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3109 llvm_i16_ty, llvm_i16_ty], [],
3110 "llvm.nvvm.sust.b.3d.v2i16.trap">,
3111 GCCBuiltin<"__nvvm_sust_b_3d_v2i16_trap">;
3112def int_nvvm_sust_b_3d_v2i32_trap
3113 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3114 llvm_i32_ty, llvm_i32_ty], [],
3115 "llvm.nvvm.sust.b.3d.v2i32.trap">,
3116 GCCBuiltin<"__nvvm_sust_b_3d_v2i32_trap">;
3117def int_nvvm_sust_b_3d_v2i64_trap
3118 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3119 llvm_i64_ty, llvm_i64_ty], [],
3120 "llvm.nvvm.sust.b.3d.v2i64.trap">,
3121 GCCBuiltin<"__nvvm_sust_b_3d_v2i64_trap">;
3122def int_nvvm_sust_b_3d_v4i8_trap
3123 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3124 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3125 "llvm.nvvm.sust.b.3d.v4i8.trap">,
3126 GCCBuiltin<"__nvvm_sust_b_3d_v4i8_trap">;
3127def int_nvvm_sust_b_3d_v4i16_trap
3128 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3129 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3130 "llvm.nvvm.sust.b.3d.v4i16.trap">,
3131 GCCBuiltin<"__nvvm_sust_b_3d_v4i16_trap">;
3132def int_nvvm_sust_b_3d_v4i32_trap
3133 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3134 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3135 "llvm.nvvm.sust.b.3d.v4i32.trap">,
3136 GCCBuiltin<"__nvvm_sust_b_3d_v4i32_trap">;
3137
3138
3139// .zero variant
3140def int_nvvm_sust_b_1d_i8_zero
3141 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
3142 "llvm.nvvm.sust.b.1d.i8.zero">,
3143 GCCBuiltin<"__nvvm_sust_b_1d_i8_zero">;
3144def int_nvvm_sust_b_1d_i16_zero
3145 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
3146 "llvm.nvvm.sust.b.1d.i16.zero">,
3147 GCCBuiltin<"__nvvm_sust_b_1d_i16_zero">;
3148def int_nvvm_sust_b_1d_i32_zero
3149 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
3150 "llvm.nvvm.sust.b.1d.i32.zero">,
3151 GCCBuiltin<"__nvvm_sust_b_1d_i32_zero">;
3152def int_nvvm_sust_b_1d_i64_zero
3153 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [],
3154 "llvm.nvvm.sust.b.1d.i64.zero">,
3155 GCCBuiltin<"__nvvm_sust_b_1d_i64_zero">;
3156def int_nvvm_sust_b_1d_v2i8_zero
3157 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
3158 "llvm.nvvm.sust.b.1d.v2i8.zero">,
3159 GCCBuiltin<"__nvvm_sust_b_1d_v2i8_zero">;
3160def int_nvvm_sust_b_1d_v2i16_zero
3161 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
3162 "llvm.nvvm.sust.b.1d.v2i16.zero">,
3163 GCCBuiltin<"__nvvm_sust_b_1d_v2i16_zero">;
3164def int_nvvm_sust_b_1d_v2i32_zero
3165 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3166 "llvm.nvvm.sust.b.1d.v2i32.zero">,
3167 GCCBuiltin<"__nvvm_sust_b_1d_v2i32_zero">;
3168def int_nvvm_sust_b_1d_v2i64_zero
3169 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [],
3170 "llvm.nvvm.sust.b.1d.v2i64.zero">,
3171 GCCBuiltin<"__nvvm_sust_b_1d_v2i64_zero">;
3172def int_nvvm_sust_b_1d_v4i8_zero
3173 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
3174 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3175 "llvm.nvvm.sust.b.1d.v4i8.zero">,
3176 GCCBuiltin<"__nvvm_sust_b_1d_v4i8_zero">;
3177def int_nvvm_sust_b_1d_v4i16_zero
3178 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
3179 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3180 "llvm.nvvm.sust.b.1d.v4i16.zero">,
3181 GCCBuiltin<"__nvvm_sust_b_1d_v4i16_zero">;
3182def int_nvvm_sust_b_1d_v4i32_zero
3183 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3184 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3185 "llvm.nvvm.sust.b.1d.v4i32.zero">,
3186 GCCBuiltin<"__nvvm_sust_b_1d_v4i32_zero">;
3187
3188
3189def int_nvvm_sust_b_1d_array_i8_zero
3190 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3191 "llvm.nvvm.sust.b.1d.array.i8.zero">,
3192 GCCBuiltin<"__nvvm_sust_b_1d_array_i8_zero">;
3193def int_nvvm_sust_b_1d_array_i16_zero
3194 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3195 "llvm.nvvm.sust.b.1d.array.i16.zero">,
3196 GCCBuiltin<"__nvvm_sust_b_1d_array_i16_zero">;
3197def int_nvvm_sust_b_1d_array_i32_zero
3198 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3199 "llvm.nvvm.sust.b.1d.array.i32.zero">,
3200 GCCBuiltin<"__nvvm_sust_b_1d_array_i32_zero">;
3201def int_nvvm_sust_b_1d_array_i64_zero
3202 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
3203 "llvm.nvvm.sust.b.1d.array.i64.zero">,
3204 GCCBuiltin<"__nvvm_sust_b_1d_array_i64_zero">;
3205def int_nvvm_sust_b_1d_array_v2i8_zero
3206 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3207 llvm_i16_ty, llvm_i16_ty], [],
3208 "llvm.nvvm.sust.b.1d.array.v2i8.zero">,
3209 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i8_zero">;
3210def int_nvvm_sust_b_1d_array_v2i16_zero
3211 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3212 llvm_i16_ty, llvm_i16_ty], [],
3213 "llvm.nvvm.sust.b.1d.array.v2i16.zero">,
3214 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i16_zero">;
3215def int_nvvm_sust_b_1d_array_v2i32_zero
3216 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3217 llvm_i32_ty, llvm_i32_ty], [],
3218 "llvm.nvvm.sust.b.1d.array.v2i32.zero">,
3219 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i32_zero">;
3220def int_nvvm_sust_b_1d_array_v2i64_zero
3221 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3222 llvm_i64_ty, llvm_i64_ty], [],
3223 "llvm.nvvm.sust.b.1d.array.v2i64.zero">,
3224 GCCBuiltin<"__nvvm_sust_b_1d_array_v2i64_zero">;
3225def int_nvvm_sust_b_1d_array_v4i8_zero
3226 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3227 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3228 "llvm.nvvm.sust.b.1d.array.v4i8.zero">,
3229 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i8_zero">;
3230def int_nvvm_sust_b_1d_array_v4i16_zero
3231 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3232 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3233 "llvm.nvvm.sust.b.1d.array.v4i16.zero">,
3234 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i16_zero">;
3235def int_nvvm_sust_b_1d_array_v4i32_zero
3236 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3237 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3238 "llvm.nvvm.sust.b.1d.array.v4i32.zero">,
3239 GCCBuiltin<"__nvvm_sust_b_1d_array_v4i32_zero">;
3240
3241
3242def int_nvvm_sust_b_2d_i8_zero
3243 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3244 "llvm.nvvm.sust.b.2d.i8.zero">,
3245 GCCBuiltin<"__nvvm_sust_b_2d_i8_zero">;
3246def int_nvvm_sust_b_2d_i16_zero
3247 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3248 "llvm.nvvm.sust.b.2d.i16.zero">,
3249 GCCBuiltin<"__nvvm_sust_b_2d_i16_zero">;
3250def int_nvvm_sust_b_2d_i32_zero
3251 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3252 "llvm.nvvm.sust.b.2d.i32.zero">,
3253 GCCBuiltin<"__nvvm_sust_b_2d_i32_zero">;
3254def int_nvvm_sust_b_2d_i64_zero
3255 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [],
3256 "llvm.nvvm.sust.b.2d.i64.zero">,
3257 GCCBuiltin<"__nvvm_sust_b_2d_i64_zero">;
3258def int_nvvm_sust_b_2d_v2i8_zero
3259 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3260 llvm_i16_ty, llvm_i16_ty], [],
3261 "llvm.nvvm.sust.b.2d.v2i8.zero">,
3262 GCCBuiltin<"__nvvm_sust_b_2d_v2i8_zero">;
3263def int_nvvm_sust_b_2d_v2i16_zero
3264 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3265 llvm_i16_ty, llvm_i16_ty], [],
3266 "llvm.nvvm.sust.b.2d.v2i16.zero">,
3267 GCCBuiltin<"__nvvm_sust_b_2d_v2i16_zero">;
3268def int_nvvm_sust_b_2d_v2i32_zero
3269 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3270 llvm_i32_ty, llvm_i32_ty], [],
3271 "llvm.nvvm.sust.b.2d.v2i32.zero">,
3272 GCCBuiltin<"__nvvm_sust_b_2d_v2i32_zero">;
3273def int_nvvm_sust_b_2d_v2i64_zero
3274 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3275 llvm_i64_ty, llvm_i64_ty], [],
3276 "llvm.nvvm.sust.b.2d.v2i64.zero">,
3277 GCCBuiltin<"__nvvm_sust_b_2d_v2i64_zero">;
3278def int_nvvm_sust_b_2d_v4i8_zero
3279 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3280 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3281 "llvm.nvvm.sust.b.2d.v4i8.zero">,
3282 GCCBuiltin<"__nvvm_sust_b_2d_v4i8_zero">;
3283def int_nvvm_sust_b_2d_v4i16_zero
3284 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3285 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3286 "llvm.nvvm.sust.b.2d.v4i16.zero">,
3287 GCCBuiltin<"__nvvm_sust_b_2d_v4i16_zero">;
3288def int_nvvm_sust_b_2d_v4i32_zero
3289 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3290 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3291 "llvm.nvvm.sust.b.2d.v4i32.zero">,
3292 GCCBuiltin<"__nvvm_sust_b_2d_v4i32_zero">;
3293
3294
3295def int_nvvm_sust_b_2d_array_i8_zero
3296 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3297 llvm_i32_ty, llvm_i16_ty], [],
3298 "llvm.nvvm.sust.b.2d.array.i8.zero">,
3299 GCCBuiltin<"__nvvm_sust_b_2d_array_i8_zero">;
3300def int_nvvm_sust_b_2d_array_i16_zero
3301 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3302 llvm_i32_ty, llvm_i16_ty], [],
3303 "llvm.nvvm.sust.b.2d.array.i16.zero">,
3304 GCCBuiltin<"__nvvm_sust_b_2d_array_i16_zero">;
3305def int_nvvm_sust_b_2d_array_i32_zero
3306 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3307 llvm_i32_ty, llvm_i32_ty], [],
3308 "llvm.nvvm.sust.b.2d.array.i32.zero">,
3309 GCCBuiltin<"__nvvm_sust_b_2d_array_i32_zero">;
3310def int_nvvm_sust_b_2d_array_i64_zero
3311 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3312 llvm_i32_ty, llvm_i64_ty], [],
3313 "llvm.nvvm.sust.b.2d.array.i64.zero">,
3314 GCCBuiltin<"__nvvm_sust_b_2d_array_i64_zero">;
3315def int_nvvm_sust_b_2d_array_v2i8_zero
3316 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3317 llvm_i16_ty, llvm_i16_ty], [],
3318 "llvm.nvvm.sust.b.2d.array.v2i8.zero">,
3319 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i8_zero">;
3320def int_nvvm_sust_b_2d_array_v2i16_zero
3321 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3322 llvm_i16_ty, llvm_i16_ty], [],
3323 "llvm.nvvm.sust.b.2d.array.v2i16.zero">,
3324 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i16_zero">;
3325def int_nvvm_sust_b_2d_array_v2i32_zero
3326 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3327 llvm_i32_ty, llvm_i32_ty], [],
3328 "llvm.nvvm.sust.b.2d.array.v2i32.zero">,
3329 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i32_zero">;
3330def int_nvvm_sust_b_2d_array_v2i64_zero
3331 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3332 llvm_i64_ty, llvm_i64_ty], [],
3333 "llvm.nvvm.sust.b.2d.array.v2i64.zero">,
3334 GCCBuiltin<"__nvvm_sust_b_2d_array_v2i64_zero">;
3335def int_nvvm_sust_b_2d_array_v4i8_zero
3336 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3337 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3338 "llvm.nvvm.sust.b.2d.array.v4i8.zero">,
3339 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i8_zero">;
3340def int_nvvm_sust_b_2d_array_v4i16_zero
3341 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3342 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3343 "llvm.nvvm.sust.b.2d.array.v4i16.zero">,
3344 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i16_zero">;
3345def int_nvvm_sust_b_2d_array_v4i32_zero
3346 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3347 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3348 "llvm.nvvm.sust.b.2d.array.v4i32.zero">,
3349 GCCBuiltin<"__nvvm_sust_b_2d_array_v4i32_zero">;
3350
3351
3352def int_nvvm_sust_b_3d_i8_zero
3353 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3354 llvm_i32_ty, llvm_i16_ty], [],
3355 "llvm.nvvm.sust.b.3d.i8.zero">,
3356 GCCBuiltin<"__nvvm_sust_b_3d_i8_zero">;
3357def int_nvvm_sust_b_3d_i16_zero
3358 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3359 llvm_i32_ty, llvm_i16_ty], [],
3360 "llvm.nvvm.sust.b.3d.i16.zero">,
3361 GCCBuiltin<"__nvvm_sust_b_3d_i16_zero">;
3362def int_nvvm_sust_b_3d_i32_zero
3363 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3364 llvm_i32_ty, llvm_i32_ty], [],
3365 "llvm.nvvm.sust.b.3d.i32.zero">,
3366 GCCBuiltin<"__nvvm_sust_b_3d_i32_zero">;
3367def int_nvvm_sust_b_3d_i64_zero
3368 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3369 llvm_i32_ty, llvm_i64_ty], [],
3370 "llvm.nvvm.sust.b.3d.i64.zero">,
3371 GCCBuiltin<"__nvvm_sust_b_3d_i64_zero">;
3372def int_nvvm_sust_b_3d_v2i8_zero
3373 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3374 llvm_i16_ty, llvm_i16_ty], [],
3375 "llvm.nvvm.sust.b.3d.v2i8.zero">,
3376 GCCBuiltin<"__nvvm_sust_b_3d_v2i8_zero">;
3377def int_nvvm_sust_b_3d_v2i16_zero
3378 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3379 llvm_i16_ty, llvm_i16_ty], [],
3380 "llvm.nvvm.sust.b.3d.v2i16.zero">,
3381 GCCBuiltin<"__nvvm_sust_b_3d_v2i16_zero">;
3382def int_nvvm_sust_b_3d_v2i32_zero
3383 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3384 llvm_i32_ty, llvm_i32_ty], [],
3385 "llvm.nvvm.sust.b.3d.v2i32.zero">,
3386 GCCBuiltin<"__nvvm_sust_b_3d_v2i32_zero">;
3387def int_nvvm_sust_b_3d_v2i64_zero
3388 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3389 llvm_i64_ty, llvm_i64_ty], [],
3390 "llvm.nvvm.sust.b.3d.v2i64.zero">,
3391 GCCBuiltin<"__nvvm_sust_b_3d_v2i64_zero">;
3392def int_nvvm_sust_b_3d_v4i8_zero
3393 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3394 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3395 "llvm.nvvm.sust.b.3d.v4i8.zero">,
3396 GCCBuiltin<"__nvvm_sust_b_3d_v4i8_zero">;
3397def int_nvvm_sust_b_3d_v4i16_zero
3398 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3399 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3400 "llvm.nvvm.sust.b.3d.v4i16.zero">,
3401 GCCBuiltin<"__nvvm_sust_b_3d_v4i16_zero">;
3402def int_nvvm_sust_b_3d_v4i32_zero
3403 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3404 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3405 "llvm.nvvm.sust.b.3d.v4i32.zero">,
3406 GCCBuiltin<"__nvvm_sust_b_3d_v4i32_zero">;
3407
3408
3409
3410// Formatted
3411
3412def int_nvvm_sust_p_1d_i8_trap
3413 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
3414 "llvm.nvvm.sust.p.1d.i8.trap">,
3415 GCCBuiltin<"__nvvm_sust_p_1d_i8_trap">;
3416def int_nvvm_sust_p_1d_i16_trap
3417 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [],
3418 "llvm.nvvm.sust.p.1d.i16.trap">,
3419 GCCBuiltin<"__nvvm_sust_p_1d_i16_trap">;
3420def int_nvvm_sust_p_1d_i32_trap
3421 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [],
3422 "llvm.nvvm.sust.p.1d.i32.trap">,
3423 GCCBuiltin<"__nvvm_sust_p_1d_i32_trap">;
3424def int_nvvm_sust_p_1d_v2i8_trap
3425 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
3426 "llvm.nvvm.sust.p.1d.v2i8.trap">,
3427 GCCBuiltin<"__nvvm_sust_p_1d_v2i8_trap">;
3428def int_nvvm_sust_p_1d_v2i16_trap
3429 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [],
3430 "llvm.nvvm.sust.p.1d.v2i16.trap">,
3431 GCCBuiltin<"__nvvm_sust_p_1d_v2i16_trap">;
3432def int_nvvm_sust_p_1d_v2i32_trap
3433 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3434 "llvm.nvvm.sust.p.1d.v2i32.trap">,
3435 GCCBuiltin<"__nvvm_sust_p_1d_v2i32_trap">;
3436def int_nvvm_sust_p_1d_v4i8_trap
3437 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
3438 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3439 "llvm.nvvm.sust.p.1d.v4i8.trap">,
3440 GCCBuiltin<"__nvvm_sust_p_1d_v4i8_trap">;
3441def int_nvvm_sust_p_1d_v4i16_trap
3442 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty,
3443 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3444 "llvm.nvvm.sust.p.1d.v4i16.trap">,
3445 GCCBuiltin<"__nvvm_sust_p_1d_v4i16_trap">;
3446def int_nvvm_sust_p_1d_v4i32_trap
3447 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3448 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3449 "llvm.nvvm.sust.p.1d.v4i32.trap">,
3450 GCCBuiltin<"__nvvm_sust_p_1d_v4i32_trap">;
3451
3452
3453def int_nvvm_sust_p_1d_array_i8_trap
3454 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3455 "llvm.nvvm.sust.p.1d.array.i8.trap">,
3456 GCCBuiltin<"__nvvm_sust_p_1d_array_i8_trap">;
3457def int_nvvm_sust_p_1d_array_i16_trap
3458 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3459 "llvm.nvvm.sust.p.1d.array.i16.trap">,
3460 GCCBuiltin<"__nvvm_sust_p_1d_array_i16_trap">;
3461def int_nvvm_sust_p_1d_array_i32_trap
3462 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3463 "llvm.nvvm.sust.p.1d.array.i32.trap">,
3464 GCCBuiltin<"__nvvm_sust_p_1d_array_i32_trap">;
3465def int_nvvm_sust_p_1d_array_v2i8_trap
3466 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3467 llvm_i16_ty, llvm_i16_ty], [],
3468 "llvm.nvvm.sust.p.1d.array.v2i8.trap">,
3469 GCCBuiltin<"__nvvm_sust_p_1d_array_v2i8_trap">;
3470def int_nvvm_sust_p_1d_array_v2i16_trap
3471 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3472 llvm_i16_ty, llvm_i16_ty], [],
3473 "llvm.nvvm.sust.p.1d.array.v2i16.trap">,
3474 GCCBuiltin<"__nvvm_sust_p_1d_array_v2i16_trap">;
3475def int_nvvm_sust_p_1d_array_v2i32_trap
3476 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3477 llvm_i32_ty, llvm_i32_ty], [],
3478 "llvm.nvvm.sust.p.1d.array.v2i32.trap">,
3479 GCCBuiltin<"__nvvm_sust_p_1d_array_v2i32_trap">;
3480def int_nvvm_sust_p_1d_array_v4i8_trap
3481 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3482 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3483 "llvm.nvvm.sust.p.1d.array.v4i8.trap">,
3484 GCCBuiltin<"__nvvm_sust_p_1d_array_v4i8_trap">;
3485def int_nvvm_sust_p_1d_array_v4i16_trap
3486 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3487 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3488 "llvm.nvvm.sust.p.1d.array.v4i16.trap">,
3489 GCCBuiltin<"__nvvm_sust_p_1d_array_v4i16_trap">;
3490def int_nvvm_sust_p_1d_array_v4i32_trap
3491 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3492 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3493 "llvm.nvvm.sust.p.1d.array.v4i32.trap">,
3494 GCCBuiltin<"__nvvm_sust_p_1d_array_v4i32_trap">;
3495
3496
3497def int_nvvm_sust_p_2d_i8_trap
3498 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3499 "llvm.nvvm.sust.p.2d.i8.trap">,
3500 GCCBuiltin<"__nvvm_sust_p_2d_i8_trap">;
3501def int_nvvm_sust_p_2d_i16_trap
3502 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [],
3503 "llvm.nvvm.sust.p.2d.i16.trap">,
3504 GCCBuiltin<"__nvvm_sust_p_2d_i16_trap">;
3505def int_nvvm_sust_p_2d_i32_trap
3506 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3507 "llvm.nvvm.sust.p.2d.i32.trap">,
3508 GCCBuiltin<"__nvvm_sust_p_2d_i32_trap">;
3509def int_nvvm_sust_p_2d_v2i8_trap
3510 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3511 llvm_i16_ty, llvm_i16_ty], [],
3512 "llvm.nvvm.sust.p.2d.v2i8.trap">,
3513 GCCBuiltin<"__nvvm_sust_p_2d_v2i8_trap">;
3514def int_nvvm_sust_p_2d_v2i16_trap
3515 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3516 llvm_i16_ty, llvm_i16_ty], [],
3517 "llvm.nvvm.sust.p.2d.v2i16.trap">,
3518 GCCBuiltin<"__nvvm_sust_p_2d_v2i16_trap">;
3519def int_nvvm_sust_p_2d_v2i32_trap
3520 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3521 llvm_i32_ty, llvm_i32_ty], [],
3522 "llvm.nvvm.sust.p.2d.v2i32.trap">,
3523 GCCBuiltin<"__nvvm_sust_p_2d_v2i32_trap">;
3524def int_nvvm_sust_p_2d_v4i8_trap
3525 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3526 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3527 "llvm.nvvm.sust.p.2d.v4i8.trap">,
3528 GCCBuiltin<"__nvvm_sust_p_2d_v4i8_trap">;
3529def int_nvvm_sust_p_2d_v4i16_trap
3530 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty,
3531 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3532 "llvm.nvvm.sust.p.2d.v4i16.trap">,
3533 GCCBuiltin<"__nvvm_sust_p_2d_v4i16_trap">;
3534def int_nvvm_sust_p_2d_v4i32_trap
3535 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3536 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3537 "llvm.nvvm.sust.p.2d.v4i32.trap">,
3538 GCCBuiltin<"__nvvm_sust_p_2d_v4i32_trap">;
3539
3540
3541def int_nvvm_sust_p_2d_array_i8_trap
3542 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3543 llvm_i32_ty, llvm_i16_ty], [],
3544 "llvm.nvvm.sust.p.2d.array.i8.trap">,
3545 GCCBuiltin<"__nvvm_sust_p_2d_array_i8_trap">;
3546def int_nvvm_sust_p_2d_array_i16_trap
3547 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3548 llvm_i32_ty, llvm_i16_ty], [],
3549 "llvm.nvvm.sust.p.2d.array.i16.trap">,
3550 GCCBuiltin<"__nvvm_sust_p_2d_array_i16_trap">;
3551def int_nvvm_sust_p_2d_array_i32_trap
3552 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3553 llvm_i32_ty, llvm_i32_ty], [],
3554 "llvm.nvvm.sust.p.2d.array.i32.trap">,
3555 GCCBuiltin<"__nvvm_sust_p_2d_array_i32_trap">;
3556def int_nvvm_sust_p_2d_array_v2i8_trap
3557 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3558 llvm_i16_ty, llvm_i16_ty], [],
3559 "llvm.nvvm.sust.p.2d.array.v2i8.trap">,
3560 GCCBuiltin<"__nvvm_sust_p_2d_array_v2i8_trap">;
3561def int_nvvm_sust_p_2d_array_v2i16_trap
3562 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3563 llvm_i16_ty, llvm_i16_ty], [],
3564 "llvm.nvvm.sust.p.2d.array.v2i16.trap">,
3565 GCCBuiltin<"__nvvm_sust_p_2d_array_v2i16_trap">;
3566def int_nvvm_sust_p_2d_array_v2i32_trap
3567 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3568 llvm_i32_ty, llvm_i32_ty], [],
3569 "llvm.nvvm.sust.p.2d.array.v2i32.trap">,
3570 GCCBuiltin<"__nvvm_sust_p_2d_array_v2i32_trap">;
3571def int_nvvm_sust_p_2d_array_v4i8_trap
3572 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3573 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3574 "llvm.nvvm.sust.p.2d.array.v4i8.trap">,
3575 GCCBuiltin<"__nvvm_sust_p_2d_array_v4i8_trap">;
3576def int_nvvm_sust_p_2d_array_v4i16_trap
3577 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3578 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3579 "llvm.nvvm.sust.p.2d.array.v4i16.trap">,
3580 GCCBuiltin<"__nvvm_sust_p_2d_array_v4i16_trap">;
3581def int_nvvm_sust_p_2d_array_v4i32_trap
3582 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3583 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3584 "llvm.nvvm.sust.p.2d.array.v4i32.trap">,
3585 GCCBuiltin<"__nvvm_sust_p_2d_array_v4i32_trap">;
3586
3587
3588def int_nvvm_sust_p_3d_i8_trap
3589 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3590 llvm_i32_ty, llvm_i16_ty], [],
3591 "llvm.nvvm.sust.p.3d.i8.trap">,
3592 GCCBuiltin<"__nvvm_sust_p_3d_i8_trap">;
3593def int_nvvm_sust_p_3d_i16_trap
3594 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3595 llvm_i32_ty, llvm_i16_ty], [],
3596 "llvm.nvvm.sust.p.3d.i16.trap">,
3597 GCCBuiltin<"__nvvm_sust_p_3d_i16_trap">;
3598def int_nvvm_sust_p_3d_i32_trap
3599 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty,
3600 llvm_i32_ty, llvm_i32_ty], [],
3601 "llvm.nvvm.sust.p.3d.i32.trap">,
3602 GCCBuiltin<"__nvvm_sust_p_3d_i32_trap">;
3603def int_nvvm_sust_p_3d_v2i8_trap
3604 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3605 llvm_i16_ty, llvm_i16_ty], [],
3606 "llvm.nvvm.sust.p.3d.v2i8.trap">,
3607 GCCBuiltin<"__nvvm_sust_p_3d_v2i8_trap">;
3608def int_nvvm_sust_p_3d_v2i16_trap
3609 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3610 llvm_i16_ty, llvm_i16_ty], [],
3611 "llvm.nvvm.sust.p.3d.v2i16.trap">,
3612 GCCBuiltin<"__nvvm_sust_p_3d_v2i16_trap">;
3613def int_nvvm_sust_p_3d_v2i32_trap
3614 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3615 llvm_i32_ty, llvm_i32_ty], [],
3616 "llvm.nvvm.sust.p.3d.v2i32.trap">,
3617 GCCBuiltin<"__nvvm_sust_p_3d_v2i32_trap">;
3618def int_nvvm_sust_p_3d_v4i8_trap
3619 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3620 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3621 "llvm.nvvm.sust.p.3d.v4i8.trap">,
3622 GCCBuiltin<"__nvvm_sust_p_3d_v4i8_trap">;
3623def int_nvvm_sust_p_3d_v4i16_trap
3624 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3625 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [],
3626 "llvm.nvvm.sust.p.3d.v4i16.trap">,
3627 GCCBuiltin<"__nvvm_sust_p_3d_v4i16_trap">;
3628def int_nvvm_sust_p_3d_v4i32_trap
3629 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty,
3630 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [],
3631 "llvm.nvvm.sust.p.3d.v4i32.trap">,
3632 GCCBuiltin<"__nvvm_sust_p_3d_v4i32_trap">;
3633
3634
3635def int_nvvm_rotate_b32
3636 : Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
3637 [IntrNoMem], "llvm.nvvm.rotate.b32">,
3638 GCCBuiltin<"__nvvm_rotate_b32">;
3639
3640def int_nvvm_rotate_b64
3641 :Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty],
3642 [IntrNoMem], "llvm.nvvm.rotate.b64">,
3643 GCCBuiltin<"__nvvm_rotate_b64">;
3644
3645def int_nvvm_rotate_right_b64
3646 : Intrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty],
3647 [IntrNoMem], "llvm.nvvm.rotate.right.b64">,
3648 GCCBuiltin<"__nvvm_rotate_right_b64">;
3649
3650def int_nvvm_swap_lo_hi_b64
3651 : Intrinsic<[llvm_i64_ty], [llvm_i64_ty],
3652 [IntrNoMem], "llvm.nvvm.swap.lo.hi.b64">,
3653 GCCBuiltin<"__nvvm_swap_lo_hi_b64">;
3654
3655
3656// Accessing special registers.
3657multiclass PTXReadSRegIntrinsic_v4i32<string regname> {
3658// FIXME: Do we need the 128-bit integer type version?
3659// def _r64 : Intrinsic<[llvm_i128_ty], [], [IntrNoMem]>;
3660
3661// FIXME: Enable this once v4i32 support is enabled in back-end.
3662// def _v4i16 : Intrinsic<[llvm_v4i32_ty], [], [IntrNoMem]>;
3663
3664 def _x : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
3665 GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_x">;
3666 def _y : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
3667 GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_y">;
3668 def _z : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
3669 GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_z">;
3670 def _w : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
3671 GCCBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_w">;
3672}
3673
3674class PTXReadSRegIntrinsic_r32<string name>
3675 : Intrinsic<[llvm_i32_ty], [], [IntrNoMem]>,
3676 GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
3677
3678class PTXReadSRegIntrinsic_r64<string name>
3679 : Intrinsic<[llvm_i64_ty], [], [IntrNoMem]>,
3680 GCCBuiltin<"__nvvm_read_ptx_sreg_" # name>;
3681
3682defm int_nvvm_read_ptx_sreg_tid : PTXReadSRegIntrinsic_v4i32<"tid">;
3683defm int_nvvm_read_ptx_sreg_ntid : PTXReadSRegIntrinsic_v4i32<"ntid">;
3684
3685def int_nvvm_read_ptx_sreg_laneid : PTXReadSRegIntrinsic_r32<"laneid">;
3686def int_nvvm_read_ptx_sreg_warpid : PTXReadSRegIntrinsic_r32<"warpid">;
3687def int_nvvm_read_ptx_sreg_nwarpid : PTXReadSRegIntrinsic_r32<"nwarpid">;
3688
3689defm int_nvvm_read_ptx_sreg_ctaid : PTXReadSRegIntrinsic_v4i32<"ctaid">;
3690defm int_nvvm_read_ptx_sreg_nctaid : PTXReadSRegIntrinsic_v4i32<"nctaid">;
3691
3692def int_nvvm_read_ptx_sreg_smid : PTXReadSRegIntrinsic_r32<"smid">;
3693def int_nvvm_read_ptx_sreg_nsmid : PTXReadSRegIntrinsic_r32<"nsmid">;
3694def int_nvvm_read_ptx_sreg_gridid : PTXReadSRegIntrinsic_r32<"gridid">;
3695
3696def int_nvvm_read_ptx_sreg_lanemask_eq :
3697 PTXReadSRegIntrinsic_r32<"lanemask_eq">;
3698def int_nvvm_read_ptx_sreg_lanemask_le :
3699 PTXReadSRegIntrinsic_r32<"lanemask_le">;
3700def int_nvvm_read_ptx_sreg_lanemask_lt :
3701 PTXReadSRegIntrinsic_r32<"lanemask_lt">;
3702def int_nvvm_read_ptx_sreg_lanemask_ge :
3703 PTXReadSRegIntrinsic_r32<"lanemask_ge">;
3704def int_nvvm_read_ptx_sreg_lanemask_gt :
3705 PTXReadSRegIntrinsic_r32<"lanemask_gt">;
3706
3707def int_nvvm_read_ptx_sreg_clock : PTXReadSRegIntrinsic_r32<"clock">;
3708def int_nvvm_read_ptx_sreg_clock64 : PTXReadSRegIntrinsic_r64<"clock64">;
3709
3710def int_nvvm_read_ptx_sreg_pm0 : PTXReadSRegIntrinsic_r32<"pm0">;
3711def int_nvvm_read_ptx_sreg_pm1 : PTXReadSRegIntrinsic_r32<"pm1">;
3712def int_nvvm_read_ptx_sreg_pm2 : PTXReadSRegIntrinsic_r32<"pm2">;
3713def int_nvvm_read_ptx_sreg_pm3 : PTXReadSRegIntrinsic_r32<"pm3">;
3714
3715def int_nvvm_read_ptx_sreg_warpsize : PTXReadSRegIntrinsic_r32<"warpsize">;
3716
3717//
3718// SHUFFLE
3719//
3720
3721// shfl.down.b32 dest, val, offset, mask_and_clamp
3722def int_nvvm_shfl_down_i32 :
3723 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3724 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.down.i32">,
3725 GCCBuiltin<"__nvvm_shfl_down_i32">;
3726def int_nvvm_shfl_down_f32 :
3727 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3728 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.down.f32">,
3729 GCCBuiltin<"__nvvm_shfl_down_f32">;
3730
3731// shfl.up.b32 dest, val, offset, mask_and_clamp
3732def int_nvvm_shfl_up_i32 :
3733 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3734 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.up.i32">,
3735 GCCBuiltin<"__nvvm_shfl_up_i32">;
3736def int_nvvm_shfl_up_f32 :
3737 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3738 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.up.f32">,
3739 GCCBuiltin<"__nvvm_shfl_up_f32">;
3740
3741// shfl.bfly.b32 dest, val, offset, mask_and_clamp
3742def int_nvvm_shfl_bfly_i32 :
3743 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3744 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.bfly.i32">,
3745 GCCBuiltin<"__nvvm_shfl_bfly_i32">;
3746def int_nvvm_shfl_bfly_f32 :
3747 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3748 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.bfly.f32">,
3749 GCCBuiltin<"__nvvm_shfl_bfly_f32">;
3750
3751// shfl.idx.b32 dest, val, lane, mask_and_clamp
3752def int_nvvm_shfl_idx_i32 :
3753 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3754 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.idx.i32">,
3755 GCCBuiltin<"__nvvm_shfl_idx_i32">;
3756def int_nvvm_shfl_idx_f32 :
3757 Intrinsic<[llvm_float_ty], [llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3758 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.idx.f32">,
3759 GCCBuiltin<"__nvvm_shfl_idx_f32">;
3760
3761// Synchronizing shfl variants available in CUDA-9.
3762// On sm_70 these don't have to be convergent, so we may eventually want to
3763// implement non-convergent variant of this intrinsic.
3764
3765// shfl.sync.down.b32 dest, threadmask, val, offset , mask_and_clamp
3766def int_nvvm_shfl_sync_down_i32 :
3767 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3768 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.down.i32">,
3769 GCCBuiltin<"__nvvm_shfl_sync_down_i32">;
3770def int_nvvm_shfl_sync_down_f32 :
3771 Intrinsic<[llvm_float_ty], [llvm_i32_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3772 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.down.f32">,
3773 GCCBuiltin<"__nvvm_shfl_sync_down_f32">;
3774
3775// shfl.sync.up.b32 dest, threadmask, val, offset, mask_and_clamp
3776def int_nvvm_shfl_sync_up_i32 :
3777 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3778 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.up.i32">,
3779 GCCBuiltin<"__nvvm_shfl_sync_up_i32">;
3780def int_nvvm_shfl_sync_up_f32 :
3781 Intrinsic<[llvm_float_ty], [llvm_i32_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3782 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.up.f32">,
3783 GCCBuiltin<"__nvvm_shfl_sync_up_f32">;
3784
3785// shfl.sync.bfly.b32 dest, threadmask, val, offset, mask_and_clamp
3786def int_nvvm_shfl_sync_bfly_i32 :
3787 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3788 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.bfly.i32">,
3789 GCCBuiltin<"__nvvm_shfl_sync_bfly_i32">;
3790def int_nvvm_shfl_sync_bfly_f32 :
3791 Intrinsic<[llvm_float_ty], [llvm_i32_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3792 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.bfly.f32">,
3793 GCCBuiltin<"__nvvm_shfl_sync_bfly_f32">;
3794
3795// shfl.sync.idx.b32 dest, threadmask, val, lane, mask_and_clamp
3796def int_nvvm_shfl_sync_idx_i32 :
3797 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty],
3798 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.idx.i32">,
3799 GCCBuiltin<"__nvvm_shfl_sync_idx_i32">;
3800def int_nvvm_shfl_sync_idx_f32 :
3801 Intrinsic<[llvm_float_ty], [llvm_i32_ty, llvm_float_ty, llvm_i32_ty, llvm_i32_ty],
3802 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.shfl.sync.idx.f32">,
3803 GCCBuiltin<"__nvvm_shfl_sync_idx_f32">;
3804
3805//
3806// VOTE
3807//
3808
3809// vote.all pred
3810def int_nvvm_vote_all :
3811 Intrinsic<[llvm_i1_ty], [llvm_i1_ty],
3812 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.all">,
3813 GCCBuiltin<"__nvvm_vote_all">;
3814// vote.any pred
3815def int_nvvm_vote_any :
3816 Intrinsic<[llvm_i1_ty], [llvm_i1_ty],
3817 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.any">,
3818 GCCBuiltin<"__nvvm_vote_any">;
3819// vote.uni pred
3820def int_nvvm_vote_uni :
3821 Intrinsic<[llvm_i1_ty], [llvm_i1_ty],
3822 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.uni">,
3823 GCCBuiltin<"__nvvm_vote_uni">;
3824// vote.ballot pred
3825def int_nvvm_vote_ballot :
3826 Intrinsic<[llvm_i32_ty], [llvm_i1_ty],
3827 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.ballot">,
3828 GCCBuiltin<"__nvvm_vote_ballot">;
3829
3830//
3831// VOTE.SYNC
3832//
3833
3834// vote.sync.all mask, pred
3835def int_nvvm_vote_all_sync :
3836 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty],
3837 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.all.sync">,
3838 GCCBuiltin<"__nvvm_vote_all_sync">;
3839// vote.sync.any mask, pred
3840def int_nvvm_vote_any_sync :
3841 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty],
3842 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.any.sync">,
3843 GCCBuiltin<"__nvvm_vote_any_sync">;
3844// vote.sync.uni mask, pred
3845def int_nvvm_vote_uni_sync :
3846 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty],
3847 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.uni.sync">,
3848 GCCBuiltin<"__nvvm_vote_uni_sync">;
3849// vote.sync.ballot mask, pred
3850def int_nvvm_vote_ballot_sync :
3851 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i1_ty],
3852 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.vote.ballot.sync">,
3853 GCCBuiltin<"__nvvm_vote_ballot_sync">;
3854
3855//
3856// MATCH.SYNC
3857//
3858// match.any.sync.b32 mask, value
3859def int_nvvm_match_any_sync_i32 :
3860 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
3861 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.any.sync.i32">,
3862 GCCBuiltin<"__nvvm_match_any_sync_i32">;
3863// match.any.sync.b64 mask, value
3864def int_nvvm_match_any_sync_i64 :
3865 Intrinsic<[llvm_i64_ty], [llvm_i32_ty, llvm_i64_ty],
3866 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.any.sync.i64">,
3867 GCCBuiltin<"__nvvm_match_any_sync_i64">;
3868
3869// match.all instruction have two variants -- one returns a single value, another
3870// returns a pair {value, predicate}. We currently only implement the latter as
3871// that's the variant exposed by CUDA API.
3872
3873// match.all.sync.b32p mask, value
3874def int_nvvm_match_all_sync_i32p :
3875 Intrinsic<[llvm_i32_ty, llvm_i1_ty], [llvm_i32_ty, llvm_i32_ty],
3876 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.all.sync.i32p">;
3877// match.all.sync.b64p mask, value
3878def int_nvvm_match_all_sync_i64p :
3879 Intrinsic<[llvm_i64_ty, llvm_i1_ty], [llvm_i32_ty, llvm_i64_ty],
3880 [IntrInaccessibleMemOnly, IntrConvergent], "llvm.nvvm.match.all.sync.i64p">;
3881
3882//
3883// WMMA instructions
3884//
3885
3886// WMMA.LOAD
3887class NVVM_WMMA_LD_GALSTS<string Geometry, string Abc, string Layout,
3888 string Type, LLVMType regty, int WithStride>
3889 : Intrinsic<!if(!eq(Abc#Type,"cf16"),
3890 [regty, regty, regty, regty],
3891 [regty, regty, regty, regty,
3892 regty, regty, regty, regty]),
3893 !if(WithStride, [llvm_anyptr_ty, llvm_i32_ty], [llvm_anyptr_ty]),
3894 [IntrReadMem, IntrArgMemOnly, ReadOnly<0>, NoCapture<0>],
3895 "llvm.nvvm.wmma."
3896 # Geometry
3897 # ".load"
3898 # "." # Abc
3899 # "." # Layout
3900 # !if(WithStride, ".stride", "")
3901 # "." # Type>;
3902
3903multiclass NVVM_WMMA_LD_GALT<string Geometry, string Abc, string Layout,
3904 string Type, LLVMType regty> {
3905 def _stride: NVVM_WMMA_LD_GALSTS<Geometry, Abc, Layout, Type, regty, 1>;
3906 def NAME : NVVM_WMMA_LD_GALSTS<Geometry, Abc, Layout, Type, regty, 0>;
3907}
3908
3909multiclass NVVM_WMMA_LD_GAT<string Geometry, string Abc,
3910 string Type, LLVMType regty> {
3911 defm _row: NVVM_WMMA_LD_GALT<Geometry, Abc, "row", Type, regty>;
3912 defm _col: NVVM_WMMA_LD_GALT<Geometry, Abc, "col", Type, regty>;
3913}
3914
3915multiclass NVVM_WMMA_LD_G<string Geometry> {
3916 defm _a_f16: NVVM_WMMA_LD_GAT<Geometry, "a", "f16", llvm_v2f16_ty>;
3917 defm _b_f16: NVVM_WMMA_LD_GAT<Geometry, "b", "f16", llvm_v2f16_ty>;
3918 defm _c_f16: NVVM_WMMA_LD_GAT<Geometry, "c", "f16", llvm_v2f16_ty>;
3919 defm _c_f32: NVVM_WMMA_LD_GAT<Geometry, "c", "f32", llvm_float_ty>;
3920}
3921
3922multiclass NVVM_WMMA_LD {
3923 defm _m16n16k16_load: NVVM_WMMA_LD_G<"m16n16k16">;
3924}
3925
3926defm int_nvvm_wmma: NVVM_WMMA_LD;
3927
3928// WMMA.STORE.D
3929class NVVM_WMMA_STD_GLSTS<string Geometry, string Layout,
3930 string Type, LLVMType regty, int WithStride,
3931 // This is only used to create a typed empty array we
3932 // need to pass to !if below.
3933 list<LLVMType>Empty=[]>
3934 : Intrinsic<[],
3935 !listconcat(
3936 [llvm_anyptr_ty],
3937 !if(!eq(Type,"f16"),
3938 [regty, regty, regty, regty],
3939 [regty, regty, regty, regty,
3940 regty, regty, regty, regty]),
3941 !if(WithStride, [llvm_i32_ty], Empty)),
3942 [IntrWriteMem, IntrArgMemOnly, WriteOnly<0>, NoCapture<0>],
3943 "llvm.nvvm.wmma."
3944 # Geometry
3945 # ".store.d"
3946 # "." # Layout
3947 # !if(WithStride, ".stride", "")
3948 # "." # Type>;
3949
3950multiclass NVVM_WMMA_STD_GLT<string Geometry, string Layout,
3951 string Type, LLVMType regty> {
3952 def _stride: NVVM_WMMA_STD_GLSTS<Geometry, Layout, Type, regty, 1>;
3953 def NAME: NVVM_WMMA_STD_GLSTS<Geometry, Layout, Type, regty, 0>;
3954}
3955
3956multiclass NVVM_WMMA_STD_GT<string Geometry, string Type, LLVMType regty> {
3957 defm _row: NVVM_WMMA_STD_GLT<Geometry, "row", Type, regty>;
3958 defm _col: NVVM_WMMA_STD_GLT<Geometry, "col", Type, regty>;
3959}
3960multiclass NVVM_WMMA_STD_G<string Geometry> {
3961 defm _d_f16: NVVM_WMMA_STD_GT<Geometry, "f16", llvm_v2f16_ty>;
3962 defm _d_f32: NVVM_WMMA_STD_GT<Geometry, "f32", llvm_float_ty>;
3963}
3964
3965multiclass NVVM_WMMA_STD {
3966 defm _m16n16k16_store: NVVM_WMMA_STD_G<"m16n16k16">;
3967}
3968
3969defm int_nvvm_wmma: NVVM_WMMA_STD;
3970
3971// WMMA.MMA
3972class NVVM_WMMA_MMA_GABDCS<string Geometry,
3973 string ALayout, string BLayout,
3974 string DType, LLVMType d_regty,
3975 string CType, LLVMType c_regty,
3976 string Satfinite = "">
3977 : Intrinsic<!if(!eq(DType,"f16"),
3978 [d_regty, d_regty, d_regty, d_regty],
3979 [d_regty, d_regty, d_regty, d_regty,
3980 d_regty, d_regty, d_regty, d_regty]),
3981 !listconcat(
3982 [// A
3983 llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty,
3984 llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty,
3985 // B
3986 llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty,
3987 llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty, llvm_v2f16_ty],
3988 !if(!eq(CType,"f16"),
3989 [c_regty, c_regty, c_regty, c_regty],
3990 [c_regty, c_regty, c_regty, c_regty,
3991 c_regty, c_regty, c_regty, c_regty])),
3992 [IntrNoMem],
3993 "llvm.nvvm.wmma."
3994 # Geometry
3995 # ".mma"
3996 # "." # ALayout
3997 # "." # BLayout
3998 # "." # DType
3999 # "." # CType
4000 # Satfinite> {
4001}
4002
4003multiclass NVVM_WMMA_MMA_GABDC<string Geometry, string ALayout, string BLayout,
4004 string DType, LLVMType d_regty,
4005 string CType, LLVMType c_regty> {
4006 def NAME : NVVM_WMMA_MMA_GABDCS<Geometry, ALayout, BLayout,
4007 DType, d_regty, CType, c_regty>;
4008 def _satfinite: NVVM_WMMA_MMA_GABDCS<Geometry, ALayout, BLayout,
4009 DType, d_regty, CType, c_regty,".satfinite">;
4010}
4011
4012multiclass NVVM_WMMA_MMA_GABD<string Geometry, string ALayout, string BLayout,
4013 string DType, LLVMType d_regty> {
4014 defm _f16: NVVM_WMMA_MMA_GABDC<Geometry, ALayout, BLayout, DType, d_regty,
4015 "f16", llvm_v2f16_ty>;
4016 defm _f32: NVVM_WMMA_MMA_GABDC<Geometry, ALayout, BLayout, DType, d_regty,
4017 "f32", llvm_float_ty>;
4018}
4019
4020multiclass NVVM_WMMA_MMA_GAB<string Geometry, string ALayout, string BLayout> {
4021 defm _f16: NVVM_WMMA_MMA_GABD<Geometry, ALayout, BLayout, "f16", llvm_v2f16_ty>;
4022 defm _f32: NVVM_WMMA_MMA_GABD<Geometry, ALayout, BLayout, "f32", llvm_float_ty>;
4023}
4024
4025multiclass NVVM_WMMA_MMA_GA<string Geometry, string ALayout> {
4026 defm _col: NVVM_WMMA_MMA_GAB<Geometry, ALayout, "col">;
4027 defm _row: NVVM_WMMA_MMA_GAB<Geometry, ALayout, "row">;
4028}
4029
4030multiclass NVVM_WMMA_MMA_G<string Geometry> {
4031 defm _col: NVVM_WMMA_MMA_GA<Geometry, "col">;
4032 defm _row: NVVM_WMMA_MMA_GA<Geometry, "row">;
4033}
4034
4035multiclass NVVM_WMMA_MMA {
4036 defm _m16n16k16_mma : NVVM_WMMA_MMA_G<"m16n16k16">;
4037}
4038
4039defm int_nvvm_wmma : NVVM_WMMA_MMA;
4040
4041} // let TargetPrefix = "nvvm"