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