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