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