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