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