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