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], [IntrNoMem, IntrSpeculatable], 1586 "llvm.nvvm.isspacep.const">, 1587 ClangBuiltin<"__nvvm_isspacep_const">; 1588def int_nvvm_isspacep_global 1589 : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable], 1590 "llvm.nvvm.isspacep.global">, 1591 ClangBuiltin<"__nvvm_isspacep_global">; 1592def int_nvvm_isspacep_local 1593 : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable], 1594 "llvm.nvvm.isspacep.local">, 1595 ClangBuiltin<"__nvvm_isspacep_local">; 1596def int_nvvm_isspacep_shared 1597 : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_ptr_ty], [IntrNoMem, IntrSpeculatable], 1598 "llvm.nvvm.isspacep.shared">, 1599 ClangBuiltin<"__nvvm_isspacep_shared">; 1600 1601// Environment register read 1602def int_nvvm_read_ptx_sreg_envreg0 1603 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1604 "llvm.nvvm.read.ptx.sreg.envreg0">, 1605 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg0">; 1606def int_nvvm_read_ptx_sreg_envreg1 1607 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1608 "llvm.nvvm.read.ptx.sreg.envreg1">, 1609 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg1">; 1610def int_nvvm_read_ptx_sreg_envreg2 1611 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1612 "llvm.nvvm.read.ptx.sreg.envreg2">, 1613 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg2">; 1614def int_nvvm_read_ptx_sreg_envreg3 1615 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1616 "llvm.nvvm.read.ptx.sreg.envreg3">, 1617 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg3">; 1618def int_nvvm_read_ptx_sreg_envreg4 1619 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1620 "llvm.nvvm.read.ptx.sreg.envreg4">, 1621 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg4">; 1622def int_nvvm_read_ptx_sreg_envreg5 1623 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1624 "llvm.nvvm.read.ptx.sreg.envreg5">, 1625 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg5">; 1626def int_nvvm_read_ptx_sreg_envreg6 1627 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1628 "llvm.nvvm.read.ptx.sreg.envreg6">, 1629 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg6">; 1630def int_nvvm_read_ptx_sreg_envreg7 1631 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1632 "llvm.nvvm.read.ptx.sreg.envreg7">, 1633 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg7">; 1634def int_nvvm_read_ptx_sreg_envreg8 1635 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1636 "llvm.nvvm.read.ptx.sreg.envreg8">, 1637 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg8">; 1638def int_nvvm_read_ptx_sreg_envreg9 1639 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1640 "llvm.nvvm.read.ptx.sreg.envreg9">, 1641 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg9">; 1642def int_nvvm_read_ptx_sreg_envreg10 1643 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1644 "llvm.nvvm.read.ptx.sreg.envreg10">, 1645 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg10">; 1646def int_nvvm_read_ptx_sreg_envreg11 1647 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1648 "llvm.nvvm.read.ptx.sreg.envreg11">, 1649 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg11">; 1650def int_nvvm_read_ptx_sreg_envreg12 1651 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1652 "llvm.nvvm.read.ptx.sreg.envreg12">, 1653 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg12">; 1654def int_nvvm_read_ptx_sreg_envreg13 1655 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1656 "llvm.nvvm.read.ptx.sreg.envreg13">, 1657 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg13">; 1658def int_nvvm_read_ptx_sreg_envreg14 1659 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1660 "llvm.nvvm.read.ptx.sreg.envreg14">, 1661 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg14">; 1662def int_nvvm_read_ptx_sreg_envreg15 1663 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1664 "llvm.nvvm.read.ptx.sreg.envreg15">, 1665 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg15">; 1666def int_nvvm_read_ptx_sreg_envreg16 1667 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1668 "llvm.nvvm.read.ptx.sreg.envreg16">, 1669 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg16">; 1670def int_nvvm_read_ptx_sreg_envreg17 1671 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1672 "llvm.nvvm.read.ptx.sreg.envreg17">, 1673 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg17">; 1674def int_nvvm_read_ptx_sreg_envreg18 1675 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1676 "llvm.nvvm.read.ptx.sreg.envreg18">, 1677 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg18">; 1678def int_nvvm_read_ptx_sreg_envreg19 1679 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1680 "llvm.nvvm.read.ptx.sreg.envreg19">, 1681 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg19">; 1682def int_nvvm_read_ptx_sreg_envreg20 1683 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1684 "llvm.nvvm.read.ptx.sreg.envreg20">, 1685 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg20">; 1686def int_nvvm_read_ptx_sreg_envreg21 1687 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1688 "llvm.nvvm.read.ptx.sreg.envreg21">, 1689 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg21">; 1690def int_nvvm_read_ptx_sreg_envreg22 1691 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1692 "llvm.nvvm.read.ptx.sreg.envreg22">, 1693 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg22">; 1694def int_nvvm_read_ptx_sreg_envreg23 1695 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1696 "llvm.nvvm.read.ptx.sreg.envreg23">, 1697 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg23">; 1698def int_nvvm_read_ptx_sreg_envreg24 1699 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1700 "llvm.nvvm.read.ptx.sreg.envreg24">, 1701 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg24">; 1702def int_nvvm_read_ptx_sreg_envreg25 1703 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1704 "llvm.nvvm.read.ptx.sreg.envreg25">, 1705 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg25">; 1706def int_nvvm_read_ptx_sreg_envreg26 1707 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1708 "llvm.nvvm.read.ptx.sreg.envreg26">, 1709 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg26">; 1710def int_nvvm_read_ptx_sreg_envreg27 1711 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1712 "llvm.nvvm.read.ptx.sreg.envreg27">, 1713 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg27">; 1714def int_nvvm_read_ptx_sreg_envreg28 1715 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1716 "llvm.nvvm.read.ptx.sreg.envreg28">, 1717 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg28">; 1718def int_nvvm_read_ptx_sreg_envreg29 1719 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1720 "llvm.nvvm.read.ptx.sreg.envreg29">, 1721 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg29">; 1722def int_nvvm_read_ptx_sreg_envreg30 1723 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1724 "llvm.nvvm.read.ptx.sreg.envreg30">, 1725 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg30">; 1726def int_nvvm_read_ptx_sreg_envreg31 1727 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable], 1728 "llvm.nvvm.read.ptx.sreg.envreg31">, 1729 ClangBuiltin<"__nvvm_read_ptx_sreg_envreg31">; 1730 1731 1732// Texture Fetch 1733// texmode_independent 1734def int_nvvm_tex_1d_v4f32_s32 1735 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1736 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [], 1737 "llvm.nvvm.tex.1d.v4f32.s32">; 1738def int_nvvm_tex_1d_v4f32_f32 1739 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1740 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [], 1741 "llvm.nvvm.tex.1d.v4f32.f32">; 1742def int_nvvm_tex_1d_level_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, llvm_float_ty], [], 1745 "llvm.nvvm.tex.1d.level.v4f32.f32">; 1746def int_nvvm_tex_1d_grad_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_float_ty], [], 1750 "llvm.nvvm.tex.1d.grad.v4f32.f32">; 1751def int_nvvm_tex_1d_v4s32_s32 1752 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1753 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [], 1754 "llvm.nvvm.tex.1d.v4s32.s32">; 1755def int_nvvm_tex_1d_v4s32_f32 1756 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1757 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [], 1758 "llvm.nvvm.tex.1d.v4s32.f32">; 1759def int_nvvm_tex_1d_level_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, llvm_float_ty], [], 1762 "llvm.nvvm.tex.1d.level.v4s32.f32">; 1763def int_nvvm_tex_1d_grad_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_float_ty], [], 1767 "llvm.nvvm.tex.1d.grad.v4s32.f32">; 1768def int_nvvm_tex_1d_v4u32_s32 1769 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1770 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty], [], 1771 "llvm.nvvm.tex.1d.v4u32.s32">; 1772def int_nvvm_tex_1d_v4u32_f32 1773 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1774 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty], [], 1775 "llvm.nvvm.tex.1d.v4u32.f32">; 1776def int_nvvm_tex_1d_level_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, llvm_float_ty], [], 1779 "llvm.nvvm.tex.1d.level.v4u32.f32">; 1780def int_nvvm_tex_1d_grad_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_float_ty], [], 1784 "llvm.nvvm.tex.1d.grad.v4u32.f32">; 1785 1786def int_nvvm_tex_1d_array_v4f32_s32 1787 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1788 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 1789 "llvm.nvvm.tex.1d.array.v4f32.s32">; 1790def int_nvvm_tex_1d_array_v4f32_f32 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_float_ty], [], 1793 "llvm.nvvm.tex.1d.array.v4f32.f32">; 1794def int_nvvm_tex_1d_array_level_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_float_ty], [], 1798 "llvm.nvvm.tex.1d.array.level.v4f32.f32">; 1799def int_nvvm_tex_1d_array_grad_v4f32_f32 1800 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1801 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1802 llvm_float_ty, llvm_float_ty], [], 1803 "llvm.nvvm.tex.1d.array.grad.v4f32.f32">; 1804def int_nvvm_tex_1d_array_v4s32_s32 1805 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1806 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 1807 "llvm.nvvm.tex.1d.array.v4s32.s32">; 1808def int_nvvm_tex_1d_array_v4s32_f32 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_float_ty], [], 1811 "llvm.nvvm.tex.1d.array.v4s32.f32">; 1812def int_nvvm_tex_1d_array_level_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_float_ty], [], 1816 "llvm.nvvm.tex.1d.array.level.v4s32.f32">; 1817def int_nvvm_tex_1d_array_grad_v4s32_f32 1818 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1819 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1820 llvm_float_ty, llvm_float_ty], [], 1821 "llvm.nvvm.tex.1d.array.grad.v4s32.f32">; 1822def int_nvvm_tex_1d_array_v4u32_s32 1823 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1824 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 1825 "llvm.nvvm.tex.1d.array.v4u32.s32">; 1826def int_nvvm_tex_1d_array_v4u32_f32 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_float_ty], [], 1829 "llvm.nvvm.tex.1d.array.v4u32.f32">; 1830def int_nvvm_tex_1d_array_level_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_float_ty], [], 1834 "llvm.nvvm.tex.1d.array.level.v4u32.f32">; 1835def int_nvvm_tex_1d_array_grad_v4u32_f32 1836 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1837 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1838 llvm_float_ty, llvm_float_ty], [], 1839 "llvm.nvvm.tex.1d.array.grad.v4u32.f32">; 1840 1841def int_nvvm_tex_2d_v4f32_s32 1842 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1843 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 1844 "llvm.nvvm.tex.2d.v4f32.s32">; 1845def int_nvvm_tex_2d_v4f32_f32 1846 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1847 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 1848 "llvm.nvvm.tex.2d.v4f32.f32">; 1849def int_nvvm_tex_2d_level_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_float_ty], [], 1853 "llvm.nvvm.tex.2d.level.v4f32.f32">; 1854def int_nvvm_tex_2d_grad_v4f32_f32 1855 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1856 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1857 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 1858 "llvm.nvvm.tex.2d.grad.v4f32.f32">; 1859def int_nvvm_tex_2d_v4s32_s32 1860 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1861 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 1862 "llvm.nvvm.tex.2d.v4s32.s32">; 1863def int_nvvm_tex_2d_v4s32_f32 1864 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1865 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 1866 "llvm.nvvm.tex.2d.v4s32.f32">; 1867def int_nvvm_tex_2d_level_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_float_ty], [], 1871 "llvm.nvvm.tex.2d.level.v4s32.f32">; 1872def int_nvvm_tex_2d_grad_v4s32_f32 1873 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1874 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1875 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 1876 "llvm.nvvm.tex.2d.grad.v4s32.f32">; 1877def int_nvvm_tex_2d_v4u32_s32 1878 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1879 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 1880 "llvm.nvvm.tex.2d.v4u32.s32">; 1881def int_nvvm_tex_2d_v4u32_f32 1882 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1883 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 1884 "llvm.nvvm.tex.2d.v4u32.f32">; 1885def int_nvvm_tex_2d_level_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_float_ty], [], 1889 "llvm.nvvm.tex.2d.level.v4u32.f32">; 1890def int_nvvm_tex_2d_grad_v4u32_f32 1891 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1892 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1893 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 1894 "llvm.nvvm.tex.2d.grad.v4u32.f32">; 1895 1896def int_nvvm_tex_2d_array_v4f32_s32 1897 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1898 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 1899 llvm_i32_ty], [], 1900 "llvm.nvvm.tex.2d.array.v4f32.s32">; 1901def int_nvvm_tex_2d_array_v4f32_f32 1902 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1903 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1904 llvm_float_ty], [], 1905 "llvm.nvvm.tex.2d.array.v4f32.f32">; 1906def int_nvvm_tex_2d_array_level_v4f32_f32 1907 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1908 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1909 llvm_float_ty, llvm_float_ty], [], 1910 "llvm.nvvm.tex.2d.array.level.v4f32.f32">; 1911def int_nvvm_tex_2d_array_grad_v4f32_f32 1912 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1913 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1914 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 1915 llvm_float_ty], [], 1916 "llvm.nvvm.tex.2d.array.grad.v4f32.f32">; 1917def int_nvvm_tex_2d_array_v4s32_s32 1918 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1919 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 1920 llvm_i32_ty], [], 1921 "llvm.nvvm.tex.2d.array.v4s32.s32">; 1922def int_nvvm_tex_2d_array_v4s32_f32 1923 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1924 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1925 llvm_float_ty], [], 1926 "llvm.nvvm.tex.2d.array.v4s32.f32">; 1927def int_nvvm_tex_2d_array_level_v4s32_f32 1928 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1929 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1930 llvm_float_ty, llvm_float_ty], [], 1931 "llvm.nvvm.tex.2d.array.level.v4s32.f32">; 1932def int_nvvm_tex_2d_array_grad_v4s32_f32 1933 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1934 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1935 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 1936 llvm_float_ty], [], 1937 "llvm.nvvm.tex.2d.array.grad.v4s32.f32">; 1938def int_nvvm_tex_2d_array_v4u32_s32 1939 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1940 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 1941 llvm_i32_ty], [], 1942 "llvm.nvvm.tex.2d.array.v4u32.s32">; 1943def int_nvvm_tex_2d_array_v4u32_f32 1944 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1945 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1946 llvm_float_ty], [], 1947 "llvm.nvvm.tex.2d.array.v4u32.f32">; 1948def int_nvvm_tex_2d_array_level_v4u32_f32 1949 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1950 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1951 llvm_float_ty, llvm_float_ty], [], 1952 "llvm.nvvm.tex.2d.array.level.v4u32.f32">; 1953def int_nvvm_tex_2d_array_grad_v4u32_f32 1954 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1955 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 1956 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 1957 llvm_float_ty], [], 1958 "llvm.nvvm.tex.2d.array.grad.v4u32.f32">; 1959 1960def int_nvvm_tex_3d_v4f32_s32 1961 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1962 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1963 [], "llvm.nvvm.tex.3d.v4f32.s32">; 1964def int_nvvm_tex_3d_v4f32_f32 1965 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1966 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1967 llvm_float_ty], [], 1968 "llvm.nvvm.tex.3d.v4f32.f32">; 1969def int_nvvm_tex_3d_level_v4f32_f32 1970 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1971 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1972 llvm_float_ty, llvm_float_ty], [], 1973 "llvm.nvvm.tex.3d.level.v4f32.f32">; 1974def int_nvvm_tex_3d_grad_v4f32_f32 1975 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 1976 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1977 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 1978 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 1979 "llvm.nvvm.tex.3d.grad.v4f32.f32">; 1980def int_nvvm_tex_3d_v4s32_s32 1981 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1982 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1983 [], "llvm.nvvm.tex.3d.v4s32.s32">; 1984def int_nvvm_tex_3d_v4s32_f32 1985 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1986 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1987 llvm_float_ty], [], 1988 "llvm.nvvm.tex.3d.v4s32.f32">; 1989def int_nvvm_tex_3d_level_v4s32_f32 1990 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1991 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1992 llvm_float_ty, llvm_float_ty], [], 1993 "llvm.nvvm.tex.3d.level.v4s32.f32">; 1994def int_nvvm_tex_3d_grad_v4s32_f32 1995 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 1996 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 1997 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 1998 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 1999 "llvm.nvvm.tex.3d.grad.v4s32.f32">; 2000def int_nvvm_tex_3d_v4u32_s32 2001 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2002 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2003 [], "llvm.nvvm.tex.3d.v4u32.s32">; 2004def int_nvvm_tex_3d_v4u32_f32 2005 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2006 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2007 llvm_float_ty], [], 2008 "llvm.nvvm.tex.3d.v4u32.f32">; 2009def int_nvvm_tex_3d_level_v4u32_f32 2010 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2011 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2012 llvm_float_ty, llvm_float_ty], [], 2013 "llvm.nvvm.tex.3d.level.v4u32.f32">; 2014def int_nvvm_tex_3d_grad_v4u32_f32 2015 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2016 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2017 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2018 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2019 "llvm.nvvm.tex.3d.grad.v4u32.f32">; 2020 2021def int_nvvm_tex_cube_v4f32_f32 2022 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2023 [llvm_i64_ty, llvm_i64_ty, 2024 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2025 "llvm.nvvm.tex.cube.v4f32.f32">; 2026def int_nvvm_tex_cube_level_v4f32_f32 2027 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2028 [llvm_i64_ty, llvm_i64_ty, 2029 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2030 "llvm.nvvm.tex.cube.level.v4f32.f32">; 2031def int_nvvm_tex_cube_v4s32_f32 2032 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2033 [llvm_i64_ty, llvm_i64_ty, 2034 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2035 "llvm.nvvm.tex.cube.v4s32.f32">; 2036def int_nvvm_tex_cube_level_v4s32_f32 2037 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2038 [llvm_i64_ty, llvm_i64_ty, 2039 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2040 "llvm.nvvm.tex.cube.level.v4s32.f32">; 2041def int_nvvm_tex_cube_v4u32_f32 2042 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2043 [llvm_i64_ty, llvm_i64_ty, 2044 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2045 "llvm.nvvm.tex.cube.v4u32.f32">; 2046def int_nvvm_tex_cube_level_v4u32_f32 2047 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2048 [llvm_i64_ty, llvm_i64_ty, 2049 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2050 "llvm.nvvm.tex.cube.level.v4u32.f32">; 2051 2052def int_nvvm_tex_cube_array_v4f32_f32 2053 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2054 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, 2055 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2056 "llvm.nvvm.tex.cube.array.v4f32.f32">; 2057def int_nvvm_tex_cube_array_level_v4f32_f32 2058 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2059 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, 2060 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2061 "llvm.nvvm.tex.cube.array.level.v4f32.f32">; 2062def int_nvvm_tex_cube_array_v4s32_f32 2063 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2064 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, 2065 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2066 "llvm.nvvm.tex.cube.array.v4s32.f32">; 2067def int_nvvm_tex_cube_array_level_v4s32_f32 2068 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2069 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, 2070 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2071 "llvm.nvvm.tex.cube.array.level.v4s32.f32">; 2072def int_nvvm_tex_cube_array_v4u32_f32 2073 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2074 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, 2075 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2076 "llvm.nvvm.tex.cube.array.v4u32.f32">; 2077def int_nvvm_tex_cube_array_level_v4u32_f32 2078 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2079 [llvm_i64_ty, llvm_i64_ty, llvm_i32_ty, 2080 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2081 "llvm.nvvm.tex.cube.array.level.v4u32.f32">; 2082 2083def int_nvvm_tld4_r_2d_v4f32_f32 2084 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2085 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2086 "llvm.nvvm.tld4.r.2d.v4f32.f32">; 2087def int_nvvm_tld4_g_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.g.2d.v4f32.f32">; 2091def int_nvvm_tld4_b_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.b.2d.v4f32.f32">; 2095def int_nvvm_tld4_a_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.a.2d.v4f32.f32">; 2099def int_nvvm_tld4_r_2d_v4s32_f32 2100 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2101 [llvm_i64_ty, llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2102 "llvm.nvvm.tld4.r.2d.v4s32.f32">; 2103def int_nvvm_tld4_g_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.g.2d.v4s32.f32">; 2107def int_nvvm_tld4_b_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.b.2d.v4s32.f32">; 2111def int_nvvm_tld4_a_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.a.2d.v4s32.f32">; 2115def int_nvvm_tld4_r_2d_v4u32_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.r.2d.v4u32.f32">; 2119def int_nvvm_tld4_g_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.g.2d.v4u32.f32">; 2123def int_nvvm_tld4_b_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.b.2d.v4u32.f32">; 2127def int_nvvm_tld4_a_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.a.2d.v4u32.f32">; 2131 2132 2133// texmode_unified 2134def int_nvvm_tex_unified_1d_v4f32_s32 2135 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2136 [llvm_i64_ty, llvm_i32_ty], [], 2137 "llvm.nvvm.tex.unified.1d.v4f32.s32">; 2138def int_nvvm_tex_unified_1d_v4f32_f32 2139 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2140 [llvm_i64_ty, llvm_float_ty], [], 2141 "llvm.nvvm.tex.unified.1d.v4f32.f32">; 2142def int_nvvm_tex_unified_1d_level_v4f32_f32 2143 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2144 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2145 "llvm.nvvm.tex.unified.1d.level.v4f32.f32">; 2146def int_nvvm_tex_unified_1d_grad_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_float_ty], [], 2150 "llvm.nvvm.tex.unified.1d.grad.v4f32.f32">; 2151def int_nvvm_tex_unified_1d_v4s32_s32 2152 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2153 [llvm_i64_ty, llvm_i32_ty], [], 2154 "llvm.nvvm.tex.unified.1d.v4s32.s32">; 2155def int_nvvm_tex_unified_1d_v4s32_f32 2156 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2157 [llvm_i64_ty, llvm_float_ty], [], 2158 "llvm.nvvm.tex.unified.1d.v4s32.f32">; 2159def int_nvvm_tex_unified_1d_level_v4s32_f32 2160 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2161 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2162 "llvm.nvvm.tex.unified.1d.level.v4s32.f32">; 2163def int_nvvm_tex_unified_1d_grad_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_float_ty], [], 2167 "llvm.nvvm.tex.unified.1d.grad.v4s32.f32">; 2168def int_nvvm_tex_unified_1d_v4u32_s32 2169 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2170 [llvm_i64_ty, llvm_i32_ty], [], 2171 "llvm.nvvm.tex.unified.1d.v4u32.s32">; 2172def int_nvvm_tex_unified_1d_v4u32_f32 2173 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2174 [llvm_i64_ty, llvm_float_ty], [], 2175 "llvm.nvvm.tex.unified.1d.v4u32.f32">; 2176def int_nvvm_tex_unified_1d_level_v4u32_f32 2177 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2178 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2179 "llvm.nvvm.tex.unified.1d.level.v4u32.f32">; 2180def int_nvvm_tex_unified_1d_grad_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_float_ty], [], 2184 "llvm.nvvm.tex.unified.1d.grad.v4u32.f32">; 2185 2186def int_nvvm_tex_unified_1d_array_v4f32_s32 2187 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2188 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2189 "llvm.nvvm.tex.unified.1d.array.v4f32.s32">; 2190def int_nvvm_tex_unified_1d_array_v4f32_f32 2191 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2192 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [], 2193 "llvm.nvvm.tex.unified.1d.array.v4f32.f32">; 2194def int_nvvm_tex_unified_1d_array_level_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_float_ty], [], 2198 "llvm.nvvm.tex.unified.1d.array.level.v4f32.f32">; 2199def int_nvvm_tex_unified_1d_array_grad_v4f32_f32 2200 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2201 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2202 llvm_float_ty, llvm_float_ty], [], 2203 "llvm.nvvm.tex.unified.1d.array.grad.v4f32.f32">; 2204def int_nvvm_tex_unified_1d_array_v4s32_s32 2205 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2206 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2207 "llvm.nvvm.tex.unified.1d.array.v4s32.s32">; 2208def int_nvvm_tex_unified_1d_array_v4s32_f32 2209 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2210 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [], 2211 "llvm.nvvm.tex.unified.1d.array.v4s32.f32">; 2212def int_nvvm_tex_unified_1d_array_level_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_float_ty], [], 2216 "llvm.nvvm.tex.unified.1d.array.level.v4s32.f32">; 2217def int_nvvm_tex_unified_1d_array_grad_v4s32_f32 2218 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2219 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2220 llvm_float_ty, llvm_float_ty], [], 2221 "llvm.nvvm.tex.unified.1d.array.grad.v4s32.f32">; 2222def int_nvvm_tex_unified_1d_array_v4u32_s32 2223 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2224 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2225 "llvm.nvvm.tex.unified.1d.array.v4u32.s32">; 2226def int_nvvm_tex_unified_1d_array_v4u32_f32 2227 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2228 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty], [], 2229 "llvm.nvvm.tex.unified.1d.array.v4u32.f32">; 2230def int_nvvm_tex_unified_1d_array_level_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_float_ty], [], 2234 "llvm.nvvm.tex.unified.1d.array.level.v4u32.f32">; 2235def int_nvvm_tex_unified_1d_array_grad_v4u32_f32 2236 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2237 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2238 llvm_float_ty, llvm_float_ty], [], 2239 "llvm.nvvm.tex.unified.1d.array.grad.v4u32.f32">; 2240 2241def int_nvvm_tex_unified_2d_v4f32_s32 2242 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2243 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2244 "llvm.nvvm.tex.unified.2d.v4f32.s32">; 2245def int_nvvm_tex_unified_2d_v4f32_f32 2246 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2247 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2248 "llvm.nvvm.tex.unified.2d.v4f32.f32">; 2249def int_nvvm_tex_unified_2d_level_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_float_ty], [], 2253 "llvm.nvvm.tex.unified.2d.level.v4f32.f32">; 2254def int_nvvm_tex_unified_2d_grad_v4f32_f32 2255 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2256 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2257 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2258 "llvm.nvvm.tex.unified.2d.grad.v4f32.f32">; 2259def int_nvvm_tex_unified_2d_v4s32_s32 2260 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2261 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2262 "llvm.nvvm.tex.unified.2d.v4s32.s32">; 2263def int_nvvm_tex_unified_2d_v4s32_f32 2264 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2265 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2266 "llvm.nvvm.tex.unified.2d.v4s32.f32">; 2267def int_nvvm_tex_unified_2d_level_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_float_ty], [], 2271 "llvm.nvvm.tex.unified.2d.level.v4s32.f32">; 2272def int_nvvm_tex_unified_2d_grad_v4s32_f32 2273 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2274 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2275 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2276 "llvm.nvvm.tex.unified.2d.grad.v4s32.f32">; 2277def int_nvvm_tex_unified_2d_v4u32_s32 2278 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2279 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2280 "llvm.nvvm.tex.unified.2d.v4u32.s32">; 2281def int_nvvm_tex_unified_2d_v4u32_f32 2282 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2283 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2284 "llvm.nvvm.tex.unified.2d.v4u32.f32">; 2285def int_nvvm_tex_unified_2d_level_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_float_ty], [], 2289 "llvm.nvvm.tex.unified.2d.level.v4u32.f32">; 2290def int_nvvm_tex_unified_2d_grad_v4u32_f32 2291 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2292 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2293 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2294 "llvm.nvvm.tex.unified.2d.grad.v4u32.f32">; 2295 2296def int_nvvm_tex_unified_2d_array_v4f32_s32 2297 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2298 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 2299 llvm_i32_ty], [], 2300 "llvm.nvvm.tex.unified.2d.array.v4f32.s32">; 2301def int_nvvm_tex_unified_2d_array_v4f32_f32 2302 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2303 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2304 llvm_float_ty], [], 2305 "llvm.nvvm.tex.unified.2d.array.v4f32.f32">; 2306def int_nvvm_tex_unified_2d_array_level_v4f32_f32 2307 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2308 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2309 llvm_float_ty, llvm_float_ty], [], 2310 "llvm.nvvm.tex.unified.2d.array.level.v4f32.f32">; 2311def int_nvvm_tex_unified_2d_array_grad_v4f32_f32 2312 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2313 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2314 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2315 llvm_float_ty], [], 2316 "llvm.nvvm.tex.unified.2d.array.grad.v4f32.f32">; 2317def int_nvvm_tex_unified_2d_array_v4s32_s32 2318 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2319 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 2320 llvm_i32_ty], [], 2321 "llvm.nvvm.tex.unified.2d.array.v4s32.s32">; 2322def int_nvvm_tex_unified_2d_array_v4s32_f32 2323 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2324 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2325 llvm_float_ty], [], 2326 "llvm.nvvm.tex.unified.2d.array.v4s32.f32">; 2327def int_nvvm_tex_unified_2d_array_level_v4s32_f32 2328 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2329 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2330 llvm_float_ty, llvm_float_ty], [], 2331 "llvm.nvvm.tex.unified.2d.array.level.v4s32.f32">; 2332def int_nvvm_tex_unified_2d_array_grad_v4s32_f32 2333 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2334 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2335 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2336 llvm_float_ty], [], 2337 "llvm.nvvm.tex.unified.2d.array.grad.v4s32.f32">; 2338def int_nvvm_tex_unified_2d_array_v4u32_s32 2339 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2340 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 2341 llvm_i32_ty], [], 2342 "llvm.nvvm.tex.unified.2d.array.v4u32.s32">; 2343def int_nvvm_tex_unified_2d_array_v4u32_f32 2344 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2345 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2346 llvm_float_ty], [], 2347 "llvm.nvvm.tex.unified.2d.array.v4u32.f32">; 2348def int_nvvm_tex_unified_2d_array_level_v4u32_f32 2349 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2350 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2351 llvm_float_ty, llvm_float_ty], [], 2352 "llvm.nvvm.tex.unified.2d.array.level.v4u32.f32">; 2353def int_nvvm_tex_unified_2d_array_grad_v4u32_f32 2354 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2355 [llvm_i64_ty, llvm_i32_ty, llvm_float_ty, 2356 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2357 llvm_float_ty], [], 2358 "llvm.nvvm.tex.unified.2d.array.grad.v4u32.f32">; 2359 2360def int_nvvm_tex_unified_3d_v4f32_s32 2361 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2362 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2363 [], "llvm.nvvm.tex.unified.3d.v4f32.s32">; 2364def int_nvvm_tex_unified_3d_v4f32_f32 2365 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2366 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2367 llvm_float_ty], [], 2368 "llvm.nvvm.tex.unified.3d.v4f32.f32">; 2369def int_nvvm_tex_unified_3d_level_v4f32_f32 2370 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2371 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2372 llvm_float_ty, llvm_float_ty], [], 2373 "llvm.nvvm.tex.unified.3d.level.v4f32.f32">; 2374def int_nvvm_tex_unified_3d_grad_v4f32_f32 2375 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2376 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2377 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2378 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2379 "llvm.nvvm.tex.unified.3d.grad.v4f32.f32">; 2380def int_nvvm_tex_unified_3d_v4s32_s32 2381 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2382 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2383 [], "llvm.nvvm.tex.unified.3d.v4s32.s32">; 2384def int_nvvm_tex_unified_3d_v4s32_f32 2385 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2386 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2387 llvm_float_ty], [], 2388 "llvm.nvvm.tex.unified.3d.v4s32.f32">; 2389def int_nvvm_tex_unified_3d_level_v4s32_f32 2390 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2391 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2392 llvm_float_ty, llvm_float_ty], [], 2393 "llvm.nvvm.tex.unified.3d.level.v4s32.f32">; 2394def int_nvvm_tex_unified_3d_grad_v4s32_f32 2395 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2396 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2397 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2398 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2399 "llvm.nvvm.tex.unified.3d.grad.v4s32.f32">; 2400def int_nvvm_tex_unified_3d_v4u32_s32 2401 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2402 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2403 [], "llvm.nvvm.tex.unified.3d.v4u32.s32">; 2404def int_nvvm_tex_unified_3d_v4u32_f32 2405 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2406 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2407 llvm_float_ty], [], 2408 "llvm.nvvm.tex.unified.3d.v4u32.f32">; 2409def int_nvvm_tex_unified_3d_level_v4u32_f32 2410 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2411 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2412 llvm_float_ty, llvm_float_ty], [], 2413 "llvm.nvvm.tex.unified.3d.level.v4u32.f32">; 2414def int_nvvm_tex_unified_3d_grad_v4u32_f32 2415 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2416 [llvm_i64_ty, llvm_float_ty, llvm_float_ty, 2417 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty, 2418 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2419 "llvm.nvvm.tex.unified.3d.grad.v4u32.f32">; 2420 2421def int_nvvm_tex_unified_cube_v4f32_f32 2422 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2423 [llvm_i64_ty, 2424 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2425 "llvm.nvvm.tex.unified.cube.v4f32.f32">; 2426def int_nvvm_tex_unified_cube_level_v4f32_f32 2427 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2428 [llvm_i64_ty, 2429 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2430 "llvm.nvvm.tex.unified.cube.level.v4f32.f32">; 2431def int_nvvm_tex_unified_cube_v4s32_f32 2432 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2433 [llvm_i64_ty, 2434 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2435 "llvm.nvvm.tex.unified.cube.v4s32.f32">; 2436def int_nvvm_tex_unified_cube_level_v4s32_f32 2437 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2438 [llvm_i64_ty, 2439 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2440 "llvm.nvvm.tex.unified.cube.level.v4s32.f32">; 2441def int_nvvm_tex_unified_cube_v4u32_f32 2442 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2443 [llvm_i64_ty, 2444 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2445 "llvm.nvvm.tex.unified.cube.v4u32.f32">; 2446def int_nvvm_tex_unified_cube_level_v4u32_f32 2447 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2448 [llvm_i64_ty, 2449 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2450 "llvm.nvvm.tex.unified.cube.level.v4u32.f32">; 2451 2452def int_nvvm_tex_unified_cube_array_v4f32_f32 2453 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2454 [llvm_i64_ty, llvm_i32_ty, 2455 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2456 "llvm.nvvm.tex.unified.cube.array.v4f32.f32">; 2457def int_nvvm_tex_unified_cube_array_level_v4f32_f32 2458 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2459 [llvm_i64_ty, llvm_i32_ty, 2460 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2461 "llvm.nvvm.tex.unified.cube.array.level.v4f32.f32">; 2462def int_nvvm_tex_unified_cube_array_v4s32_f32 2463 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2464 [llvm_i64_ty, llvm_i32_ty, 2465 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2466 "llvm.nvvm.tex.unified.cube.array.v4s32.f32">; 2467def int_nvvm_tex_unified_cube_array_level_v4s32_f32 2468 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2469 [llvm_i64_ty, llvm_i32_ty, 2470 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2471 "llvm.nvvm.tex.unified.cube.array.level.v4s32.f32">; 2472def int_nvvm_tex_unified_cube_array_v4u32_f32 2473 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2474 [llvm_i64_ty, llvm_i32_ty, 2475 llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2476 "llvm.nvvm.tex.unified.cube.array.v4u32.f32">; 2477def int_nvvm_tex_unified_cube_array_level_v4u32_f32 2478 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2479 [llvm_i64_ty, llvm_i32_ty, 2480 llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], [], 2481 "llvm.nvvm.tex.unified.cube.array.level.v4u32.f32">; 2482 2483def int_nvvm_tld4_unified_r_2d_v4f32_f32 2484 : Intrinsic<[llvm_float_ty, llvm_float_ty, llvm_float_ty, llvm_float_ty], 2485 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2486 "llvm.nvvm.tld4.unified.r.2d.v4f32.f32">; 2487def int_nvvm_tld4_unified_g_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.g.2d.v4f32.f32">; 2491def int_nvvm_tld4_unified_b_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.b.2d.v4f32.f32">; 2495def int_nvvm_tld4_unified_a_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.a.2d.v4f32.f32">; 2499def int_nvvm_tld4_unified_r_2d_v4s32_f32 2500 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2501 [llvm_i64_ty, llvm_float_ty, llvm_float_ty], [], 2502 "llvm.nvvm.tld4.unified.r.2d.v4s32.f32">; 2503def int_nvvm_tld4_unified_g_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.g.2d.v4s32.f32">; 2507def int_nvvm_tld4_unified_b_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.b.2d.v4s32.f32">; 2511def int_nvvm_tld4_unified_a_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.a.2d.v4s32.f32">; 2515def int_nvvm_tld4_unified_r_2d_v4u32_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.r.2d.v4u32.f32">; 2519def int_nvvm_tld4_unified_g_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.g.2d.v4u32.f32">; 2523def int_nvvm_tld4_unified_b_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.b.2d.v4u32.f32">; 2527def int_nvvm_tld4_unified_a_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.a.2d.v4u32.f32">; 2531 2532 2533//=== Surface Load 2534// .clamp variants 2535def int_nvvm_suld_1d_i8_clamp 2536 : Intrinsic<[llvm_i16_ty], 2537 [llvm_i64_ty, llvm_i32_ty], [], 2538 "llvm.nvvm.suld.1d.i8.clamp">; 2539def int_nvvm_suld_1d_i16_clamp 2540 : Intrinsic<[llvm_i16_ty], 2541 [llvm_i64_ty, llvm_i32_ty], [], 2542 "llvm.nvvm.suld.1d.i16.clamp">; 2543def int_nvvm_suld_1d_i32_clamp 2544 : Intrinsic<[llvm_i32_ty], 2545 [llvm_i64_ty, llvm_i32_ty], [], 2546 "llvm.nvvm.suld.1d.i32.clamp">; 2547def int_nvvm_suld_1d_i64_clamp 2548 : Intrinsic<[llvm_i64_ty], 2549 [llvm_i64_ty, llvm_i32_ty], [], 2550 "llvm.nvvm.suld.1d.i64.clamp">; 2551def int_nvvm_suld_1d_v2i8_clamp 2552 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2553 [llvm_i64_ty, llvm_i32_ty], [], 2554 "llvm.nvvm.suld.1d.v2i8.clamp">; 2555def int_nvvm_suld_1d_v2i16_clamp 2556 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2557 [llvm_i64_ty, llvm_i32_ty], [], 2558 "llvm.nvvm.suld.1d.v2i16.clamp">; 2559def int_nvvm_suld_1d_v2i32_clamp 2560 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2561 [llvm_i64_ty, llvm_i32_ty], [], 2562 "llvm.nvvm.suld.1d.v2i32.clamp">; 2563def int_nvvm_suld_1d_v2i64_clamp 2564 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2565 [llvm_i64_ty, llvm_i32_ty], [], 2566 "llvm.nvvm.suld.1d.v2i64.clamp">; 2567def int_nvvm_suld_1d_v4i8_clamp 2568 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2569 [llvm_i64_ty, llvm_i32_ty], [], 2570 "llvm.nvvm.suld.1d.v4i8.clamp">; 2571def int_nvvm_suld_1d_v4i16_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.v4i16.clamp">; 2575def int_nvvm_suld_1d_v4i32_clamp 2576 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2577 [llvm_i64_ty, llvm_i32_ty], [], 2578 "llvm.nvvm.suld.1d.v4i32.clamp">; 2579 2580def int_nvvm_suld_1d_array_i8_clamp 2581 : Intrinsic<[llvm_i16_ty], 2582 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2583 "llvm.nvvm.suld.1d.array.i8.clamp">; 2584def int_nvvm_suld_1d_array_i16_clamp 2585 : Intrinsic<[llvm_i16_ty], 2586 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2587 "llvm.nvvm.suld.1d.array.i16.clamp">; 2588def int_nvvm_suld_1d_array_i32_clamp 2589 : Intrinsic<[llvm_i32_ty], 2590 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2591 "llvm.nvvm.suld.1d.array.i32.clamp">; 2592def int_nvvm_suld_1d_array_i64_clamp 2593 : Intrinsic<[llvm_i64_ty], 2594 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2595 "llvm.nvvm.suld.1d.array.i64.clamp">; 2596def int_nvvm_suld_1d_array_v2i8_clamp 2597 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2598 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2599 "llvm.nvvm.suld.1d.array.v2i8.clamp">; 2600def int_nvvm_suld_1d_array_v2i16_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.v2i16.clamp">; 2604def int_nvvm_suld_1d_array_v2i32_clamp 2605 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2606 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2607 "llvm.nvvm.suld.1d.array.v2i32.clamp">; 2608def int_nvvm_suld_1d_array_v2i64_clamp 2609 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2610 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2611 "llvm.nvvm.suld.1d.array.v2i64.clamp">; 2612def int_nvvm_suld_1d_array_v4i8_clamp 2613 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2614 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2615 "llvm.nvvm.suld.1d.array.v4i8.clamp">; 2616def int_nvvm_suld_1d_array_v4i16_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.v4i16.clamp">; 2620def int_nvvm_suld_1d_array_v4i32_clamp 2621 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2622 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2623 "llvm.nvvm.suld.1d.array.v4i32.clamp">; 2624 2625def int_nvvm_suld_2d_i8_clamp 2626 : Intrinsic<[llvm_i16_ty], 2627 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2628 "llvm.nvvm.suld.2d.i8.clamp">; 2629def int_nvvm_suld_2d_i16_clamp 2630 : Intrinsic<[llvm_i16_ty], 2631 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2632 "llvm.nvvm.suld.2d.i16.clamp">; 2633def int_nvvm_suld_2d_i32_clamp 2634 : Intrinsic<[llvm_i32_ty], 2635 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2636 "llvm.nvvm.suld.2d.i32.clamp">; 2637def int_nvvm_suld_2d_i64_clamp 2638 : Intrinsic<[llvm_i64_ty], 2639 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2640 "llvm.nvvm.suld.2d.i64.clamp">; 2641def int_nvvm_suld_2d_v2i8_clamp 2642 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2643 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2644 "llvm.nvvm.suld.2d.v2i8.clamp">; 2645def int_nvvm_suld_2d_v2i16_clamp 2646 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2647 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2648 "llvm.nvvm.suld.2d.v2i16.clamp">; 2649def int_nvvm_suld_2d_v2i32_clamp 2650 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2651 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2652 "llvm.nvvm.suld.2d.v2i32.clamp">; 2653def int_nvvm_suld_2d_v2i64_clamp 2654 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2655 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2656 "llvm.nvvm.suld.2d.v2i64.clamp">; 2657def int_nvvm_suld_2d_v4i8_clamp 2658 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2659 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2660 "llvm.nvvm.suld.2d.v4i8.clamp">; 2661def int_nvvm_suld_2d_v4i16_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.v4i16.clamp">; 2665def int_nvvm_suld_2d_v4i32_clamp 2666 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2667 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2668 "llvm.nvvm.suld.2d.v4i32.clamp">; 2669 2670def int_nvvm_suld_2d_array_i8_clamp 2671 : Intrinsic<[llvm_i16_ty], 2672 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2673 "llvm.nvvm.suld.2d.array.i8.clamp">; 2674def int_nvvm_suld_2d_array_i16_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.i16.clamp">; 2678def int_nvvm_suld_2d_array_i32_clamp 2679 : Intrinsic<[llvm_i32_ty], 2680 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2681 "llvm.nvvm.suld.2d.array.i32.clamp">; 2682def int_nvvm_suld_2d_array_i64_clamp 2683 : Intrinsic<[llvm_i64_ty], 2684 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2685 "llvm.nvvm.suld.2d.array.i64.clamp">; 2686def int_nvvm_suld_2d_array_v2i8_clamp 2687 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2688 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2689 "llvm.nvvm.suld.2d.array.v2i8.clamp">; 2690def int_nvvm_suld_2d_array_v2i16_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.v2i16.clamp">; 2694def int_nvvm_suld_2d_array_v2i32_clamp 2695 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2696 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2697 "llvm.nvvm.suld.2d.array.v2i32.clamp">; 2698def int_nvvm_suld_2d_array_v2i64_clamp 2699 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2700 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2701 "llvm.nvvm.suld.2d.array.v2i64.clamp">; 2702def int_nvvm_suld_2d_array_v4i8_clamp 2703 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2704 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2705 "llvm.nvvm.suld.2d.array.v4i8.clamp">; 2706def int_nvvm_suld_2d_array_v4i16_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.v4i16.clamp">; 2710def int_nvvm_suld_2d_array_v4i32_clamp 2711 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2712 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2713 "llvm.nvvm.suld.2d.array.v4i32.clamp">; 2714 2715def int_nvvm_suld_3d_i8_clamp 2716 : Intrinsic<[llvm_i16_ty], 2717 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2718 "llvm.nvvm.suld.3d.i8.clamp">; 2719def int_nvvm_suld_3d_i16_clamp 2720 : Intrinsic<[llvm_i16_ty], 2721 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2722 "llvm.nvvm.suld.3d.i16.clamp">; 2723def int_nvvm_suld_3d_i32_clamp 2724 : Intrinsic<[llvm_i32_ty], 2725 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2726 "llvm.nvvm.suld.3d.i32.clamp">; 2727def int_nvvm_suld_3d_i64_clamp 2728 : Intrinsic<[llvm_i64_ty], 2729 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2730 "llvm.nvvm.suld.3d.i64.clamp">; 2731def int_nvvm_suld_3d_v2i8_clamp 2732 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2733 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2734 "llvm.nvvm.suld.3d.v2i8.clamp">; 2735def int_nvvm_suld_3d_v2i16_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.v2i16.clamp">; 2739def int_nvvm_suld_3d_v2i32_clamp 2740 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2741 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2742 "llvm.nvvm.suld.3d.v2i32.clamp">; 2743def int_nvvm_suld_3d_v2i64_clamp 2744 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2745 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2746 "llvm.nvvm.suld.3d.v2i64.clamp">; 2747def int_nvvm_suld_3d_v4i8_clamp 2748 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2749 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2750 "llvm.nvvm.suld.3d.v4i8.clamp">; 2751def int_nvvm_suld_3d_v4i16_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.v4i16.clamp">; 2755def int_nvvm_suld_3d_v4i32_clamp 2756 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2757 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2758 "llvm.nvvm.suld.3d.v4i32.clamp">; 2759 2760// .trap variants 2761def int_nvvm_suld_1d_i8_trap 2762 : Intrinsic<[llvm_i16_ty], 2763 [llvm_i64_ty, llvm_i32_ty], [], 2764 "llvm.nvvm.suld.1d.i8.trap">; 2765def int_nvvm_suld_1d_i16_trap 2766 : Intrinsic<[llvm_i16_ty], 2767 [llvm_i64_ty, llvm_i32_ty], [], 2768 "llvm.nvvm.suld.1d.i16.trap">; 2769def int_nvvm_suld_1d_i32_trap 2770 : Intrinsic<[llvm_i32_ty], 2771 [llvm_i64_ty, llvm_i32_ty], [], 2772 "llvm.nvvm.suld.1d.i32.trap">; 2773def int_nvvm_suld_1d_i64_trap 2774 : Intrinsic<[llvm_i64_ty], 2775 [llvm_i64_ty, llvm_i32_ty], [], 2776 "llvm.nvvm.suld.1d.i64.trap">; 2777def int_nvvm_suld_1d_v2i8_trap 2778 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2779 [llvm_i64_ty, llvm_i32_ty], [], 2780 "llvm.nvvm.suld.1d.v2i8.trap">; 2781def int_nvvm_suld_1d_v2i16_trap 2782 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2783 [llvm_i64_ty, llvm_i32_ty], [], 2784 "llvm.nvvm.suld.1d.v2i16.trap">; 2785def int_nvvm_suld_1d_v2i32_trap 2786 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2787 [llvm_i64_ty, llvm_i32_ty], [], 2788 "llvm.nvvm.suld.1d.v2i32.trap">; 2789def int_nvvm_suld_1d_v2i64_trap 2790 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2791 [llvm_i64_ty, llvm_i32_ty], [], 2792 "llvm.nvvm.suld.1d.v2i64.trap">; 2793def int_nvvm_suld_1d_v4i8_trap 2794 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2795 [llvm_i64_ty, llvm_i32_ty], [], 2796 "llvm.nvvm.suld.1d.v4i8.trap">; 2797def int_nvvm_suld_1d_v4i16_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.v4i16.trap">; 2801def int_nvvm_suld_1d_v4i32_trap 2802 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2803 [llvm_i64_ty, llvm_i32_ty], [], 2804 "llvm.nvvm.suld.1d.v4i32.trap">; 2805 2806def int_nvvm_suld_1d_array_i8_trap 2807 : Intrinsic<[llvm_i16_ty], 2808 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2809 "llvm.nvvm.suld.1d.array.i8.trap">; 2810def int_nvvm_suld_1d_array_i16_trap 2811 : Intrinsic<[llvm_i16_ty], 2812 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2813 "llvm.nvvm.suld.1d.array.i16.trap">; 2814def int_nvvm_suld_1d_array_i32_trap 2815 : Intrinsic<[llvm_i32_ty], 2816 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2817 "llvm.nvvm.suld.1d.array.i32.trap">; 2818def int_nvvm_suld_1d_array_i64_trap 2819 : Intrinsic<[llvm_i64_ty], 2820 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2821 "llvm.nvvm.suld.1d.array.i64.trap">; 2822def int_nvvm_suld_1d_array_v2i8_trap 2823 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2824 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2825 "llvm.nvvm.suld.1d.array.v2i8.trap">; 2826def int_nvvm_suld_1d_array_v2i16_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.v2i16.trap">; 2830def int_nvvm_suld_1d_array_v2i32_trap 2831 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2832 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2833 "llvm.nvvm.suld.1d.array.v2i32.trap">; 2834def int_nvvm_suld_1d_array_v2i64_trap 2835 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2836 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2837 "llvm.nvvm.suld.1d.array.v2i64.trap">; 2838def int_nvvm_suld_1d_array_v4i8_trap 2839 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2840 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2841 "llvm.nvvm.suld.1d.array.v4i8.trap">; 2842def int_nvvm_suld_1d_array_v4i16_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.v4i16.trap">; 2846def int_nvvm_suld_1d_array_v4i32_trap 2847 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2848 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2849 "llvm.nvvm.suld.1d.array.v4i32.trap">; 2850 2851def int_nvvm_suld_2d_i8_trap 2852 : Intrinsic<[llvm_i16_ty], 2853 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2854 "llvm.nvvm.suld.2d.i8.trap">; 2855def int_nvvm_suld_2d_i16_trap 2856 : Intrinsic<[llvm_i16_ty], 2857 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2858 "llvm.nvvm.suld.2d.i16.trap">; 2859def int_nvvm_suld_2d_i32_trap 2860 : Intrinsic<[llvm_i32_ty], 2861 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2862 "llvm.nvvm.suld.2d.i32.trap">; 2863def int_nvvm_suld_2d_i64_trap 2864 : Intrinsic<[llvm_i64_ty], 2865 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2866 "llvm.nvvm.suld.2d.i64.trap">; 2867def int_nvvm_suld_2d_v2i8_trap 2868 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2869 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2870 "llvm.nvvm.suld.2d.v2i8.trap">; 2871def int_nvvm_suld_2d_v2i16_trap 2872 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2873 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2874 "llvm.nvvm.suld.2d.v2i16.trap">; 2875def int_nvvm_suld_2d_v2i32_trap 2876 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2877 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2878 "llvm.nvvm.suld.2d.v2i32.trap">; 2879def int_nvvm_suld_2d_v2i64_trap 2880 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2881 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2882 "llvm.nvvm.suld.2d.v2i64.trap">; 2883def int_nvvm_suld_2d_v4i8_trap 2884 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2885 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2886 "llvm.nvvm.suld.2d.v4i8.trap">; 2887def int_nvvm_suld_2d_v4i16_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.v4i16.trap">; 2891def int_nvvm_suld_2d_v4i32_trap 2892 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2893 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 2894 "llvm.nvvm.suld.2d.v4i32.trap">; 2895 2896def int_nvvm_suld_2d_array_i8_trap 2897 : Intrinsic<[llvm_i16_ty], 2898 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2899 "llvm.nvvm.suld.2d.array.i8.trap">; 2900def int_nvvm_suld_2d_array_i16_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.i16.trap">; 2904def int_nvvm_suld_2d_array_i32_trap 2905 : Intrinsic<[llvm_i32_ty], 2906 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2907 "llvm.nvvm.suld.2d.array.i32.trap">; 2908def int_nvvm_suld_2d_array_i64_trap 2909 : Intrinsic<[llvm_i64_ty], 2910 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2911 "llvm.nvvm.suld.2d.array.i64.trap">; 2912def int_nvvm_suld_2d_array_v2i8_trap 2913 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2914 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2915 "llvm.nvvm.suld.2d.array.v2i8.trap">; 2916def int_nvvm_suld_2d_array_v2i16_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.v2i16.trap">; 2920def int_nvvm_suld_2d_array_v2i32_trap 2921 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2922 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2923 "llvm.nvvm.suld.2d.array.v2i32.trap">; 2924def int_nvvm_suld_2d_array_v2i64_trap 2925 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2926 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2927 "llvm.nvvm.suld.2d.array.v2i64.trap">; 2928def int_nvvm_suld_2d_array_v4i8_trap 2929 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2930 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2931 "llvm.nvvm.suld.2d.array.v4i8.trap">; 2932def int_nvvm_suld_2d_array_v4i16_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.v4i16.trap">; 2936def int_nvvm_suld_2d_array_v4i32_trap 2937 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2938 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2939 "llvm.nvvm.suld.2d.array.v4i32.trap">; 2940 2941def int_nvvm_suld_3d_i8_trap 2942 : Intrinsic<[llvm_i16_ty], 2943 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2944 "llvm.nvvm.suld.3d.i8.trap">; 2945def int_nvvm_suld_3d_i16_trap 2946 : Intrinsic<[llvm_i16_ty], 2947 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2948 "llvm.nvvm.suld.3d.i16.trap">; 2949def int_nvvm_suld_3d_i32_trap 2950 : Intrinsic<[llvm_i32_ty], 2951 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2952 "llvm.nvvm.suld.3d.i32.trap">; 2953def int_nvvm_suld_3d_i64_trap 2954 : Intrinsic<[llvm_i64_ty], 2955 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2956 "llvm.nvvm.suld.3d.i64.trap">; 2957def int_nvvm_suld_3d_v2i8_trap 2958 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 2959 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2960 "llvm.nvvm.suld.3d.v2i8.trap">; 2961def int_nvvm_suld_3d_v2i16_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.v2i16.trap">; 2965def int_nvvm_suld_3d_v2i32_trap 2966 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 2967 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2968 "llvm.nvvm.suld.3d.v2i32.trap">; 2969def int_nvvm_suld_3d_v2i64_trap 2970 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 2971 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2972 "llvm.nvvm.suld.3d.v2i64.trap">; 2973def int_nvvm_suld_3d_v4i8_trap 2974 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 2975 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2976 "llvm.nvvm.suld.3d.v4i8.trap">; 2977def int_nvvm_suld_3d_v4i16_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.v4i16.trap">; 2981def int_nvvm_suld_3d_v4i32_trap 2982 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 2983 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 2984 "llvm.nvvm.suld.3d.v4i32.trap">; 2985 2986// .zero variants 2987def int_nvvm_suld_1d_i8_zero 2988 : Intrinsic<[llvm_i16_ty], 2989 [llvm_i64_ty, llvm_i32_ty], [], 2990 "llvm.nvvm.suld.1d.i8.zero">; 2991def int_nvvm_suld_1d_i16_zero 2992 : Intrinsic<[llvm_i16_ty], 2993 [llvm_i64_ty, llvm_i32_ty], [], 2994 "llvm.nvvm.suld.1d.i16.zero">; 2995def int_nvvm_suld_1d_i32_zero 2996 : Intrinsic<[llvm_i32_ty], 2997 [llvm_i64_ty, llvm_i32_ty], [], 2998 "llvm.nvvm.suld.1d.i32.zero">; 2999def int_nvvm_suld_1d_i64_zero 3000 : Intrinsic<[llvm_i64_ty], 3001 [llvm_i64_ty, llvm_i32_ty], [], 3002 "llvm.nvvm.suld.1d.i64.zero">; 3003def int_nvvm_suld_1d_v2i8_zero 3004 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3005 [llvm_i64_ty, llvm_i32_ty], [], 3006 "llvm.nvvm.suld.1d.v2i8.zero">; 3007def int_nvvm_suld_1d_v2i16_zero 3008 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3009 [llvm_i64_ty, llvm_i32_ty], [], 3010 "llvm.nvvm.suld.1d.v2i16.zero">; 3011def int_nvvm_suld_1d_v2i32_zero 3012 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 3013 [llvm_i64_ty, llvm_i32_ty], [], 3014 "llvm.nvvm.suld.1d.v2i32.zero">; 3015def int_nvvm_suld_1d_v2i64_zero 3016 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 3017 [llvm_i64_ty, llvm_i32_ty], [], 3018 "llvm.nvvm.suld.1d.v2i64.zero">; 3019def int_nvvm_suld_1d_v4i8_zero 3020 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 3021 [llvm_i64_ty, llvm_i32_ty], [], 3022 "llvm.nvvm.suld.1d.v4i8.zero">; 3023def int_nvvm_suld_1d_v4i16_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.v4i16.zero">; 3027def int_nvvm_suld_1d_v4i32_zero 3028 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 3029 [llvm_i64_ty, llvm_i32_ty], [], 3030 "llvm.nvvm.suld.1d.v4i32.zero">; 3031 3032def int_nvvm_suld_1d_array_i8_zero 3033 : Intrinsic<[llvm_i16_ty], 3034 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3035 "llvm.nvvm.suld.1d.array.i8.zero">; 3036def int_nvvm_suld_1d_array_i16_zero 3037 : Intrinsic<[llvm_i16_ty], 3038 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3039 "llvm.nvvm.suld.1d.array.i16.zero">; 3040def int_nvvm_suld_1d_array_i32_zero 3041 : Intrinsic<[llvm_i32_ty], 3042 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3043 "llvm.nvvm.suld.1d.array.i32.zero">; 3044def int_nvvm_suld_1d_array_i64_zero 3045 : Intrinsic<[llvm_i64_ty], 3046 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3047 "llvm.nvvm.suld.1d.array.i64.zero">; 3048def int_nvvm_suld_1d_array_v2i8_zero 3049 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3050 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3051 "llvm.nvvm.suld.1d.array.v2i8.zero">; 3052def int_nvvm_suld_1d_array_v2i16_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.v2i16.zero">; 3056def int_nvvm_suld_1d_array_v2i32_zero 3057 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 3058 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3059 "llvm.nvvm.suld.1d.array.v2i32.zero">; 3060def int_nvvm_suld_1d_array_v2i64_zero 3061 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 3062 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3063 "llvm.nvvm.suld.1d.array.v2i64.zero">; 3064def int_nvvm_suld_1d_array_v4i8_zero 3065 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 3066 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3067 "llvm.nvvm.suld.1d.array.v4i8.zero">; 3068def int_nvvm_suld_1d_array_v4i16_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.v4i16.zero">; 3072def int_nvvm_suld_1d_array_v4i32_zero 3073 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 3074 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3075 "llvm.nvvm.suld.1d.array.v4i32.zero">; 3076 3077def int_nvvm_suld_2d_i8_zero 3078 : Intrinsic<[llvm_i16_ty], 3079 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3080 "llvm.nvvm.suld.2d.i8.zero">; 3081def int_nvvm_suld_2d_i16_zero 3082 : Intrinsic<[llvm_i16_ty], 3083 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3084 "llvm.nvvm.suld.2d.i16.zero">; 3085def int_nvvm_suld_2d_i32_zero 3086 : Intrinsic<[llvm_i32_ty], 3087 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3088 "llvm.nvvm.suld.2d.i32.zero">; 3089def int_nvvm_suld_2d_i64_zero 3090 : Intrinsic<[llvm_i64_ty], 3091 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3092 "llvm.nvvm.suld.2d.i64.zero">; 3093def int_nvvm_suld_2d_v2i8_zero 3094 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3095 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3096 "llvm.nvvm.suld.2d.v2i8.zero">; 3097def int_nvvm_suld_2d_v2i16_zero 3098 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3099 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3100 "llvm.nvvm.suld.2d.v2i16.zero">; 3101def int_nvvm_suld_2d_v2i32_zero 3102 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 3103 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3104 "llvm.nvvm.suld.2d.v2i32.zero">; 3105def int_nvvm_suld_2d_v2i64_zero 3106 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 3107 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3108 "llvm.nvvm.suld.2d.v2i64.zero">; 3109def int_nvvm_suld_2d_v4i8_zero 3110 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 3111 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3112 "llvm.nvvm.suld.2d.v4i8.zero">; 3113def int_nvvm_suld_2d_v4i16_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.v4i16.zero">; 3117def int_nvvm_suld_2d_v4i32_zero 3118 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 3119 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3120 "llvm.nvvm.suld.2d.v4i32.zero">; 3121 3122def int_nvvm_suld_2d_array_i8_zero 3123 : Intrinsic<[llvm_i16_ty], 3124 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3125 "llvm.nvvm.suld.2d.array.i8.zero">; 3126def int_nvvm_suld_2d_array_i16_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.i16.zero">; 3130def int_nvvm_suld_2d_array_i32_zero 3131 : Intrinsic<[llvm_i32_ty], 3132 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3133 "llvm.nvvm.suld.2d.array.i32.zero">; 3134def int_nvvm_suld_2d_array_i64_zero 3135 : Intrinsic<[llvm_i64_ty], 3136 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3137 "llvm.nvvm.suld.2d.array.i64.zero">; 3138def int_nvvm_suld_2d_array_v2i8_zero 3139 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3140 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3141 "llvm.nvvm.suld.2d.array.v2i8.zero">; 3142def int_nvvm_suld_2d_array_v2i16_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.v2i16.zero">; 3146def int_nvvm_suld_2d_array_v2i32_zero 3147 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 3148 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3149 "llvm.nvvm.suld.2d.array.v2i32.zero">; 3150def int_nvvm_suld_2d_array_v2i64_zero 3151 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 3152 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3153 "llvm.nvvm.suld.2d.array.v2i64.zero">; 3154def int_nvvm_suld_2d_array_v4i8_zero 3155 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 3156 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3157 "llvm.nvvm.suld.2d.array.v4i8.zero">; 3158def int_nvvm_suld_2d_array_v4i16_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.v4i16.zero">; 3162def int_nvvm_suld_2d_array_v4i32_zero 3163 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 3164 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3165 "llvm.nvvm.suld.2d.array.v4i32.zero">; 3166 3167def int_nvvm_suld_3d_i8_zero 3168 : Intrinsic<[llvm_i16_ty], 3169 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3170 "llvm.nvvm.suld.3d.i8.zero">; 3171def int_nvvm_suld_3d_i16_zero 3172 : Intrinsic<[llvm_i16_ty], 3173 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3174 "llvm.nvvm.suld.3d.i16.zero">; 3175def int_nvvm_suld_3d_i32_zero 3176 : Intrinsic<[llvm_i32_ty], 3177 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3178 "llvm.nvvm.suld.3d.i32.zero">; 3179def int_nvvm_suld_3d_i64_zero 3180 : Intrinsic<[llvm_i64_ty], 3181 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3182 "llvm.nvvm.suld.3d.i64.zero">; 3183def int_nvvm_suld_3d_v2i8_zero 3184 : Intrinsic<[llvm_i16_ty, llvm_i16_ty], 3185 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3186 "llvm.nvvm.suld.3d.v2i8.zero">; 3187def int_nvvm_suld_3d_v2i16_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.v2i16.zero">; 3191def int_nvvm_suld_3d_v2i32_zero 3192 : Intrinsic<[llvm_i32_ty, llvm_i32_ty], 3193 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3194 "llvm.nvvm.suld.3d.v2i32.zero">; 3195def int_nvvm_suld_3d_v2i64_zero 3196 : Intrinsic<[llvm_i64_ty, llvm_i64_ty], 3197 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3198 "llvm.nvvm.suld.3d.v2i64.zero">; 3199def int_nvvm_suld_3d_v4i8_zero 3200 : Intrinsic<[llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], 3201 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3202 "llvm.nvvm.suld.3d.v4i8.zero">; 3203def int_nvvm_suld_3d_v4i16_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.v4i16.zero">; 3207def int_nvvm_suld_3d_v4i32_zero 3208 : Intrinsic<[llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], 3209 [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3210 "llvm.nvvm.suld.3d.v4i32.zero">; 3211 3212//===- Texture Query ------------------------------------------------------===// 3213 3214def int_nvvm_txq_channel_order 3215 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3216 "llvm.nvvm.txq.channel.order">, 3217 ClangBuiltin<"__nvvm_txq_channel_order">; 3218def int_nvvm_txq_channel_data_type 3219 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3220 "llvm.nvvm.txq.channel.data.type">, 3221 ClangBuiltin<"__nvvm_txq_channel_data_type">; 3222def int_nvvm_txq_width 3223 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3224 "llvm.nvvm.txq.width">, 3225 ClangBuiltin<"__nvvm_txq_width">; 3226def int_nvvm_txq_height 3227 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3228 "llvm.nvvm.txq.height">, 3229 ClangBuiltin<"__nvvm_txq_height">; 3230def int_nvvm_txq_depth 3231 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3232 "llvm.nvvm.txq.depth">, 3233 ClangBuiltin<"__nvvm_txq_depth">; 3234def int_nvvm_txq_array_size 3235 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3236 "llvm.nvvm.txq.array.size">, 3237 ClangBuiltin<"__nvvm_txq_array_size">; 3238def int_nvvm_txq_num_samples 3239 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3240 "llvm.nvvm.txq.num.samples">, 3241 ClangBuiltin<"__nvvm_txq_num_samples">; 3242def int_nvvm_txq_num_mipmap_levels 3243 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3244 "llvm.nvvm.txq.num.mipmap.levels">, 3245 ClangBuiltin<"__nvvm_txq_num_mipmap_levels">; 3246 3247//===- Surface Query ------------------------------------------------------===// 3248 3249def int_nvvm_suq_channel_order 3250 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3251 "llvm.nvvm.suq.channel.order">, 3252 ClangBuiltin<"__nvvm_suq_channel_order">; 3253def int_nvvm_suq_channel_data_type 3254 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3255 "llvm.nvvm.suq.channel.data.type">, 3256 ClangBuiltin<"__nvvm_suq_channel_data_type">; 3257def int_nvvm_suq_width 3258 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3259 "llvm.nvvm.suq.width">, 3260 ClangBuiltin<"__nvvm_suq_width">; 3261def int_nvvm_suq_height 3262 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3263 "llvm.nvvm.suq.height">, 3264 ClangBuiltin<"__nvvm_suq_height">; 3265def int_nvvm_suq_depth 3266 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3267 "llvm.nvvm.suq.depth">, 3268 ClangBuiltin<"__nvvm_suq_depth">; 3269def int_nvvm_suq_array_size 3270 : Intrinsic<[llvm_i32_ty], [llvm_i64_ty], [IntrNoMem], 3271 "llvm.nvvm.suq.array.size">, 3272 ClangBuiltin<"__nvvm_suq_array_size">; 3273 3274 3275//===- Handle Query -------------------------------------------------------===// 3276 3277def int_nvvm_istypep_sampler 3278 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem], 3279 "llvm.nvvm.istypep.sampler">, 3280 ClangBuiltin<"__nvvm_istypep_sampler">; 3281def int_nvvm_istypep_surface 3282 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem], 3283 "llvm.nvvm.istypep.surface">, 3284 ClangBuiltin<"__nvvm_istypep_surface">; 3285def int_nvvm_istypep_texture 3286 : Intrinsic<[llvm_i1_ty], [llvm_i64_ty], [IntrNoMem], 3287 "llvm.nvvm.istypep.texture">, 3288 ClangBuiltin<"__nvvm_istypep_texture">; 3289 3290 3291 3292//===- Surface Stores -----------------------------------------------------===// 3293 3294// Unformatted 3295// .clamp variant 3296def int_nvvm_sust_b_1d_i8_clamp 3297 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 3298 "llvm.nvvm.sust.b.1d.i8.clamp">, 3299 ClangBuiltin<"__nvvm_sust_b_1d_i8_clamp">; 3300def int_nvvm_sust_b_1d_i16_clamp 3301 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 3302 "llvm.nvvm.sust.b.1d.i16.clamp">, 3303 ClangBuiltin<"__nvvm_sust_b_1d_i16_clamp">; 3304def int_nvvm_sust_b_1d_i32_clamp 3305 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3306 "llvm.nvvm.sust.b.1d.i32.clamp">, 3307 ClangBuiltin<"__nvvm_sust_b_1d_i32_clamp">; 3308def int_nvvm_sust_b_1d_i64_clamp 3309 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [], 3310 "llvm.nvvm.sust.b.1d.i64.clamp">, 3311 ClangBuiltin<"__nvvm_sust_b_1d_i64_clamp">; 3312def int_nvvm_sust_b_1d_v2i8_clamp 3313 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 3314 "llvm.nvvm.sust.b.1d.v2i8.clamp">, 3315 ClangBuiltin<"__nvvm_sust_b_1d_v2i8_clamp">; 3316def int_nvvm_sust_b_1d_v2i16_clamp 3317 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 3318 "llvm.nvvm.sust.b.1d.v2i16.clamp">, 3319 ClangBuiltin<"__nvvm_sust_b_1d_v2i16_clamp">; 3320def int_nvvm_sust_b_1d_v2i32_clamp 3321 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3322 "llvm.nvvm.sust.b.1d.v2i32.clamp">, 3323 ClangBuiltin<"__nvvm_sust_b_1d_v2i32_clamp">; 3324def int_nvvm_sust_b_1d_v2i64_clamp 3325 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [], 3326 "llvm.nvvm.sust.b.1d.v2i64.clamp">, 3327 ClangBuiltin<"__nvvm_sust_b_1d_v2i64_clamp">; 3328def int_nvvm_sust_b_1d_v4i8_clamp 3329 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 3330 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3331 "llvm.nvvm.sust.b.1d.v4i8.clamp">, 3332 ClangBuiltin<"__nvvm_sust_b_1d_v4i8_clamp">; 3333def int_nvvm_sust_b_1d_v4i16_clamp 3334 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 3335 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3336 "llvm.nvvm.sust.b.1d.v4i16.clamp">, 3337 ClangBuiltin<"__nvvm_sust_b_1d_v4i16_clamp">; 3338def int_nvvm_sust_b_1d_v4i32_clamp 3339 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3340 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3341 "llvm.nvvm.sust.b.1d.v4i32.clamp">, 3342 ClangBuiltin<"__nvvm_sust_b_1d_v4i32_clamp">; 3343 3344 3345def int_nvvm_sust_b_1d_array_i8_clamp 3346 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3347 "llvm.nvvm.sust.b.1d.array.i8.clamp">, 3348 ClangBuiltin<"__nvvm_sust_b_1d_array_i8_clamp">; 3349def int_nvvm_sust_b_1d_array_i16_clamp 3350 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3351 "llvm.nvvm.sust.b.1d.array.i16.clamp">, 3352 ClangBuiltin<"__nvvm_sust_b_1d_array_i16_clamp">; 3353def int_nvvm_sust_b_1d_array_i32_clamp 3354 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3355 "llvm.nvvm.sust.b.1d.array.i32.clamp">, 3356 ClangBuiltin<"__nvvm_sust_b_1d_array_i32_clamp">; 3357def int_nvvm_sust_b_1d_array_i64_clamp 3358 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [], 3359 "llvm.nvvm.sust.b.1d.array.i64.clamp">, 3360 ClangBuiltin<"__nvvm_sust_b_1d_array_i64_clamp">; 3361def int_nvvm_sust_b_1d_array_v2i8_clamp 3362 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3363 llvm_i16_ty, llvm_i16_ty], [], 3364 "llvm.nvvm.sust.b.1d.array.v2i8.clamp">, 3365 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i8_clamp">; 3366def int_nvvm_sust_b_1d_array_v2i16_clamp 3367 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3368 llvm_i16_ty, llvm_i16_ty], [], 3369 "llvm.nvvm.sust.b.1d.array.v2i16.clamp">, 3370 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i16_clamp">; 3371def int_nvvm_sust_b_1d_array_v2i32_clamp 3372 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3373 llvm_i32_ty, llvm_i32_ty], [], 3374 "llvm.nvvm.sust.b.1d.array.v2i32.clamp">, 3375 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i32_clamp">; 3376def int_nvvm_sust_b_1d_array_v2i64_clamp 3377 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3378 llvm_i64_ty, llvm_i64_ty], [], 3379 "llvm.nvvm.sust.b.1d.array.v2i64.clamp">, 3380 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i64_clamp">; 3381def int_nvvm_sust_b_1d_array_v4i8_clamp 3382 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3383 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3384 "llvm.nvvm.sust.b.1d.array.v4i8.clamp">, 3385 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i8_clamp">; 3386def int_nvvm_sust_b_1d_array_v4i16_clamp 3387 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3388 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3389 "llvm.nvvm.sust.b.1d.array.v4i16.clamp">, 3390 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i16_clamp">; 3391def int_nvvm_sust_b_1d_array_v4i32_clamp 3392 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3393 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3394 "llvm.nvvm.sust.b.1d.array.v4i32.clamp">, 3395 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i32_clamp">; 3396 3397 3398def int_nvvm_sust_b_2d_i8_clamp 3399 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3400 "llvm.nvvm.sust.b.2d.i8.clamp">, 3401 ClangBuiltin<"__nvvm_sust_b_2d_i8_clamp">; 3402def int_nvvm_sust_b_2d_i16_clamp 3403 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3404 "llvm.nvvm.sust.b.2d.i16.clamp">, 3405 ClangBuiltin<"__nvvm_sust_b_2d_i16_clamp">; 3406def int_nvvm_sust_b_2d_i32_clamp 3407 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3408 "llvm.nvvm.sust.b.2d.i32.clamp">, 3409 ClangBuiltin<"__nvvm_sust_b_2d_i32_clamp">; 3410def int_nvvm_sust_b_2d_i64_clamp 3411 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [], 3412 "llvm.nvvm.sust.b.2d.i64.clamp">, 3413 ClangBuiltin<"__nvvm_sust_b_2d_i64_clamp">; 3414def int_nvvm_sust_b_2d_v2i8_clamp 3415 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3416 llvm_i16_ty, llvm_i16_ty], [], 3417 "llvm.nvvm.sust.b.2d.v2i8.clamp">, 3418 ClangBuiltin<"__nvvm_sust_b_2d_v2i8_clamp">; 3419def int_nvvm_sust_b_2d_v2i16_clamp 3420 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3421 llvm_i16_ty, llvm_i16_ty], [], 3422 "llvm.nvvm.sust.b.2d.v2i16.clamp">, 3423 ClangBuiltin<"__nvvm_sust_b_2d_v2i16_clamp">; 3424def int_nvvm_sust_b_2d_v2i32_clamp 3425 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3426 llvm_i32_ty, llvm_i32_ty], [], 3427 "llvm.nvvm.sust.b.2d.v2i32.clamp">, 3428 ClangBuiltin<"__nvvm_sust_b_2d_v2i32_clamp">; 3429def int_nvvm_sust_b_2d_v2i64_clamp 3430 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3431 llvm_i64_ty, llvm_i64_ty], [], 3432 "llvm.nvvm.sust.b.2d.v2i64.clamp">, 3433 ClangBuiltin<"__nvvm_sust_b_2d_v2i64_clamp">; 3434def int_nvvm_sust_b_2d_v4i8_clamp 3435 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3436 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3437 "llvm.nvvm.sust.b.2d.v4i8.clamp">, 3438 ClangBuiltin<"__nvvm_sust_b_2d_v4i8_clamp">; 3439def int_nvvm_sust_b_2d_v4i16_clamp 3440 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3441 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3442 "llvm.nvvm.sust.b.2d.v4i16.clamp">, 3443 ClangBuiltin<"__nvvm_sust_b_2d_v4i16_clamp">; 3444def int_nvvm_sust_b_2d_v4i32_clamp 3445 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3446 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3447 "llvm.nvvm.sust.b.2d.v4i32.clamp">, 3448 ClangBuiltin<"__nvvm_sust_b_2d_v4i32_clamp">; 3449 3450 3451def int_nvvm_sust_b_2d_array_i8_clamp 3452 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3453 llvm_i32_ty, llvm_i16_ty], [], 3454 "llvm.nvvm.sust.b.2d.array.i8.clamp">, 3455 ClangBuiltin<"__nvvm_sust_b_2d_array_i8_clamp">; 3456def int_nvvm_sust_b_2d_array_i16_clamp 3457 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3458 llvm_i32_ty, llvm_i16_ty], [], 3459 "llvm.nvvm.sust.b.2d.array.i16.clamp">, 3460 ClangBuiltin<"__nvvm_sust_b_2d_array_i16_clamp">; 3461def int_nvvm_sust_b_2d_array_i32_clamp 3462 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3463 llvm_i32_ty, llvm_i32_ty], [], 3464 "llvm.nvvm.sust.b.2d.array.i32.clamp">, 3465 ClangBuiltin<"__nvvm_sust_b_2d_array_i32_clamp">; 3466def int_nvvm_sust_b_2d_array_i64_clamp 3467 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3468 llvm_i32_ty, llvm_i64_ty], [], 3469 "llvm.nvvm.sust.b.2d.array.i64.clamp">, 3470 ClangBuiltin<"__nvvm_sust_b_2d_array_i64_clamp">; 3471def int_nvvm_sust_b_2d_array_v2i8_clamp 3472 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3473 llvm_i16_ty, llvm_i16_ty], [], 3474 "llvm.nvvm.sust.b.2d.array.v2i8.clamp">, 3475 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i8_clamp">; 3476def int_nvvm_sust_b_2d_array_v2i16_clamp 3477 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3478 llvm_i16_ty, llvm_i16_ty], [], 3479 "llvm.nvvm.sust.b.2d.array.v2i16.clamp">, 3480 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i16_clamp">; 3481def int_nvvm_sust_b_2d_array_v2i32_clamp 3482 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3483 llvm_i32_ty, llvm_i32_ty], [], 3484 "llvm.nvvm.sust.b.2d.array.v2i32.clamp">, 3485 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i32_clamp">; 3486def int_nvvm_sust_b_2d_array_v2i64_clamp 3487 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3488 llvm_i64_ty, llvm_i64_ty], [], 3489 "llvm.nvvm.sust.b.2d.array.v2i64.clamp">, 3490 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i64_clamp">; 3491def int_nvvm_sust_b_2d_array_v4i8_clamp 3492 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3493 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3494 "llvm.nvvm.sust.b.2d.array.v4i8.clamp">, 3495 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i8_clamp">; 3496def int_nvvm_sust_b_2d_array_v4i16_clamp 3497 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3498 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3499 "llvm.nvvm.sust.b.2d.array.v4i16.clamp">, 3500 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i16_clamp">; 3501def int_nvvm_sust_b_2d_array_v4i32_clamp 3502 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3503 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3504 "llvm.nvvm.sust.b.2d.array.v4i32.clamp">, 3505 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i32_clamp">; 3506 3507 3508def int_nvvm_sust_b_3d_i8_clamp 3509 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3510 llvm_i32_ty, llvm_i16_ty], [], 3511 "llvm.nvvm.sust.b.3d.i8.clamp">, 3512 ClangBuiltin<"__nvvm_sust_b_3d_i8_clamp">; 3513def int_nvvm_sust_b_3d_i16_clamp 3514 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3515 llvm_i32_ty, llvm_i16_ty], [], 3516 "llvm.nvvm.sust.b.3d.i16.clamp">, 3517 ClangBuiltin<"__nvvm_sust_b_3d_i16_clamp">; 3518def int_nvvm_sust_b_3d_i32_clamp 3519 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3520 llvm_i32_ty, llvm_i32_ty], [], 3521 "llvm.nvvm.sust.b.3d.i32.clamp">, 3522 ClangBuiltin<"__nvvm_sust_b_3d_i32_clamp">; 3523def int_nvvm_sust_b_3d_i64_clamp 3524 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3525 llvm_i32_ty, llvm_i64_ty], [], 3526 "llvm.nvvm.sust.b.3d.i64.clamp">, 3527 ClangBuiltin<"__nvvm_sust_b_3d_i64_clamp">; 3528def int_nvvm_sust_b_3d_v2i8_clamp 3529 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3530 llvm_i16_ty, llvm_i16_ty], [], 3531 "llvm.nvvm.sust.b.3d.v2i8.clamp">, 3532 ClangBuiltin<"__nvvm_sust_b_3d_v2i8_clamp">; 3533def int_nvvm_sust_b_3d_v2i16_clamp 3534 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3535 llvm_i16_ty, llvm_i16_ty], [], 3536 "llvm.nvvm.sust.b.3d.v2i16.clamp">, 3537 ClangBuiltin<"__nvvm_sust_b_3d_v2i16_clamp">; 3538def int_nvvm_sust_b_3d_v2i32_clamp 3539 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3540 llvm_i32_ty, llvm_i32_ty], [], 3541 "llvm.nvvm.sust.b.3d.v2i32.clamp">, 3542 ClangBuiltin<"__nvvm_sust_b_3d_v2i32_clamp">; 3543def int_nvvm_sust_b_3d_v2i64_clamp 3544 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3545 llvm_i64_ty, llvm_i64_ty], [], 3546 "llvm.nvvm.sust.b.3d.v2i64.clamp">, 3547 ClangBuiltin<"__nvvm_sust_b_3d_v2i64_clamp">; 3548def int_nvvm_sust_b_3d_v4i8_clamp 3549 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3550 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3551 "llvm.nvvm.sust.b.3d.v4i8.clamp">, 3552 ClangBuiltin<"__nvvm_sust_b_3d_v4i8_clamp">; 3553def int_nvvm_sust_b_3d_v4i16_clamp 3554 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3555 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3556 "llvm.nvvm.sust.b.3d.v4i16.clamp">, 3557 ClangBuiltin<"__nvvm_sust_b_3d_v4i16_clamp">; 3558def int_nvvm_sust_b_3d_v4i32_clamp 3559 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3560 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3561 "llvm.nvvm.sust.b.3d.v4i32.clamp">, 3562 ClangBuiltin<"__nvvm_sust_b_3d_v4i32_clamp">; 3563 3564 3565// .trap variant 3566def int_nvvm_sust_b_1d_i8_trap 3567 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 3568 "llvm.nvvm.sust.b.1d.i8.trap">, 3569 ClangBuiltin<"__nvvm_sust_b_1d_i8_trap">; 3570def int_nvvm_sust_b_1d_i16_trap 3571 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 3572 "llvm.nvvm.sust.b.1d.i16.trap">, 3573 ClangBuiltin<"__nvvm_sust_b_1d_i16_trap">; 3574def int_nvvm_sust_b_1d_i32_trap 3575 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3576 "llvm.nvvm.sust.b.1d.i32.trap">, 3577 ClangBuiltin<"__nvvm_sust_b_1d_i32_trap">; 3578def int_nvvm_sust_b_1d_i64_trap 3579 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [], 3580 "llvm.nvvm.sust.b.1d.i64.trap">, 3581 ClangBuiltin<"__nvvm_sust_b_1d_i64_trap">; 3582def int_nvvm_sust_b_1d_v2i8_trap 3583 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 3584 "llvm.nvvm.sust.b.1d.v2i8.trap">, 3585 ClangBuiltin<"__nvvm_sust_b_1d_v2i8_trap">; 3586def int_nvvm_sust_b_1d_v2i16_trap 3587 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 3588 "llvm.nvvm.sust.b.1d.v2i16.trap">, 3589 ClangBuiltin<"__nvvm_sust_b_1d_v2i16_trap">; 3590def int_nvvm_sust_b_1d_v2i32_trap 3591 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3592 "llvm.nvvm.sust.b.1d.v2i32.trap">, 3593 ClangBuiltin<"__nvvm_sust_b_1d_v2i32_trap">; 3594def int_nvvm_sust_b_1d_v2i64_trap 3595 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [], 3596 "llvm.nvvm.sust.b.1d.v2i64.trap">, 3597 ClangBuiltin<"__nvvm_sust_b_1d_v2i64_trap">; 3598def int_nvvm_sust_b_1d_v4i8_trap 3599 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 3600 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3601 "llvm.nvvm.sust.b.1d.v4i8.trap">, 3602 ClangBuiltin<"__nvvm_sust_b_1d_v4i8_trap">; 3603def int_nvvm_sust_b_1d_v4i16_trap 3604 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 3605 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3606 "llvm.nvvm.sust.b.1d.v4i16.trap">, 3607 ClangBuiltin<"__nvvm_sust_b_1d_v4i16_trap">; 3608def int_nvvm_sust_b_1d_v4i32_trap 3609 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3610 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3611 "llvm.nvvm.sust.b.1d.v4i32.trap">, 3612 ClangBuiltin<"__nvvm_sust_b_1d_v4i32_trap">; 3613 3614 3615def int_nvvm_sust_b_1d_array_i8_trap 3616 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3617 "llvm.nvvm.sust.b.1d.array.i8.trap">, 3618 ClangBuiltin<"__nvvm_sust_b_1d_array_i8_trap">; 3619def int_nvvm_sust_b_1d_array_i16_trap 3620 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3621 "llvm.nvvm.sust.b.1d.array.i16.trap">, 3622 ClangBuiltin<"__nvvm_sust_b_1d_array_i16_trap">; 3623def int_nvvm_sust_b_1d_array_i32_trap 3624 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3625 "llvm.nvvm.sust.b.1d.array.i32.trap">, 3626 ClangBuiltin<"__nvvm_sust_b_1d_array_i32_trap">; 3627def int_nvvm_sust_b_1d_array_i64_trap 3628 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [], 3629 "llvm.nvvm.sust.b.1d.array.i64.trap">, 3630 ClangBuiltin<"__nvvm_sust_b_1d_array_i64_trap">; 3631def int_nvvm_sust_b_1d_array_v2i8_trap 3632 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3633 llvm_i16_ty, llvm_i16_ty], [], 3634 "llvm.nvvm.sust.b.1d.array.v2i8.trap">, 3635 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i8_trap">; 3636def int_nvvm_sust_b_1d_array_v2i16_trap 3637 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3638 llvm_i16_ty, llvm_i16_ty], [], 3639 "llvm.nvvm.sust.b.1d.array.v2i16.trap">, 3640 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i16_trap">; 3641def int_nvvm_sust_b_1d_array_v2i32_trap 3642 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3643 llvm_i32_ty, llvm_i32_ty], [], 3644 "llvm.nvvm.sust.b.1d.array.v2i32.trap">, 3645 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i32_trap">; 3646def int_nvvm_sust_b_1d_array_v2i64_trap 3647 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3648 llvm_i64_ty, llvm_i64_ty], [], 3649 "llvm.nvvm.sust.b.1d.array.v2i64.trap">, 3650 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i64_trap">; 3651def int_nvvm_sust_b_1d_array_v4i8_trap 3652 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3653 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3654 "llvm.nvvm.sust.b.1d.array.v4i8.trap">, 3655 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i8_trap">; 3656def int_nvvm_sust_b_1d_array_v4i16_trap 3657 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3658 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3659 "llvm.nvvm.sust.b.1d.array.v4i16.trap">, 3660 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i16_trap">; 3661def int_nvvm_sust_b_1d_array_v4i32_trap 3662 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3663 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3664 "llvm.nvvm.sust.b.1d.array.v4i32.trap">, 3665 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i32_trap">; 3666 3667 3668def int_nvvm_sust_b_2d_i8_trap 3669 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3670 "llvm.nvvm.sust.b.2d.i8.trap">, 3671 ClangBuiltin<"__nvvm_sust_b_2d_i8_trap">; 3672def int_nvvm_sust_b_2d_i16_trap 3673 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3674 "llvm.nvvm.sust.b.2d.i16.trap">, 3675 ClangBuiltin<"__nvvm_sust_b_2d_i16_trap">; 3676def int_nvvm_sust_b_2d_i32_trap 3677 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3678 "llvm.nvvm.sust.b.2d.i32.trap">, 3679 ClangBuiltin<"__nvvm_sust_b_2d_i32_trap">; 3680def int_nvvm_sust_b_2d_i64_trap 3681 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [], 3682 "llvm.nvvm.sust.b.2d.i64.trap">, 3683 ClangBuiltin<"__nvvm_sust_b_2d_i64_trap">; 3684def int_nvvm_sust_b_2d_v2i8_trap 3685 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3686 llvm_i16_ty, llvm_i16_ty], [], 3687 "llvm.nvvm.sust.b.2d.v2i8.trap">, 3688 ClangBuiltin<"__nvvm_sust_b_2d_v2i8_trap">; 3689def int_nvvm_sust_b_2d_v2i16_trap 3690 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3691 llvm_i16_ty, llvm_i16_ty], [], 3692 "llvm.nvvm.sust.b.2d.v2i16.trap">, 3693 ClangBuiltin<"__nvvm_sust_b_2d_v2i16_trap">; 3694def int_nvvm_sust_b_2d_v2i32_trap 3695 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3696 llvm_i32_ty, llvm_i32_ty], [], 3697 "llvm.nvvm.sust.b.2d.v2i32.trap">, 3698 ClangBuiltin<"__nvvm_sust_b_2d_v2i32_trap">; 3699def int_nvvm_sust_b_2d_v2i64_trap 3700 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3701 llvm_i64_ty, llvm_i64_ty], [], 3702 "llvm.nvvm.sust.b.2d.v2i64.trap">, 3703 ClangBuiltin<"__nvvm_sust_b_2d_v2i64_trap">; 3704def int_nvvm_sust_b_2d_v4i8_trap 3705 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3706 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3707 "llvm.nvvm.sust.b.2d.v4i8.trap">, 3708 ClangBuiltin<"__nvvm_sust_b_2d_v4i8_trap">; 3709def int_nvvm_sust_b_2d_v4i16_trap 3710 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3711 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3712 "llvm.nvvm.sust.b.2d.v4i16.trap">, 3713 ClangBuiltin<"__nvvm_sust_b_2d_v4i16_trap">; 3714def int_nvvm_sust_b_2d_v4i32_trap 3715 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3716 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3717 "llvm.nvvm.sust.b.2d.v4i32.trap">, 3718 ClangBuiltin<"__nvvm_sust_b_2d_v4i32_trap">; 3719 3720 3721def int_nvvm_sust_b_2d_array_i8_trap 3722 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3723 llvm_i32_ty, llvm_i16_ty], [], 3724 "llvm.nvvm.sust.b.2d.array.i8.trap">, 3725 ClangBuiltin<"__nvvm_sust_b_2d_array_i8_trap">; 3726def int_nvvm_sust_b_2d_array_i16_trap 3727 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3728 llvm_i32_ty, llvm_i16_ty], [], 3729 "llvm.nvvm.sust.b.2d.array.i16.trap">, 3730 ClangBuiltin<"__nvvm_sust_b_2d_array_i16_trap">; 3731def int_nvvm_sust_b_2d_array_i32_trap 3732 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3733 llvm_i32_ty, llvm_i32_ty], [], 3734 "llvm.nvvm.sust.b.2d.array.i32.trap">, 3735 ClangBuiltin<"__nvvm_sust_b_2d_array_i32_trap">; 3736def int_nvvm_sust_b_2d_array_i64_trap 3737 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3738 llvm_i32_ty, llvm_i64_ty], [], 3739 "llvm.nvvm.sust.b.2d.array.i64.trap">, 3740 ClangBuiltin<"__nvvm_sust_b_2d_array_i64_trap">; 3741def int_nvvm_sust_b_2d_array_v2i8_trap 3742 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3743 llvm_i16_ty, llvm_i16_ty], [], 3744 "llvm.nvvm.sust.b.2d.array.v2i8.trap">, 3745 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i8_trap">; 3746def int_nvvm_sust_b_2d_array_v2i16_trap 3747 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3748 llvm_i16_ty, llvm_i16_ty], [], 3749 "llvm.nvvm.sust.b.2d.array.v2i16.trap">, 3750 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i16_trap">; 3751def int_nvvm_sust_b_2d_array_v2i32_trap 3752 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3753 llvm_i32_ty, llvm_i32_ty], [], 3754 "llvm.nvvm.sust.b.2d.array.v2i32.trap">, 3755 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i32_trap">; 3756def int_nvvm_sust_b_2d_array_v2i64_trap 3757 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3758 llvm_i64_ty, llvm_i64_ty], [], 3759 "llvm.nvvm.sust.b.2d.array.v2i64.trap">, 3760 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i64_trap">; 3761def int_nvvm_sust_b_2d_array_v4i8_trap 3762 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3763 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3764 "llvm.nvvm.sust.b.2d.array.v4i8.trap">, 3765 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i8_trap">; 3766def int_nvvm_sust_b_2d_array_v4i16_trap 3767 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3768 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3769 "llvm.nvvm.sust.b.2d.array.v4i16.trap">, 3770 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i16_trap">; 3771def int_nvvm_sust_b_2d_array_v4i32_trap 3772 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3773 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3774 "llvm.nvvm.sust.b.2d.array.v4i32.trap">, 3775 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i32_trap">; 3776 3777 3778def int_nvvm_sust_b_3d_i8_trap 3779 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3780 llvm_i32_ty, llvm_i16_ty], [], 3781 "llvm.nvvm.sust.b.3d.i8.trap">, 3782 ClangBuiltin<"__nvvm_sust_b_3d_i8_trap">; 3783def int_nvvm_sust_b_3d_i16_trap 3784 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3785 llvm_i32_ty, llvm_i16_ty], [], 3786 "llvm.nvvm.sust.b.3d.i16.trap">, 3787 ClangBuiltin<"__nvvm_sust_b_3d_i16_trap">; 3788def int_nvvm_sust_b_3d_i32_trap 3789 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3790 llvm_i32_ty, llvm_i32_ty], [], 3791 "llvm.nvvm.sust.b.3d.i32.trap">, 3792 ClangBuiltin<"__nvvm_sust_b_3d_i32_trap">; 3793def int_nvvm_sust_b_3d_i64_trap 3794 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3795 llvm_i32_ty, llvm_i64_ty], [], 3796 "llvm.nvvm.sust.b.3d.i64.trap">, 3797 ClangBuiltin<"__nvvm_sust_b_3d_i64_trap">; 3798def int_nvvm_sust_b_3d_v2i8_trap 3799 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3800 llvm_i16_ty, llvm_i16_ty], [], 3801 "llvm.nvvm.sust.b.3d.v2i8.trap">, 3802 ClangBuiltin<"__nvvm_sust_b_3d_v2i8_trap">; 3803def int_nvvm_sust_b_3d_v2i16_trap 3804 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3805 llvm_i16_ty, llvm_i16_ty], [], 3806 "llvm.nvvm.sust.b.3d.v2i16.trap">, 3807 ClangBuiltin<"__nvvm_sust_b_3d_v2i16_trap">; 3808def int_nvvm_sust_b_3d_v2i32_trap 3809 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3810 llvm_i32_ty, llvm_i32_ty], [], 3811 "llvm.nvvm.sust.b.3d.v2i32.trap">, 3812 ClangBuiltin<"__nvvm_sust_b_3d_v2i32_trap">; 3813def int_nvvm_sust_b_3d_v2i64_trap 3814 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3815 llvm_i64_ty, llvm_i64_ty], [], 3816 "llvm.nvvm.sust.b.3d.v2i64.trap">, 3817 ClangBuiltin<"__nvvm_sust_b_3d_v2i64_trap">; 3818def int_nvvm_sust_b_3d_v4i8_trap 3819 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3820 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3821 "llvm.nvvm.sust.b.3d.v4i8.trap">, 3822 ClangBuiltin<"__nvvm_sust_b_3d_v4i8_trap">; 3823def int_nvvm_sust_b_3d_v4i16_trap 3824 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3825 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3826 "llvm.nvvm.sust.b.3d.v4i16.trap">, 3827 ClangBuiltin<"__nvvm_sust_b_3d_v4i16_trap">; 3828def int_nvvm_sust_b_3d_v4i32_trap 3829 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3830 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3831 "llvm.nvvm.sust.b.3d.v4i32.trap">, 3832 ClangBuiltin<"__nvvm_sust_b_3d_v4i32_trap">; 3833 3834 3835// .zero variant 3836def int_nvvm_sust_b_1d_i8_zero 3837 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 3838 "llvm.nvvm.sust.b.1d.i8.zero">, 3839 ClangBuiltin<"__nvvm_sust_b_1d_i8_zero">; 3840def int_nvvm_sust_b_1d_i16_zero 3841 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 3842 "llvm.nvvm.sust.b.1d.i16.zero">, 3843 ClangBuiltin<"__nvvm_sust_b_1d_i16_zero">; 3844def int_nvvm_sust_b_1d_i32_zero 3845 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 3846 "llvm.nvvm.sust.b.1d.i32.zero">, 3847 ClangBuiltin<"__nvvm_sust_b_1d_i32_zero">; 3848def int_nvvm_sust_b_1d_i64_zero 3849 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty], [], 3850 "llvm.nvvm.sust.b.1d.i64.zero">, 3851 ClangBuiltin<"__nvvm_sust_b_1d_i64_zero">; 3852def int_nvvm_sust_b_1d_v2i8_zero 3853 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 3854 "llvm.nvvm.sust.b.1d.v2i8.zero">, 3855 ClangBuiltin<"__nvvm_sust_b_1d_v2i8_zero">; 3856def int_nvvm_sust_b_1d_v2i16_zero 3857 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 3858 "llvm.nvvm.sust.b.1d.v2i16.zero">, 3859 ClangBuiltin<"__nvvm_sust_b_1d_v2i16_zero">; 3860def int_nvvm_sust_b_1d_v2i32_zero 3861 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3862 "llvm.nvvm.sust.b.1d.v2i32.zero">, 3863 ClangBuiltin<"__nvvm_sust_b_1d_v2i32_zero">; 3864def int_nvvm_sust_b_1d_v2i64_zero 3865 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i64_ty, llvm_i64_ty], [], 3866 "llvm.nvvm.sust.b.1d.v2i64.zero">, 3867 ClangBuiltin<"__nvvm_sust_b_1d_v2i64_zero">; 3868def int_nvvm_sust_b_1d_v4i8_zero 3869 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 3870 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3871 "llvm.nvvm.sust.b.1d.v4i8.zero">, 3872 ClangBuiltin<"__nvvm_sust_b_1d_v4i8_zero">; 3873def int_nvvm_sust_b_1d_v4i16_zero 3874 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 3875 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3876 "llvm.nvvm.sust.b.1d.v4i16.zero">, 3877 ClangBuiltin<"__nvvm_sust_b_1d_v4i16_zero">; 3878def int_nvvm_sust_b_1d_v4i32_zero 3879 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3880 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3881 "llvm.nvvm.sust.b.1d.v4i32.zero">, 3882 ClangBuiltin<"__nvvm_sust_b_1d_v4i32_zero">; 3883 3884 3885def int_nvvm_sust_b_1d_array_i8_zero 3886 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3887 "llvm.nvvm.sust.b.1d.array.i8.zero">, 3888 ClangBuiltin<"__nvvm_sust_b_1d_array_i8_zero">; 3889def int_nvvm_sust_b_1d_array_i16_zero 3890 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3891 "llvm.nvvm.sust.b.1d.array.i16.zero">, 3892 ClangBuiltin<"__nvvm_sust_b_1d_array_i16_zero">; 3893def int_nvvm_sust_b_1d_array_i32_zero 3894 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3895 "llvm.nvvm.sust.b.1d.array.i32.zero">, 3896 ClangBuiltin<"__nvvm_sust_b_1d_array_i32_zero">; 3897def int_nvvm_sust_b_1d_array_i64_zero 3898 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [], 3899 "llvm.nvvm.sust.b.1d.array.i64.zero">, 3900 ClangBuiltin<"__nvvm_sust_b_1d_array_i64_zero">; 3901def int_nvvm_sust_b_1d_array_v2i8_zero 3902 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3903 llvm_i16_ty, llvm_i16_ty], [], 3904 "llvm.nvvm.sust.b.1d.array.v2i8.zero">, 3905 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i8_zero">; 3906def int_nvvm_sust_b_1d_array_v2i16_zero 3907 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3908 llvm_i16_ty, llvm_i16_ty], [], 3909 "llvm.nvvm.sust.b.1d.array.v2i16.zero">, 3910 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i16_zero">; 3911def int_nvvm_sust_b_1d_array_v2i32_zero 3912 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3913 llvm_i32_ty, llvm_i32_ty], [], 3914 "llvm.nvvm.sust.b.1d.array.v2i32.zero">, 3915 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i32_zero">; 3916def int_nvvm_sust_b_1d_array_v2i64_zero 3917 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3918 llvm_i64_ty, llvm_i64_ty], [], 3919 "llvm.nvvm.sust.b.1d.array.v2i64.zero">, 3920 ClangBuiltin<"__nvvm_sust_b_1d_array_v2i64_zero">; 3921def int_nvvm_sust_b_1d_array_v4i8_zero 3922 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3923 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3924 "llvm.nvvm.sust.b.1d.array.v4i8.zero">, 3925 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i8_zero">; 3926def int_nvvm_sust_b_1d_array_v4i16_zero 3927 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3928 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3929 "llvm.nvvm.sust.b.1d.array.v4i16.zero">, 3930 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i16_zero">; 3931def int_nvvm_sust_b_1d_array_v4i32_zero 3932 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3933 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3934 "llvm.nvvm.sust.b.1d.array.v4i32.zero">, 3935 ClangBuiltin<"__nvvm_sust_b_1d_array_v4i32_zero">; 3936 3937 3938def int_nvvm_sust_b_2d_i8_zero 3939 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3940 "llvm.nvvm.sust.b.2d.i8.zero">, 3941 ClangBuiltin<"__nvvm_sust_b_2d_i8_zero">; 3942def int_nvvm_sust_b_2d_i16_zero 3943 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 3944 "llvm.nvvm.sust.b.2d.i16.zero">, 3945 ClangBuiltin<"__nvvm_sust_b_2d_i16_zero">; 3946def int_nvvm_sust_b_2d_i32_zero 3947 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3948 "llvm.nvvm.sust.b.2d.i32.zero">, 3949 ClangBuiltin<"__nvvm_sust_b_2d_i32_zero">; 3950def int_nvvm_sust_b_2d_i64_zero 3951 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i64_ty], [], 3952 "llvm.nvvm.sust.b.2d.i64.zero">, 3953 ClangBuiltin<"__nvvm_sust_b_2d_i64_zero">; 3954def int_nvvm_sust_b_2d_v2i8_zero 3955 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3956 llvm_i16_ty, llvm_i16_ty], [], 3957 "llvm.nvvm.sust.b.2d.v2i8.zero">, 3958 ClangBuiltin<"__nvvm_sust_b_2d_v2i8_zero">; 3959def int_nvvm_sust_b_2d_v2i16_zero 3960 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3961 llvm_i16_ty, llvm_i16_ty], [], 3962 "llvm.nvvm.sust.b.2d.v2i16.zero">, 3963 ClangBuiltin<"__nvvm_sust_b_2d_v2i16_zero">; 3964def int_nvvm_sust_b_2d_v2i32_zero 3965 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3966 llvm_i32_ty, llvm_i32_ty], [], 3967 "llvm.nvvm.sust.b.2d.v2i32.zero">, 3968 ClangBuiltin<"__nvvm_sust_b_2d_v2i32_zero">; 3969def int_nvvm_sust_b_2d_v2i64_zero 3970 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3971 llvm_i64_ty, llvm_i64_ty], [], 3972 "llvm.nvvm.sust.b.2d.v2i64.zero">, 3973 ClangBuiltin<"__nvvm_sust_b_2d_v2i64_zero">; 3974def int_nvvm_sust_b_2d_v4i8_zero 3975 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3976 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3977 "llvm.nvvm.sust.b.2d.v4i8.zero">, 3978 ClangBuiltin<"__nvvm_sust_b_2d_v4i8_zero">; 3979def int_nvvm_sust_b_2d_v4i16_zero 3980 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 3981 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 3982 "llvm.nvvm.sust.b.2d.v4i16.zero">, 3983 ClangBuiltin<"__nvvm_sust_b_2d_v4i16_zero">; 3984def int_nvvm_sust_b_2d_v4i32_zero 3985 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 3986 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 3987 "llvm.nvvm.sust.b.2d.v4i32.zero">, 3988 ClangBuiltin<"__nvvm_sust_b_2d_v4i32_zero">; 3989 3990 3991def int_nvvm_sust_b_2d_array_i8_zero 3992 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3993 llvm_i32_ty, llvm_i16_ty], [], 3994 "llvm.nvvm.sust.b.2d.array.i8.zero">, 3995 ClangBuiltin<"__nvvm_sust_b_2d_array_i8_zero">; 3996def int_nvvm_sust_b_2d_array_i16_zero 3997 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 3998 llvm_i32_ty, llvm_i16_ty], [], 3999 "llvm.nvvm.sust.b.2d.array.i16.zero">, 4000 ClangBuiltin<"__nvvm_sust_b_2d_array_i16_zero">; 4001def int_nvvm_sust_b_2d_array_i32_zero 4002 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4003 llvm_i32_ty, llvm_i32_ty], [], 4004 "llvm.nvvm.sust.b.2d.array.i32.zero">, 4005 ClangBuiltin<"__nvvm_sust_b_2d_array_i32_zero">; 4006def int_nvvm_sust_b_2d_array_i64_zero 4007 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4008 llvm_i32_ty, llvm_i64_ty], [], 4009 "llvm.nvvm.sust.b.2d.array.i64.zero">, 4010 ClangBuiltin<"__nvvm_sust_b_2d_array_i64_zero">; 4011def int_nvvm_sust_b_2d_array_v2i8_zero 4012 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4013 llvm_i16_ty, llvm_i16_ty], [], 4014 "llvm.nvvm.sust.b.2d.array.v2i8.zero">, 4015 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i8_zero">; 4016def int_nvvm_sust_b_2d_array_v2i16_zero 4017 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4018 llvm_i16_ty, llvm_i16_ty], [], 4019 "llvm.nvvm.sust.b.2d.array.v2i16.zero">, 4020 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i16_zero">; 4021def int_nvvm_sust_b_2d_array_v2i32_zero 4022 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4023 llvm_i32_ty, llvm_i32_ty], [], 4024 "llvm.nvvm.sust.b.2d.array.v2i32.zero">, 4025 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i32_zero">; 4026def int_nvvm_sust_b_2d_array_v2i64_zero 4027 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4028 llvm_i64_ty, llvm_i64_ty], [], 4029 "llvm.nvvm.sust.b.2d.array.v2i64.zero">, 4030 ClangBuiltin<"__nvvm_sust_b_2d_array_v2i64_zero">; 4031def int_nvvm_sust_b_2d_array_v4i8_zero 4032 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4033 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4034 "llvm.nvvm.sust.b.2d.array.v4i8.zero">, 4035 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i8_zero">; 4036def int_nvvm_sust_b_2d_array_v4i16_zero 4037 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4038 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4039 "llvm.nvvm.sust.b.2d.array.v4i16.zero">, 4040 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i16_zero">; 4041def int_nvvm_sust_b_2d_array_v4i32_zero 4042 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4043 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4044 "llvm.nvvm.sust.b.2d.array.v4i32.zero">, 4045 ClangBuiltin<"__nvvm_sust_b_2d_array_v4i32_zero">; 4046 4047 4048def int_nvvm_sust_b_3d_i8_zero 4049 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4050 llvm_i32_ty, llvm_i16_ty], [], 4051 "llvm.nvvm.sust.b.3d.i8.zero">, 4052 ClangBuiltin<"__nvvm_sust_b_3d_i8_zero">; 4053def int_nvvm_sust_b_3d_i16_zero 4054 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4055 llvm_i32_ty, llvm_i16_ty], [], 4056 "llvm.nvvm.sust.b.3d.i16.zero">, 4057 ClangBuiltin<"__nvvm_sust_b_3d_i16_zero">; 4058def int_nvvm_sust_b_3d_i32_zero 4059 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4060 llvm_i32_ty, llvm_i32_ty], [], 4061 "llvm.nvvm.sust.b.3d.i32.zero">, 4062 ClangBuiltin<"__nvvm_sust_b_3d_i32_zero">; 4063def int_nvvm_sust_b_3d_i64_zero 4064 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4065 llvm_i32_ty, llvm_i64_ty], [], 4066 "llvm.nvvm.sust.b.3d.i64.zero">, 4067 ClangBuiltin<"__nvvm_sust_b_3d_i64_zero">; 4068def int_nvvm_sust_b_3d_v2i8_zero 4069 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4070 llvm_i16_ty, llvm_i16_ty], [], 4071 "llvm.nvvm.sust.b.3d.v2i8.zero">, 4072 ClangBuiltin<"__nvvm_sust_b_3d_v2i8_zero">; 4073def int_nvvm_sust_b_3d_v2i16_zero 4074 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4075 llvm_i16_ty, llvm_i16_ty], [], 4076 "llvm.nvvm.sust.b.3d.v2i16.zero">, 4077 ClangBuiltin<"__nvvm_sust_b_3d_v2i16_zero">; 4078def int_nvvm_sust_b_3d_v2i32_zero 4079 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4080 llvm_i32_ty, llvm_i32_ty], [], 4081 "llvm.nvvm.sust.b.3d.v2i32.zero">, 4082 ClangBuiltin<"__nvvm_sust_b_3d_v2i32_zero">; 4083def int_nvvm_sust_b_3d_v2i64_zero 4084 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4085 llvm_i64_ty, llvm_i64_ty], [], 4086 "llvm.nvvm.sust.b.3d.v2i64.zero">, 4087 ClangBuiltin<"__nvvm_sust_b_3d_v2i64_zero">; 4088def int_nvvm_sust_b_3d_v4i8_zero 4089 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4090 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4091 "llvm.nvvm.sust.b.3d.v4i8.zero">, 4092 ClangBuiltin<"__nvvm_sust_b_3d_v4i8_zero">; 4093def int_nvvm_sust_b_3d_v4i16_zero 4094 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4095 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4096 "llvm.nvvm.sust.b.3d.v4i16.zero">, 4097 ClangBuiltin<"__nvvm_sust_b_3d_v4i16_zero">; 4098def int_nvvm_sust_b_3d_v4i32_zero 4099 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4100 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4101 "llvm.nvvm.sust.b.3d.v4i32.zero">, 4102 ClangBuiltin<"__nvvm_sust_b_3d_v4i32_zero">; 4103 4104 4105 4106// Formatted 4107 4108def int_nvvm_sust_p_1d_i8_trap 4109 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 4110 "llvm.nvvm.sust.p.1d.i8.trap">, 4111 ClangBuiltin<"__nvvm_sust_p_1d_i8_trap">; 4112def int_nvvm_sust_p_1d_i16_trap 4113 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty], [], 4114 "llvm.nvvm.sust.p.1d.i16.trap">, 4115 ClangBuiltin<"__nvvm_sust_p_1d_i16_trap">; 4116def int_nvvm_sust_p_1d_i32_trap 4117 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty], [], 4118 "llvm.nvvm.sust.p.1d.i32.trap">, 4119 ClangBuiltin<"__nvvm_sust_p_1d_i32_trap">; 4120def int_nvvm_sust_p_1d_v2i8_trap 4121 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 4122 "llvm.nvvm.sust.p.1d.v2i8.trap">, 4123 ClangBuiltin<"__nvvm_sust_p_1d_v2i8_trap">; 4124def int_nvvm_sust_p_1d_v2i16_trap 4125 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, llvm_i16_ty], [], 4126 "llvm.nvvm.sust.p.1d.v2i16.trap">, 4127 ClangBuiltin<"__nvvm_sust_p_1d_v2i16_trap">; 4128def int_nvvm_sust_p_1d_v2i32_trap 4129 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4130 "llvm.nvvm.sust.p.1d.v2i32.trap">, 4131 ClangBuiltin<"__nvvm_sust_p_1d_v2i32_trap">; 4132def int_nvvm_sust_p_1d_v4i8_trap 4133 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 4134 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4135 "llvm.nvvm.sust.p.1d.v4i8.trap">, 4136 ClangBuiltin<"__nvvm_sust_p_1d_v4i8_trap">; 4137def int_nvvm_sust_p_1d_v4i16_trap 4138 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i16_ty, 4139 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4140 "llvm.nvvm.sust.p.1d.v4i16.trap">, 4141 ClangBuiltin<"__nvvm_sust_p_1d_v4i16_trap">; 4142def int_nvvm_sust_p_1d_v4i32_trap 4143 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4144 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4145 "llvm.nvvm.sust.p.1d.v4i32.trap">, 4146 ClangBuiltin<"__nvvm_sust_p_1d_v4i32_trap">; 4147 4148 4149def int_nvvm_sust_p_1d_array_i8_trap 4150 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 4151 "llvm.nvvm.sust.p.1d.array.i8.trap">, 4152 ClangBuiltin<"__nvvm_sust_p_1d_array_i8_trap">; 4153def int_nvvm_sust_p_1d_array_i16_trap 4154 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 4155 "llvm.nvvm.sust.p.1d.array.i16.trap">, 4156 ClangBuiltin<"__nvvm_sust_p_1d_array_i16_trap">; 4157def int_nvvm_sust_p_1d_array_i32_trap 4158 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4159 "llvm.nvvm.sust.p.1d.array.i32.trap">, 4160 ClangBuiltin<"__nvvm_sust_p_1d_array_i32_trap">; 4161def int_nvvm_sust_p_1d_array_v2i8_trap 4162 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4163 llvm_i16_ty, llvm_i16_ty], [], 4164 "llvm.nvvm.sust.p.1d.array.v2i8.trap">, 4165 ClangBuiltin<"__nvvm_sust_p_1d_array_v2i8_trap">; 4166def int_nvvm_sust_p_1d_array_v2i16_trap 4167 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4168 llvm_i16_ty, llvm_i16_ty], [], 4169 "llvm.nvvm.sust.p.1d.array.v2i16.trap">, 4170 ClangBuiltin<"__nvvm_sust_p_1d_array_v2i16_trap">; 4171def int_nvvm_sust_p_1d_array_v2i32_trap 4172 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4173 llvm_i32_ty, llvm_i32_ty], [], 4174 "llvm.nvvm.sust.p.1d.array.v2i32.trap">, 4175 ClangBuiltin<"__nvvm_sust_p_1d_array_v2i32_trap">; 4176def int_nvvm_sust_p_1d_array_v4i8_trap 4177 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 4178 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4179 "llvm.nvvm.sust.p.1d.array.v4i8.trap">, 4180 ClangBuiltin<"__nvvm_sust_p_1d_array_v4i8_trap">; 4181def int_nvvm_sust_p_1d_array_v4i16_trap 4182 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 4183 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4184 "llvm.nvvm.sust.p.1d.array.v4i16.trap">, 4185 ClangBuiltin<"__nvvm_sust_p_1d_array_v4i16_trap">; 4186def int_nvvm_sust_p_1d_array_v4i32_trap 4187 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4188 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4189 "llvm.nvvm.sust.p.1d.array.v4i32.trap">, 4190 ClangBuiltin<"__nvvm_sust_p_1d_array_v4i32_trap">; 4191 4192 4193def int_nvvm_sust_p_2d_i8_trap 4194 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 4195 "llvm.nvvm.sust.p.2d.i8.trap">, 4196 ClangBuiltin<"__nvvm_sust_p_2d_i8_trap">; 4197def int_nvvm_sust_p_2d_i16_trap 4198 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty], [], 4199 "llvm.nvvm.sust.p.2d.i16.trap">, 4200 ClangBuiltin<"__nvvm_sust_p_2d_i16_trap">; 4201def int_nvvm_sust_p_2d_i32_trap 4202 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4203 "llvm.nvvm.sust.p.2d.i32.trap">, 4204 ClangBuiltin<"__nvvm_sust_p_2d_i32_trap">; 4205def int_nvvm_sust_p_2d_v2i8_trap 4206 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4207 llvm_i16_ty, llvm_i16_ty], [], 4208 "llvm.nvvm.sust.p.2d.v2i8.trap">, 4209 ClangBuiltin<"__nvvm_sust_p_2d_v2i8_trap">; 4210def int_nvvm_sust_p_2d_v2i16_trap 4211 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4212 llvm_i16_ty, llvm_i16_ty], [], 4213 "llvm.nvvm.sust.p.2d.v2i16.trap">, 4214 ClangBuiltin<"__nvvm_sust_p_2d_v2i16_trap">; 4215def int_nvvm_sust_p_2d_v2i32_trap 4216 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4217 llvm_i32_ty, llvm_i32_ty], [], 4218 "llvm.nvvm.sust.p.2d.v2i32.trap">, 4219 ClangBuiltin<"__nvvm_sust_p_2d_v2i32_trap">; 4220def int_nvvm_sust_p_2d_v4i8_trap 4221 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 4222 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4223 "llvm.nvvm.sust.p.2d.v4i8.trap">, 4224 ClangBuiltin<"__nvvm_sust_p_2d_v4i8_trap">; 4225def int_nvvm_sust_p_2d_v4i16_trap 4226 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i16_ty, 4227 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4228 "llvm.nvvm.sust.p.2d.v4i16.trap">, 4229 ClangBuiltin<"__nvvm_sust_p_2d_v4i16_trap">; 4230def int_nvvm_sust_p_2d_v4i32_trap 4231 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4232 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4233 "llvm.nvvm.sust.p.2d.v4i32.trap">, 4234 ClangBuiltin<"__nvvm_sust_p_2d_v4i32_trap">; 4235 4236 4237def int_nvvm_sust_p_2d_array_i8_trap 4238 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4239 llvm_i32_ty, llvm_i16_ty], [], 4240 "llvm.nvvm.sust.p.2d.array.i8.trap">, 4241 ClangBuiltin<"__nvvm_sust_p_2d_array_i8_trap">; 4242def int_nvvm_sust_p_2d_array_i16_trap 4243 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4244 llvm_i32_ty, llvm_i16_ty], [], 4245 "llvm.nvvm.sust.p.2d.array.i16.trap">, 4246 ClangBuiltin<"__nvvm_sust_p_2d_array_i16_trap">; 4247def int_nvvm_sust_p_2d_array_i32_trap 4248 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4249 llvm_i32_ty, llvm_i32_ty], [], 4250 "llvm.nvvm.sust.p.2d.array.i32.trap">, 4251 ClangBuiltin<"__nvvm_sust_p_2d_array_i32_trap">; 4252def int_nvvm_sust_p_2d_array_v2i8_trap 4253 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4254 llvm_i16_ty, llvm_i16_ty], [], 4255 "llvm.nvvm.sust.p.2d.array.v2i8.trap">, 4256 ClangBuiltin<"__nvvm_sust_p_2d_array_v2i8_trap">; 4257def int_nvvm_sust_p_2d_array_v2i16_trap 4258 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4259 llvm_i16_ty, llvm_i16_ty], [], 4260 "llvm.nvvm.sust.p.2d.array.v2i16.trap">, 4261 ClangBuiltin<"__nvvm_sust_p_2d_array_v2i16_trap">; 4262def int_nvvm_sust_p_2d_array_v2i32_trap 4263 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4264 llvm_i32_ty, llvm_i32_ty], [], 4265 "llvm.nvvm.sust.p.2d.array.v2i32.trap">, 4266 ClangBuiltin<"__nvvm_sust_p_2d_array_v2i32_trap">; 4267def int_nvvm_sust_p_2d_array_v4i8_trap 4268 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4269 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4270 "llvm.nvvm.sust.p.2d.array.v4i8.trap">, 4271 ClangBuiltin<"__nvvm_sust_p_2d_array_v4i8_trap">; 4272def int_nvvm_sust_p_2d_array_v4i16_trap 4273 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4274 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4275 "llvm.nvvm.sust.p.2d.array.v4i16.trap">, 4276 ClangBuiltin<"__nvvm_sust_p_2d_array_v4i16_trap">; 4277def int_nvvm_sust_p_2d_array_v4i32_trap 4278 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4279 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4280 "llvm.nvvm.sust.p.2d.array.v4i32.trap">, 4281 ClangBuiltin<"__nvvm_sust_p_2d_array_v4i32_trap">; 4282 4283 4284def int_nvvm_sust_p_3d_i8_trap 4285 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4286 llvm_i32_ty, llvm_i16_ty], [], 4287 "llvm.nvvm.sust.p.3d.i8.trap">, 4288 ClangBuiltin<"__nvvm_sust_p_3d_i8_trap">; 4289def int_nvvm_sust_p_3d_i16_trap 4290 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4291 llvm_i32_ty, llvm_i16_ty], [], 4292 "llvm.nvvm.sust.p.3d.i16.trap">, 4293 ClangBuiltin<"__nvvm_sust_p_3d_i16_trap">; 4294def int_nvvm_sust_p_3d_i32_trap 4295 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, 4296 llvm_i32_ty, llvm_i32_ty], [], 4297 "llvm.nvvm.sust.p.3d.i32.trap">, 4298 ClangBuiltin<"__nvvm_sust_p_3d_i32_trap">; 4299def int_nvvm_sust_p_3d_v2i8_trap 4300 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4301 llvm_i16_ty, llvm_i16_ty], [], 4302 "llvm.nvvm.sust.p.3d.v2i8.trap">, 4303 ClangBuiltin<"__nvvm_sust_p_3d_v2i8_trap">; 4304def int_nvvm_sust_p_3d_v2i16_trap 4305 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4306 llvm_i16_ty, llvm_i16_ty], [], 4307 "llvm.nvvm.sust.p.3d.v2i16.trap">, 4308 ClangBuiltin<"__nvvm_sust_p_3d_v2i16_trap">; 4309def int_nvvm_sust_p_3d_v2i32_trap 4310 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4311 llvm_i32_ty, llvm_i32_ty], [], 4312 "llvm.nvvm.sust.p.3d.v2i32.trap">, 4313 ClangBuiltin<"__nvvm_sust_p_3d_v2i32_trap">; 4314def int_nvvm_sust_p_3d_v4i8_trap 4315 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4316 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4317 "llvm.nvvm.sust.p.3d.v4i8.trap">, 4318 ClangBuiltin<"__nvvm_sust_p_3d_v4i8_trap">; 4319def int_nvvm_sust_p_3d_v4i16_trap 4320 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4321 llvm_i16_ty, llvm_i16_ty, llvm_i16_ty, llvm_i16_ty], [], 4322 "llvm.nvvm.sust.p.3d.v4i16.trap">, 4323 ClangBuiltin<"__nvvm_sust_p_3d_v4i16_trap">; 4324def int_nvvm_sust_p_3d_v4i32_trap 4325 : Intrinsic<[], [llvm_i64_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, 4326 llvm_i32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [], 4327 "llvm.nvvm.sust.p.3d.v4i32.trap">, 4328 ClangBuiltin<"__nvvm_sust_p_3d_v4i32_trap">; 4329 4330 4331def int_nvvm_rotate_b32 4332 : DefaultAttrsIntrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4333 [IntrNoMem, IntrSpeculatable], "llvm.nvvm.rotate.b32">, 4334 ClangBuiltin<"__nvvm_rotate_b32">; 4335 4336def int_nvvm_rotate_b64 4337 : DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], 4338 [IntrNoMem, IntrSpeculatable], "llvm.nvvm.rotate.b64">, 4339 ClangBuiltin<"__nvvm_rotate_b64">; 4340 4341def int_nvvm_rotate_right_b64 4342 : DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty, llvm_i32_ty], 4343 [IntrNoMem, IntrSpeculatable], "llvm.nvvm.rotate.right.b64">, 4344 ClangBuiltin<"__nvvm_rotate_right_b64">; 4345 4346def int_nvvm_swap_lo_hi_b64 4347 : DefaultAttrsIntrinsic<[llvm_i64_ty], [llvm_i64_ty], 4348 [IntrNoMem, IntrSpeculatable], "llvm.nvvm.swap.lo.hi.b64">, 4349 ClangBuiltin<"__nvvm_swap_lo_hi_b64">; 4350 4351 4352// Accessing special registers. 4353multiclass PTXReadSRegIntrinsic_v4i32<string regname> { 4354// FIXME: Do we need the 128-bit integer type version? 4355// def _r64 : Intrinsic<[llvm_i128_ty], [], [IntrNoMem, IntrSpeculatable]>; 4356 4357// FIXME: Enable this once v4i32 support is enabled in back-end. 4358// def _v4i16 : Intrinsic<[llvm_v4i32_ty], [], [IntrNoMem, IntrSpeculatable]>; 4359 4360 def _x : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>, 4361 ClangBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_x">; 4362 def _y : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>, 4363 ClangBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_y">; 4364 def _z : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>, 4365 ClangBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_z">; 4366 def _w : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>, 4367 ClangBuiltin<"__nvvm_read_ptx_sreg_" # regname # "_w">; 4368} 4369 4370class PTXReadSRegIntrinsic_r32<string name> 4371 : DefaultAttrsIntrinsic<[llvm_i32_ty], [], [IntrNoMem, IntrSpeculatable]>, 4372 ClangBuiltin<"__nvvm_read_ptx_sreg_" # name>; 4373class PTXReadSRegIntrinsic_r64<string name> 4374 : DefaultAttrsIntrinsic<[llvm_i64_ty], [], [IntrNoMem, IntrSpeculatable]>, 4375 ClangBuiltin<"__nvvm_read_ptx_sreg_" # name>; 4376 4377// Intrinsics to read registers with non-constant values. E.g. the values that 4378// do change over the kernel lifetime. Such reads should not be CSE'd. 4379class PTXReadNCSRegIntrinsic_r32<string name> 4380 : Intrinsic<[llvm_i32_ty], [], [IntrInaccessibleMemOnly, IntrNoCallback]>, 4381 ClangBuiltin<"__nvvm_read_ptx_sreg_" # name>; 4382class PTXReadNCSRegIntrinsic_r64<string name> 4383 : Intrinsic<[llvm_i64_ty], [], [IntrInaccessibleMemOnly, IntrNoCallback]>, 4384 ClangBuiltin<"__nvvm_read_ptx_sreg_" # name>; 4385 4386defm int_nvvm_read_ptx_sreg_tid : PTXReadSRegIntrinsic_v4i32<"tid">; 4387defm int_nvvm_read_ptx_sreg_ntid : PTXReadSRegIntrinsic_v4i32<"ntid">; 4388 4389def int_nvvm_read_ptx_sreg_laneid : PTXReadSRegIntrinsic_r32<"laneid">; 4390def int_nvvm_read_ptx_sreg_warpid : PTXReadSRegIntrinsic_r32<"warpid">; 4391def int_nvvm_read_ptx_sreg_nwarpid : PTXReadSRegIntrinsic_r32<"nwarpid">; 4392 4393defm int_nvvm_read_ptx_sreg_ctaid : PTXReadSRegIntrinsic_v4i32<"ctaid">; 4394defm int_nvvm_read_ptx_sreg_nctaid : PTXReadSRegIntrinsic_v4i32<"nctaid">; 4395 4396def int_nvvm_read_ptx_sreg_smid : PTXReadSRegIntrinsic_r32<"smid">; 4397def int_nvvm_read_ptx_sreg_nsmid : PTXReadSRegIntrinsic_r32<"nsmid">; 4398def int_nvvm_read_ptx_sreg_gridid : PTXReadSRegIntrinsic_r32<"gridid">; 4399 4400def int_nvvm_read_ptx_sreg_lanemask_eq : 4401 PTXReadSRegIntrinsic_r32<"lanemask_eq">; 4402def int_nvvm_read_ptx_sreg_lanemask_le : 4403 PTXReadSRegIntrinsic_r32<"lanemask_le">; 4404def int_nvvm_read_ptx_sreg_lanemask_lt : 4405 PTXReadSRegIntrinsic_r32<"lanemask_lt">; 4406def int_nvvm_read_ptx_sreg_lanemask_ge : 4407 PTXReadSRegIntrinsic_r32<"lanemask_ge">; 4408def int_nvvm_read_ptx_sreg_lanemask_gt : 4409 PTXReadSRegIntrinsic_r32<"lanemask_gt">; 4410 4411def int_nvvm_read_ptx_sreg_clock : PTXReadNCSRegIntrinsic_r32<"clock">; 4412def int_nvvm_read_ptx_sreg_clock64 : PTXReadNCSRegIntrinsic_r64<"clock64">; 4413 4414def int_nvvm_read_ptx_sreg_pm0 : PTXReadNCSRegIntrinsic_r32<"pm0">; 4415def int_nvvm_read_ptx_sreg_pm1 : PTXReadNCSRegIntrinsic_r32<"pm1">; 4416def int_nvvm_read_ptx_sreg_pm2 : PTXReadNCSRegIntrinsic_r32<"pm2">; 4417def int_nvvm_read_ptx_sreg_pm3 : PTXReadNCSRegIntrinsic_r32<"pm3">; 4418 4419def int_nvvm_read_ptx_sreg_warpsize : PTXReadSRegIntrinsic_r32<"warpsize">; 4420 4421// 4422// SHUFFLE 4423// 4424// Generate intrinsics for all variants of shfl instruction. 4425foreach sync = [false, true] in { 4426 foreach mode = ["up", "down", "bfly", "idx"] in { 4427 foreach type = ["i32", "f32"] in { 4428 foreach return_pred = [false, true] in { 4429 foreach i = [SHFL_INFO<sync, mode, type, return_pred>] in { 4430 if i.withGccBuiltin then { 4431 def i.Name : ClangBuiltin<i.Builtin>, 4432 Intrinsic<i.RetTy, i.ArgsTy, 4433 [IntrInaccessibleMemOnly, IntrConvergent, 4434 IntrNoCallback], 4435 i.IntrName>; 4436 } 4437 if i.withoutGccBuiltin then { 4438 def i.Name : Intrinsic<i.RetTy, i.ArgsTy, 4439 [IntrInaccessibleMemOnly, IntrConvergent, 4440 IntrNoCallback], i.IntrName>; 4441 } 4442 } 4443 } 4444 } 4445 } 4446} 4447 4448// 4449// VOTE 4450// 4451 4452// vote.all pred 4453def int_nvvm_vote_all : 4454 Intrinsic<[llvm_i1_ty], [llvm_i1_ty], 4455 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.all">, 4456 ClangBuiltin<"__nvvm_vote_all">; 4457// vote.any pred 4458def int_nvvm_vote_any : 4459 Intrinsic<[llvm_i1_ty], [llvm_i1_ty], 4460 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.any">, 4461 ClangBuiltin<"__nvvm_vote_any">; 4462// vote.uni pred 4463def int_nvvm_vote_uni : 4464 Intrinsic<[llvm_i1_ty], [llvm_i1_ty], 4465 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.uni">, 4466 ClangBuiltin<"__nvvm_vote_uni">; 4467// vote.ballot pred 4468def int_nvvm_vote_ballot : 4469 Intrinsic<[llvm_i32_ty], [llvm_i1_ty], 4470 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.ballot">, 4471 ClangBuiltin<"__nvvm_vote_ballot">; 4472 4473// 4474// VOTE.SYNC 4475// 4476 4477// vote.sync.all mask, pred 4478def int_nvvm_vote_all_sync : 4479 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty], 4480 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.all.sync">, 4481 ClangBuiltin<"__nvvm_vote_all_sync">; 4482// vote.sync.any mask, pred 4483def int_nvvm_vote_any_sync : 4484 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty], 4485 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.any.sync">, 4486 ClangBuiltin<"__nvvm_vote_any_sync">; 4487// vote.sync.uni mask, pred 4488def int_nvvm_vote_uni_sync : 4489 Intrinsic<[llvm_i1_ty], [llvm_i32_ty, llvm_i1_ty], 4490 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.uni.sync">, 4491 ClangBuiltin<"__nvvm_vote_uni_sync">; 4492// vote.sync.ballot mask, pred 4493def int_nvvm_vote_ballot_sync : 4494 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i1_ty], 4495 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.vote.ballot.sync">, 4496 ClangBuiltin<"__nvvm_vote_ballot_sync">; 4497 4498// 4499// MATCH.SYNC 4500// 4501// match.any.sync.b32 mask, value 4502def int_nvvm_match_any_sync_i32 : 4503 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4504 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.match.any.sync.i32">, 4505 ClangBuiltin<"__nvvm_match_any_sync_i32">; 4506// match.any.sync.b64 mask, value 4507def int_nvvm_match_any_sync_i64 : 4508 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i64_ty], 4509 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.match.any.sync.i64">, 4510 ClangBuiltin<"__nvvm_match_any_sync_i64">; 4511 4512// match.all instruction have two variants -- one returns a single value, another 4513// returns a pair {value, predicate}. We currently only implement the latter as 4514// that's the variant exposed by CUDA API. 4515 4516// match.all.sync.b32p mask, value 4517def int_nvvm_match_all_sync_i32p : 4518 Intrinsic<[llvm_i32_ty, llvm_i1_ty], [llvm_i32_ty, llvm_i32_ty], 4519 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.match.all.sync.i32p">; 4520// match.all.sync.b64p mask, value 4521def int_nvvm_match_all_sync_i64p : 4522 Intrinsic<[llvm_i32_ty, llvm_i1_ty], [llvm_i32_ty, llvm_i64_ty], 4523 [IntrInaccessibleMemOnly, IntrConvergent, IntrNoCallback], "llvm.nvvm.match.all.sync.i64p">; 4524 4525// 4526// REDUX.SYNC 4527// 4528// redux.sync.min.u32 dst, src, membermask; 4529def int_nvvm_redux_sync_umin : ClangBuiltin<"__nvvm_redux_sync_umin">, 4530 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4531 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4532 4533// redux.sync.max.u32 dst, src, membermask; 4534def int_nvvm_redux_sync_umax : ClangBuiltin<"__nvvm_redux_sync_umax">, 4535 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4536 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4537 4538// redux.sync.add.s32 dst, src, membermask; 4539def int_nvvm_redux_sync_add : ClangBuiltin<"__nvvm_redux_sync_add">, 4540 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4541 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4542 4543// redux.sync.min.s32 dst, src, membermask; 4544def int_nvvm_redux_sync_min : ClangBuiltin<"__nvvm_redux_sync_min">, 4545 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4546 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4547 4548// redux.sync.max.s32 dst, src, membermask; 4549def int_nvvm_redux_sync_max : ClangBuiltin<"__nvvm_redux_sync_max">, 4550 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4551 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4552 4553// redux.sync.and.b32 dst, src, membermask; 4554def int_nvvm_redux_sync_and : ClangBuiltin<"__nvvm_redux_sync_and">, 4555 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4556 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4557 4558// redux.sync.xor.b32 dst, src, membermask; 4559def int_nvvm_redux_sync_xor : ClangBuiltin<"__nvvm_redux_sync_xor">, 4560 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4561 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4562 4563// redux.sync.or.b32 dst, src, membermask; 4564def int_nvvm_redux_sync_or : ClangBuiltin<"__nvvm_redux_sync_or">, 4565 Intrinsic<[llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty], 4566 [IntrConvergent, IntrInaccessibleMemOnly, IntrNoCallback]>; 4567 4568// 4569// WMMA instructions 4570// 4571// WMMA.LOAD 4572class NVVM_WMMA_LD<WMMA_REGS Frag, string Layout, int WithStride> 4573 : Intrinsic<Frag.regs, 4574 !if(WithStride, [llvm_anyptr_ty, llvm_i32_ty], [llvm_anyptr_ty]), 4575 [IntrReadMem, IntrArgMemOnly, IntrNoCallback, ReadOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>], 4576 WMMA_NAME_LDST<"load", Frag, Layout, WithStride>.intr>; 4577 4578// WMMA.STORE.D 4579class NVVM_WMMA_ST<WMMA_REGS Frag, string Layout, int WithStride> 4580 : Intrinsic<[], 4581 !listconcat( 4582 [llvm_anyptr_ty], 4583 Frag.regs, 4584 !if(WithStride, [llvm_i32_ty], [])), 4585 [IntrWriteMem, IntrArgMemOnly, IntrNoCallback, WriteOnly<ArgIndex<0>>, NoCapture<ArgIndex<0>>], 4586 WMMA_NAME_LDST<"store", Frag, Layout, WithStride>.intr>; 4587 4588// Create all load/store variants 4589foreach layout = ["row", "col"] in { 4590 foreach stride = [0, 1] in { 4591 foreach frag = NVVM_MMA_OPS.all_ld_ops in 4592 if NVVM_WMMA_LDST_SUPPORTED<frag, layout>.ret then 4593 def WMMA_NAME_LDST<"load", frag, layout, stride>.record 4594 : NVVM_WMMA_LD<frag, layout, stride>; 4595 foreach frag = NVVM_MMA_OPS.all_st_ops in 4596 if NVVM_WMMA_LDST_SUPPORTED<frag, layout>.ret then 4597 def WMMA_NAME_LDST<"store", frag, layout, stride>.record 4598 : NVVM_WMMA_ST<frag, layout, stride>; 4599 } 4600} 4601 4602// WMMA.MMA 4603class NVVM_WMMA_MMA<string ALayout, string BLayout, int Satfinite, string rnd, string b1op, 4604 WMMA_REGS A, WMMA_REGS B, 4605 WMMA_REGS C, WMMA_REGS D> 4606 : Intrinsic<D.regs, 4607 !listconcat(A.regs, B.regs, C.regs), 4608 [IntrNoMem, IntrNoCallback], 4609 WMMA_NAME<ALayout, BLayout, Satfinite, rnd, b1op, A, B, C, D>.llvm>; 4610 4611foreach layout_a = ["row", "col"] in { 4612 foreach layout_b = ["row", "col"] in { 4613 foreach satf = [0, 1] in { 4614 foreach rnd = ["", "rn", "rz", "rm", "rp"] in { 4615 foreach op = NVVM_MMA_OPS.all_wmma_ops in { 4616 foreach b1op = NVVM_MMA_B1OPS<op>.ret in { 4617 if NVVM_WMMA_SUPPORTED<op, layout_a, layout_b, satf, rnd>.ret then { 4618 def WMMA_NAME<layout_a, layout_b, satf, rnd, b1op, 4619 op[0], op[1], op[2], op[3]>.record 4620 : NVVM_WMMA_MMA<layout_a, layout_b, satf, rnd, b1op, 4621 op[0], op[1], op[2], op[3]>; 4622 } 4623 } // b1op 4624 } // op 4625 } // rnd 4626 } // satf 4627 } // layout_b 4628} // layout_a 4629 4630// MMA 4631class NVVM_MMA<string ALayout, string BLayout, int Satfinite, string b1op, 4632 WMMA_REGS A, WMMA_REGS B, WMMA_REGS C, WMMA_REGS D> 4633 : Intrinsic<D.regs, 4634 !listconcat(A.regs, B.regs, C.regs), 4635 [IntrNoMem, IntrNoCallback], 4636 MMA_NAME<ALayout, BLayout, Satfinite, b1op, A, B, C, D>.llvm>; 4637 4638foreach layout_a = ["row", "col"] in { 4639 foreach layout_b = ["row", "col"] in { 4640 foreach satf = [0, 1] in { 4641 foreach op = NVVM_MMA_OPS.all_mma_ops in { 4642 foreach b1op = NVVM_MMA_B1OPS<op>.ret in { 4643 if NVVM_MMA_SUPPORTED<op, layout_a, layout_b, satf>.ret then { 4644 def MMA_NAME<layout_a, layout_b, satf, b1op, op[0], op[1], op[2], op[3]>.record 4645 : NVVM_MMA<layout_a, layout_b, satf, b1op, op[0], op[1], op[2], op[3]>; 4646 } 4647 } // b1op 4648 } // op 4649 } // satf 4650 } // layout_b 4651} // layout_a 4652 4653// LDMATRIX 4654class NVVM_LDMATRIX<WMMA_REGS Frag, int Transposed> 4655 : Intrinsic<Frag.regs, [llvm_anyptr_ty], 4656 [IntrReadMem, IntrArgMemOnly, IntrNoCallback, ReadOnly<ArgIndex<0>>, 4657 NoCapture<ArgIndex<0>>], 4658 LDMATRIX_NAME<Frag, Transposed>.intr>; 4659 4660foreach transposed = [0, 1] in { 4661 foreach frag = NVVM_MMA_OPS.all_ldmatrix_ops in { 4662 if NVVM_LDMATRIX_SUPPORTED<frag>.ret then { 4663 def LDMATRIX_NAME<frag, transposed>.record 4664 : NVVM_LDMATRIX<frag, transposed>; 4665 } 4666 } 4667} 4668 4669} // let TargetPrefix = "nvvm" 4670