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