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