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