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