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