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