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