Home | History | Annotate | Download | only in msa
      1 ; RUN: not llc -march=mips -mattr=+msa,+fp64 -relocation-model=pic < %s 2> %t1
      2 ; RUN: FileCheck %s < %t1
      3 
      4 ; Test that the immediate intrinsics with out of range values trigger an error.
      5 
      6 
      7 define void @binsli_b(<16 x i8> * %ptr) {
      8 entry:
      9   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     10   %r = call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %a, <16 x i8> %a, i32 65)
     11   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     12   ret void
     13 }
     14 ; CHECK: LLVM ERROR: Immediate out of range
     15 
     16 define void @binsri_b(<16 x i8> * %ptr) {
     17 entry:
     18   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     19   %r = call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %a, <16 x i8> %a, i32 5)
     20   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     21   ret void
     22 }
     23 
     24 define void @bmnzi_b(<16 x i8> * %ptr) {
     25 entry:
     26   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     27   %r = call <16 x i8> @llvm.mips.bmnzi.b(<16 x i8> %a, <16 x i8> %a, i32 63)
     28   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     29   ret void
     30 }
     31 
     32 define void @bmzi_b(<16 x i8> * %ptr) {
     33 entry:
     34   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     35   %r = call <16 x i8> @llvm.mips.bmzi.b(<16 x i8> %a, <16 x i8> %a, i32 63)
     36   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     37   ret void
     38 }
     39 
     40 define void @bnegi_b(<16 x i8> * %ptr) {
     41 entry:
     42   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     43   %r = call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %a, i32 6)
     44   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     45   ret void
     46 }
     47 
     48 define void @bseli_b(<16 x i8> * %ptr) {
     49 entry:
     50   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     51   %r = call <16 x i8> @llvm.mips.bseli.b(<16 x i8> %a, <16 x i8> %a, i32 63)
     52   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     53   ret void
     54 }
     55 
     56 define void @bseti_b(<16 x i8> * %ptr) {
     57 entry:
     58   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     59   %r = call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %a, i32 9)
     60   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     61   ret void
     62 }
     63 
     64 define void @clei_s_b(<16 x i8> * %ptr) {
     65 entry:
     66   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     67   %r = call <16 x i8> @llvm.mips.clei.s.b(<16 x i8> %a, i32 152)
     68   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     69   ret void
     70 }
     71 
     72 define void @clei_u_b(<16 x i8> * %ptr) {
     73 entry:
     74   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     75   %r = call <16 x i8> @llvm.mips.clei.u.b(<16 x i8> %a, i32 163)
     76   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     77   ret void
     78 }
     79 
     80 define void @clti_s_b(<16 x i8> * %ptr) {
     81 entry:
     82   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     83   %r = call <16 x i8> @llvm.mips.clti.s.b(<16 x i8> %a, i32 129)
     84   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     85   ret void
     86 }
     87 
     88 define void @clti_u_b(<16 x i8> * %ptr) {
     89 entry:
     90   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
     91   %r = call <16 x i8> @llvm.mips.clti.u.b(<16 x i8> %a, i32 163)
     92   store <16 x i8> %r, <16 x i8> * %ptr, align 16
     93   ret void
     94 }
     95 
     96 define void @ldi_b(<16 x i8> * %ptr) {
     97 entry:
     98   %r = call <16 x i8> @llvm.mips.ldi.b(i32 1025)
     99   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    100   ret void
    101 }
    102 
    103 define void @maxi_s_b(<16 x i8> * %ptr) {
    104 entry:
    105   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    106   %r = call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %a, i32 163)
    107   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    108   ret void
    109 }
    110 
    111 define void @maxi_u_b(<16 x i8> * %ptr) {
    112 entry:
    113   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    114   %r = call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %a, i32 163)
    115   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    116   ret void
    117 }
    118 
    119 define void @mini_s_b(<16 x i8> * %ptr) {
    120 entry:
    121   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    122   %r = call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %a, i32 163)
    123   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    124   ret void
    125 }
    126 
    127 define void @mini_u_b(<16 x i8> * %ptr) {
    128 entry:
    129   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    130   %r = call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %a, i32 163)
    131   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    132   ret void
    133 }
    134 
    135 define void @nori_b(<16 x i8> * %ptr) {
    136 entry:
    137   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    138   %r = call <16 x i8> @llvm.mips.nori.b(<16 x i8> %a, i32 63)
    139   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    140   ret void
    141 }
    142 
    143 define void @ori_b(<16 x i8> * %ptr) {
    144 entry:
    145   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    146   %r = call <16 x i8> @llvm.mips.ori.b(<16 x i8> %a, i32 63)
    147   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    148   ret void
    149 }
    150 
    151 define void @sldi_b(<16 x i8> * %ptr) {
    152 entry:
    153   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    154   %r = call <16 x i8> @llvm.mips.sldi.b(<16 x i8> %a, <16 x i8> %a, i32 7)
    155   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    156   ret void
    157 }
    158 
    159 define void @slli_b(<16 x i8> * %ptr) {
    160 entry:
    161   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    162   %r = call <16 x i8> @llvm.mips.slli.b(<16 x i8> %a, i32 65)
    163   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    164   ret void
    165 }
    166 
    167 define void @splati_b(<16 x i8> * %ptr) {
    168 entry:
    169   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    170   %r = call <16 x i8> @llvm.mips.splati.b(<16 x i8> %a, i32 65)
    171   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    172   ret void
    173 }
    174 
    175 define void @srai_b(<16 x i8> * %ptr) {
    176 entry:
    177   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    178   %r = call <16 x i8> @llvm.mips.srai.b(<16 x i8> %a, i32 65)
    179   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    180   ret void
    181 }
    182 
    183 define void @srari_b(<16 x i8> * %ptr) {
    184 entry:
    185   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    186   %r = call <16 x i8> @llvm.mips.srari.b(<16 x i8> %a, i32 65)
    187   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    188   ret void
    189 }
    190 
    191 define void @srli_b(<16 x i8> * %ptr) {
    192 entry:
    193   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    194   %r = call <16 x i8> @llvm.mips.srli.b(<16 x i8> %a, i32 65)
    195   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    196   ret void
    197 }
    198 
    199 define void @srlri_b(<16 x i8> * %ptr) {
    200 entry:
    201   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    202   %r = call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %a, i32 65)
    203   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    204   ret void
    205 }
    206 
    207 define void @addvi_w(<4 x i32> * %ptr) {
    208 entry:
    209   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    210   %r = call <4 x i32> @llvm.mips.addvi.w(<4 x i32> %a, i32 63)
    211   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    212   ret void
    213 }
    214 
    215 define void @bclri_w(<4 x i32> * %ptr) {
    216 entry:
    217   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    218   %r = call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %a, i32 63)
    219   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    220   ret void
    221 }
    222 
    223 define void @binsli_w(<4 x i32> * %ptr) {
    224 entry:
    225   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    226   %r = call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %a, <4 x i32> %a, i32 63)
    227   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    228   ret void
    229 }
    230 
    231 define void @binsri_w(<4 x i32> * %ptr) {
    232 entry:
    233   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    234   %r = call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %a, <4 x i32> %a, i32 63)
    235   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    236   ret void
    237 }
    238 
    239 define void @bnegi_w(<4 x i32> * %ptr) {
    240 entry:
    241   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    242   %r = call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %a, i32 63)
    243   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    244   ret void
    245 }
    246 
    247 define void @bseti_w(<4 x i32> * %ptr) {
    248 entry:
    249   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    250   %r = call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %a, i32 63)
    251   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    252   ret void
    253 }
    254 
    255 define void @clei_s_w(<4 x i32> * %ptr) {
    256 entry:
    257   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    258   %r = call <4 x i32> @llvm.mips.clei.s.w(<4 x i32> %a, i32 63)
    259   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    260   ret void
    261 }
    262 
    263 define void @clei_u_w(<4 x i32> * %ptr) {
    264 entry:
    265   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    266   %r = call <4 x i32> @llvm.mips.clei.u.w(<4 x i32> %a, i32 63)
    267   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    268   ret void
    269 }
    270 
    271 define void @clti_s_w(<4 x i32> * %ptr) {
    272 entry:
    273   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    274   %r = call <4 x i32> @llvm.mips.clti.s.w(<4 x i32> %a, i32 63)
    275   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    276   ret void
    277 }
    278 
    279 define void @clti_u_w(<4 x i32> * %ptr) {
    280 entry:
    281   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    282   %r = call <4 x i32> @llvm.mips.clti.u.w(<4 x i32> %a, i32 63)
    283   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    284   ret void
    285 }
    286 
    287 define void @maxi_s_w(<4 x i32> * %ptr) {
    288 entry:
    289   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    290   %r = call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %a, i32 63)
    291   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    292   ret void
    293 }
    294 
    295 define void @maxi_u_w(<4 x i32> * %ptr) {
    296 entry:
    297   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    298   %r = call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %a, i32 63)
    299   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    300   ret void
    301 }
    302 
    303 define void @mini_s_w(<4 x i32> * %ptr) {
    304 entry:
    305   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    306   %r = call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %a, i32 63)
    307   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    308   ret void
    309 }
    310 
    311 define void @mini_u_w(<4 x i32> * %ptr) {
    312 entry:
    313   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    314   %r = call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %a, i32 63)
    315   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    316   ret void
    317 }
    318 
    319 define void @ldi_w(<4 x i32> * %ptr) {
    320 entry:
    321   %r = call <4 x i32> @llvm.mips.ldi.w(i32 1024)
    322   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    323   ret void
    324 }
    325 
    326 define void @sldi_w(<4 x i32> * %ptr) {
    327 entry:
    328   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    329   %r = call <4 x i32> @llvm.mips.sldi.w(<4 x i32> %a, <4 x i32> %a, i32 63)
    330   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    331   ret void
    332 }
    333 
    334 define void @slli_w(<4 x i32> * %ptr) {
    335 entry:
    336   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    337   %r = call <4 x i32> @llvm.mips.slli.w(<4 x i32> %a, i32 65)
    338   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    339   ret void
    340 }
    341 
    342 define void @splati_w(<4 x i32> * %ptr) {
    343 entry:
    344   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    345   %r = call <4 x i32> @llvm.mips.splati.w(<4 x i32> %a, i32 65)
    346   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    347   ret void
    348 }
    349 
    350 define void @srai_w(<4 x i32> * %ptr) {
    351 entry:
    352   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    353   %r = call <4 x i32> @llvm.mips.srai.w(<4 x i32> %a, i32 65)
    354   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    355   ret void
    356 }
    357 
    358 define void @srari_w(<4 x i32> * %ptr) {
    359 entry:
    360   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    361   %r = call <4 x i32> @llvm.mips.srari.w(<4 x i32> %a, i32 65)
    362   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    363   ret void
    364 }
    365 
    366 define void @srli_w(<4 x i32> * %ptr) {
    367 entry:
    368   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    369   %r = call <4 x i32> @llvm.mips.srli.w(<4 x i32> %a, i32 65)
    370   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    371   ret void
    372 }
    373 
    374 define void @srlri_w(<4 x i32> * %ptr) {
    375 entry:
    376   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    377   %r = call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %a, i32 65)
    378   store <4 x i32> %r, <4 x i32> * %ptr, align 16
    379   ret void
    380 }
    381 
    382 define void @addvi_h(<8 x i16> * %ptr) {
    383 entry:
    384   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    385   %r = call <8 x i16> @llvm.mips.addvi.h(<8 x i16> %a, i32 65)
    386   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    387   ret void
    388 }
    389 
    390 define void @bclri_h(<8 x i16> * %ptr) {
    391 entry:
    392   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    393   %r = call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %a, i32 16)
    394   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    395   ret void
    396 }
    397 
    398 define void @binsli_h(<8 x i16> * %ptr) {
    399 entry:
    400   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    401   %r = call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %a, <8 x i16> %a, i32 17)
    402   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    403   ret void
    404 }
    405 
    406 define void @binsri_h(<8 x i16> * %ptr) {
    407 entry:
    408   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    409   %r = call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %a, <8 x i16> %a, i32 19)
    410   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    411   ret void
    412 }
    413 
    414 define void @bnegi_h(<8 x i16> * %ptr) {
    415 entry:
    416   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    417   %r = call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %a, i32 19)
    418   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    419   ret void
    420 }
    421 
    422 define void @bseti_h(<8 x i16> * %ptr) {
    423 entry:
    424   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    425   %r = call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %a, i32 19)
    426   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    427   ret void
    428 }
    429 
    430 define void @clei_s_h(<8 x i16> * %ptr) {
    431 entry:
    432   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    433   %r = call <8 x i16> @llvm.mips.clei.s.h(<8 x i16> %a, i32 63)
    434   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    435   ret void
    436 }
    437 
    438 define void @clei_u_h(<8 x i16> * %ptr) {
    439 entry:
    440   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    441   %r = call <8 x i16> @llvm.mips.clei.u.h(<8 x i16> %a, i32 130)
    442   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    443   ret void
    444 }
    445 
    446 define void @clti_s_h(<8 x i16> * %ptr) {
    447 entry:
    448   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    449   %r = call <8 x i16> @llvm.mips.clti.s.h(<8 x i16> %a, i32 63)
    450   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    451   ret void
    452 }
    453 
    454 define void @clti_u_h(<8 x i16> * %ptr) {
    455 entry:
    456   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    457   %r = call <8 x i16> @llvm.mips.clti.u.h(<8 x i16> %a, i32 63)
    458   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    459   ret void
    460 }
    461 
    462 define void @maxi_s_h(<8 x i16> * %ptr) {
    463 entry:
    464   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    465   %r = call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %a, i32 63)
    466   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    467   ret void
    468 }
    469 
    470 define void @maxi_u_h(<8 x i16> * %ptr) {
    471 entry:
    472   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    473   %r = call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %a, i32 130)
    474   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    475   ret void
    476 }
    477 
    478 define void @mini_s_h(<8 x i16> * %ptr) {
    479 entry:
    480   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    481   %r = call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %a, i32 63)
    482   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    483   ret void
    484 }
    485 
    486 define void @mini_u_h(<8 x i16> * %ptr) {
    487 entry:
    488   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    489   %r = call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %a, i32 130)
    490   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    491   ret void
    492 }
    493 
    494 define void @ldi_h(<8 x i16> * %ptr) {
    495 entry:
    496   %r = call <8 x i16> @llvm.mips.ldi.h(i32 1024)
    497   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    498   ret void
    499 }
    500 
    501 define void @sldi_h(<8 x i16> * %ptr) {
    502 entry:
    503   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    504   %r = call <8 x i16> @llvm.mips.sldi.h(<8 x i16> %a, <8 x i16> %a, i32 65)
    505   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    506   ret void
    507 }
    508 
    509 define void @slli_h(<8 x i16> * %ptr) {
    510 entry:
    511   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    512   %r = call <8 x i16> @llvm.mips.slli.h(<8 x i16> %a, i32 65)
    513   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    514   ret void
    515 }
    516 
    517 define void @splati_h(<8 x i16> * %ptr) {
    518 entry:
    519   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    520   %r = call <8 x i16> @llvm.mips.splati.h(<8 x i16> %a, i32 65)
    521   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    522   ret void
    523 }
    524 
    525 define void @srai_h(<8 x i16> * %ptr) {
    526 entry:
    527   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    528   %r = call <8 x i16> @llvm.mips.srai.h(<8 x i16> %a, i32 65)
    529   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    530   ret void
    531 }
    532 
    533 define void @srari_h(<8 x i16> * %ptr) {
    534 entry:
    535   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    536   %r = call <8 x i16> @llvm.mips.srari.h(<8 x i16> %a, i32 65)
    537   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    538   ret void
    539 }
    540 
    541 define void @srli_h(<8 x i16> * %ptr) {
    542 entry:
    543   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    544   %r = call <8 x i16> @llvm.mips.srli.h(<8 x i16> %a, i32 65)
    545   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    546   ret void
    547 }
    548 
    549 define void @srlri_h(<8 x i16> * %ptr) {
    550 entry:
    551   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    552   %r = call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %a, i32 65)
    553   store <8 x i16> %r, <8 x i16> * %ptr, align 16
    554   ret void
    555 }
    556 
    557 define i32 @copy_s_b(<16 x i8> * %ptr) {
    558 entry:
    559   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    560   %r = call i32 @llvm.mips.copy.s.b(<16 x i8> %a, i32 17)
    561   ret i32 %r
    562 }
    563 
    564 
    565 define i32 @copy_s_h(<8 x i16> * %ptr) {
    566 entry:
    567   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    568   %r = call i32 @llvm.mips.copy.s.h(<8 x i16> %a, i32 9)
    569   ret i32 %r
    570 }
    571 
    572 
    573 define i32 @copy_s_w(<4 x i32> * %ptr) {
    574 entry:
    575   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    576   %r = call i32 @llvm.mips.copy.s.w(<4 x i32> %a, i32 5)
    577   ret i32 %r
    578 }
    579 
    580 
    581 define i32 @copy_u_b(<16 x i8> * %ptr) {
    582 entry:
    583   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    584   %r = call i32 @llvm.mips.copy.u.b(<16 x i8> %a, i32 16)
    585   ret i32 %r
    586 }
    587 
    588 
    589 define i32 @copy_u_h(<8 x i16> * %ptr) {
    590 entry:
    591   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
    592   %r = call i32 @llvm.mips.copy.u.h(<8 x i16> %a, i32 9)
    593   ret i32 %r
    594 }
    595 
    596 
    597 define i32 @copy_u_w(<4 x i32> * %ptr) {
    598 entry:
    599   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
    600   %r = call i32 @llvm.mips.copy.u.w(<4 x i32> %a, i32 5)
    601   ret i32 %r
    602 }
    603 
    604 define i64 @copy_s_d(<2 x i64> * %ptr) {
    605 entry:  %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    606   %r = call i64 @llvm.mips.copy.s.d(<2 x i64> %a, i32 3)
    607   ret i64 %r
    608 }
    609 
    610 define i64 @copy_u_d(<2 x i64> * %ptr) {
    611 entry:  %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    612   %r = call i64 @llvm.mips.copy.u.d(<2 x i64> %a, i32 3)
    613   ret i64 %r
    614 }
    615 
    616 define void @addvi_d(<2 x i64> * %ptr) {
    617 entry:
    618   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    619   %r = call <2 x i64> @llvm.mips.addvi.d(<2 x i64> %a, i32 65)
    620   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    621   ret void
    622 }
    623 
    624 define void @bclri_d(<2 x i64> * %ptr) {
    625 entry:
    626   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    627   %r = call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %a, i32 64)
    628   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    629   ret void
    630 }
    631 
    632 define void @binsli_d(<2 x i64> * %ptr) {
    633 entry:
    634   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    635   %r = call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %a, <2 x i64> %a, i32 65)
    636   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    637   ret void
    638 }
    639 
    640 define void @binsri_d(<2 x i64> * %ptr) {
    641 entry:
    642   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    643   %r = call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %a, <2 x i64> %a, i32 65)
    644   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    645   ret void
    646 }
    647 
    648 define void @bnegi_d(<2 x i64> * %ptr) {
    649 entry:
    650   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    651   %r = call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %a, i32 65)
    652   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    653   ret void
    654 }
    655 
    656 define void @bseti_d(<2 x i64> * %ptr) {
    657 entry:
    658   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    659   %r = call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %a, i32 65)
    660   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    661   ret void
    662 }
    663 
    664 define void @clei_s_d(<2 x i64> * %ptr) {
    665 entry:
    666   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    667   %r = call <2 x i64> @llvm.mips.clei.s.d(<2 x i64> %a, i32 63)
    668   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    669   ret void
    670 }
    671 
    672 define void @clei_u_d(<2 x i64> * %ptr) {
    673 entry:
    674   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    675   %r = call <2 x i64> @llvm.mips.clei.u.d(<2 x i64> %a, i32 63)
    676   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    677   ret void
    678 }
    679 
    680 define void @clti_s_d(<2 x i64> * %ptr) {
    681 entry:
    682   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    683   %r = call <2 x i64> @llvm.mips.clti.s.d(<2 x i64> %a, i32 63)
    684   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    685   ret void
    686 }
    687 
    688 define void @clti_u_d(<2 x i64> * %ptr) {
    689 entry:
    690   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    691   %r = call <2 x i64> @llvm.mips.clti.u.d(<2 x i64> %a, i32 63)
    692   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    693   ret void
    694 }
    695 
    696 define void @ldi_d(<2 x i64> * %ptr) {
    697 entry:
    698   %r = call <2 x i64> @llvm.mips.ldi.d(i32 1024)
    699   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    700   ret void
    701 }
    702 
    703 define void @maxi_s_d(<2 x i64> * %ptr) {
    704 entry:
    705   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    706   %r = call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %a, i32 63)
    707   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    708   ret void
    709 }
    710 
    711 define void @maxi_u_d(<2 x i64> * %ptr) {
    712 entry:
    713   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    714   %r = call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %a, i32 63)
    715   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    716   ret void
    717 }
    718 
    719 define void @mini_s_d(<2 x i64> * %ptr) {
    720 entry:
    721   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    722   %r = call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %a, i32 63)
    723   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    724   ret void
    725 }
    726 
    727 define void @mini_u_d(<2 x i64> * %ptr) {
    728 entry:
    729   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    730   %r = call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %a, i32 63)
    731   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    732   ret void
    733 }
    734 
    735 define void @sldi_d(<2 x i64> * %ptr) {
    736 entry:
    737   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    738   %r = call <2 x i64> @llvm.mips.sldi.d(<2 x i64> %a, <2 x i64> %a, i32 1)
    739   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    740   ret void
    741 }
    742 
    743 define void @slli_d(<2 x i64> * %ptr) {
    744 entry:
    745   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    746   %r = call <2 x i64> @llvm.mips.slli.d(<2 x i64> %a, i32 65)
    747   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    748   ret void
    749 }
    750 
    751 define void @srai_d(<2 x i64> * %ptr) {
    752 entry:
    753   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    754   %r = call <2 x i64> @llvm.mips.srai.d(<2 x i64> %a, i32 65)
    755   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    756   ret void
    757 }
    758 
    759 define void @srari_d(<2 x i64> * %ptr) {
    760 entry:
    761   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    762   %r = call <2 x i64> @llvm.mips.srari.d(<2 x i64> %a, i32 65)
    763   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    764   ret void
    765 }
    766 
    767 define void @srli_d(<2 x i64> * %ptr) {
    768 entry:
    769   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    770   %r = call <2 x i64> @llvm.mips.srli.d(<2 x i64> %a, i32 65)
    771   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    772   ret void
    773 }
    774 
    775 define void @srlri_d(<2 x i64> * %ptr) {
    776 entry:
    777   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
    778   %r = call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %a, i32 65)
    779   store <2 x i64> %r, <2 x i64> * %ptr, align 16
    780   ret void
    781 }; Negative numbers
    782 
    783 
    784 define void @neg_addvi_b(<16 x i8> * %ptr) {
    785 entry:
    786   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    787   %r = call <16 x i8> @llvm.mips.addvi.b(<16 x i8> %a, i32 -25)
    788   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    789   ret void
    790 }
    791 
    792 define void @neg_andi_b(<16 x i8> * %ptr) {
    793 entry:
    794   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    795   %r = call <16 x i8> @llvm.mips.andi.b(<16 x i8> %a, i32 -25)
    796   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    797   ret void
    798 }
    799 
    800 define void @neg_bclri_b(<16 x i8> * %ptr) {
    801 entry:
    802   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    803   %r = call <16 x i8> @llvm.mips.bclri.b(<16 x i8> %a, i32 -3)
    804   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    805   ret void
    806 }
    807 
    808 define void @neg_binsli_b(<16 x i8> * %ptr) {
    809 entry:
    810   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    811   %r = call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %a, <16 x i8> %a, i32 -3)
    812   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    813   ret void
    814 }
    815 
    816 define void @neg_binsri_b(<16 x i8> * %ptr) {
    817 entry:
    818   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    819   %r = call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %a, <16 x i8> %a, i32 5)
    820   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    821   ret void
    822 }
    823 
    824 define void @neg_bmnzi_b(<16 x i8> * %ptr) {
    825 entry:
    826   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    827   %r = call <16 x i8> @llvm.mips.bmnzi.b(<16 x i8> %a, <16 x i8> %a, i32 -25)
    828   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    829   ret void
    830 }
    831 
    832 define void @neg_bmzi_b(<16 x i8> * %ptr) {
    833 entry:
    834   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    835   %r = call <16 x i8> @llvm.mips.bmzi.b(<16 x i8> %a, <16 x i8> %a, i32 -25)
    836   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    837   ret void
    838 }
    839 
    840 define void @neg_bnegi_b(<16 x i8> * %ptr) {
    841 entry:
    842   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    843   %r = call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %a, i32 6)
    844   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    845   ret void
    846 }
    847 
    848 define void @neg_bseli_b(<16 x i8> * %ptr) {
    849 entry:
    850   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    851   %r = call <16 x i8> @llvm.mips.bseli.b(<16 x i8> %a, <16 x i8> %a, i32 -25)
    852   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    853   ret void
    854 }
    855 
    856 define void @neg_bseti_b(<16 x i8> * %ptr) {
    857 entry:
    858   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    859   %r = call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %a, i32 -5)
    860   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    861   ret void
    862 }
    863 
    864 define void @neg_clei_s_b(<16 x i8> * %ptr) {
    865 entry:
    866   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    867   %r = call <16 x i8> @llvm.mips.clei.s.b(<16 x i8> %a, i32 -120)
    868   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    869   ret void
    870 }
    871 
    872 define void @neg_clei_u_b(<16 x i8> * %ptr) {
    873 entry:
    874   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    875   %r = call <16 x i8> @llvm.mips.clei.u.b(<16 x i8> %a, i32 -25)
    876   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    877   ret void
    878 }
    879 
    880 define void @neg_clti_s_b(<16 x i8> * %ptr) {
    881 entry:
    882   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    883   %r = call <16 x i8> @llvm.mips.clti.s.b(<16 x i8> %a, i32 -35)
    884   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    885   ret void
    886 }
    887 
    888 define void @neg_clti_u_b(<16 x i8> * %ptr) {
    889 entry:
    890   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    891   %r = call <16 x i8> @llvm.mips.clti.u.b(<16 x i8> %a, i32 -25)
    892   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    893   ret void
    894 }
    895 
    896 define void @neg_ldi_b(<16 x i8> * %ptr) {
    897 entry:
    898   %r = call <16 x i8> @llvm.mips.ldi.b(i32 -3)
    899   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    900   ret void
    901 }
    902 
    903 define void @neg_maxi_s_b(<16 x i8> * %ptr) {
    904 entry:
    905   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    906   %r = call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %a, i32 2)
    907   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    908   ret void
    909 }
    910 
    911 define void @neg_maxi_u_b(<16 x i8> * %ptr) {
    912 entry:
    913   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    914   %r = call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %a, i32 2)
    915   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    916   ret void
    917 }
    918 
    919 define void @neg_mini_s_b(<16 x i8> * %ptr) {
    920 entry:
    921   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    922   %r = call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %a, i32 2)
    923   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    924   ret void
    925 }
    926 
    927 define void @neg_mini_u_b(<16 x i8> * %ptr) {
    928 entry:
    929   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    930   %r = call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %a, i32 2)
    931   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    932   ret void
    933 }
    934 
    935 define void @neg_nori_b(<16 x i8> * %ptr) {
    936 entry:
    937   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    938   %r = call <16 x i8> @llvm.mips.nori.b(<16 x i8> %a, i32 -25)
    939   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    940   ret void
    941 }
    942 
    943 define void @neg_ori_b(<16 x i8> * %ptr) {
    944 entry:
    945   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    946   %r = call <16 x i8> @llvm.mips.ori.b(<16 x i8> %a, i32 -25)
    947   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    948   ret void
    949 }
    950 
    951 define void @neg_sldi_b(<16 x i8> * %ptr) {
    952 entry:
    953   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    954   %r = call <16 x i8> @llvm.mips.sldi.b(<16 x i8> %a, <16 x i8> %a, i32 -7)
    955   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    956   ret void
    957 }
    958 
    959 define void @neg_slli_b(<16 x i8> * %ptr) {
    960 entry:
    961   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    962   %r = call <16 x i8> @llvm.mips.slli.b(<16 x i8> %a, i32 -3)
    963   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    964   ret void
    965 }
    966 
    967 define void @neg_splati_b(<16 x i8> * %ptr) {
    968 entry:
    969   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    970   %r = call <16 x i8> @llvm.mips.splati.b(<16 x i8> %a, i32 -3)
    971   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    972   ret void
    973 }
    974 
    975 define void @neg_srai_b(<16 x i8> * %ptr) {
    976 entry:
    977   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    978   %r = call <16 x i8> @llvm.mips.srai.b(<16 x i8> %a, i32 -3)
    979   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    980   ret void
    981 }
    982 
    983 define void @neg_srari_b(<16 x i8> * %ptr) {
    984 entry:
    985   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    986   %r = call <16 x i8> @llvm.mips.srari.b(<16 x i8> %a, i32 -3)
    987   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    988   ret void
    989 }
    990 
    991 define void @neg_srli_b(<16 x i8> * %ptr) {
    992 entry:
    993   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
    994   %r = call <16 x i8> @llvm.mips.srli.b(<16 x i8> %a, i32 -3)
    995   store <16 x i8> %r, <16 x i8> * %ptr, align 16
    996   ret void
    997 }
    998 
    999 define void @neg_srlri_b(<16 x i8> * %ptr) {
   1000 entry:
   1001   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
   1002   %r = call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %a, i32 -3)
   1003   store <16 x i8> %r, <16 x i8> * %ptr, align 16
   1004   ret void
   1005 }
   1006 
   1007 define void @neg_addvi_w(<4 x i32> * %ptr) {
   1008 entry:
   1009   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1010   %r = call <4 x i32> @llvm.mips.addvi.w(<4 x i32> %a, i32 -25)
   1011   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1012   ret void
   1013 }
   1014 
   1015 define void @neg_bclri_w(<4 x i32> * %ptr) {
   1016 entry:
   1017   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1018   %r = call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %a, i32 -25)
   1019   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1020   ret void
   1021 }
   1022 
   1023 define void @neg_binsli_w(<4 x i32> * %ptr) {
   1024 entry:
   1025   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1026   %r = call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %a, <4 x i32> %a, i32 -25)
   1027   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1028   ret void
   1029 }
   1030 
   1031 define void @neg_binsri_w(<4 x i32> * %ptr) {
   1032 entry:
   1033   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1034   %r = call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %a, <4 x i32> %a, i32 -25)
   1035   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1036   ret void
   1037 }
   1038 
   1039 define void @neg_bnegi_w(<4 x i32> * %ptr) {
   1040 entry:
   1041   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1042   %r = call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %a, i32 -25)
   1043   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1044   ret void
   1045 }
   1046 
   1047 define void @neg_bseti_w(<4 x i32> * %ptr) {
   1048 entry:
   1049   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1050   %r = call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %a, i32 -25)
   1051   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1052   ret void
   1053 }
   1054 
   1055 define void @neg_clei_s_w(<4 x i32> * %ptr) {
   1056 entry:
   1057   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1058   %r = call <4 x i32> @llvm.mips.clei.s.w(<4 x i32> %a, i32 -140)
   1059   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1060   ret void
   1061 }
   1062 
   1063 define void @neg_clei_u_w(<4 x i32> * %ptr) {
   1064 entry:
   1065   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1066   %r = call <4 x i32> @llvm.mips.clei.u.w(<4 x i32> %a, i32 -25)
   1067   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1068   ret void
   1069 }
   1070 
   1071 define void @neg_clti_s_w(<4 x i32> * %ptr) {
   1072 entry:
   1073   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1074   %r = call <4 x i32> @llvm.mips.clti.s.w(<4 x i32> %a, i32 -150)
   1075   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1076   ret void
   1077 }
   1078 
   1079 define void @neg_clti_u_w(<4 x i32> * %ptr) {
   1080 entry:
   1081   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1082   %r = call <4 x i32> @llvm.mips.clti.u.w(<4 x i32> %a, i32 -25)
   1083   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1084   ret void
   1085 }
   1086 
   1087 define void @neg_maxi_s_w(<4 x i32> * %ptr) {
   1088 entry:
   1089   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1090   %r = call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %a, i32 -200)
   1091   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1092   ret void
   1093 }
   1094 
   1095 define void @neg_maxi_u_w(<4 x i32> * %ptr) {
   1096 entry:
   1097   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1098   %r = call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %a, i32 -200)
   1099   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1100   ret void
   1101 }
   1102 
   1103 define void @neg_mini_s_w(<4 x i32> * %ptr) {
   1104 entry:
   1105   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1106   %r = call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %a, i32 -200)
   1107   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1108   ret void
   1109 }
   1110 
   1111 define void @neg_mini_u_w(<4 x i32> * %ptr) {
   1112 entry:
   1113   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1114   %r = call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %a, i32 -200)
   1115   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1116   ret void
   1117 }
   1118 
   1119 define void @neg_ldi_w(<4 x i32> * %ptr) {
   1120 entry:
   1121   %r = call <4 x i32> @llvm.mips.ldi.w(i32 -300)
   1122   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1123   ret void
   1124 }
   1125 
   1126 define void @neg_sldi_w(<4 x i32> * %ptr) {
   1127 entry:
   1128   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1129   %r = call <4 x i32> @llvm.mips.sldi.w(<4 x i32> %a, <4 x i32> %a, i32 -20)
   1130   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1131   ret void
   1132 }
   1133 
   1134 define void @neg_slli_w(<4 x i32> * %ptr) {
   1135 entry:
   1136   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1137   %r = call <4 x i32> @llvm.mips.slli.w(<4 x i32> %a, i32 -3)
   1138   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1139   ret void
   1140 }
   1141 
   1142 define void @neg_splati_w(<4 x i32> * %ptr) {
   1143 entry:
   1144   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1145   %r = call <4 x i32> @llvm.mips.splati.w(<4 x i32> %a, i32 -3)
   1146   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1147   ret void
   1148 }
   1149 
   1150 define void @neg_srai_w(<4 x i32> * %ptr) {
   1151 entry:
   1152   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1153   %r = call <4 x i32> @llvm.mips.srai.w(<4 x i32> %a, i32 -3)
   1154   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1155   ret void
   1156 }
   1157 
   1158 define void @neg_srari_w(<4 x i32> * %ptr) {
   1159 entry:
   1160   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1161   %r = call <4 x i32> @llvm.mips.srari.w(<4 x i32> %a, i32 -3)
   1162   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1163   ret void
   1164 }
   1165 
   1166 define void @neg_srli_w(<4 x i32> * %ptr) {
   1167 entry:
   1168   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1169   %r = call <4 x i32> @llvm.mips.srli.w(<4 x i32> %a, i32 -3)
   1170   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1171   ret void
   1172 }
   1173 
   1174 define void @neg_srlri_w(<4 x i32> * %ptr) {
   1175 entry:
   1176   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1177   %r = call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %a, i32 -3)
   1178   store <4 x i32> %r, <4 x i32> * %ptr, align 16
   1179   ret void
   1180 }
   1181 
   1182 define void @neg_addvi_h(<8 x i16> * %ptr) {
   1183 entry:
   1184   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1185   %r = call <8 x i16> @llvm.mips.addvi.h(<8 x i16> %a, i32 -25)
   1186   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1187   ret void
   1188 }
   1189 
   1190 define void @neg_bclri_h(<8 x i16> * %ptr) {
   1191 entry:
   1192   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1193   %r = call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %a, i32 -8)
   1194   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1195   ret void
   1196 }
   1197 
   1198 define void @neg_binsli_h(<8 x i16> * %ptr) {
   1199 entry:
   1200   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1201   %r = call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %a, <8 x i16> %a, i32 -8)
   1202   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1203   ret void
   1204 }
   1205 
   1206 define void @neg_binsri_h(<8 x i16> * %ptr) {
   1207 entry:
   1208   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1209   %r = call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %a, <8 x i16> %a, i32 -15)
   1210   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1211   ret void
   1212 }
   1213 
   1214 define void @neg_bnegi_h(<8 x i16> * %ptr) {
   1215 entry:
   1216   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1217   %r = call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %a, i32 -14)
   1218   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1219   ret void
   1220 }
   1221 
   1222 define void @neg_bseti_h(<8 x i16> * %ptr) {
   1223 entry:
   1224   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1225   %r = call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %a, i32 -15)
   1226   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1227   ret void
   1228 }
   1229 
   1230 define void @neg_clei_s_h(<8 x i16> * %ptr) {
   1231 entry:
   1232   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1233   %r = call <8 x i16> @llvm.mips.clei.s.h(<8 x i16> %a, i32 -25)
   1234   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1235   ret void
   1236 }
   1237 
   1238 define void @neg_clei_u_h(<8 x i16> * %ptr) {
   1239 entry:
   1240   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1241   %r = call <8 x i16> @llvm.mips.clei.u.h(<8 x i16> %a, i32 -25)
   1242   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1243   ret void
   1244 }
   1245 
   1246 define void @neg_clti_s_h(<8 x i16> * %ptr) {
   1247 entry:
   1248   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1249   %r = call <8 x i16> @llvm.mips.clti.s.h(<8 x i16> %a, i32 -150)
   1250   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1251   ret void
   1252 }
   1253 
   1254 define void @neg_clti_u_h(<8 x i16> * %ptr) {
   1255 entry:
   1256   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1257   %r = call <8 x i16> @llvm.mips.clti.u.h(<8 x i16> %a, i32 -25)
   1258   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1259   ret void
   1260 }
   1261 
   1262 define void @neg_maxi_s_h(<8 x i16> * %ptr) {
   1263 entry:
   1264   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1265   %r = call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %a, i32 -200)
   1266   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1267   ret void
   1268 }
   1269 
   1270 define void @neg_maxi_u_h(<8 x i16> * %ptr) {
   1271 entry:
   1272   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1273   %r = call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %a, i32 -200)
   1274   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1275   ret void
   1276 }
   1277 
   1278 define void @neg_mini_s_h(<8 x i16> * %ptr) {
   1279 entry:
   1280   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1281   %r = call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %a, i32 -200)
   1282   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1283   ret void
   1284 }
   1285 
   1286 define void @neg_mini_u_h(<8 x i16> * %ptr) {
   1287 entry:
   1288   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1289   %r = call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %a, i32 -2)
   1290   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1291   ret void
   1292 }
   1293 
   1294 define void @neg_ldi_h(<8 x i16> * %ptr) {
   1295 entry:
   1296   %r = call <8 x i16> @llvm.mips.ldi.h(i32 -300)
   1297   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1298   ret void
   1299 }
   1300 
   1301 define void @neg_sldi_h(<8 x i16> * %ptr) {
   1302 entry:
   1303   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1304   %r = call <8 x i16> @llvm.mips.sldi.h(<8 x i16> %a, <8 x i16> %a, i32 -3)
   1305   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1306   ret void
   1307 }
   1308 
   1309 define void @neg_slli_h(<8 x i16> * %ptr) {
   1310 entry:
   1311   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1312   %r = call <8 x i16> @llvm.mips.slli.h(<8 x i16> %a, i32 -3)
   1313   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1314   ret void
   1315 }
   1316 
   1317 define void @neg_splati_h(<8 x i16> * %ptr) {
   1318 entry:
   1319   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1320   %r = call <8 x i16> @llvm.mips.splati.h(<8 x i16> %a, i32 -3)
   1321   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1322   ret void
   1323 }
   1324 
   1325 define void @neg_srai_h(<8 x i16> * %ptr) {
   1326 entry:
   1327   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1328   %r = call <8 x i16> @llvm.mips.srai.h(<8 x i16> %a, i32 -3)
   1329   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1330   ret void
   1331 }
   1332 
   1333 define void @neg_srari_h(<8 x i16> * %ptr) {
   1334 entry:
   1335   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1336   %r = call <8 x i16> @llvm.mips.srari.h(<8 x i16> %a, i32 -3)
   1337   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1338   ret void
   1339 }
   1340 
   1341 define void @neg_srli_h(<8 x i16> * %ptr) {
   1342 entry:
   1343   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1344   %r = call <8 x i16> @llvm.mips.srli.h(<8 x i16> %a, i32 -3)
   1345   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1346   ret void
   1347 }
   1348 
   1349 define void @neg_srlri_h(<8 x i16> * %ptr) {
   1350 entry:
   1351   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1352   %r = call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %a, i32 -3)
   1353   store <8 x i16> %r, <8 x i16> * %ptr, align 16
   1354   ret void
   1355 }
   1356 
   1357 define i32 @neg_copy_s_b(<16 x i8> * %ptr) {
   1358 entry:
   1359   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
   1360   %r = call i32 @llvm.mips.copy.s.b(<16 x i8> %a, i32 -1)
   1361   ret i32 %r
   1362 }
   1363 
   1364 define i32 @neg_copy_s_h(<8 x i16> * %ptr) {
   1365 entry:
   1366   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1367   %r = call i32 @llvm.mips.copy.s.h(<8 x i16> %a, i32 -1)
   1368   ret i32 %r
   1369 }
   1370 
   1371 define i32 @neg_copy_s_w(<4 x i32> * %ptr) {
   1372 entry:
   1373   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1374   %r = call i32 @llvm.mips.copy.s.w(<4 x i32> %a, i32 -1)
   1375   ret i32 %r
   1376 }
   1377 
   1378 define i32 @neg_copy_u_b(<16 x i8> * %ptr) {
   1379 entry:
   1380   %a = load <16 x i8>, <16 x i8> * %ptr, align 16
   1381   %r = call i32 @llvm.mips.copy.u.b(<16 x i8> %a, i32 -1)
   1382   ret i32 %r
   1383 }
   1384 
   1385 
   1386 define i32 @neg_copy_u_h(<8 x i16> * %ptr) {
   1387 entry:
   1388   %a = load <8 x i16>, <8 x i16> * %ptr, align 16
   1389   %r = call i32 @llvm.mips.copy.u.h(<8 x i16> %a, i32 -1)
   1390   ret i32 %r
   1391 }
   1392 
   1393 
   1394 define i32 @neg_copy_u_w(<4 x i32> * %ptr) {
   1395 entry:
   1396   %a = load <4 x i32>, <4 x i32> * %ptr, align 16
   1397   %r = call i32 @llvm.mips.copy.u.w(<4 x i32> %a, i32 -1)
   1398   ret i32 %r
   1399 }
   1400 
   1401 define i64 @neg_copy_s_d(<2 x i64> * %ptr) {
   1402 entry:  %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1403   %r = call i64 @llvm.mips.copy.s.d(<2 x i64> %a, i32 -1)
   1404   ret i64 %r
   1405 }
   1406 
   1407 define i64 @neg_copy_u_d(<2 x i64> * %ptr) {
   1408 entry:  %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1409   %r = call i64 @llvm.mips.copy.u.d(<2 x i64> %a, i32 -1)
   1410   ret i64 %r
   1411 }
   1412 
   1413 define void @neg_addvi_d(<2 x i64> * %ptr) {
   1414 entry:
   1415   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1416   %r = call <2 x i64> @llvm.mips.addvi.d(<2 x i64> %a, i32 -25)
   1417   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1418   ret void
   1419 }
   1420 
   1421 define void @neg_bclri_d(<2 x i64> * %ptr) {
   1422 entry:
   1423   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1424   %r = call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %a, i32 -25)
   1425   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1426   ret void
   1427 }
   1428 
   1429 define void @neg_binsli_d(<2 x i64> * %ptr) {
   1430 entry:
   1431   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1432   %r = call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %a, <2 x i64> %a, i32 -25)
   1433   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1434   ret void
   1435 }
   1436 
   1437 define void @neg_binsri_d(<2 x i64> * %ptr) {
   1438 entry:
   1439   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1440   %r = call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %a, <2 x i64> %a, i32 -25)
   1441   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1442   ret void
   1443 }
   1444 
   1445 define void @neg_bnegi_d(<2 x i64> * %ptr) {
   1446 entry:
   1447   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1448   %r = call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %a, i32 -25)
   1449   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1450   ret void
   1451 }
   1452 
   1453 define void @neg_bseti_d(<2 x i64> * %ptr) {
   1454 entry:
   1455   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1456   %r = call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %a, i32 -25)
   1457   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1458   ret void
   1459 }
   1460 
   1461 define void @neg_clei_s_d(<2 x i64> * %ptr) {
   1462 entry:
   1463   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1464   %r = call <2 x i64> @llvm.mips.clei.s.d(<2 x i64> %a, i32 -45)
   1465   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1466   ret void
   1467 }
   1468 
   1469 define void @neg_clei_u_d(<2 x i64> * %ptr) {
   1470 entry:
   1471   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1472   %r = call <2 x i64> @llvm.mips.clei.u.d(<2 x i64> %a, i32 -25)
   1473   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1474   ret void
   1475 }
   1476 
   1477 define void @neg_clti_s_d(<2 x i64> * %ptr) {
   1478 entry:
   1479   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1480   %r = call <2 x i64> @llvm.mips.clti.s.d(<2 x i64> %a, i32 -32)
   1481   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1482   ret void
   1483 }
   1484 
   1485 define void @neg_clti_u_d(<2 x i64> * %ptr) {
   1486 entry:
   1487   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1488   %r = call <2 x i64> @llvm.mips.clti.u.d(<2 x i64> %a, i32 -25)
   1489   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1490   ret void
   1491 }
   1492 
   1493 define void @neg_ldi_d(<2 x i64> * %ptr) {
   1494 entry:
   1495   %r = call <2 x i64> @llvm.mips.ldi.d(i32 -3)
   1496   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1497   ret void
   1498 }
   1499 
   1500 define void @neg_maxi_s_d(<2 x i64> * %ptr) {
   1501 entry:
   1502   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1503   %r = call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %a, i32 -202)
   1504   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1505   ret void
   1506 }
   1507 
   1508 define void @neg_maxi_u_d(<2 x i64> * %ptr) {
   1509 entry:
   1510   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1511   %r = call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %a, i32 -2)
   1512   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1513   ret void
   1514 }
   1515 
   1516 define void @neg_mini_s_d(<2 x i64> * %ptr) {
   1517 entry:
   1518   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1519   %r = call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %a, i32 -202)
   1520   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1521   ret void
   1522 }
   1523 
   1524 define void @neg_mini_u_d(<2 x i64> * %ptr) {
   1525 entry:
   1526   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1527   %r = call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %a, i32 -2)
   1528   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1529   ret void
   1530 }
   1531 
   1532 define void @neg_sldi_d(<2 x i64> * %ptr) {
   1533 entry:
   1534   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1535   %r = call <2 x i64> @llvm.mips.sldi.d(<2 x i64> %a, <2 x i64> %a, i32 -1)
   1536   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1537   ret void
   1538 }
   1539 
   1540 define void @neg_slli_d(<2 x i64> * %ptr) {
   1541 entry:
   1542   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1543   %r = call <2 x i64> @llvm.mips.slli.d(<2 x i64> %a, i32 -3)
   1544   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1545   ret void
   1546 }
   1547 
   1548 define void @neg_srai_d(<2 x i64> * %ptr) {
   1549 entry:
   1550   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1551   %r = call <2 x i64> @llvm.mips.srai.d(<2 x i64> %a, i32 -3)
   1552   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1553   ret void
   1554 }
   1555 
   1556 define void @neg_srari_d(<2 x i64> * %ptr) {
   1557 entry:
   1558   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1559   %r = call <2 x i64> @llvm.mips.srari.d(<2 x i64> %a, i32 -3)
   1560   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1561   ret void
   1562 }
   1563 
   1564 define void @neg_srli_d(<2 x i64> * %ptr) {
   1565 entry:
   1566   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1567   %r = call <2 x i64> @llvm.mips.srli.d(<2 x i64> %a, i32 -3)
   1568   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1569   ret void
   1570 }
   1571 
   1572 define void @neg_srlri_d(<2 x i64> * %ptr) {
   1573 entry:
   1574   %a = load <2 x i64>, <2 x i64> * %ptr, align 16
   1575   %r = call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %a, i32 -3)
   1576   store <2 x i64> %r, <2 x i64> * %ptr, align 16
   1577   ret void
   1578 }
   1579 
   1580 declare <8 x i16> @llvm.mips.ldi.h(i32)
   1581 declare <8 x i16> @llvm.mips.addvi.h(<8 x i16>, i32)
   1582 declare <8 x i16> @llvm.mips.bclri.h(<8 x i16>, i32)
   1583 declare <8 x i16> @llvm.mips.binsli.h(<8 x i16>, <8 x i16>, i32)
   1584 declare <8 x i16> @llvm.mips.binsri.h(<8 x i16>, <8 x i16>, i32)
   1585 declare <8 x i16> @llvm.mips.bnegi.h(<8 x i16>, i32)
   1586 declare <8 x i16> @llvm.mips.bseti.h(<8 x i16>, i32)
   1587 declare <8 x i16> @llvm.mips.clei.s.h(<8 x i16>, i32)
   1588 declare <8 x i16> @llvm.mips.clei.u.h(<8 x i16>, i32)
   1589 declare <8 x i16> @llvm.mips.clti.s.h(<8 x i16>, i32)
   1590 declare <8 x i16> @llvm.mips.clti.u.h(<8 x i16>, i32)
   1591 declare <8 x i16> @llvm.mips.maxi.s.h(<8 x i16>, i32)
   1592 declare <8 x i16> @llvm.mips.maxi.u.h(<8 x i16>, i32)
   1593 declare <8 x i16> @llvm.mips.mini.s.h(<8 x i16>, i32)
   1594 declare <8 x i16> @llvm.mips.mini.u.h(<8 x i16>, i32)
   1595 declare <8 x i16> @llvm.mips.sldi.h(<8 x i16>, <8 x i16>, i32)
   1596 declare <8 x i16> @llvm.mips.slli.h(<8 x i16>, i32)
   1597 declare <8 x i16> @llvm.mips.splati.h(<8 x i16>, i32)
   1598 declare <8 x i16> @llvm.mips.srai.h(<8 x i16>, i32)
   1599 declare <8 x i16> @llvm.mips.srari.h(<8 x i16>, i32)
   1600 declare <8 x i16> @llvm.mips.srli.h(<8 x i16>, i32)
   1601 declare <8 x i16> @llvm.mips.srlri.h(<8 x i16>, i32)
   1602 declare <4 x i32> @llvm.mips.addvi.w(<4 x i32>, i32)
   1603 declare <4 x i32> @llvm.mips.bclri.w(<4 x i32>, i32)
   1604 declare <4 x i32> @llvm.mips.binsli.w(<4 x i32>, <4 x i32>, i32)
   1605 declare <4 x i32> @llvm.mips.binsri.w(<4 x i32>, <4 x i32>, i32)
   1606 declare <4 x i32> @llvm.mips.bnegi.w(<4 x i32>, i32)
   1607 declare <4 x i32> @llvm.mips.bseti.w(<4 x i32>, i32)
   1608 declare <4 x i32> @llvm.mips.ldi.w(i32)
   1609 declare <4 x i32> @llvm.mips.clei.s.w(<4 x i32>, i32)
   1610 declare <4 x i32> @llvm.mips.clei.u.w(<4 x i32>, i32)
   1611 declare <4 x i32> @llvm.mips.clti.s.w(<4 x i32>, i32)
   1612 declare <4 x i32> @llvm.mips.clti.u.w(<4 x i32>, i32)
   1613 declare <4 x i32> @llvm.mips.maxi.s.w(<4 x i32>, i32)
   1614 declare <4 x i32> @llvm.mips.maxi.u.w(<4 x i32>, i32)
   1615 declare <4 x i32> @llvm.mips.mini.s.w(<4 x i32>, i32)
   1616 declare <4 x i32> @llvm.mips.mini.u.w(<4 x i32>, i32)
   1617 declare <4 x i32> @llvm.mips.sldi.w(<4 x i32>, <4 x i32>, i32)
   1618 declare <4 x i32> @llvm.mips.slli.w(<4 x i32>, i32)
   1619 declare <4 x i32> @llvm.mips.splati.w(<4 x i32>, i32)
   1620 declare <4 x i32> @llvm.mips.srai.w(<4 x i32>, i32)
   1621 declare <4 x i32> @llvm.mips.srari.w(<4 x i32>, i32)
   1622 declare <4 x i32> @llvm.mips.srli.w(<4 x i32>, i32)
   1623 declare <4 x i32> @llvm.mips.srlri.w(<4 x i32>, i32)
   1624 declare <2 x i64> @llvm.mips.ldi.d(i32)
   1625 declare <2 x i64> @llvm.mips.addvi.d(<2 x i64>, i32)
   1626 declare <2 x i64> @llvm.mips.bclri.d(<2 x i64>, i32)
   1627 declare <2 x i64> @llvm.mips.binsli.d(<2 x i64>, <2 x i64>, i32)
   1628 declare <2 x i64> @llvm.mips.binsri.d(<2 x i64>, <2 x i64>, i32)
   1629 declare <2 x i64> @llvm.mips.bnegi.d(<2 x i64>, i32)
   1630 declare <2 x i64> @llvm.mips.bseti.d(<2 x i64>, i32)
   1631 declare <2 x i64> @llvm.mips.clei.s.d(<2 x i64>, i32)
   1632 declare <2 x i64> @llvm.mips.clei.u.d(<2 x i64>, i32)
   1633 declare <2 x i64> @llvm.mips.clti.s.d(<2 x i64>, i32)
   1634 declare <2 x i64> @llvm.mips.clti.u.d(<2 x i64>, i32)
   1635 declare <2 x i64> @llvm.mips.maxi.s.d(<2 x i64>, i32)
   1636 declare <2 x i64> @llvm.mips.maxi.u.d(<2 x i64>, i32)
   1637 declare <2 x i64> @llvm.mips.mini.s.d(<2 x i64>, i32)
   1638 declare <2 x i64> @llvm.mips.mini.u.d(<2 x i64>, i32)
   1639 declare <2 x i64> @llvm.mips.sldi.d(<2 x i64>, <2 x i64>, i32)
   1640 declare <2 x i64> @llvm.mips.slli.d(<2 x i64>, i32)
   1641 declare <2 x i64> @llvm.mips.splati.d(<2 x i64>, i32)
   1642 declare <2 x i64> @llvm.mips.srai.d(<2 x i64>, i32)
   1643 declare <2 x i64> @llvm.mips.srari.d(<2 x i64>, i32)
   1644 declare <2 x i64> @llvm.mips.srli.d(<2 x i64>, i32)
   1645 declare <2 x i64> @llvm.mips.srlri.d(<2 x i64>, i32)
   1646 declare <16 x i8> @llvm.mips.ldi.b(i32)
   1647 declare <16 x i8> @llvm.mips.addvi.b(<16 x i8>, i32)
   1648 declare <16 x i8> @llvm.mips.andi.b(<16 x i8>, i32)
   1649 declare <16 x i8> @llvm.mips.bclri.b(<16 x i8>, i32)
   1650 declare <16 x i8> @llvm.mips.binsli.b(<16 x i8>, <16 x i8>, i32)
   1651 declare <16 x i8> @llvm.mips.binsri.b(<16 x i8>, <16 x i8>, i32)
   1652 declare <16 x i8> @llvm.mips.bmnzi.b(<16 x i8>, <16 x i8>, i32)
   1653 declare <16 x i8> @llvm.mips.bnegi.b(<16 x i8>, i32)
   1654 declare <16 x i8> @llvm.mips.bseli.b(<16 x i8>, <16 x i8>, i32)
   1655 declare <16 x i8> @llvm.mips.bseti.b(<16 x i8>, i32)
   1656 declare <16 x i8> @llvm.mips.clei.s.b(<16 x i8>, i32)
   1657 declare <16 x i8> @llvm.mips.clei.u.b(<16 x i8>, i32)
   1658 declare <16 x i8> @llvm.mips.clti.s.b(<16 x i8>, i32)
   1659 declare <16 x i8> @llvm.mips.clti.u.b(<16 x i8>, i32)
   1660 declare <16 x i8> @llvm.mips.maxi.s.b(<16 x i8>, i32)
   1661 declare <16 x i8> @llvm.mips.maxi.u.b(<16 x i8>, i32)
   1662 declare <16 x i8> @llvm.mips.mini.s.b(<16 x i8>, i32)
   1663 declare <16 x i8> @llvm.mips.mini.u.b(<16 x i8>, i32)
   1664 declare <16 x i8> @llvm.mips.nori.b(<16 x i8>, i32)
   1665 declare <16 x i8> @llvm.mips.ori.b(<16 x i8>, i32)
   1666 declare <16 x i8> @llvm.mips.sldi.b(<16 x i8>, <16 x i8>, i32)
   1667 declare <16 x i8> @llvm.mips.slli.b(<16 x i8>, i32)
   1668 declare <16 x i8> @llvm.mips.splati.b(<16 x i8>, i32)
   1669 declare <16 x i8> @llvm.mips.srai.b(<16 x i8>, i32)
   1670 declare <16 x i8> @llvm.mips.srari.b(<16 x i8>, i32)
   1671 declare <16 x i8> @llvm.mips.srli.b(<16 x i8>, i32)
   1672 declare <16 x i8> @llvm.mips.srlri.b(<16 x i8>, i32)
   1673 declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32)
   1674 declare i32 @llvm.mips.copy.u.h(<8 x i16>, i32)
   1675 declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32)
   1676 declare i32 @llvm.mips.copy.u.w(<4 x i32>, i32)
   1677 declare i64 @llvm.mips.copy.s.d(<2 x i64>, i32)
   1678 declare i64 @llvm.mips.copy.u.d(<2 x i64>, i32)
   1679 declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32)
   1680 declare i32 @llvm.mips.copy.u.b(<16 x i8>, i32)
   1681 declare <16 x i8> @llvm.mips.bmzi.b(<16 x i8>, <16 x i8>, i32)
   1682