Home | History | Annotate | Download | only in CodeGen
      1 // REQUIRES: ppc32-registered-target
      2 // RUN: %clang_cc1 -faltivec -triple powerpc-unknown-unknown -emit-llvm %s -o - | FileCheck %s
      3 
      4 vector bool char vbc = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 };
      5 vector signed char vsc = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13, -14, 15, -16 };
      6 vector unsigned char vuc = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
      7 vector bool short vbs = { 1, 0, 1, 0, 1, 0, 1, 0 };
      8 vector short vs = { -1, 2, -3, 4, -5, 6, -7, 8 };
      9 vector unsigned short vus = { 1, 2, 3, 4, 5, 6, 7, 8 };
     10 vector pixel vp = { 1, 2, 3, 4, 5, 6, 7, 8 };
     11 vector bool int vbi = { 1, 0, 1, 0 };
     12 vector int vi = { -1, 2, -3, 4 };
     13 vector unsigned int vui = { 1, 2, 3, 4 };
     14 vector float vf = { -1.5, 2.5, -3.5, 4.5 };
     15 
     16 vector bool char res_vbc;
     17 vector signed char res_vsc;
     18 vector unsigned char res_vuc;
     19 vector bool short res_vbs;
     20 vector short res_vs;
     21 vector unsigned short res_vus;
     22 vector pixel res_vp;
     23 vector bool int res_vbi;
     24 vector int res_vi;
     25 vector unsigned int res_vui;
     26 vector float res_vf;
     27 
     28 signed char param_sc;
     29 unsigned char param_uc;
     30 short param_s;
     31 unsigned short param_us;
     32 int param_i;
     33 unsigned int param_ui;
     34 float param_f;
     35 
     36 int res_sc;
     37 int res_uc;
     38 int res_s;
     39 int res_us;
     40 int res_i;
     41 int res_ui;
     42 int res_f;
     43 
     44 // CHECK: define void @test1
     45 void test1() {
     46 
     47   /* vec_abs */
     48   vsc = vec_abs(vsc);                           // CHECK: sub <16 x i8> zeroinitializer
     49                                                 // CHECK: @llvm.ppc.altivec.vmaxsb
     50 
     51   vs = vec_abs(vs);                             // CHECK: sub <8 x i16> zeroinitializer
     52                                                 // CHECK: @llvm.ppc.altivec.vmaxsh
     53 
     54   vi = vec_abs(vi);                             // CHECK: sub <4 x i32> zeroinitializer
     55                                                 // CHECK: @llvm.ppc.altivec.vmaxsw
     56 
     57   vf = vec_abs(vf);                             // CHECK: and <4 x i32>
     58 
     59   /* vec_abs */
     60   vsc = vec_abss(vsc);                          // CHECK: @llvm.ppc.altivec.vsubsbs
     61                                                 // CHECK: @llvm.ppc.altivec.vmaxsb
     62 
     63   vs = vec_abss(vs);                            // CHECK: @llvm.ppc.altivec.vsubshs
     64                                                 // CHECK: @llvm.ppc.altivec.vmaxsh
     65 
     66   vi = vec_abss(vi);                            // CHECK: @llvm.ppc.altivec.vsubsws
     67                                                 // CHECK: @llvm.ppc.altivec.vmaxsw
     68 
     69   /*  vec_add */
     70   res_vsc = vec_add(vsc, vsc);                  // CHECK: add <16 x i8>
     71   res_vsc = vec_add(vbc, vsc);                  // CHECK: add <16 x i8>
     72   res_vsc = vec_add(vsc, vbc);                  // CHECK: add <16 x i8>
     73   res_vuc = vec_add(vuc, vuc);                  // CHECK: add <16 x i8>
     74   res_vuc = vec_add(vbc, vuc);                  // CHECK: add <16 x i8>
     75   res_vuc = vec_add(vuc, vbc);                  // CHECK: add <16 x i8>
     76   res_vs  = vec_add(vs, vs);                    // CHECK: add <8 x i16>
     77   res_vs  = vec_add(vbs, vs);                   // CHECK: add <8 x i16>
     78   res_vs  = vec_add(vs, vbs);                   // CHECK: add <8 x i16>
     79   res_vus = vec_add(vus, vus);                  // CHECK: add <8 x i16>
     80   res_vus = vec_add(vbs, vus);                  // CHECK: add <8 x i16>
     81   res_vus = vec_add(vus, vbs);                  // CHECK: add <8 x i16>
     82   res_vi  = vec_add(vi, vi);                    // CHECK: add <4 x i32>
     83   res_vi  = vec_add(vbi, vi);                   // CHECK: add <4 x i32>
     84   res_vi  = vec_add(vi, vbi);                   // CHECK: add <4 x i32>
     85   res_vui = vec_add(vui, vui);                  // CHECK: add <4 x i32>
     86   res_vui = vec_add(vbi, vui);                  // CHECK: add <4 x i32>
     87   res_vui = vec_add(vui, vbi);                  // CHECK: add <4 x i32>
     88   res_vf  = vec_add(vf, vf);                    // CHECK: fadd <4 x float>
     89   res_vsc = vec_vaddubm(vsc, vsc);              // CHECK: add <16 x i8>
     90   res_vsc = vec_vaddubm(vbc, vsc);              // CHECK: add <16 x i8>
     91   res_vsc = vec_vaddubm(vsc, vbc);              // CHECK: add <16 x i8>
     92   res_vuc = vec_vaddubm(vuc, vuc);              // CHECK: add <16 x i8>
     93   res_vuc = vec_vaddubm(vbc, vuc);              // CHECK: add <16 x i8>
     94   res_vuc = vec_vaddubm(vuc, vbc);              // CHECK: add <16 x i8>
     95   res_vs  = vec_vadduhm(vs, vs);                // CHECK: add <8 x i16>
     96   res_vs  = vec_vadduhm(vbs, vs);               // CHECK: add <8 x i16>
     97   res_vs  = vec_vadduhm(vs, vbs);               // CHECK: add <8 x i16>
     98   res_vus = vec_vadduhm(vus, vus);              // CHECK: add <8 x i16>
     99   res_vus = vec_vadduhm(vbs, vus);              // CHECK: add <8 x i16>
    100   res_vus = vec_vadduhm(vus, vbs);              // CHECK: add <8 x i16>
    101   res_vi  = vec_vadduwm(vi, vi);                // CHECK: add <4 x i32>
    102   res_vi  = vec_vadduwm(vbi, vi);               // CHECK: add <4 x i32>
    103   res_vi  = vec_vadduwm(vi, vbi);               // CHECK: add <4 x i32>
    104   res_vui = vec_vadduwm(vui, vui);              // CHECK: add <4 x i32>
    105   res_vui = vec_vadduwm(vbi, vui);              // CHECK: add <4 x i32>
    106   res_vui = vec_vadduwm(vui, vbi);              // CHECK: add <4 x i32>
    107   res_vf  = vec_vaddfp(vf, vf);                 // CHECK: fadd <4 x float>
    108 
    109   /* vec_addc */
    110   res_vui = vec_addc(vui, vui);                 // HECK: @llvm.ppc.altivec.vaddcuw
    111   res_vui = vec_vaddcuw(vui, vui);              // HECK: @llvm.ppc.altivec.vaddcuw
    112 
    113   /* vec_adds */
    114   res_vsc = vec_adds(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
    115   res_vsc = vec_adds(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
    116   res_vsc = vec_adds(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vaddsbs
    117   res_vuc = vec_adds(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vaddubs
    118   res_vuc = vec_adds(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vaddubs
    119   res_vuc = vec_adds(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vaddubs
    120   res_vs  = vec_adds(vs, vs);                   // CHECK: @llvm.ppc.altivec.vaddshs
    121   res_vs  = vec_adds(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vaddshs
    122   res_vs  = vec_adds(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vaddshs
    123   res_vus = vec_adds(vus, vus);                 // CHECK: @llvm.ppc.altivec.vadduhs
    124   res_vus = vec_adds(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vadduhs
    125   res_vus = vec_adds(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vadduhs
    126   res_vi  = vec_adds(vi, vi);                   // CHECK: @llvm.ppc.altivec.vaddsws
    127   res_vi  = vec_adds(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vaddsws
    128   res_vi  = vec_adds(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vaddsws
    129   res_vui = vec_adds(vui, vui);                 // CHECK: @llvm.ppc.altivec.vadduws
    130   res_vui = vec_adds(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vadduws
    131   res_vui = vec_adds(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vadduws
    132   res_vsc = vec_vaddsbs(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vaddsbs
    133   res_vsc = vec_vaddsbs(vbc, vsc);              // CHECK: @llvm.ppc.altivec.vaddsbs
    134   res_vsc = vec_vaddsbs(vsc, vbc);              // CHECK: @llvm.ppc.altivec.vaddsbs
    135   res_vuc = vec_vaddubs(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vaddubs
    136   res_vuc = vec_vaddubs(vbc, vuc);              // CHECK: @llvm.ppc.altivec.vaddubs
    137   res_vuc = vec_vaddubs(vuc, vbc);              // CHECK: @llvm.ppc.altivec.vaddubs
    138   res_vs  = vec_vaddshs(vs, vs);                // CHECK: @llvm.ppc.altivec.vaddshs
    139   res_vs  = vec_vaddshs(vbs, vs);               // CHECK: @llvm.ppc.altivec.vaddshs
    140   res_vs  = vec_vaddshs(vs, vbs);               // CHECK: @llvm.ppc.altivec.vaddshs
    141   res_vus = vec_vadduhs(vus, vus);              // CHECK: @llvm.ppc.altivec.vadduhs
    142   res_vus = vec_vadduhs(vbs, vus);              // CHECK: @llvm.ppc.altivec.vadduhs
    143   res_vus = vec_vadduhs(vus, vbs);              // CHECK: @llvm.ppc.altivec.vadduhs
    144   res_vi  = vec_vaddsws(vi, vi);                // CHECK: @llvm.ppc.altivec.vaddsws
    145   res_vi  = vec_vaddsws(vbi, vi);               // CHECK: @llvm.ppc.altivec.vaddsws
    146   res_vi  = vec_vaddsws(vi, vbi);               // CHECK: @llvm.ppc.altivec.vaddsws
    147   res_vui = vec_vadduws(vui, vui);              // CHECK: @llvm.ppc.altivec.vadduws
    148   res_vui = vec_vadduws(vbi, vui);              // CHECK: @llvm.ppc.altivec.vadduws
    149   res_vui = vec_vadduws(vui, vbi);              // CHECK: @llvm.ppc.altivec.vadduws
    150 
    151   /* vec_and */
    152   res_vsc = vec_and(vsc, vsc);                  // CHECK: and <16 x i8>
    153   res_vsc = vec_and(vbc, vsc);                  // CHECK: and <16 x i8>
    154   res_vsc = vec_and(vsc, vbc);                  // CHECK: and <16 x i8>
    155   res_vuc = vec_and(vuc, vuc);                  // CHECK: and <16 x i8>
    156   res_vuc = vec_and(vbc, vuc);                  // CHECK: and <16 x i8>
    157   res_vuc = vec_and(vuc, vbc);                  // CHECK: and <16 x i8>
    158   res_vbc = vec_and(vbc, vbc);                  // CHECK: and <16 x i8>
    159   res_vs  = vec_and(vs, vs);                    // CHECK: and <8 x i16>
    160   res_vs  = vec_and(vbs, vs);                   // CHECK: and <8 x i16>
    161   res_vs  = vec_and(vs, vbs);                   // CHECK: and <8 x i16>
    162   res_vus = vec_and(vus, vus);                  // CHECK: and <8 x i16>
    163   res_vus = vec_and(vbs, vus);                  // CHECK: and <8 x i16>
    164   res_vus = vec_and(vus, vbs);                  // CHECK: and <8 x i16>
    165   res_vbs = vec_and(vbs, vbs);                  // CHECK: and <8 x i16>
    166   res_vi  = vec_and(vi, vi);                    // CHECK: and <4 x i32>
    167   res_vi  = vec_and(vbi, vi);                   // CHECK: and <4 x i32>
    168   res_vi  = vec_and(vi, vbi);                   // CHECK: and <4 x i32>
    169   res_vui = vec_and(vui, vui);                  // CHECK: and <4 x i32>
    170   res_vui = vec_and(vbi, vui);                  // CHECK: and <4 x i32>
    171   res_vui = vec_and(vui, vbi);                  // CHECK: and <4 x i32>
    172   res_vbi = vec_and(vbi, vbi);                  // CHECK: and <4 x i32>
    173   res_vsc = vec_vand(vsc, vsc);                 // CHECK: and <16 x i8>
    174   res_vsc = vec_vand(vbc, vsc);                 // CHECK: and <16 x i8>
    175   res_vsc = vec_vand(vsc, vbc);                 // CHECK: and <16 x i8>
    176   res_vuc = vec_vand(vuc, vuc);                 // CHECK: and <16 x i8>
    177   res_vuc = vec_vand(vbc, vuc);                 // CHECK: and <16 x i8>
    178   res_vuc = vec_vand(vuc, vbc);                 // CHECK: and <16 x i8>
    179   res_vbc = vec_vand(vbc, vbc);                 // CHECK: and <16 x i8>
    180   res_vs  = vec_vand(vs, vs);                   // CHECK: and <8 x i16>
    181   res_vs  = vec_vand(vbs, vs);                  // CHECK: and <8 x i16>
    182   res_vs  = vec_vand(vs, vbs);                  // CHECK: and <8 x i16>
    183   res_vus = vec_vand(vus, vus);                 // CHECK: and <8 x i16>
    184   res_vus = vec_vand(vbs, vus);                 // CHECK: and <8 x i16>
    185   res_vus = vec_vand(vus, vbs);                 // CHECK: and <8 x i16>
    186   res_vbs = vec_vand(vbs, vbs);                 // CHECK: and <8 x i16>
    187   res_vi  = vec_vand(vi, vi);                   // CHECK: and <4 x i32>
    188   res_vi  = vec_vand(vbi, vi);                  // CHECK: and <4 x i32>
    189   res_vi  = vec_vand(vi, vbi);                  // CHECK: and <4 x i32>
    190   res_vui = vec_vand(vui, vui);                 // CHECK: and <4 x i32>
    191   res_vui = vec_vand(vbi, vui);                 // CHECK: and <4 x i32>
    192   res_vui = vec_vand(vui, vbi);                 // CHECK: and <4 x i32>
    193   res_vbi = vec_vand(vbi, vbi);                 // CHECK: and <4 x i32>
    194 
    195   /* vec_andc */
    196   res_vsc = vec_andc(vsc, vsc);                 // CHECK: xor <16 x i8>
    197                                                 // CHECK: and <16 x i8>
    198 
    199   res_vsc = vec_andc(vbc, vsc);                 // CHECK: xor <16 x i8>
    200                                                 // CHECK: and <16 x i8>
    201 
    202   res_vsc = vec_andc(vsc, vbc);                 // CHECK: xor <16 x i8>
    203                                                 // CHECK: and <16 x i8>
    204 
    205   res_vuc = vec_andc(vuc, vuc);                 // CHECK: xor <16 x i8>
    206                                                 // CHECK: and <16 x i8>
    207 
    208   res_vuc = vec_andc(vbc, vuc);                 // CHECK: xor <16 x i8>
    209                                                 // CHECK: and <16 x i8>
    210 
    211   res_vuc = vec_andc(vuc, vbc);                 // CHECK: xor <16 x i8>
    212                                                 // CHECK: and <16 x i8>
    213 
    214   res_vbc = vec_andc(vbc, vbc);                 // CHECK: xor <16 x i8>
    215                                                 // CHECK: and <16 x i8>
    216 
    217   res_vs  = vec_andc(vs, vs);                   // CHECK: xor <8 x i16>
    218                                                 // CHECK: and <8 x i16>
    219 
    220   res_vs  = vec_andc(vbs, vs);                  // CHECK: xor <8 x i16>
    221                                                 // CHECK: and <8 x i16>
    222 
    223   res_vs  = vec_andc(vs, vbs);                  // CHECK: xor <8 x i16>
    224                                                 // CHECK: and <8 x i16>
    225 
    226   res_vus = vec_andc(vus, vus);                 // CHECK: xor <8 x i16>
    227                                                 // CHECK: and <8 x i16>
    228 
    229   res_vus = vec_andc(vbs, vus);                 // CHECK: xor <8 x i16>
    230                                                 // CHECK: and <8 x i16>
    231 
    232   res_vus = vec_andc(vus, vbs);                 // CHECK: xor <8 x i16>
    233                                                 // CHECK: and <8 x i16>
    234 
    235   res_vbs = vec_andc(vbs, vbs);                 // CHECK: xor <8 x i16>
    236                                                 // CHECK: and <8 x i16>
    237 
    238   res_vi  = vec_andc(vi, vi);                   // CHECK: xor <4 x i32>
    239                                                 // CHECK: and <4 x i32>
    240 
    241   res_vi  = vec_andc(vbi, vi);                  // CHECK: xor <4 x i32>
    242                                                 // CHECK: and <4 x i32>
    243 
    244   res_vi  = vec_andc(vi, vbi);                  // CHECK: xor <4 x i32>
    245                                                 // CHECK: and <4 x i32>
    246 
    247   res_vui = vec_andc(vui, vui);                 // CHECK: xor <4 x i32>
    248                                                 // CHECK: and <4 x i32>
    249 
    250   res_vui = vec_andc(vbi, vui);                 // CHECK: xor <4 x i32>
    251                                                 // CHECK: and <4 x i32>
    252 
    253   res_vui = vec_andc(vui, vbi);                 // CHECK: xor <4 x i32>
    254                                                 // CHECK: and <4 x i32>
    255 
    256   res_vf = vec_andc(vf, vf);                    // CHECK: xor <4 x i32>
    257                                                 // CHECK: and <4 x i32>
    258 
    259   res_vf = vec_andc(vbi, vf);                   // CHECK: xor <4 x i32>
    260                                                 // CHECK: and <4 x i32>
    261 
    262   res_vf = vec_andc(vf, vbi);                   // CHECK: xor <4 x i32>
    263                                                 // CHECK: and <4 x i32>
    264 
    265   res_vsc = vec_vandc(vsc, vsc);                // CHECK: xor <16 x i8>
    266                                                 // CHECK: and <16 x i8>
    267 
    268   res_vsc = vec_vandc(vbc, vsc);                // CHECK: xor <16 x i8>
    269                                                 // CHECK: and <16 x i8>
    270 
    271   res_vsc = vec_vandc(vsc, vbc);                // CHECK: xor <16 x i8>
    272                                                 // CHECK: and <16 x i8>
    273 
    274   res_vuc = vec_vandc(vuc, vuc);                // CHECK: xor <16 x i8>
    275                                                 // CHECK: and <16 x i8>
    276 
    277   res_vuc = vec_vandc(vbc, vuc);                // CHECK: xor <16 x i8>
    278                                                 // CHECK: and <16 x i8>
    279 
    280   res_vuc = vec_vandc(vuc, vbc);                // CHECK: xor <16 x i8>
    281                                                 // CHECK: and <16 x i8>
    282 
    283   res_vbc = vec_vandc(vbc, vbc);                // CHECK: xor <16 x i8>
    284                                                 // CHECK: and <16 x i8>
    285 
    286   res_vs  = vec_vandc(vs, vs);                  // CHECK: xor <8 x i16>
    287                                                 // CHECK: and <8 x i16>
    288 
    289   res_vs  = vec_vandc(vbs, vs);                 // CHECK: xor <8 x i16>
    290                                                 // CHECK: and <8 x i16>
    291 
    292   res_vs  = vec_vandc(vs, vbs);                 // CHECK: xor <8 x i16>
    293                                                 // CHECK: and <8 x i16>
    294 
    295   res_vus = vec_vandc(vus, vus);                // CHECK: xor <8 x i16>
    296                                                 // CHECK: and <8 x i16>
    297 
    298   res_vus = vec_vandc(vbs, vus);                // CHECK: xor <8 x i16>
    299                                                 // CHECK: and <8 x i16>
    300 
    301   res_vus = vec_vandc(vus, vbs);                // CHECK: xor <8 x i16>
    302                                                 // CHECK: and <8 x i16>
    303 
    304   res_vbs = vec_vandc(vbs, vbs);                // CHECK: xor <8 x i16>
    305                                                 // CHECK: and <8 x i16>
    306 
    307   res_vi  = vec_vandc(vi, vi);                  // CHECK: xor <4 x i32>
    308                                                 // CHECK: and <4 x i32>
    309 
    310   res_vi  = vec_vandc(vbi, vi);                 // CHECK: xor <4 x i32>
    311                                                 // CHECK: and <4 x i32>
    312 
    313   res_vi  = vec_vandc(vi, vbi);                 // CHECK: xor <4 x i32>
    314                                                 // CHECK: and <4 x i32>
    315 
    316   res_vui = vec_vandc(vui, vui);                // CHECK: xor <4 x i32>
    317                                                 // CHECK: and <4 x i32>
    318 
    319   res_vui = vec_vandc(vbi, vui);                // CHECK: xor <4 x i32>
    320                                                 // CHECK: and <4 x i32>
    321 
    322   res_vui = vec_vandc(vui, vbi);                // CHECK: xor <4 x i32>
    323                                                 // CHECK: and <4 x i32>
    324 
    325   res_vf = vec_vandc(vf, vf);                   // CHECK: xor <4 x i32>
    326                                                 // CHECK: and <4 x i32>
    327 
    328   res_vf = vec_vandc(vbi, vf);                  // CHECK: xor <4 x i32>
    329                                                 // CHECK: and <4 x i32>
    330 
    331   res_vf = vec_vandc(vf, vbi);                  // CHECK: xor <4 x i32>
    332                                                 // CHECK: and <4 x i32>
    333 
    334 }
    335 
    336 // CHECK: define void @test2
    337 void test2() {
    338   /* vec_avg */
    339   res_vsc = vec_avg(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vavgsb
    340   res_vuc = vec_avg(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vavgub
    341   res_vs  = vec_avg(vs, vs);                    // CHECK: @llvm.ppc.altivec.vavgsh
    342   res_vus = vec_avg(vus, vus);                  // CHECK: @llvm.ppc.altivec.vavguh
    343   res_vi  = vec_avg(vi, vi);                    // CHECK: @llvm.ppc.altivec.vavgsw
    344   res_vui = vec_avg(vui, vui);                  // CHECK: @llvm.ppc.altivec.vavguw
    345   res_vsc = vec_vavgsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vavgsb
    346   res_vuc = vec_vavgub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vavgub
    347   res_vs  = vec_vavgsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vavgsh
    348   res_vus = vec_vavguh(vus, vus);               // CHECK: @llvm.ppc.altivec.vavguh
    349   res_vi  = vec_vavgsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vavgsw
    350   res_vui = vec_vavguw(vui, vui);               // CHECK: @llvm.ppc.altivec.vavguw
    351 
    352   /* vec_ceil */
    353   res_vf = vec_ceil(vf);                        // CHECK: @llvm.ppc.altivec.vrfip
    354   res_vf = vec_vrfip(vf);                       // CHECK: @llvm.ppc.altivec.vrfip
    355 
    356   /* vec_cmpb */
    357   res_vi = vec_cmpb(vf, vf);                    // CHECK: @llvm.ppc.altivec.vcmpbfp
    358   res_vi = vec_vcmpbfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vcmpbfp
    359 
    360   /* vec_cmpeq */
    361   res_vbc = vec_cmpeq(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpequb
    362   res_vbc = vec_cmpeq(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpequb
    363   res_vbs = vec_cmpeq(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh
    364   res_vbs = vec_cmpeq(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpequh
    365   res_vbi = vec_cmpeq(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw
    366   res_vbi = vec_cmpeq(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpequw
    367   res_vbi = vec_cmpeq(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp
    368 
    369   /* vec_cmpge */
    370   res_vbi = vec_cmpge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp
    371   res_vbi = vec_vcmpgefp(vf, vf);               // CHECK: @llvm.ppc.altivec.vcmpgefp
    372 }
    373 
    374 // CHECK: define void @test5
    375 void test5() {
    376 
    377   /* vec_cmpgt */
    378   res_vbc = vec_cmpgt(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpgtsb
    379   res_vbc = vec_cmpgt(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpgtub
    380   res_vbs = vec_cmpgt(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh
    381   res_vbs = vec_cmpgt(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpgtuh
    382   res_vbi = vec_cmpgt(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw
    383   res_vbi = vec_cmpgt(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpgtuw
    384   res_vbi = vec_cmpgt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp
    385   res_vbc = vec_vcmpgtsb(vsc, vsc);             // CHECK: @llvm.ppc.altivec.vcmpgtsb
    386   res_vbc = vec_vcmpgtub(vuc, vuc);             // CHECK: @llvm.ppc.altivec.vcmpgtub
    387   res_vbs = vec_vcmpgtsh(vs, vs);               // CHECK: @llvm.ppc.altivec.vcmpgtsh
    388   res_vbs = vec_vcmpgtuh(vus, vus);             // CHECK: @llvm.ppc.altivec.vcmpgtuh
    389   res_vbi = vec_vcmpgtsw(vi, vi);               // CHECK: @llvm.ppc.altivec.vcmpgtsw
    390   res_vbi = vec_vcmpgtuw(vui, vui);             // CHECK: @llvm.ppc.altivec.vcmpgtuw
    391   res_vbi = vec_vcmpgtfp(vf, vf);               // CHECK: @llvm.ppc.altivec.vcmpgtfp
    392 
    393   /* vec_cmple */
    394   res_vbi = vec_cmple(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp
    395 }
    396 
    397 // CHECK: define void @test6
    398 void test6() {
    399   /* vec_cmplt */
    400   res_vbc = vec_cmplt(vsc, vsc);                // CHECK: @llvm.ppc.altivec.vcmpgtsb
    401   res_vbc = vec_cmplt(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vcmpgtub
    402   res_vbs = vec_cmplt(vs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh
    403   res_vbs = vec_cmplt(vus, vus);                // CHECK: @llvm.ppc.altivec.vcmpgtuh
    404   res_vbi = vec_cmplt(vi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw
    405   res_vbi = vec_cmplt(vui, vui);                // CHECK: @llvm.ppc.altivec.vcmpgtuw
    406   res_vbi = vec_cmplt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp
    407 
    408   /* vec_ctf */
    409   res_vf  = vec_ctf(vi, param_i);               // CHECK: @llvm.ppc.altivec.vcfsx
    410   res_vf  = vec_ctf(vui, 0);                    // CHECK: @llvm.ppc.altivec.vcfux
    411   res_vf  = vec_vcfsx(vi, 0);                   // CHECK: @llvm.ppc.altivec.vcfsx
    412   res_vf  = vec_vcfux(vui, 0);                  // CHECK: @llvm.ppc.altivec.vcfux
    413 
    414   /* vec_cts */
    415   res_vi = vec_cts(vf, 0);                      // CHECK: @llvm.ppc.altivec.vctsxs
    416   res_vi = vec_vctsxs(vf, 0);                   // CHECK: @llvm.ppc.altivec.vctsxs
    417 
    418   /* vec_ctu */
    419   res_vui = vec_ctu(vf, 0);                     // CHECK: @llvm.ppc.altivec.vctuxs
    420   res_vui = vec_vctuxs(vf, 0);                  // CHECK: @llvm.ppc.altivec.vctuxs
    421 
    422   /* vec_dss */
    423   vec_dss(param_i);                             // CHECK: @llvm.ppc.altivec.dss
    424 
    425   /* vec_dssall */
    426   vec_dssall();                                 // CHECK: @llvm.ppc.altivec.dssall
    427 
    428   /* vec_dst */
    429   vec_dst(&vsc, 0, 0);                          // CHECK: @llvm.ppc.altivec.dst
    430 
    431   /* vec_dstst */
    432   vec_dstst(&vs, 0, 0);                         // CHECK: @llvm.ppc.altivec.dstst
    433 
    434   /* vec_dststt */
    435   vec_dststt(&param_i, 0, 0);                   // CHECK: @llvm.ppc.altivec.dststt
    436 
    437   /* vec_dstt */
    438   vec_dstt(&vf, 0, 0);                          // CHECK: @llvm.ppc.altivec.dstt
    439 
    440   /* vec_expte */
    441   res_vf = vec_expte(vf);                       // CHECK: @llvm.ppc.altivec.vexptefp
    442   res_vf = vec_vexptefp(vf);                    // CHECK: @llvm.ppc.altivec.vexptefp
    443 
    444   /* vec_floor */
    445   res_vf = vec_floor(vf);                       // CHECK: @llvm.ppc.altivec.vrfim
    446   res_vf = vec_vrfim(vf);                       // CHECK: @llvm.ppc.altivec.vrfim
    447 
    448   /* vec_ld */
    449   res_vsc = vec_ld(0, &vsc);                    // CHECK: @llvm.ppc.altivec.lvx
    450   res_vsc = vec_ld(0, &param_sc);               // CHECK: @llvm.ppc.altivec.lvx
    451   res_vuc = vec_ld(0, &vuc);                    // CHECK: @llvm.ppc.altivec.lvx
    452   res_vuc = vec_ld(0, &param_uc);               // CHECK: @llvm.ppc.altivec.lvx
    453   res_vbc = vec_ld(0, &vbc);                    // CHECK: @llvm.ppc.altivec.lvx
    454   res_vs  = vec_ld(0, &vs);                     // CHECK: @llvm.ppc.altivec.lvx
    455   res_vs  = vec_ld(0, &param_s);                // CHECK: @llvm.ppc.altivec.lvx
    456   res_vus = vec_ld(0, &vus);                    // CHECK: @llvm.ppc.altivec.lvx
    457   res_vus = vec_ld(0, &param_us);               // CHECK: @llvm.ppc.altivec.lvx
    458   res_vbs = vec_ld(0, &vbs);                    // CHECK: @llvm.ppc.altivec.lvx
    459   res_vp  = vec_ld(0, &vp);                     // CHECK: @llvm.ppc.altivec.lvx
    460   res_vi  = vec_ld(0, &vi);                     // CHECK: @llvm.ppc.altivec.lvx
    461   res_vi  = vec_ld(0, &param_i);                // CHECK: @llvm.ppc.altivec.lvx
    462   res_vui = vec_ld(0, &vui);                    // CHECK: @llvm.ppc.altivec.lvx
    463   res_vui = vec_ld(0, &param_ui);               // CHECK: @llvm.ppc.altivec.lvx
    464   res_vbi = vec_ld(0, &vbi);                    // CHECK: @llvm.ppc.altivec.lvx
    465   res_vf  = vec_ld(0, &vf);                     // CHECK: @llvm.ppc.altivec.lvx
    466   res_vf  = vec_ld(0, &param_f);                // CHECK: @llvm.ppc.altivec.lvx
    467   res_vsc = vec_lvx(0, &vsc);                   // CHECK: @llvm.ppc.altivec.lvx
    468   res_vsc = vec_lvx(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvx
    469   res_vuc = vec_lvx(0, &vuc);                   // CHECK: @llvm.ppc.altivec.lvx
    470   res_vuc = vec_lvx(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvx
    471   res_vbc = vec_lvx(0, &vbc);                   // CHECK: @llvm.ppc.altivec.lvx
    472   res_vs  = vec_lvx(0, &vs);                    // CHECK: @llvm.ppc.altivec.lvx
    473   res_vs  = vec_lvx(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvx
    474   res_vus = vec_lvx(0, &vus);                   // CHECK: @llvm.ppc.altivec.lvx
    475   res_vus = vec_lvx(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvx
    476   res_vbs = vec_lvx(0, &vbs);                   // CHECK: @llvm.ppc.altivec.lvx
    477   res_vp  = vec_lvx(0, &vp);                    // CHECK: @llvm.ppc.altivec.lvx
    478   res_vi  = vec_lvx(0, &vi);                    // CHECK: @llvm.ppc.altivec.lvx
    479   res_vi  = vec_lvx(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvx
    480   res_vui = vec_lvx(0, &vui);                   // CHECK: @llvm.ppc.altivec.lvx
    481   res_vui = vec_lvx(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvx
    482   res_vbi = vec_lvx(0, &vbi);                   // CHECK: @llvm.ppc.altivec.lvx
    483   res_vf  = vec_lvx(0, &vf);                    // CHECK: @llvm.ppc.altivec.lvx
    484   res_vf  = vec_lvx(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvx
    485 
    486   /* vec_lde */
    487   res_vsc = vec_lde(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvebx
    488   res_vuc = vec_lde(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvebx
    489   res_vs  = vec_lde(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvehx
    490   res_vus = vec_lde(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvehx
    491   res_vi  = vec_lde(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvewx
    492   res_vui = vec_lde(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvewx
    493   res_vf  = vec_lde(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvewx
    494   res_vsc = vec_lvebx(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvebx
    495   res_vuc = vec_lvebx(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvebx
    496   res_vs  = vec_lvehx(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvehx
    497   res_vus = vec_lvehx(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvehx
    498   res_vi  = vec_lvewx(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvewx
    499   res_vui = vec_lvewx(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvewx
    500   res_vf  = vec_lvewx(0, &param_f);             // CHECK: @llvm.ppc.altivec.lvewx
    501 
    502   /* vec_ldl */
    503   res_vsc = vec_ldl(0, &vsc);                   // CHECK: @llvm.ppc.altivec.lvxl
    504   res_vsc = vec_ldl(0, &param_sc);              // CHECK: @llvm.ppc.altivec.lvxl
    505   res_vuc = vec_ldl(0, &vuc);                   // CHECK: @llvm.ppc.altivec.lvxl
    506   res_vuc = vec_ldl(0, &param_uc);              // CHECK: @llvm.ppc.altivec.lvxl
    507   res_vbc = vec_ldl(0, &vbc);                   // CHECK: @llvm.ppc.altivec.lvxl
    508   res_vs  = vec_ldl(0, &vs);                    // CHECK: @llvm.ppc.altivec.lvxl
    509   res_vs  = vec_ldl(0, &param_s);               // CHECK: @llvm.ppc.altivec.lvxl
    510   res_vus = vec_ldl(0, &vus);                   // CHECK: @llvm.ppc.altivec.lvxl
    511   res_vus = vec_ldl(0, &param_us);              // CHECK: @llvm.ppc.altivec.lvxl
    512   res_vbs = vec_ldl(0, &vbs);                   // CHECK: @llvm.ppc.altivec.lvxl
    513   res_vp  = vec_ldl(0, &vp);                    // CHECK: @llvm.ppc.altivec.lvxl
    514   res_vi  = vec_ldl(0, &vi);                    // CHECK: @llvm.ppc.altivec.lvxl
    515   res_vi  = vec_ldl(0, &param_i);               // CHECK: @llvm.ppc.altivec.lvxl
    516   res_vui = vec_ldl(0, &vui);                   // CHECK: @llvm.ppc.altivec.lvxl
    517   res_vui = vec_ldl(0, &param_ui);              // CHECK: @llvm.ppc.altivec.lvxl
    518   res_vbi = vec_ldl(0, &vbi);                   // CHECK: @llvm.ppc.altivec.lvxl
    519   res_vf  = vec_ldl(0, &vf);                    // CHECK: @llvm.ppc.altivec.lvxl
    520   res_vf  = vec_ldl(0, &param_f);               // CHECK: @llvm.ppc.altivec.lvxl
    521   res_vsc = vec_lvxl(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvxl
    522   res_vsc = vec_lvxl(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvxl
    523   res_vuc = vec_lvxl(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvxl
    524   res_vbc = vec_lvxl(0, &vbc);                  // CHECK: @llvm.ppc.altivec.lvxl
    525   res_vuc = vec_lvxl(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvxl
    526   res_vs  = vec_lvxl(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvxl
    527   res_vs  = vec_lvxl(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvxl
    528   res_vus = vec_lvxl(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvxl
    529   res_vus = vec_lvxl(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvxl
    530   res_vbs = vec_lvxl(0, &vbs);                  // CHECK: @llvm.ppc.altivec.lvxl
    531   res_vp  = vec_lvxl(0, &vp);                   // CHECK: @llvm.ppc.altivec.lvxl
    532   res_vi  = vec_lvxl(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvxl
    533   res_vi  = vec_lvxl(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvxl
    534   res_vui = vec_lvxl(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvxl
    535   res_vui = vec_lvxl(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvxl
    536   res_vbi = vec_lvxl(0, &vbi);                  // CHECK: @llvm.ppc.altivec.lvxl
    537   res_vf  = vec_lvxl(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvxl
    538   res_vf  = vec_lvxl(0, &param_f);              // CHECK: @llvm.ppc.altivec.lvxl
    539 
    540   /* vec_loge */
    541   res_vf = vec_loge(vf);                        // CHECK: @llvm.ppc.altivec.vlogefp
    542   res_vf = vec_vlogefp(vf);                     // CHECK: @llvm.ppc.altivec.vlogefp
    543 
    544   /* vec_lvsl */
    545   res_vuc = vec_lvsl(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvsl
    546 
    547   /* vec_lvsr */
    548   res_vuc = vec_lvsr(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvsr
    549 
    550   /* vec_madd */
    551   res_vf =vec_madd(vf, vf, vf);                 // CHECK: @llvm.ppc.altivec.vmaddfp
    552   res_vf = vec_vmaddfp(vf, vf, vf);             // CHECK: @llvm.ppc.altivec.vmaddfp
    553 
    554   /* vec_madds */
    555   res_vs = vec_madds(vs, vs, vs);               // CHECK: @llvm.ppc.altivec.vmhaddshs
    556   res_vs = vec_vmhaddshs(vs, vs, vs);           // CHECK: @llvm.ppc.altivec.vmhaddshs
    557 
    558   /* vec_max */
    559   res_vsc = vec_max(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
    560   res_vsc = vec_max(vbc, vsc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
    561   res_vsc = vec_max(vsc, vbc);                  // CHECK: @llvm.ppc.altivec.vmaxsb
    562   res_vuc = vec_max(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vmaxub
    563   res_vuc = vec_max(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vmaxub
    564   res_vuc = vec_max(vuc, vbc);                  // CHECK: @llvm.ppc.altivec.vmaxub
    565   res_vs  = vec_max(vs, vs);                    // CHECK: @llvm.ppc.altivec.vmaxsh
    566   res_vs  = vec_max(vbs, vs);                   // CHECK: @llvm.ppc.altivec.vmaxsh
    567   res_vs  = vec_max(vs, vbs);                   // CHECK: @llvm.ppc.altivec.vmaxsh
    568   res_vus = vec_max(vus, vus);                  // CHECK: @llvm.ppc.altivec.vmaxuh
    569   res_vus = vec_max(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vmaxuh
    570   res_vus = vec_max(vus, vbs);                  // CHECK: @llvm.ppc.altivec.vmaxuh
    571   res_vi  = vec_max(vi, vi);                    // CHECK: @llvm.ppc.altivec.vmaxsw
    572   res_vi  = vec_max(vbi, vi);                   // CHECK: @llvm.ppc.altivec.vmaxsw
    573   res_vi  = vec_max(vi, vbi);                   // CHECK: @llvm.ppc.altivec.vmaxsw
    574   res_vui = vec_max(vui, vui);                  // CHECK: @llvm.ppc.altivec.vmaxuw
    575   res_vui = vec_max(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vmaxuw
    576   res_vui = vec_max(vui, vbi);                  // CHECK: @llvm.ppc.altivec.vmaxuw
    577   res_vf  = vec_max(vf, vf);                    // CHECK: @llvm.ppc.altivec.vmaxfp
    578   res_vsc = vec_vmaxsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vmaxsb
    579   res_vsc = vec_vmaxsb(vbc, vsc);               // CHECK: @llvm.ppc.altivec.vmaxsb
    580   res_vsc = vec_vmaxsb(vsc, vbc);               // CHECK: @llvm.ppc.altivec.vmaxsb
    581   res_vuc = vec_vmaxub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vmaxub
    582   res_vuc = vec_vmaxub(vbc, vuc);               // CHECK: @llvm.ppc.altivec.vmaxub
    583   res_vuc = vec_vmaxub(vuc, vbc);               // CHECK: @llvm.ppc.altivec.vmaxub
    584   res_vs  = vec_vmaxsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vmaxsh
    585   res_vs  = vec_vmaxsh(vbs, vs);                // CHECK: @llvm.ppc.altivec.vmaxsh
    586   res_vs  = vec_vmaxsh(vs, vbs);                // CHECK: @llvm.ppc.altivec.vmaxsh
    587   res_vus = vec_vmaxuh(vus, vus);               // CHECK: @llvm.ppc.altivec.vmaxuh
    588   res_vus = vec_vmaxuh(vbs, vus);               // CHECK: @llvm.ppc.altivec.vmaxuh
    589   res_vus = vec_vmaxuh(vus, vbs);               // CHECK: @llvm.ppc.altivec.vmaxuh
    590   res_vi  = vec_vmaxsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vmaxsw
    591   res_vi  = vec_vmaxsw(vbi, vi);                // CHECK: @llvm.ppc.altivec.vmaxsw
    592   res_vi  = vec_vmaxsw(vi, vbi);                // CHECK: @llvm.ppc.altivec.vmaxsw
    593   res_vui = vec_vmaxuw(vui, vui);               // CHECK: @llvm.ppc.altivec.vmaxuw
    594   res_vui = vec_vmaxuw(vbi, vui);               // CHECK: @llvm.ppc.altivec.vmaxuw
    595   res_vui = vec_vmaxuw(vui, vbi);               // CHECK: @llvm.ppc.altivec.vmaxuw
    596   res_vf  = vec_vmaxfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vmaxfp
    597 
    598   /* vec_mergeh */
    599   res_vsc = vec_mergeh(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
    600   res_vuc = vec_mergeh(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
    601   res_vbc = vec_mergeh(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
    602   res_vs  = vec_mergeh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
    603   res_vp  = vec_mergeh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
    604   res_vus = vec_mergeh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
    605   res_vbs = vec_mergeh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
    606   res_vi  = vec_mergeh(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
    607   res_vui = vec_mergeh(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
    608   res_vbi = vec_mergeh(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
    609   res_vf  = vec_mergeh(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
    610   res_vsc = vec_vmrghb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
    611   res_vuc = vec_vmrghb(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
    612   res_vbc = vec_vmrghb(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
    613   res_vs  = vec_vmrghh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
    614   res_vp  = vec_vmrghh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
    615   res_vus = vec_vmrghh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
    616   res_vbs = vec_vmrghh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
    617   res_vi  = vec_vmrghw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
    618   res_vui = vec_vmrghw(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
    619   res_vbi = vec_vmrghw(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
    620   res_vf  = vec_vmrghw(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
    621 
    622   /* vec_mergel */
    623   res_vsc = vec_mergel(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
    624   res_vuc = vec_mergel(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
    625   res_vbc = vec_mergel(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
    626   res_vs  = vec_mergel(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
    627   res_vp  = vec_mergeh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
    628   res_vus = vec_mergel(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
    629   res_vbs = vec_mergel(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
    630   res_vi  = vec_mergel(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
    631   res_vui = vec_mergel(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
    632   res_vbi = vec_mergel(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
    633   res_vf  = vec_mergel(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
    634   res_vsc = vec_vmrglb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vperm
    635   res_vuc = vec_vmrglb(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vperm
    636   res_vbc = vec_vmrglb(vbc, vbc);               // CHECK: @llvm.ppc.altivec.vperm
    637   res_vs  = vec_vmrglh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vperm
    638   res_vp  = vec_vmrglh(vp, vp);                 // CHECK: @llvm.ppc.altivec.vperm
    639   res_vus = vec_vmrglh(vus, vus);               // CHECK: @llvm.ppc.altivec.vperm
    640   res_vbs = vec_vmrglh(vbs, vbs);               // CHECK: @llvm.ppc.altivec.vperm
    641   res_vi  = vec_vmrglw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vperm
    642   res_vui = vec_vmrglw(vui, vui);               // CHECK: @llvm.ppc.altivec.vperm
    643   res_vbi = vec_vmrglw(vbi, vbi);               // CHECK: @llvm.ppc.altivec.vperm
    644   res_vf  = vec_vmrglw(vf, vf);                 // CHECK: @llvm.ppc.altivec.vperm
    645 
    646   /* vec_mfvscr */
    647   vus = vec_mfvscr();                           // CHECK: @llvm.ppc.altivec.mfvscr
    648 
    649   /* vec_min */
    650   res_vsc = vec_min(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vminsb
    651   res_vsc = vec_min(vbc, vsc);                  // CHECK: @llvm.ppc.altivec.vminsb
    652   res_vsc = vec_min(vsc, vbc);                  // CHECK: @llvm.ppc.altivec.vminsb
    653   res_vuc = vec_min(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vminub
    654   res_vuc = vec_min(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vminub
    655   res_vuc = vec_min(vuc, vbc);                  // CHECK: @llvm.ppc.altivec.vminub
    656   res_vs  = vec_min(vs, vs);                    // CHECK: @llvm.ppc.altivec.vminsh
    657   res_vs  = vec_min(vbs, vs);                   // CHECK: @llvm.ppc.altivec.vminsh
    658   res_vs  = vec_min(vs, vbs);                   // CHECK: @llvm.ppc.altivec.vminsh
    659   res_vus = vec_min(vus, vus);                  // CHECK: @llvm.ppc.altivec.vminuh
    660   res_vus = vec_min(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vminuh
    661   res_vus = vec_min(vus, vbs);                  // CHECK: @llvm.ppc.altivec.vminuh
    662   res_vi  = vec_min(vi, vi);                    // CHECK: @llvm.ppc.altivec.vminsw
    663   res_vi  = vec_min(vbi, vi);                   // CHECK: @llvm.ppc.altivec.vminsw
    664   res_vi  = vec_min(vi, vbi);                   // CHECK: @llvm.ppc.altivec.vminsw
    665   res_vui = vec_min(vui, vui);                  // CHECK: @llvm.ppc.altivec.vminuw
    666   res_vui = vec_min(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vminuw
    667   res_vui = vec_min(vui, vbi);                  // CHECK: @llvm.ppc.altivec.vminuw
    668   res_vf  = vec_min(vf, vf);                    // CHECK: @llvm.ppc.altivec.vminfp
    669   res_vsc = vec_vminsb(vsc, vsc);               // CHECK: @llvm.ppc.altivec.vminsb
    670   res_vsc = vec_vminsb(vbc, vsc);               // CHECK: @llvm.ppc.altivec.vminsb
    671   res_vsc = vec_vminsb(vsc, vbc);               // CHECK: @llvm.ppc.altivec.vminsb
    672   res_vuc = vec_vminub(vuc, vuc);               // CHECK: @llvm.ppc.altivec.vminub
    673   res_vuc = vec_vminub(vbc, vuc);               // CHECK: @llvm.ppc.altivec.vminub
    674   res_vuc = vec_vminub(vuc, vbc);               // CHECK: @llvm.ppc.altivec.vminub
    675   res_vs  = vec_vminsh(vs, vs);                 // CHECK: @llvm.ppc.altivec.vminsh
    676   res_vs  = vec_vminsh(vbs, vs);                // CHECK: @llvm.ppc.altivec.vminsh
    677   res_vs  = vec_vminsh(vs, vbs);                // CHECK: @llvm.ppc.altivec.vminsh
    678   res_vus = vec_vminuh(vus, vus);               // CHECK: @llvm.ppc.altivec.vminuh
    679   res_vus = vec_vminuh(vbs, vus);               // CHECK: @llvm.ppc.altivec.vminuh
    680   res_vus = vec_vminuh(vus, vbs);               // CHECK: @llvm.ppc.altivec.vminuh
    681   res_vi  = vec_vminsw(vi, vi);                 // CHECK: @llvm.ppc.altivec.vminsw
    682   res_vi  = vec_vminsw(vbi, vi);                // CHECK: @llvm.ppc.altivec.vminsw
    683   res_vi  = vec_vminsw(vi, vbi);                // CHECK: @llvm.ppc.altivec.vminsw
    684   res_vui = vec_vminuw(vui, vui);               // CHECK: @llvm.ppc.altivec.vminuw
    685   res_vui = vec_vminuw(vbi, vui);               // CHECK: @llvm.ppc.altivec.vminuw
    686   res_vui = vec_vminuw(vui, vbi);               // CHECK: @llvm.ppc.altivec.vminuw
    687   res_vf  = vec_vminfp(vf, vf);                 // CHECK: @llvm.ppc.altivec.vminfp
    688 
    689   /* vec_mladd */
    690   res_vus = vec_mladd(vus, vus, vus);           // CHECK: mul <8 x i16>
    691                                                 // CHECK: add <8 x i16>
    692 
    693   res_vs = vec_mladd(vus, vs, vs);              // CHECK: mul <8 x i16>
    694                                                 // CHECK: add <8 x i16>
    695 
    696   res_vs = vec_mladd(vs, vus, vus);             // CHECK: mul <8 x i16>
    697                                                 // CHECK: add <8 x i16>
    698 
    699   res_vs = vec_mladd(vs, vs, vs);               // CHECK: mul <8 x i16>
    700                                                 // CHECK: add <8 x i16>
    701 
    702   /* vec_mradds */
    703   res_vs = vec_mradds(vs, vs, vs);              // CHECK: @llvm.ppc.altivec.vmhraddshs
    704   res_vs = vec_vmhraddshs(vs, vs, vs);          // CHECK: @llvm.ppc.altivec.vmhraddshs
    705 
    706   /* vec_msum */
    707   res_vi  = vec_msum(vsc, vuc, vi);             // CHECK: @llvm.ppc.altivec.vmsummbm
    708   res_vui = vec_msum(vuc, vuc, vui);            // CHECK: @llvm.ppc.altivec.vmsumubm
    709   res_vi  = vec_msum(vs, vs, vi);               // CHECK: @llvm.ppc.altivec.vmsumshm
    710   res_vui = vec_msum(vus, vus, vui);            // CHECK: @llvm.ppc.altivec.vmsumuhm
    711   res_vi  = vec_vmsummbm(vsc, vuc, vi);         // CHECK: @llvm.ppc.altivec.vmsummbm
    712   res_vui = vec_vmsumubm(vuc, vuc, vui);        // CHECK: @llvm.ppc.altivec.vmsumubm
    713   res_vi  = vec_vmsumshm(vs, vs, vi);           // CHECK: @llvm.ppc.altivec.vmsumshm
    714   res_vui = vec_vmsumuhm(vus, vus, vui);        // CHECK: @llvm.ppc.altivec.vmsumuhm
    715 
    716   /* vec_msums */
    717   res_vi  = vec_msums(vs, vs, vi);              // CHECK: @llvm.ppc.altivec.vmsumshs
    718   res_vui = vec_msums(vus, vus, vui);           // CHECK: @llvm.ppc.altivec.vmsumuhs
    719   res_vi  = vec_vmsumshs(vs, vs, vi);           // CHECK: @llvm.ppc.altivec.vmsumshs
    720   res_vui = vec_vmsumuhs(vus, vus, vui);        // CHECK: @llvm.ppc.altivec.vmsumuhs
    721 
    722   /* vec_mtvscr */
    723   vec_mtvscr(vsc);                              // CHECK: @llvm.ppc.altivec.mtvscr
    724   vec_mtvscr(vuc);                              // CHECK: @llvm.ppc.altivec.mtvscr
    725   vec_mtvscr(vbc);                              // CHECK: @llvm.ppc.altivec.mtvscr
    726   vec_mtvscr(vs);                               // CHECK: @llvm.ppc.altivec.mtvscr
    727   vec_mtvscr(vus);                              // CHECK: @llvm.ppc.altivec.mtvscr
    728   vec_mtvscr(vbs);                              // CHECK: @llvm.ppc.altivec.mtvscr
    729   vec_mtvscr(vp);                               // CHECK: @llvm.ppc.altivec.mtvscr
    730   vec_mtvscr(vi);                               // CHECK: @llvm.ppc.altivec.mtvscr
    731   vec_mtvscr(vui);                              // CHECK: @llvm.ppc.altivec.mtvscr
    732   vec_mtvscr(vbi);                              // CHECK: @llvm.ppc.altivec.mtvscr
    733 
    734   /* vec_mule */
    735   res_vs  = vec_mule(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vmulesb
    736   res_vus = vec_mule(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vmuleub
    737   res_vi  = vec_mule(vs, vs);                   // CHECK: @llvm.ppc.altivec.vmulesh
    738   res_vui = vec_mule(vus, vus);                 // CHECK: @llvm.ppc.altivec.vmuleuh
    739   res_vs  = vec_vmulesb(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vmulesb
    740   res_vus = vec_vmuleub(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vmuleub
    741   res_vi  = vec_vmulesh(vs, vs);                // CHECK: @llvm.ppc.altivec.vmulesh
    742   res_vui = vec_vmuleuh(vus, vus);              // CHECK: @llvm.ppc.altivec.vmuleuh
    743 
    744   /* vec_mulo */
    745   res_vs  = vec_mulo(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vmulosb
    746   res_vus = vec_mulo(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vmuloub
    747   res_vi  = vec_mulo(vs, vs);                   // CHECK: @llvm.ppc.altivec.vmulosh
    748   res_vui = vec_mulo(vus, vus);                 // CHECK: @llvm.ppc.altivec.vmulouh
    749   res_vs  = vec_vmulosb(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vmulosb
    750   res_vus = vec_vmuloub(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vmuloub
    751   res_vi  = vec_vmulosh(vs, vs);                // CHECK: @llvm.ppc.altivec.vmulosh
    752   res_vui = vec_vmulouh(vus, vus);              // CHECK: @llvm.ppc.altivec.vmulouh
    753 
    754   /* vec_nmsub */
    755   res_vf = vec_nmsub(vf, vf, vf);               // CHECK: @llvm.ppc.altivec.vnmsubfp
    756   res_vf = vec_vnmsubfp(vf, vf, vf);            // CHECK: @llvm.ppc.altivec.vnmsubfp
    757 
    758   /* vec_nor */
    759   res_vsc = vec_nor(vsc, vsc);                  // CHECK: or <16 x i8>
    760                                                 // CHECK: xor <16 x i8>
    761 
    762   res_vuc = vec_nor(vuc, vuc);                  // CHECK: or <16 x i8>
    763                                                 // CHECK: xor <16 x i8>
    764 
    765   res_vuc = vec_nor(vbc, vbc);                  // CHECK: or <16 x i8>
    766                                                 // CHECK: xor <16 x i8>
    767 
    768   res_vs  = vec_nor(vs, vs);                    // CHECK: or <8 x i16>
    769                                                 // CHECK: xor <8 x i16>
    770 
    771   res_vus = vec_nor(vus, vus);                  // CHECK: or <8 x i16>
    772                                                 // CHECK: xor <8 x i16>
    773 
    774   res_vus = vec_nor(vbs, vbs);                  // CHECK: or <8 x i16>
    775                                                 // CHECK: xor <8 x i16>
    776 
    777   res_vi  = vec_nor(vi, vi);                    // CHECK: or <4 x i32>
    778                                                 // CHECK: xor <4 x i32>
    779 
    780   res_vui = vec_nor(vui, vui);                  // CHECK: or <4 x i32>
    781                                                 // CHECK: xor <4 x i32>
    782 
    783   res_vui = vec_nor(vbi, vbi);                  // CHECK: or <4 x i32>
    784                                                 // CHECK: xor <4 x i32>
    785 
    786   res_vf  = vec_nor(vf, vf);                    // CHECK: or <4 x i32>
    787                                                 // CHECK: xor <4 x i32>
    788 
    789   res_vsc = vec_vnor(vsc, vsc);                 // CHECK: or <16 x i8>
    790                                                 // CHECK: xor <16 x i8>
    791 
    792   res_vuc = vec_vnor(vuc, vuc);                 // CHECK: or <16 x i8>
    793                                                 // CHECK: xor <16 x i8>
    794 
    795   res_vuc = vec_vnor(vbc, vbc);                 // CHECK: or <16 x i8>
    796                                                 // CHECK: xor <16 x i8>
    797 
    798   res_vs  = vec_vnor(vs, vs);                   // CHECK: or <8 x i16>
    799                                                 // CHECK: xor <8 x i16>
    800 
    801   res_vus = vec_vnor(vus, vus);                 // CHECK: or <8 x i16>
    802                                                 // CHECK: xor <8 x i16>
    803 
    804   res_vus = vec_vnor(vbs, vbs);                 // CHECK: or <8 x i16>
    805                                                 // CHECK: xor <8 x i16>
    806 
    807   res_vi  = vec_vnor(vi, vi);                   // CHECK: or <4 x i32>
    808                                                 // CHECK: xor <4 x i32>
    809 
    810   res_vui = vec_vnor(vui, vui);                 // CHECK: or <4 x i32>
    811                                                 // CHECK: xor <4 x i32>
    812 
    813   res_vui = vec_vnor(vbi, vbi);                 // CHECK: or <4 x i32>
    814                                                 // CHECK: xor <4 x i32>
    815 
    816   res_vf  = vec_vnor(vf, vf);                   // CHECK: or <4 x i32>
    817                                                 // CHECK: xor <4 x i32>
    818 
    819   /* vec_or */
    820   res_vsc = vec_or(vsc, vsc);                   // CHECK: or <16 x i8>
    821   res_vsc = vec_or(vbc, vsc);                   // CHECK: or <16 x i8>
    822   res_vsc = vec_or(vsc, vbc);                   // CHECK: or <16 x i8>
    823   res_vuc = vec_or(vuc, vuc);                   // CHECK: or <16 x i8>
    824   res_vuc = vec_or(vbc, vuc);                   // CHECK: or <16 x i8>
    825   res_vuc = vec_or(vuc, vbc);                   // CHECK: or <16 x i8>
    826   res_vbc = vec_or(vbc, vbc);                   // CHECK: or <16 x i8>
    827   res_vs  = vec_or(vs, vs);                     // CHECK: or <8 x i16>
    828   res_vs  = vec_or(vbs, vs);                    // CHECK: or <8 x i16>
    829   res_vs  = vec_or(vs, vbs);                    // CHECK: or <8 x i16>
    830   res_vus = vec_or(vus, vus);                   // CHECK: or <8 x i16>
    831   res_vus = vec_or(vbs, vus);                   // CHECK: or <8 x i16>
    832   res_vus = vec_or(vus, vbs);                   // CHECK: or <8 x i16>
    833   res_vbs = vec_or(vbs, vbs);                   // CHECK: or <8 x i16>
    834   res_vi  = vec_or(vi, vi);                     // CHECK: or <4 x i32>
    835   res_vi  = vec_or(vbi, vi);                    // CHECK: or <4 x i32>
    836   res_vi  = vec_or(vi, vbi);                    // CHECK: or <4 x i32>
    837   res_vui = vec_or(vui, vui);                   // CHECK: or <4 x i32>
    838   res_vui = vec_or(vbi, vui);                   // CHECK: or <4 x i32>
    839   res_vui = vec_or(vui, vbi);                   // CHECK: or <4 x i32>
    840   res_vbi = vec_or(vbi, vbi);                   // CHECK: or <4 x i32>
    841   res_vf  = vec_or(vf, vf);                     // CHECK: or <4 x i32>
    842   res_vf  = vec_or(vbi, vf);                    // CHECK: or <4 x i32>
    843   res_vf  = vec_or(vf, vbi);                    // CHECK: or <4 x i32>
    844   res_vsc = vec_vor(vsc, vsc);                  // CHECK: or <16 x i8>
    845   res_vsc = vec_vor(vbc, vsc);                  // CHECK: or <16 x i8>
    846   res_vsc = vec_vor(vsc, vbc);                  // CHECK: or <16 x i8>
    847   res_vuc = vec_vor(vuc, vuc);                  // CHECK: or <16 x i8>
    848   res_vuc = vec_vor(vbc, vuc);                  // CHECK: or <16 x i8>
    849   res_vuc = vec_vor(vuc, vbc);                  // CHECK: or <16 x i8>
    850   res_vbc = vec_vor(vbc, vbc);                  // CHECK: or <16 x i8>
    851   res_vs  = vec_vor(vs, vs);                    // CHECK: or <8 x i16>
    852   res_vs  = vec_vor(vbs, vs);                   // CHECK: or <8 x i16>
    853   res_vs  = vec_vor(vs, vbs);                   // CHECK: or <8 x i16>
    854   res_vus = vec_vor(vus, vus);                  // CHECK: or <8 x i16>
    855   res_vus = vec_vor(vbs, vus);                  // CHECK: or <8 x i16>
    856   res_vus = vec_vor(vus, vbs);                  // CHECK: or <8 x i16>
    857   res_vbs = vec_vor(vbs, vbs);                  // CHECK: or <8 x i16>
    858   res_vi  = vec_vor(vi, vi);                    // CHECK: or <4 x i32>
    859   res_vi  = vec_vor(vbi, vi);                   // CHECK: or <4 x i32>
    860   res_vi  = vec_vor(vi, vbi);                   // CHECK: or <4 x i32>
    861   res_vui = vec_vor(vui, vui);                  // CHECK: or <4 x i32>
    862   res_vui = vec_vor(vbi, vui);                  // CHECK: or <4 x i32>
    863   res_vui = vec_vor(vui, vbi);                  // CHECK: or <4 x i32>
    864   res_vbi = vec_vor(vbi, vbi);                  // CHECK: or <4 x i32>
    865   res_vf  = vec_vor(vf, vf);                    // CHECK: or <4 x i32>
    866   res_vf  = vec_vor(vbi, vf);                   // CHECK: or <4 x i32>
    867   res_vf  = vec_vor(vf, vbi);                   // CHECK: or <4 x i32>
    868 
    869   /* vec_pack */
    870   res_vsc = vec_pack(vs, vs);                   // CHECK: @llvm.ppc.altivec.vperm
    871   res_vuc = vec_pack(vus, vus);                 // CHECK: @llvm.ppc.altivec.vperm
    872   res_vbc = vec_pack(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vperm
    873   res_vs  = vec_pack(vi, vi);                   // CHECK: @llvm.ppc.altivec.vperm
    874   res_vus = vec_pack(vui, vui);                 // CHECK: @llvm.ppc.altivec.vperm
    875   res_vbs = vec_pack(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vperm
    876   res_vsc = vec_vpkuhum(vs, vs);                // CHECK: @llvm.ppc.altivec.vperm
    877   res_vuc = vec_vpkuhum(vus, vus);              // CHECK: @llvm.ppc.altivec.vperm
    878   res_vbc = vec_vpkuhum(vbs, vbs);              // CHECK: @llvm.ppc.altivec.vperm
    879   res_vs  = vec_vpkuwum(vi, vi);                // CHECK: @llvm.ppc.altivec.vperm
    880   res_vus = vec_vpkuwum(vui, vui);              // CHECK: @llvm.ppc.altivec.vperm
    881   res_vbs = vec_vpkuwum(vbi, vbi);              // CHECK: @llvm.ppc.altivec.vperm
    882 
    883   /* vec_packpx */
    884   res_vp = vec_packpx(vui, vui);                // CHECK: @llvm.ppc.altivec.vpkpx
    885   res_vp = vec_vpkpx(vui, vui);                 // CHECK: @llvm.ppc.altivec.vpkpx
    886 
    887   /* vec_packs */
    888   res_vsc = vec_packs(vs, vs);                  // CHECK: @llvm.ppc.altivec.vpkshss
    889   res_vuc = vec_packs(vus, vus);                // CHECK: @llvm.ppc.altivec.vpkuhus
    890   res_vs  = vec_packs(vi, vi);                  // CHECK: @llvm.ppc.altivec.vpkswss
    891   res_vus = vec_packs(vui, vui);                // CHECK: @llvm.ppc.altivec.vpkuwus
    892   res_vsc = vec_vpkshss(vs, vs);                // CHECK: @llvm.ppc.altivec.vpkshss
    893   res_vuc = vec_vpkuhus(vus, vus);              // CHECK: @llvm.ppc.altivec.vpkuhus
    894   res_vs  = vec_vpkswss(vi, vi);                // CHECK: @llvm.ppc.altivec.vpkswss
    895   res_vus = vec_vpkuwus(vui, vui);              // CHECK: @llvm.ppc.altivec.vpkuwus
    896 
    897   /* vec_packsu */
    898   res_vuc = vec_packsu(vs, vs);                 // CHECK: @llvm.ppc.altivec.vpkshus
    899   res_vuc = vec_packsu(vus, vus);               // CHECK: @llvm.ppc.altivec.vpkuhus
    900   res_vus = vec_packsu(vi, vi);                 // CHECK: @llvm.ppc.altivec.vpkswus
    901   res_vus = vec_packsu(vui, vui);               // CHECK: @llvm.ppc.altivec.vpkuwus
    902   res_vuc = vec_vpkshus(vs, vs);                // CHECK: @llvm.ppc.altivec.vpkshus
    903   res_vuc = vec_vpkshus(vus, vus);              // CHECK: @llvm.ppc.altivec.vpkuhus
    904   res_vus = vec_vpkswus(vi, vi);                // CHECK: @llvm.ppc.altivec.vpkswus
    905   res_vus = vec_vpkswus(vui, vui);              // CHECK: @llvm.ppc.altivec.vpkuwus
    906 
    907   /* vec_perm */
    908   res_vsc = vec_perm(vsc, vsc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    909   res_vuc = vec_perm(vuc, vuc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    910   res_vbc = vec_perm(vbc, vbc, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    911   res_vs  = vec_perm(vs, vs, vuc);              // CHECK: @llvm.ppc.altivec.vperm
    912   res_vus = vec_perm(vus, vus, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    913   res_vbs = vec_perm(vbs, vbs, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    914   res_vp  = vec_perm(vp, vp, vuc);              // CHECK: @llvm.ppc.altivec.vperm
    915   res_vi  = vec_perm(vi, vi, vuc);              // CHECK: @llvm.ppc.altivec.vperm
    916   res_vui = vec_perm(vui, vui, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    917   res_vbi = vec_perm(vbi, vbi, vuc);            // CHECK: @llvm.ppc.altivec.vperm
    918   res_vf  = vec_perm(vf, vf, vuc);              // CHECK: @llvm.ppc.altivec.vperm
    919   res_vsc = vec_vperm(vsc, vsc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    920   res_vuc = vec_vperm(vuc, vuc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    921   res_vbc = vec_vperm(vbc, vbc, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    922   res_vs  = vec_vperm(vs, vs, vuc);             // CHECK: @llvm.ppc.altivec.vperm
    923   res_vus = vec_vperm(vus, vus, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    924   res_vbs = vec_vperm(vbs, vbs, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    925   res_vp  = vec_vperm(vp, vp, vuc);             // CHECK: @llvm.ppc.altivec.vperm
    926   res_vi  = vec_vperm(vi, vi, vuc);             // CHECK: @llvm.ppc.altivec.vperm
    927   res_vui = vec_vperm(vui, vui, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    928   res_vbi = vec_vperm(vbi, vbi, vuc);           // CHECK: @llvm.ppc.altivec.vperm
    929   res_vf  = vec_vperm(vf, vf, vuc);             // CHECK: @llvm.ppc.altivec.vperm
    930 
    931   /* vec_re */
    932   res_vf = vec_re(vf);                          // CHECK: @llvm.ppc.altivec.vrefp
    933   res_vf = vec_vrefp(vf);                       // CHECK: @llvm.ppc.altivec.vrefp
    934 
    935   /* vec_rl */
    936   res_vsc = vec_rl(vsc, vuc);                   // CHECK: @llvm.ppc.altivec.vrlb
    937   res_vuc = vec_rl(vuc, vuc);                   // CHECK: @llvm.ppc.altivec.vrlb
    938   res_vs  = vec_rl(vs, vus);                    // CHECK: @llvm.ppc.altivec.vrlh
    939   res_vus = vec_rl(vus, vus);                   // CHECK: @llvm.ppc.altivec.vrlh
    940   res_vi  = vec_rl(vi, vui);                    // CHECK: @llvm.ppc.altivec.vrlw
    941   res_vui = vec_rl(vui, vui);                   // CHECK: @llvm.ppc.altivec.vrlw
    942   res_vsc = vec_vrlb(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vrlb
    943   res_vuc = vec_vrlb(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vrlb
    944   res_vs  = vec_vrlh(vs, vus);                  // CHECK: @llvm.ppc.altivec.vrlh
    945   res_vus = vec_vrlh(vus, vus);                 // CHECK: @llvm.ppc.altivec.vrlh
    946   res_vi  = vec_vrlw(vi, vui);                  // CHECK: @llvm.ppc.altivec.vrlw
    947   res_vui = vec_vrlw(vui, vui);                 // CHECK: @llvm.ppc.altivec.vrlw
    948 
    949   /* vec_round */
    950   res_vf = vec_round(vf);                       // CHECK: @llvm.ppc.altivec.vrfin
    951   res_vf = vec_vrfin(vf);                       // CHECK: @llvm.ppc.altivec.vrfin
    952 
    953   /* vec_rsqrte */
    954   res_vf = vec_rsqrte(vf);                      // CHECK: @llvm.ppc.altivec.vrsqrtefp
    955   res_vf = vec_vrsqrtefp(vf);                   // CHECK: @llvm.ppc.altivec.vrsqrtefp
    956 
    957   /* vec_sel */
    958   res_vsc = vec_sel(vsc, vsc, vuc);             // CHECK: xor <16 x i8>
    959                                                 // CHECK: and <16 x i8>
    960                                                 // CHECK: and <16 x i8>
    961                                                 // CHECK: or <16 x i8>
    962 
    963   res_vsc = vec_sel(vsc, vsc, vbc);             // CHECK: xor <16 x i8>
    964                                                 // CHECK: and <16 x i8>
    965                                                 // CHECK: and <16 x i8>
    966                                                 // CHECK: or <16 x i8>
    967 
    968   res_vuc = vec_sel(vuc, vuc, vuc);             // CHECK: xor <16 x i8>
    969                                                 // CHECK: and <16 x i8>
    970                                                 // CHECK: and <16 x i8>
    971                                                 // CHECK: or <16 x i8>
    972 
    973   res_vuc = vec_sel(vuc, vuc, vbc);             // CHECK: xor <16 x i8>
    974                                                 // CHECK: and <16 x i8>
    975                                                 // CHECK: and <16 x i8>
    976                                                 // CHECK: or <16 x i8>
    977 
    978   res_vbc = vec_sel(vbc, vbc, vuc);             // CHECK: xor <16 x i8>
    979                                                 // CHECK: and <16 x i8>
    980                                                 // CHECK: and <16 x i8>
    981                                                 // CHECK: or <16 x i8>
    982 
    983   res_vbc = vec_sel(vbc, vbc, vbc);             // CHECK: xor <16 x i8>
    984                                                 // CHECK: and <16 x i8>
    985                                                 // CHECK: and <16 x i8>
    986                                                 // CHECK: or <16 x i8>
    987 
    988   res_vs  = vec_sel(vs, vs, vus);               // CHECK: xor <8 x i16>
    989                                                 // CHECK: and <8 x i16>
    990                                                 // CHECK: and <8 x i16>
    991                                                 // CHECK: or <8 x i16>
    992 
    993   res_vs  = vec_sel(vs, vs, vbs);               // CHECK: xor <8 x i16>
    994                                                 // CHECK: and <8 x i16>
    995                                                 // CHECK: and <8 x i16>
    996                                                 // CHECK: or <8 x i16>
    997 
    998   res_vus = vec_sel(vus, vus, vus);             // CHECK: xor <8 x i16>
    999                                                 // CHECK: and <8 x i16>
   1000                                                 // CHECK: and <8 x i16>
   1001                                                 // CHECK: or <8 x i16>
   1002 
   1003   res_vus = vec_sel(vus, vus, vbs);             // CHECK: xor <8 x i16>
   1004                                                 // CHECK: and <8 x i16>
   1005                                                 // CHECK: and <8 x i16>
   1006                                                 // CHECK: or <8 x i16>
   1007 
   1008   res_vbs = vec_sel(vbs, vbs, vus);             // CHECK: xor <8 x i16>
   1009                                                 // CHECK: and <8 x i16>
   1010                                                 // CHECK: and <8 x i16>
   1011                                                 // CHECK: or <8 x i16>
   1012 
   1013   res_vbs = vec_sel(vbs, vbs, vbs);             // CHECK: xor <8 x i16>
   1014                                                 // CHECK: and <8 x i16>
   1015                                                 // CHECK: and <8 x i16>
   1016                                                 // CHECK: or <8 x i16>
   1017 
   1018   res_vi  = vec_sel(vi, vi, vui);               // CHECK: xor <4 x i32>
   1019                                                 // CHECK: and <4 x i32>
   1020                                                 // CHECK: and <4 x i32>
   1021                                                 // CHECK: or <4 x i32>
   1022 
   1023   res_vi  = vec_sel(vi, vi, vbi);               // CHECK: xor <4 x i32>
   1024                                                 // CHECK: and <4 x i32>
   1025                                                 // CHECK: and <4 x i32>
   1026                                                 // CHECK: or <4 x i32>
   1027 
   1028   res_vui = vec_sel(vui, vui, vui);             // CHECK: xor <4 x i32>
   1029                                                 // CHECK: and <4 x i32>
   1030                                                 // CHECK: and <4 x i32>
   1031                                                 // CHECK: or <4 x i32>
   1032 
   1033   res_vui = vec_sel(vui, vui, vbi);             // CHECK: xor <4 x i32>
   1034                                                 // CHECK: and <4 x i32>
   1035                                                 // CHECK: and <4 x i32>
   1036                                                 // CHECK: or <4 x i32>
   1037 
   1038   res_vbi = vec_sel(vbi, vbi, vui);             // CHECK: xor <4 x i32>
   1039                                                 // CHECK: and <4 x i32>
   1040                                                 // CHECK: and <4 x i32>
   1041                                                 // CHECK: or <4 x i32>
   1042 
   1043   res_vbi = vec_sel(vbi, vbi, vbi);             // CHECK: xor <4 x i32>
   1044                                                 // CHECK: and <4 x i32>
   1045                                                 // CHECK: and <4 x i32>
   1046                                                 // CHECK: or <4 x i32>
   1047 
   1048   res_vf  = vec_sel(vf, vf, vui);               // CHECK: xor <4 x i32>
   1049                                                 // CHECK: and <4 x i32>
   1050                                                 // CHECK: and <4 x i32>
   1051                                                 // CHECK: or <4 x i32>
   1052 
   1053   res_vf  = vec_sel(vf, vf, vbi);               // CHECK: xor <4 x i32>
   1054                                                 // CHECK: and <4 x i32>
   1055                                                 // CHECK: and <4 x i32>
   1056                                                 // CHECK: or <4 x i32>
   1057 
   1058   res_vsc = vec_vsel(vsc, vsc, vuc);            // CHECK: xor <16 x i8>
   1059                                                 // CHECK: and <16 x i8>
   1060                                                 // CHECK: and <16 x i8>
   1061                                                 // CHECK: or <16 x i8>
   1062 
   1063   res_vsc = vec_vsel(vsc, vsc, vbc);            // CHECK: xor <16 x i8>
   1064                                                 // CHECK: and <16 x i8>
   1065                                                 // CHECK: and <16 x i8>
   1066                                                 // CHECK: or <16 x i8>
   1067 
   1068   res_vuc = vec_vsel(vuc, vuc, vuc);            // CHECK: xor <16 x i8>
   1069                                                 // CHECK: and <16 x i8>
   1070                                                 // CHECK: and <16 x i8>
   1071                                                 // CHECK: or <16 x i8>
   1072 
   1073   res_vuc = vec_vsel(vuc, vuc, vbc);            // CHECK: xor <16 x i8>
   1074                                                 // CHECK: and <16 x i8>
   1075                                                 // CHECK: and <16 x i8>
   1076                                                 // CHECK: or <16 x i8>
   1077 
   1078   res_vbc = vec_vsel(vbc, vbc, vuc);            // CHECK: xor <16 x i8>
   1079                                                 // CHECK: and <16 x i8>
   1080                                                 // CHECK: and <16 x i8>
   1081                                                 // CHECK: or <16 x i8>
   1082 
   1083   res_vbc = vec_vsel(vbc, vbc, vbc);            // CHECK: xor <16 x i8>
   1084                                                 // CHECK: and <16 x i8>
   1085                                                 // CHECK: and <16 x i8>
   1086                                                 // CHECK: or <16 x i8>
   1087 
   1088   res_vs  = vec_vsel(vs, vs, vus);              // CHECK: xor <8 x i16>
   1089                                                 // CHECK: and <8 x i16>
   1090                                                 // CHECK: and <8 x i16>
   1091                                                 // CHECK: or <8 x i16>
   1092 
   1093   res_vs  = vec_vsel(vs, vs, vbs);              // CHECK: xor <8 x i16>
   1094                                                 // CHECK: and <8 x i16>
   1095                                                 // CHECK: and <8 x i16>
   1096                                                 // CHECK: or <8 x i16>
   1097 
   1098   res_vus = vec_vsel(vus, vus, vus);            // CHECK: xor <8 x i16>
   1099                                                 // CHECK: and <8 x i16>
   1100                                                 // CHECK: and <8 x i16>
   1101                                                 // CHECK: or <8 x i16>
   1102 
   1103   res_vus = vec_vsel(vus, vus, vbs);            // CHECK: xor <8 x i16>
   1104                                                 // CHECK: and <8 x i16>
   1105                                                 // CHECK: and <8 x i16>
   1106                                                 // CHECK: or <8 x i16>
   1107 
   1108   res_vbs = vec_vsel(vbs, vbs, vus);            // CHECK: xor <8 x i16>
   1109                                                 // CHECK: and <8 x i16>
   1110                                                 // CHECK: and <8 x i16>
   1111                                                 // CHECK: or <8 x i16>
   1112 
   1113   res_vbs = vec_vsel(vbs, vbs, vbs);            // CHECK: xor <8 x i16>
   1114                                                 // CHECK: and <8 x i16>
   1115                                                 // CHECK: and <8 x i16>
   1116                                                 // CHECK: or <8 x i16>
   1117 
   1118   res_vi  = vec_vsel(vi, vi, vui);              // CHECK: xor <4 x i32>
   1119                                                 // CHECK: and <4 x i32>
   1120                                                 // CHECK: and <4 x i32>
   1121                                                 // CHECK: or <4 x i32>
   1122 
   1123   res_vi  = vec_vsel(vi, vi, vbi);              // CHECK: xor <4 x i32>
   1124                                                 // CHECK: and <4 x i32>
   1125                                                 // CHECK: and <4 x i32>
   1126                                                 // CHECK: or <4 x i32>
   1127 
   1128   res_vui = vec_vsel(vui, vui, vui);            // CHECK: xor <4 x i32>
   1129                                                 // CHECK: and <4 x i32>
   1130                                                 // CHECK: and <4 x i32>
   1131                                                 // CHECK: or <4 x i32>
   1132 
   1133   res_vui = vec_vsel(vui, vui, vbi);            // CHECK: xor <4 x i32>
   1134                                                 // CHECK: and <4 x i32>
   1135                                                 // CHECK: and <4 x i32>
   1136                                                 // CHECK: or <4 x i32>
   1137 
   1138   res_vbi = vec_vsel(vbi, vbi, vui);            // CHECK: xor <4 x i32>
   1139                                                 // CHECK: and <4 x i32>
   1140                                                 // CHECK: and <4 x i32>
   1141                                                 // CHECK: or <4 x i32>
   1142 
   1143   res_vbi = vec_vsel(vbi, vbi, vbi);            // CHECK: xor <4 x i32>
   1144                                                 // CHECK: and <4 x i32>
   1145                                                 // CHECK: and <4 x i32>
   1146                                                 // CHECK: or <4 x i32>
   1147 
   1148   res_vf  = vec_vsel(vf, vf, vui);              // CHECK: xor <4 x i32>
   1149                                                 // CHECK: and <4 x i32>
   1150                                                 // CHECK: and <4 x i32>
   1151                                                 // CHECK: or <4 x i32>
   1152 
   1153   res_vf  = vec_vsel(vf, vf, vbi);              // CHECK: xor <4 x i32>
   1154                                                 // CHECK: and <4 x i32>
   1155                                                 // CHECK: and <4 x i32>
   1156                                                 // CHECK: or <4 x i32>
   1157 
   1158   /* vec_sl */
   1159   res_vsc = vec_sl(vsc, vuc);                   // CHECK: shl <16 x i8>
   1160   res_vuc = vec_sl(vuc, vuc);                   // CHECK: shl <16 x i8>
   1161   res_vs  = vec_sl(vs, vus);                    // CHECK: shl <8 x i16>
   1162   res_vus = vec_sl(vus, vus);                   // CHECK: shl <8 x i16>
   1163   res_vi  = vec_sl(vi, vui);                    // CHECK: shl <4 x i32>
   1164   res_vui = vec_sl(vui, vui);                   // CHECK: shl <4 x i32>
   1165   res_vsc = vec_vslb(vsc, vuc);                 // CHECK: shl <16 x i8>
   1166   res_vuc = vec_vslb(vuc, vuc);                 // CHECK: shl <16 x i8>
   1167   res_vs  = vec_vslh(vs, vus);                  // CHECK: shl <8 x i16>
   1168   res_vus = vec_vslh(vus, vus);                 // CHECK: shl <8 x i16>
   1169   res_vi  = vec_vslw(vi, vui);                  // CHECK: shl <4 x i32>
   1170   res_vui = vec_vslw(vui, vui);                 // CHECK: shl <4 x i32>
   1171 
   1172   /* vec_sld */
   1173   res_vsc = vec_sld(vsc, vsc, 0);               // CHECK: @llvm.ppc.altivec.vperm
   1174   res_vuc = vec_sld(vuc, vuc, 0);               // CHECK: @llvm.ppc.altivec.vperm
   1175   res_vs  = vec_sld(vs, vs, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1176   res_vus = vec_sld(vus, vus, 0);               // CHECK: @llvm.ppc.altivec.vperm
   1177   res_vp  = vec_sld(vp, vp, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1178   res_vi  = vec_sld(vi, vi, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1179   res_vui = vec_sld(vui, vui, 0);               // CHECK: @llvm.ppc.altivec.vperm
   1180   res_vf  = vec_sld(vf, vf, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1181   res_vsc = vec_vsldoi(vsc, vsc, 0);            // CHECK: @llvm.ppc.altivec.vperm
   1182   res_vuc = vec_vsldoi(vuc, vuc, 0);            // CHECK: @llvm.ppc.altivec.vperm
   1183   res_vs  = vec_vsldoi(vs, vs, 0);              // CHECK: @llvm.ppc.altivec.vperm
   1184   res_vus = vec_vsldoi(vus, vus, 0);            // CHECK: @llvm.ppc.altivec.vperm
   1185   res_vp  = vec_vsldoi(vp, vp, 0);              // CHECK: @llvm.ppc.altivec.vperm
   1186   res_vi  = vec_vsldoi(vi, vi, 0);              // CHECK: @llvm.ppc.altivec.vperm
   1187   res_vui = vec_vsldoi(vui, vui, 0);            // CHECK: @llvm.ppc.altivec.vperm
   1188   res_vf  = vec_vsldoi(vf, vf, 0);              // CHECK: @llvm.ppc.altivec.vperm
   1189 
   1190   /* vec_sll */
   1191   res_vsc = vec_sll(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1192   res_vsc = vec_sll(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1193   res_vsc = vec_sll(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1194   res_vuc = vec_sll(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1195   res_vuc = vec_sll(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1196   res_vuc = vec_sll(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1197   res_vbc = vec_sll(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1198   res_vbc = vec_sll(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1199   res_vbc = vec_sll(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1200   res_vs  = vec_sll(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
   1201   res_vs  = vec_sll(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsl
   1202   res_vs  = vec_sll(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsl
   1203   res_vus = vec_sll(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1204   res_vus = vec_sll(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1205   res_vus = vec_sll(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1206   res_vbs = vec_sll(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1207   res_vbs = vec_sll(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1208   res_vbs = vec_sll(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1209   res_vp  = vec_sll(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
   1210   res_vp  = vec_sll(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsl
   1211   res_vp  = vec_sll(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsl
   1212   res_vi  = vec_sll(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
   1213   res_vi  = vec_sll(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsl
   1214   res_vi  = vec_sll(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsl
   1215   res_vui = vec_sll(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1216   res_vui = vec_sll(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1217   res_vui = vec_sll(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1218   res_vbi = vec_sll(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1219   res_vbi = vec_sll(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1220   res_vbi = vec_sll(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1221   res_vsc = vec_vsl(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1222   res_vsc = vec_vsl(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1223   res_vsc = vec_vsl(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1224   res_vuc = vec_vsl(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1225   res_vuc = vec_vsl(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1226   res_vuc = vec_vsl(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1227   res_vbc = vec_vsl(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1228   res_vbc = vec_vsl(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1229   res_vbc = vec_vsl(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1230   res_vs  = vec_vsl(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
   1231   res_vs  = vec_vsl(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsl
   1232   res_vs  = vec_vsl(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsl
   1233   res_vus = vec_vsl(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1234   res_vus = vec_vsl(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1235   res_vus = vec_vsl(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1236   res_vbs = vec_vsl(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1237   res_vbs = vec_vsl(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1238   res_vbs = vec_vsl(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1239   res_vp  = vec_vsl(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
   1240   res_vp  = vec_vsl(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsl
   1241   res_vp  = vec_vsl(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsl
   1242   res_vi  = vec_vsl(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsl
   1243   res_vi  = vec_vsl(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsl
   1244   res_vi  = vec_vsl(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsl
   1245   res_vui = vec_vsl(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1246   res_vui = vec_vsl(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1247   res_vui = vec_vsl(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1248   res_vbi = vec_vsl(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsl
   1249   res_vbi = vec_vsl(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsl
   1250   res_vbi = vec_vsl(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsl
   1251 
   1252   /* vec_slo */
   1253   res_vsc = vec_slo(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1254   res_vsc = vec_slo(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1255   res_vuc = vec_slo(vuc, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1256   res_vuc = vec_slo(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1257   res_vs  = vec_slo(vs, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
   1258   res_vs  = vec_slo(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
   1259   res_vus = vec_slo(vus, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1260   res_vus = vec_slo(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1261   res_vp  = vec_slo(vp, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
   1262   res_vp  = vec_slo(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
   1263   res_vi  = vec_slo(vi, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
   1264   res_vi  = vec_slo(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
   1265   res_vui = vec_slo(vui, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1266   res_vui = vec_slo(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1267   res_vf  = vec_slo(vf, vsc);                   // CHECK: @llvm.ppc.altivec.vslo
   1268   res_vf  = vec_slo(vf, vuc);                   // CHECK: @llvm.ppc.altivec.vslo
   1269   res_vsc = vec_vslo(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
   1270   res_vsc = vec_vslo(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
   1271   res_vuc = vec_vslo(vuc, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
   1272   res_vuc = vec_vslo(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
   1273   res_vs  = vec_vslo(vs, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1274   res_vs  = vec_vslo(vs, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1275   res_vus = vec_vslo(vus, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
   1276   res_vus = vec_vslo(vus, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
   1277   res_vp  = vec_vslo(vp, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1278   res_vp  = vec_vslo(vp, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1279   res_vi  = vec_vslo(vi, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1280   res_vi  = vec_vslo(vi, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1281   res_vui = vec_vslo(vui, vsc);                 // CHECK: @llvm.ppc.altivec.vslo
   1282   res_vui = vec_vslo(vui, vuc);                 // CHECK: @llvm.ppc.altivec.vslo
   1283   res_vf  = vec_vslo(vf, vsc);                  // CHECK: @llvm.ppc.altivec.vslo
   1284   res_vf  = vec_vslo(vf, vuc);                  // CHECK: @llvm.ppc.altivec.vslo
   1285 
   1286   /* vec_splat */
   1287   res_vsc = vec_splat(vsc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1288   res_vuc = vec_splat(vuc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1289   res_vbc = vec_splat(vbc, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1290   res_vs  = vec_splat(vs, 0);                   // CHECK: @llvm.ppc.altivec.vperm
   1291   res_vus = vec_splat(vus, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1292   res_vbs = vec_splat(vbs, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1293   res_vp  = vec_splat(vp, 0);                   // CHECK: @llvm.ppc.altivec.vperm
   1294   res_vi  = vec_splat(vi, 0);                   // CHECK: @llvm.ppc.altivec.vperm
   1295   res_vui = vec_splat(vui, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1296   res_vbi = vec_splat(vbi, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1297   res_vf  = vec_splat(vf, 0);                   // CHECK: @llvm.ppc.altivec.vperm
   1298   res_vsc = vec_vspltb(vsc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1299   res_vuc = vec_vspltb(vuc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1300   res_vbc = vec_vspltb(vbc, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1301   res_vs  = vec_vsplth(vs, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1302   res_vus = vec_vsplth(vus, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1303   res_vbs = vec_vsplth(vbs, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1304   res_vp  = vec_vsplth(vp, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1305   res_vi  = vec_vspltw(vi, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1306   res_vui = vec_vspltw(vui, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1307   res_vbi = vec_vspltw(vbi, 0);                 // CHECK: @llvm.ppc.altivec.vperm
   1308   res_vf  = vec_vspltw(vf, 0);                  // CHECK: @llvm.ppc.altivec.vperm
   1309 
   1310   /* vec_splat_s8 */
   1311   res_vsc = vec_splat_s8(0x09);                 // TODO: add check
   1312   res_vsc = vec_vspltisb(0x09);                 // TODO: add check
   1313 
   1314   /* vec_splat_s16 */
   1315   res_vs = vec_splat_s16(0x09);                 // TODO: add check
   1316   res_vs = vec_vspltish(0x09);                  // TODO: add check
   1317 
   1318   /* vec_splat_s32 */
   1319   res_vi = vec_splat_s32(0x09);                 // TODO: add check
   1320   res_vi = vec_vspltisw(0x09);                  // TODO: add check
   1321 
   1322   /* vec_splat_u8 */
   1323   res_vuc = vec_splat_u8(0x09);                 // TODO: add check
   1324 
   1325   /* vec_splat_u16 */
   1326   res_vus = vec_splat_u16(0x09);                // TODO: add check
   1327 
   1328   /* vec_splat_u32 */
   1329   res_vui = vec_splat_u32(0x09);                // TODO: add check
   1330 
   1331   /* vec_sr */
   1332   res_vsc = vec_sr(vsc, vuc);                   // CHECK: shr <16 x i8>
   1333   res_vuc = vec_sr(vuc, vuc);                   // CHECK: shr <16 x i8>
   1334   res_vs  = vec_sr(vs, vus);                    // CHECK: shr <8 x i16>
   1335   res_vus = vec_sr(vus, vus);                   // CHECK: shr <8 x i16>
   1336   res_vi  = vec_sr(vi, vui);                    // CHECK: shr <4 x i32>
   1337   res_vui = vec_sr(vui, vui);                   // CHECK: shr <4 x i32>
   1338   res_vsc = vec_vsrb(vsc, vuc);                 // CHECK: shr <16 x i8>
   1339   res_vuc = vec_vsrb(vuc, vuc);                 // CHECK: shr <16 x i8>
   1340   res_vs  = vec_vsrh(vs, vus);                  // CHECK: shr <8 x i16>
   1341   res_vus = vec_vsrh(vus, vus);                 // CHECK: shr <8 x i16>
   1342   res_vi  = vec_vsrw(vi, vui);                  // CHECK: shr <4 x i32>
   1343   res_vui = vec_vsrw(vui, vui);                 // CHECK: shr <4 x i32>
   1344 
   1345   /* vec_sra */
   1346   res_vsc = vec_sra(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsrab
   1347   res_vuc = vec_sra(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsrab
   1348   res_vs  = vec_sra(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsrah
   1349   res_vus = vec_sra(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsrah
   1350   res_vi  = vec_sra(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsraw
   1351   res_vui = vec_sra(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsraw
   1352   res_vsc = vec_vsrab(vsc, vuc);                // CHECK: @llvm.ppc.altivec.vsrab
   1353   res_vuc = vec_vsrab(vuc, vuc);                // CHECK: @llvm.ppc.altivec.vsrab
   1354   res_vs  = vec_vsrah(vs, vus);                 // CHECK: @llvm.ppc.altivec.vsrah
   1355   res_vus = vec_vsrah(vus, vus);                // CHECK: @llvm.ppc.altivec.vsrah
   1356   res_vi  = vec_vsraw(vi, vui);                 // CHECK: @llvm.ppc.altivec.vsraw
   1357   res_vui = vec_vsraw(vui, vui);                // CHECK: @llvm.ppc.altivec.vsraw
   1358 
   1359   /* vec_srl */
   1360   res_vsc = vec_srl(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1361   res_vsc = vec_srl(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1362   res_vsc = vec_srl(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1363   res_vuc = vec_srl(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1364   res_vuc = vec_srl(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1365   res_vuc = vec_srl(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1366   res_vbc = vec_srl(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1367   res_vbc = vec_srl(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1368   res_vbc = vec_srl(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1369   res_vs  = vec_srl(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
   1370   res_vs  = vec_srl(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsr
   1371   res_vs  = vec_srl(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsr
   1372   res_vus = vec_srl(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1373   res_vus = vec_srl(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1374   res_vus = vec_srl(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1375   res_vbs = vec_srl(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1376   res_vbs = vec_srl(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1377   res_vbs = vec_srl(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1378   res_vp  = vec_srl(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
   1379   res_vp  = vec_srl(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsr
   1380   res_vp  = vec_srl(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsr
   1381   res_vi  = vec_srl(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
   1382   res_vi  = vec_srl(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsr
   1383   res_vi  = vec_srl(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsr
   1384   res_vui = vec_srl(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1385   res_vui = vec_srl(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1386   res_vui = vec_srl(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1387   res_vbi = vec_srl(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1388   res_vbi = vec_srl(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1389   res_vbi = vec_srl(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1390   res_vsc = vec_vsr(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1391   res_vsc = vec_vsr(vsc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1392   res_vsc = vec_vsr(vsc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1393   res_vuc = vec_vsr(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1394   res_vuc = vec_vsr(vuc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1395   res_vuc = vec_vsr(vuc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1396   res_vbc = vec_vsr(vbc, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1397   res_vbc = vec_vsr(vbc, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1398   res_vbc = vec_vsr(vbc, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1399   res_vs  = vec_vsr(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
   1400   res_vs  = vec_vsr(vs, vus);                   // CHECK: @llvm.ppc.altivec.vsr
   1401   res_vs  = vec_vsr(vs, vui);                   // CHECK: @llvm.ppc.altivec.vsr
   1402   res_vus = vec_vsr(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1403   res_vus = vec_vsr(vus, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1404   res_vus = vec_vsr(vus, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1405   res_vbs = vec_vsr(vbs, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1406   res_vbs = vec_vsr(vbs, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1407   res_vbs = vec_vsr(vbs, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1408   res_vp  = vec_vsr(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
   1409   res_vp  = vec_vsr(vp, vus);                   // CHECK: @llvm.ppc.altivec.vsr
   1410   res_vp  = vec_vsr(vp, vui);                   // CHECK: @llvm.ppc.altivec.vsr
   1411   res_vi  = vec_vsr(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsr
   1412   res_vi  = vec_vsr(vi, vus);                   // CHECK: @llvm.ppc.altivec.vsr
   1413   res_vi  = vec_vsr(vi, vui);                   // CHECK: @llvm.ppc.altivec.vsr
   1414   res_vui = vec_vsr(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1415   res_vui = vec_vsr(vui, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1416   res_vui = vec_vsr(vui, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1417   res_vbi = vec_vsr(vbi, vuc);                  // CHECK: @llvm.ppc.altivec.vsr
   1418   res_vbi = vec_vsr(vbi, vus);                  // CHECK: @llvm.ppc.altivec.vsr
   1419   res_vbi = vec_vsr(vbi, vui);                  // CHECK: @llvm.ppc.altivec.vsr
   1420 
   1421   /* vec_sro */
   1422   res_vsc = vec_sro(vsc, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1423   res_vsc = vec_sro(vsc, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1424   res_vuc = vec_sro(vuc, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1425   res_vuc = vec_sro(vuc, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1426   res_vs  = vec_sro(vs, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
   1427   res_vs  = vec_sro(vs, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
   1428   res_vus = vec_sro(vus, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1429   res_vus = vec_sro(vus, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1430   res_vp  = vec_sro(vp, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
   1431   res_vp  = vec_sro(vp, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
   1432   res_vi  = vec_sro(vi, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
   1433   res_vi  = vec_sro(vi, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
   1434   res_vui = vec_sro(vui, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1435   res_vui = vec_sro(vui, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1436   res_vf  = vec_sro(vf, vsc);                   // CHECK: @llvm.ppc.altivec.vsro
   1437   res_vf  = vec_sro(vf, vuc);                   // CHECK: @llvm.ppc.altivec.vsro
   1438   res_vsc = vec_vsro(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
   1439   res_vsc = vec_vsro(vsc, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
   1440   res_vuc = vec_vsro(vuc, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
   1441   res_vuc = vec_vsro(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
   1442   res_vs  = vec_vsro(vs, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1443   res_vs  = vec_vsro(vs, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1444   res_vus = vec_vsro(vus, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
   1445   res_vus = vec_vsro(vus, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
   1446   res_vp  = vec_vsro(vp, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1447   res_vp  = vec_vsro(vp, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1448   res_vi  = vec_vsro(vi, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1449   res_vi  = vec_vsro(vi, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1450   res_vui = vec_vsro(vui, vsc);                 // CHECK: @llvm.ppc.altivec.vsro
   1451   res_vui = vec_vsro(vui, vuc);                 // CHECK: @llvm.ppc.altivec.vsro
   1452   res_vf  = vec_vsro(vf, vsc);                  // CHECK: @llvm.ppc.altivec.vsro
   1453   res_vf  = vec_vsro(vf, vuc);                  // CHECK: @llvm.ppc.altivec.vsro
   1454 
   1455   /* vec_st */
   1456   vec_st(vsc, 0, &vsc);                        // CHECK: @llvm.ppc.altivec.stvx
   1457   vec_st(vsc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvx
   1458   vec_st(vuc, 0, &vuc);                        // CHECK: @llvm.ppc.altivec.stvx
   1459   vec_st(vuc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
   1460   vec_st(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
   1461   vec_st(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvx
   1462   vec_st(vbc, 0, &vbc);                        // CHECK: @llvm.ppc.altivec.stvx
   1463   vec_st(vs, 0, &vs);                          // CHECK: @llvm.ppc.altivec.stvx
   1464   vec_st(vs, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvx
   1465   vec_st(vus, 0, &vus);                        // CHECK: @llvm.ppc.altivec.stvx
   1466   vec_st(vus, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvx
   1467   vec_st(vbs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvx
   1468   vec_st(vbs, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvx
   1469   vec_st(vbs, 0, &vbs);                        // CHECK: @llvm.ppc.altivec.stvx
   1470   vec_st(vp, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvx
   1471   vec_st(vp, 0, &param_us);                    // CHECK: @llvm.ppc.altivec.stvx
   1472   vec_st(vp, 0, &vp);                          // CHECK: @llvm.ppc.altivec.stvx
   1473   vec_st(vi, 0, &vi);                          // CHECK: @llvm.ppc.altivec.stvx
   1474   vec_st(vi, 0, &param_i);                     // CHECK: @llvm.ppc.altivec.stvx
   1475   vec_st(vui, 0, &vui);                        // CHECK: @llvm.ppc.altivec.stvx
   1476   vec_st(vui, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvx
   1477   vec_st(vbi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvx
   1478   vec_st(vbi, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvx
   1479   vec_st(vbi, 0, &vbi);                        // CHECK: @llvm.ppc.altivec.stvx
   1480   vec_st(vf, 0, &vf);                          // CHECK: @llvm.ppc.altivec.stvx
   1481   vec_st(vf, 0, &param_f);                     // CHECK: @llvm.ppc.altivec.stvx
   1482   vec_stvx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.stvx
   1483   vec_stvx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvx
   1484   vec_stvx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.stvx
   1485   vec_stvx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
   1486   vec_stvx(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
   1487   vec_stvx(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvx
   1488   vec_stvx(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.stvx
   1489   vec_stvx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.stvx
   1490   vec_stvx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvx
   1491   vec_stvx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.stvx
   1492   vec_stvx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvx
   1493   vec_stvx(vbs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvx
   1494   vec_stvx(vbs, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvx
   1495   vec_stvx(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.stvx
   1496   vec_stvx(vp, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvx
   1497   vec_stvx(vp, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvx
   1498   vec_stvx(vp, 0, &vp);                        // CHECK: @llvm.ppc.altivec.stvx
   1499   vec_stvx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.stvx
   1500   vec_stvx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvx
   1501   vec_stvx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.stvx
   1502   vec_stvx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvx
   1503   vec_stvx(vbi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.stvx
   1504   vec_stvx(vbi, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvx
   1505   vec_stvx(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.stvx
   1506   vec_stvx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.stvx
   1507   vec_stvx(vf, 0, &param_f);                   // CHECK: @llvm.ppc.altivec.stvx
   1508 
   1509   /* vec_ste */
   1510   vec_ste(vsc, 0, &param_sc);                  // CHECK: @llvm.ppc.altivec.stvebx
   1511   vec_ste(vuc, 0, &param_uc);                  // CHECK: @llvm.ppc.altivec.stvebx
   1512   vec_ste(vbc, 0, &param_sc);                  // CHECK: @llvm.ppc.altivec.stvebx
   1513   vec_ste(vbc, 0, &param_uc);                  // CHECK: @llvm.ppc.altivec.stvebx
   1514   vec_ste(vs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvehx
   1515   vec_ste(vus, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvehx
   1516   vec_ste(vbs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvehx
   1517   vec_ste(vbs, 0, &param_us);                  // CHECK: @llvm.ppc.altivec.stvehx
   1518   vec_ste(vp, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvehx
   1519   vec_ste(vp, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvehx
   1520   vec_ste(vi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvewx
   1521   vec_ste(vui, 0, &param_ui);                  // CHECK: @llvm.ppc.altivec.stvewx
   1522   vec_ste(vbi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvewx
   1523   vec_ste(vbi, 0, &param_ui);                  // CHECK: @llvm.ppc.altivec.stvewx
   1524   vec_ste(vf, 0, &param_f);                    // CHECK: @llvm.ppc.altivec.stvewx
   1525   vec_stvebx(vsc, 0, &param_sc);               // CHECK: @llvm.ppc.altivec.stvebx
   1526   vec_stvebx(vuc, 0, &param_uc);               // CHECK: @llvm.ppc.altivec.stvebx
   1527   vec_stvebx(vbc, 0, &param_sc);               // CHECK: @llvm.ppc.altivec.stvebx
   1528   vec_stvebx(vbc, 0, &param_uc);               // CHECK: @llvm.ppc.altivec.stvebx
   1529   vec_stvehx(vs, 0, &param_s);                 // CHECK: @llvm.ppc.altivec.stvehx
   1530   vec_stvehx(vus, 0, &param_us);               // CHECK: @llvm.ppc.altivec.stvehx
   1531   vec_stvehx(vbs, 0, &param_s);                // CHECK: @llvm.ppc.altivec.stvehx
   1532   vec_stvehx(vbs, 0, &param_us);               // CHECK: @llvm.ppc.altivec.stvehx
   1533   vec_stvehx(vp, 0, &param_s);                 // CHECK: @llvm.ppc.altivec.stvehx
   1534   vec_stvehx(vp, 0, &param_us);                // CHECK: @llvm.ppc.altivec.stvehx
   1535   vec_stvewx(vi, 0, &param_i);                 // CHECK: @llvm.ppc.altivec.stvewx
   1536   vec_stvewx(vui, 0, &param_ui);               // CHECK: @llvm.ppc.altivec.stvewx
   1537   vec_stvewx(vbi, 0, &param_i);                // CHECK: @llvm.ppc.altivec.stvewx
   1538   vec_stvewx(vbi, 0, &param_ui);               // CHECK: @llvm.ppc.altivec.stvewx
   1539   vec_stvewx(vf, 0, &param_f);                 // CHECK: @llvm.ppc.altivec.stvewx
   1540 
   1541   /* vec_stl */
   1542   vec_stl(vsc, 0, &vsc);                        // CHECK: @llvm.ppc.altivec.stvxl
   1543   vec_stl(vsc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvxl
   1544   vec_stl(vuc, 0, &vuc);                        // CHECK: @llvm.ppc.altivec.stvxl
   1545   vec_stl(vuc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvxl
   1546   vec_stl(vbc, 0, &param_sc);                   // CHECK: @llvm.ppc.altivec.stvxl
   1547   vec_stl(vbc, 0, &param_uc);                   // CHECK: @llvm.ppc.altivec.stvxl
   1548   vec_stl(vbc, 0, &vbc);                        // CHECK: @llvm.ppc.altivec.stvxl
   1549   vec_stl(vs, 0, &vs);                          // CHECK: @llvm.ppc.altivec.stvxl
   1550   vec_stl(vs, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvxl
   1551   vec_stl(vus, 0, &vus);                        // CHECK: @llvm.ppc.altivec.stvxl
   1552   vec_stl(vus, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvxl
   1553   vec_stl(vbs, 0, &param_s);                    // CHECK: @llvm.ppc.altivec.stvxl
   1554   vec_stl(vbs, 0, &param_us);                   // CHECK: @llvm.ppc.altivec.stvxl
   1555   vec_stl(vbs, 0, &vbs);                        // CHECK: @llvm.ppc.altivec.stvxl
   1556   vec_stl(vp, 0, &param_s);                     // CHECK: @llvm.ppc.altivec.stvxl
   1557   vec_stl(vp, 0, &param_us);                    // CHECK: @llvm.ppc.altivec.stvxl
   1558   vec_stl(vp, 0, &vp);                          // CHECK: @llvm.ppc.altivec.stvxl
   1559   vec_stl(vi, 0, &vi);                          // CHECK: @llvm.ppc.altivec.stvxl
   1560   vec_stl(vi, 0, &param_i);                     // CHECK: @llvm.ppc.altivec.stvxl
   1561   vec_stl(vui, 0, &vui);                        // CHECK: @llvm.ppc.altivec.stvxl
   1562   vec_stl(vui, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvxl
   1563   vec_stl(vbi, 0, &param_i);                    // CHECK: @llvm.ppc.altivec.stvxl
   1564   vec_stl(vbi, 0, &param_ui);                   // CHECK: @llvm.ppc.altivec.stvxl
   1565   vec_stl(vbi, 0, &vbi);                        // CHECK: @llvm.ppc.altivec.stvxl
   1566   vec_stl(vf, 0, &vf);                          // CHECK: @llvm.ppc.altivec.stvxl
   1567   vec_stl(vf, 0, &param_f);                     // CHECK: @llvm.ppc.altivec.stvxl
   1568   vec_stvxl(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.stvxl
   1569   vec_stvxl(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvxl
   1570   vec_stvxl(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.stvxl
   1571   vec_stvxl(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvxl
   1572   vec_stvxl(vbc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.stvxl
   1573   vec_stvxl(vbc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.stvxl
   1574   vec_stvxl(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.stvxl
   1575   vec_stvxl(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.stvxl
   1576   vec_stvxl(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.stvxl
   1577   vec_stvxl(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.stvxl
   1578   vec_stvxl(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
   1579   vec_stvxl(vbs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvxl
   1580   vec_stvxl(vbs, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
   1581   vec_stvxl(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.stvxl
   1582   vec_stvxl(vp, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.stvxl
   1583   vec_stvxl(vp, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.stvxl
   1584   vec_stvxl(vp, 0, &vp);                      // CHECK: @llvm.ppc.altivec.stvxl
   1585   vec_stvxl(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.stvxl
   1586   vec_stvxl(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.stvxl
   1587   vec_stvxl(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.stvxl
   1588   vec_stvxl(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvxl
   1589   vec_stvxl(vbi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.stvxl
   1590   vec_stvxl(vbi, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.stvxl
   1591   vec_stvxl(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.stvxl
   1592   vec_stvxl(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.stvxl
   1593   vec_stvxl(vf, 0, &param_f);                   // CHECK: @llvm.ppc.altivec.stvxl
   1594 
   1595   /* vec_sub */
   1596   res_vsc = vec_sub(vsc, vsc);                  // CHECK: sub <16 x i8>
   1597   res_vsc = vec_sub(vbc, vsc);                  // CHECK: sub <16 x i8>
   1598   res_vsc = vec_sub(vsc, vbc);                  // CHECK: sub <16 x i8>
   1599   res_vuc = vec_sub(vuc, vuc);                  // CHECK: sub <16 x i8>
   1600   res_vuc = vec_sub(vbc, vuc);                  // CHECK: sub <16 x i8>
   1601   res_vuc = vec_sub(vuc, vbc);                  // CHECK: sub <16 x i8>
   1602   res_vs  = vec_sub(vs, vs);                    // CHECK: sub <8 x i16>
   1603   res_vs  = vec_sub(vbs, vs);                   // CHECK: sub <8 x i16>
   1604   res_vs  = vec_sub(vs, vbs);                   // CHECK: sub <8 x i16>
   1605   res_vus = vec_sub(vus, vus);                  // CHECK: sub <8 x i16>
   1606   res_vus = vec_sub(vbs, vus);                  // CHECK: sub <8 x i16>
   1607   res_vus = vec_sub(vus, vbs);                  // CHECK: sub <8 x i16>
   1608   res_vi  = vec_sub(vi, vi);                    // CHECK: sub <4 x i32>
   1609   res_vi  = vec_sub(vbi, vi);                   // CHECK: sub <4 x i32>
   1610   res_vi  = vec_sub(vi, vbi);                   // CHECK: sub <4 x i32>
   1611   res_vui = vec_sub(vui, vui);                  // CHECK: sub <4 x i32>
   1612   res_vui = vec_sub(vbi, vui);                  // CHECK: sub <4 x i32>
   1613   res_vui = vec_sub(vui, vbi);                  // CHECK: sub <4 x i32>
   1614   res_vf  = vec_sub(vf, vf);                    // CHECK: fsub <4 x float>
   1615   res_vsc = vec_vsububm(vsc, vsc);              // CHECK: sub <16 x i8>
   1616   res_vsc = vec_vsububm(vbc, vsc);              // CHECK: sub <16 x i8>
   1617   res_vsc = vec_vsububm(vsc, vbc);              // CHECK: sub <16 x i8>
   1618   res_vuc = vec_vsububm(vuc, vuc);              // CHECK: sub <16 x i8>
   1619   res_vuc = vec_vsububm(vbc, vuc);              // CHECK: sub <16 x i8>
   1620   res_vuc = vec_vsububm(vuc, vbc);              // CHECK: sub <16 x i8>
   1621   res_vs  = vec_vsubuhm(vs, vs);                // CHECK: sub <8 x i16>
   1622   res_vs  = vec_vsubuhm(vbs, vus);              // CHECK: sub <8 x i16>
   1623   res_vs  = vec_vsubuhm(vus, vbs);              // CHECK: sub <8 x i16>
   1624   res_vus = vec_vsubuhm(vus, vus);              // CHECK: sub <8 x i16>
   1625   res_vus = vec_vsubuhm(vbs, vus);              // CHECK: sub <8 x i16>
   1626   res_vus = vec_vsubuhm(vus, vbs);              // CHECK: sub <8 x i16>
   1627   res_vi  = vec_vsubuwm(vi, vi);                // CHECK: sub <4 x i32>
   1628   res_vi  = vec_vsubuwm(vbi, vi);               // CHECK: sub <4 x i32>
   1629   res_vi  = vec_vsubuwm(vi, vbi);               // CHECK: sub <4 x i32>
   1630   res_vui = vec_vsubuwm(vui, vui);              // CHECK: sub <4 x i32>
   1631   res_vui = vec_vsubuwm(vbi, vui);              // CHECK: sub <4 x i32>
   1632   res_vui = vec_vsubuwm(vui, vbi);              // CHECK: sub <4 x i32>
   1633   res_vf  = vec_vsubfp(vf, vf);                 // CHECK: fsub <4 x float>
   1634 
   1635   /* vec_subc */
   1636   res_vui = vec_subc(vui, vui);                 // CHECK: @llvm.ppc.altivec.vsubcuw
   1637   res_vui = vec_vsubcuw(vui, vui);              // CHECK: @llvm.ppc.altivec.vsubcuw
   1638 
   1639   /* vec_subs */
   1640   res_vsc = vec_subs(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
   1641   res_vsc = vec_subs(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
   1642   res_vsc = vec_subs(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vsubsbs
   1643   res_vuc = vec_subs(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vsububs
   1644   res_vuc = vec_subs(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vsububs
   1645   res_vuc = vec_subs(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vsububs
   1646   res_vs  = vec_subs(vs, vs);                   // CHECK: @llvm.ppc.altivec.vsubshs
   1647   res_vs  = vec_subs(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vsubshs
   1648   res_vs  = vec_subs(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vsubshs
   1649   res_vus = vec_subs(vus, vus);                 // CHECK: @llvm.ppc.altivec.vsubuhs
   1650   res_vus = vec_subs(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vsubuhs
   1651   res_vus = vec_subs(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vsubuhs
   1652   res_vi  = vec_subs(vi, vi);                   // CHECK: @llvm.ppc.altivec.vsubsws
   1653   res_vi  = vec_subs(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vsubsws
   1654   res_vi  = vec_subs(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vsubsws
   1655   res_vui = vec_subs(vui, vui);                 // CHECK: @llvm.ppc.altivec.vsubuws
   1656   res_vui = vec_subs(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vsubuws
   1657   res_vui = vec_subs(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vsubuws
   1658   res_vsc = vec_vsubsbs(vsc, vsc);              // CHECK: @llvm.ppc.altivec.vsubsbs
   1659   res_vsc = vec_vsubsbs(vbc, vsc);              // CHECK: @llvm.ppc.altivec.vsubsbs
   1660   res_vsc = vec_vsubsbs(vsc, vbc);              // CHECK: @llvm.ppc.altivec.vsubsbs
   1661   res_vuc = vec_vsububs(vuc, vuc);              // CHECK: @llvm.ppc.altivec.vsububs
   1662   res_vuc = vec_vsububs(vbc, vuc);              // CHECK: @llvm.ppc.altivec.vsububs
   1663   res_vuc = vec_vsububs(vuc, vbc);              // CHECK: @llvm.ppc.altivec.vsububs
   1664   res_vs  = vec_vsubshs(vs, vs);                // CHECK: @llvm.ppc.altivec.vsubshs
   1665   res_vs  = vec_vsubshs(vbs, vs);               // CHECK: @llvm.ppc.altivec.vsubshs
   1666   res_vs  = vec_vsubshs(vs, vbs);               // CHECK: @llvm.ppc.altivec.vsubshs
   1667   res_vus = vec_vsubuhs(vus, vus);              // CHECK: @llvm.ppc.altivec.vsubuhs
   1668   res_vus = vec_vsubuhs(vbs, vus);              // CHECK: @llvm.ppc.altivec.vsubuhs
   1669   res_vus = vec_vsubuhs(vus, vbs);              // CHECK: @llvm.ppc.altivec.vsubuhs
   1670   res_vi  = vec_vsubsws(vi, vi);                // CHECK: @llvm.ppc.altivec.vsubsws
   1671   res_vi  = vec_vsubsws(vbi, vi);               // CHECK: @llvm.ppc.altivec.vsubsws
   1672   res_vi  = vec_vsubsws(vi, vbi);               // CHECK: @llvm.ppc.altivec.vsubsws
   1673   res_vui = vec_vsubuws(vui, vui);              // CHECK: @llvm.ppc.altivec.vsubuws
   1674   res_vui = vec_vsubuws(vbi, vui);              // CHECK: @llvm.ppc.altivec.vsubuws
   1675   res_vui = vec_vsubuws(vui, vbi);              // CHECK: @llvm.ppc.altivec.vsubuws
   1676 
   1677   /* vec_sum4s */
   1678   res_vi  = vec_sum4s(vsc, vi);                 // CHECK: @llvm.ppc.altivec.vsum4sbs
   1679   res_vui = vec_sum4s(vuc, vui);                // CHECK: @llvm.ppc.altivec.vsum4ubs
   1680   res_vi  = vec_sum4s(vs, vi);                  // CHECK: @llvm.ppc.altivec.vsum4shs
   1681   res_vi  = vec_vsum4sbs(vsc, vi);              // CHECK: @llvm.ppc.altivec.vsum4sbs
   1682   res_vui = vec_vsum4ubs(vuc, vui);             // CHECK: @llvm.ppc.altivec.vsum4ubs
   1683   res_vi  = vec_vsum4shs(vs, vi);               // CHECK: @llvm.ppc.altivec.vsum4shs
   1684 
   1685   /* vec_sum2s */
   1686   res_vi = vec_sum2s(vi, vi);                   // CHECK: @llvm.ppc.altivec.vsum2sws
   1687   res_vi = vec_vsum2sws(vi, vi);                // CHECK: @llvm.ppc.altivec.vsum2sws
   1688 
   1689   /* vec_sums */
   1690   res_vi = vec_sums(vi, vi);                    // CHECK: @llvm.ppc.altivec.vsumsws
   1691   res_vi = vec_vsumsws(vi, vi);                 // CHECK: @llvm.ppc.altivec.vsumsws
   1692 
   1693   /* vec_trunc */
   1694   res_vf = vec_trunc(vf);                       // CHECK: @llvm.ppc.altivec.vrfiz
   1695   res_vf = vec_vrfiz(vf);                       // CHECK: @llvm.ppc.altivec.vrfiz
   1696 
   1697   /* vec_unpackh */
   1698   res_vs  = vec_unpackh(vsc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
   1699   res_vbs = vec_unpackh(vbc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
   1700   res_vi  = vec_unpackh(vs);                    // CHECK: @llvm.ppc.altivec.vupkhsh
   1701   res_vbi = vec_unpackh(vbs);                   // CHECK: @llvm.ppc.altivec.vupkhsh
   1702   res_vui = vec_unpackh(vp);                    // CHECK: @llvm.ppc.altivec.vupkhsh
   1703   res_vs  = vec_vupkhsb(vsc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
   1704   res_vbs = vec_vupkhsb(vbc);                   // CHECK: @llvm.ppc.altivec.vupkhsb
   1705   res_vi  = vec_vupkhsh(vs);                    // CHECK: @llvm.ppc.altivec.vupkhsh
   1706   res_vbi = vec_vupkhsh(vbs);                   // CHECK: @llvm.ppc.altivec.vupkhsh
   1707   res_vui = vec_vupkhsh(vp);                    // CHECK: @llvm.ppc.altivec.vupkhsh
   1708 
   1709   /* vec_unpackl */
   1710   res_vs  = vec_unpackl(vsc);                   // CHECK: @llvm.ppc.altivec.vupklsb
   1711   res_vbs = vec_unpackl(vbc);                   // CHECK: @llvm.ppc.altivec.vupklsb
   1712   res_vi  = vec_unpackl(vs);                    // CHECK: @llvm.ppc.altivec.vupklsh
   1713   res_vbi = vec_unpackl(vbs);                   // CHECK: @llvm.ppc.altivec.vupklsh
   1714   res_vui = vec_unpackl(vp);                    // CHECK: @llvm.ppc.altivec.vupklsh
   1715   res_vs  = vec_vupklsb(vsc);                   // CHECK: @llvm.ppc.altivec.vupklsb
   1716   res_vbs = vec_vupklsb(vbc);                   // CHECK: @llvm.ppc.altivec.vupklsb
   1717   res_vi  = vec_vupklsh(vs);                    // CHECK: @llvm.ppc.altivec.vupklsh
   1718   res_vbi = vec_vupklsh(vbs);                   // CHECK: @llvm.ppc.altivec.vupklsh
   1719   res_vui = vec_vupklsh(vp);                    // CHECK: @llvm.ppc.altivec.vupklsh
   1720 
   1721   /* vec_xor */
   1722   res_vsc = vec_xor(vsc, vsc);                  // CHECK: xor <16 x i8>
   1723   res_vsc = vec_xor(vbc, vsc);                  // CHECK: xor <16 x i8>
   1724   res_vsc = vec_xor(vsc, vbc);                  // CHECK: xor <16 x i8>
   1725   res_vuc = vec_xor(vuc, vuc);                  // CHECK: xor <16 x i8>
   1726   res_vuc = vec_xor(vbc, vuc);                  // CHECK: xor <16 x i8>
   1727   res_vuc = vec_xor(vuc, vbc);                  // CHECK: xor <16 x i8>
   1728   res_vbc = vec_xor(vbc, vbc);                  // CHECK: xor <16 x i8>
   1729   res_vs  = vec_xor(vs, vs);                    // CHECK: xor <8 x i16>
   1730   res_vs  = vec_xor(vbs, vs);                   // CHECK: xor <8 x i16>
   1731   res_vs  = vec_xor(vs, vbs);                   // CHECK: xor <8 x i16>
   1732   res_vus = vec_xor(vus, vus);                  // CHECK: xor <8 x i16>
   1733   res_vus = vec_xor(vbs, vus);                  // CHECK: xor <8 x i16>
   1734   res_vus = vec_xor(vus, vbs);                  // CHECK: xor <8 x i16>
   1735   res_vbs = vec_xor(vbs, vbs);                  // CHECK: xor <8 x i16>
   1736   res_vi  = vec_xor(vi, vi);                    // CHECK: xor <4 x i32>
   1737   res_vi  = vec_xor(vbi, vi);                   // CHECK: xor <4 x i32>
   1738   res_vi  = vec_xor(vi, vbi);                   // CHECK: xor <4 x i32>
   1739   res_vui = vec_xor(vui, vui);                  // CHECK: xor <4 x i32>
   1740   res_vui = vec_xor(vbi, vui);                  // CHECK: xor <4 x i32>
   1741   res_vui = vec_xor(vui, vbi);                  // CHECK: xor <4 x i32>
   1742   res_vbi = vec_xor(vbi, vbi);                  // CHECK: xor <4 x i32>
   1743   res_vf  = vec_xor(vf, vf);                    // CHECK: xor <4 x i32>
   1744   res_vf  = vec_xor(vbi, vf);                   // CHECK: xor <4 x i32>
   1745   res_vf  = vec_xor(vf, vbi);                   // CHECK: xor <4 x i32>
   1746   res_vsc = vec_vxor(vsc, vsc);                 // CHECK: xor <16 x i8>
   1747   res_vsc = vec_vxor(vbc, vsc);                 // CHECK: xor <16 x i8>
   1748   res_vsc = vec_vxor(vsc, vbc);                 // CHECK: xor <16 x i8>
   1749   res_vuc = vec_vxor(vuc, vuc);                 // CHECK: xor <16 x i8>
   1750   res_vuc = vec_vxor(vbc, vuc);                 // CHECK: xor <16 x i8>
   1751   res_vuc = vec_vxor(vuc, vbc);                 // CHECK: xor <16 x i8>
   1752   res_vbc = vec_vxor(vbc, vbc);                 // CHECK: xor <16 x i8>
   1753   res_vs  = vec_vxor(vs, vs);                   // CHECK: xor <8 x i16>
   1754   res_vs  = vec_vxor(vbs, vs);                  // CHECK: xor <8 x i16>
   1755   res_vs  = vec_vxor(vs, vbs);                  // CHECK: xor <8 x i16>
   1756   res_vus = vec_vxor(vus, vus);                 // CHECK: xor <8 x i16>
   1757   res_vus = vec_vxor(vbs, vus);                 // CHECK: xor <8 x i16>
   1758   res_vus = vec_vxor(vus, vbs);                 // CHECK: xor <8 x i16>
   1759   res_vbs = vec_vxor(vbs, vbs);                 // CHECK: xor <8 x i16>
   1760   res_vi  = vec_vxor(vi, vi);                   // CHECK: xor <4 x i32>
   1761   res_vi  = vec_vxor(vbi, vi);                  // CHECK: xor <4 x i32>
   1762   res_vi  = vec_vxor(vi, vbi);                  // CHECK: xor <4 x i32>
   1763   res_vui = vec_vxor(vui, vui);                 // CHECK: xor <4 x i32>
   1764   res_vui = vec_vxor(vbi, vui);                 // CHECK: xor <4 x i32>
   1765   res_vui = vec_vxor(vui, vbi);                 // CHECK: xor <4 x i32>
   1766   res_vbi = vec_vxor(vbi, vbi);                 // CHECK: xor <4 x i32>
   1767   res_vf  = vec_vxor(vf, vf);                   // CHECK: xor <4 x i32>
   1768   res_vf  = vec_vxor(vbi, vf);                  // CHECK: xor <4 x i32>
   1769   res_vf  = vec_vxor(vf, vbi);                  // CHECK: xor <4 x i32>
   1770 
   1771   /* ------------------------------ extensions -------------------------------------- */
   1772 
   1773   /* vec_extract */
   1774   res_sc = vec_extract(vsc, param_i);           // CHECK: extractelement <16 x i8>
   1775   res_uc = vec_extract(vuc, param_i);           // CHECK: extractelement <16 x i8>
   1776   res_s  = vec_extract(vs, param_i);            // CHECK: extractelement <8 x i16>
   1777   res_us = vec_extract(vus, param_i);           // CHECK: extractelement <8 x i16>
   1778   res_i  = vec_extract(vi, param_i);            // CHECK: extractelement <4 x i32>
   1779   res_ui = vec_extract(vui, param_i);           // CHECK: extractelement <4 x i32>
   1780   res_f  = vec_extract(vf, param_i);            // CHECK: extractelement <4 x float>
   1781 
   1782   /* vec_insert */
   1783   res_vsc = vec_insert(param_sc, vsc, param_i); // CHECK: insertelement <16 x i8>
   1784   res_vuc = vec_insert(param_uc, vuc, param_i); // CHECK: insertelement <16 x i8>
   1785   res_vs  = vec_insert(param_s, vs, param_i);   // CHECK: insertelement <8 x i16>
   1786   res_vus = vec_insert(param_us, vus, param_i); // CHECK: insertelement <8 x i16>
   1787   res_vi  = vec_insert(param_i, vi, param_i);   // CHECK: insertelement <4 x i32>
   1788   res_vui = vec_insert(param_ui, vui, param_i); // CHECK: insertelement <4 x i32>
   1789   res_vf  = vec_insert(param_f, vf, param_i);   // CHECK: insertelement <4 x float>
   1790 
   1791   /* vec_lvlx */
   1792   res_vsc = vec_lvlx(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvx
   1793                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1794                                                 // CHECK: store <16 x i8> zeroinitializer
   1795                                                 // CHECK: @llvm.ppc.altivec.vperm
   1796 
   1797   res_vsc = vec_lvlx(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvx
   1798                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1799                                                 // CHECK: store <16 x i8> zeroinitializer
   1800                                                 // CHECK: @llvm.ppc.altivec.vperm
   1801 
   1802   res_vuc = vec_lvlx(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvx
   1803                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1804                                                 // CHECK: store <16 x i8> zeroinitializer
   1805                                                 // CHECK: @llvm.ppc.altivec.vperm
   1806 
   1807   res_vuc = vec_lvlx(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvx
   1808                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1809                                                 // CHECK: store <16 x i8> zeroinitializer
   1810                                                 // CHECK: @llvm.ppc.altivec.vperm
   1811 
   1812   res_vbc = vec_lvlx(0, &vbc);                  // CHECK: @llvm.ppc.altivec.lvx
   1813                                                 // CHECK: store <16 x i8> zeroinitializer
   1814                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1815                                                 // CHECK: @llvm.ppc.altivec.vperm
   1816 
   1817   res_vs  = vec_lvlx(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvx
   1818                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1819                                                 // CHECK: store <8 x i16> zeroinitializer
   1820                                                 // CHECK: @llvm.ppc.altivec.vperm
   1821 
   1822   res_vs  = vec_lvlx(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvx
   1823                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1824                                                 // CHECK: store <8 x i16> zeroinitializer
   1825                                                 // CHECK: @llvm.ppc.altivec.vperm
   1826 
   1827   res_vus = vec_lvlx(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvx
   1828                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1829                                                 // CHECK: store <8 x i16> zeroinitializer
   1830                                                 // CHECK: @llvm.ppc.altivec.vperm
   1831 
   1832   res_vus = vec_lvlx(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvx
   1833                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1834                                                 // CHECK: store <8 x i16> zeroinitializer
   1835                                                 // CHECK: @llvm.ppc.altivec.vperm
   1836 
   1837   res_vbs = vec_lvlx(0, &vbs);                  // CHECK: @llvm.ppc.altivec.lvx
   1838                                                 // CHECK: store <8 x i16> zeroinitializer
   1839                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1840                                                 // CHECK: @llvm.ppc.altivec.vperm
   1841 
   1842   res_vp  = vec_lvlx(0, &vp);                   // CHECK: @llvm.ppc.altivec.lvx
   1843                                                 // CHECK: store <8 x i16> zeroinitializer
   1844                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1845                                                 // CHECK: @llvm.ppc.altivec.vperm
   1846 
   1847   res_vi  = vec_lvlx(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvx
   1848                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1849                                                 // CHECK: store <4 x i32> zeroinitializer
   1850                                                 // CHECK: @llvm.ppc.altivec.vperm
   1851 
   1852   res_vi  = vec_lvlx(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvx
   1853                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1854                                                 // CHECK: store <4 x i32> zeroinitializer
   1855                                                 // CHECK: @llvm.ppc.altivec.vperm
   1856 
   1857   res_vui = vec_lvlx(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvx
   1858                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1859                                                 // CHECK: store <4 x i32> zeroinitializer
   1860                                                 // CHECK: @llvm.ppc.altivec.vperm
   1861 
   1862   res_vui = vec_lvlx(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvx
   1863                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1864                                                 // CHECK: store <4 x i32> zeroinitializer
   1865                                                 // CHECK: @llvm.ppc.altivec.vperm
   1866 
   1867   res_vbi = vec_lvlx(0, &vbi);                  // CHECK: @llvm.ppc.altivec.lvx
   1868                                                 // CHECK: store <4 x i32> zeroinitializer
   1869                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1870                                                 // CHECK: @llvm.ppc.altivec.vperm
   1871 
   1872   res_vf  = vec_lvlx(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvx
   1873                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1874                                                 // CHECK: store <4 x float> zeroinitializer
   1875                                                 // CHECK: @llvm.ppc.altivec.vperm
   1876 
   1877   /* vec_lvlxl */
   1878   res_vsc = vec_lvlxl(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvxl
   1879                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1880                                                 // CHECK: store <16 x i8> zeroinitializer
   1881                                                 // CHECK: @llvm.ppc.altivec.vperm
   1882 
   1883   res_vsc = vec_lvlxl(0, &vsc);                 // CHECK: @llvm.ppc.altivec.lvxl
   1884                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1885                                                 // CHECK: store <16 x i8> zeroinitializer
   1886                                                 // CHECK: @llvm.ppc.altivec.vperm
   1887 
   1888   res_vuc = vec_lvlxl(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvxl
   1889                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1890                                                 // CHECK: store <16 x i8> zeroinitializer
   1891                                                 // CHECK: @llvm.ppc.altivec.vperm
   1892 
   1893   res_vuc = vec_lvlxl(0, &vuc);                 // CHECK: @llvm.ppc.altivec.lvxl
   1894                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1895                                                 // CHECK: store <16 x i8> zeroinitializer
   1896                                                 // CHECK: @llvm.ppc.altivec.vperm
   1897 
   1898   res_vbc = vec_lvlxl(0, &vbc);                 // CHECK: @llvm.ppc.altivec.lvxl
   1899                                                 // CHECK: store <16 x i8> zeroinitializer
   1900                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1901                                                 // CHECK: @llvm.ppc.altivec.vperm
   1902 
   1903   res_vs  = vec_lvlxl(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvxl
   1904                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1905                                                 // CHECK: store <8 x i16> zeroinitializer
   1906                                                 // CHECK: @llvm.ppc.altivec.vperm
   1907 
   1908   res_vs  = vec_lvlxl(0, &vs);                  // CHECK: @llvm.ppc.altivec.lvxl
   1909                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1910                                                 // CHECK: store <8 x i16> zeroinitializer
   1911                                                 // CHECK: @llvm.ppc.altivec.vperm
   1912 
   1913   res_vus = vec_lvlxl(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvxl
   1914                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1915                                                 // CHECK: store <8 x i16> zeroinitializer
   1916                                                 // CHECK: @llvm.ppc.altivec.vperm
   1917 
   1918   res_vus = vec_lvlxl(0, &vus);                 // CHECK: @llvm.ppc.altivec.lvxl
   1919                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1920                                                 // CHECK: store <8 x i16> zeroinitializer
   1921                                                 // CHECK: @llvm.ppc.altivec.vperm
   1922 
   1923   res_vbs = vec_lvlxl(0, &vbs);                 // CHECK: @llvm.ppc.altivec.lvxl
   1924                                                 // CHECK: store <8 x i16> zeroinitializer
   1925                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1926                                                 // CHECK: @llvm.ppc.altivec.vperm
   1927 
   1928   res_vp  = vec_lvlxl(0, &vp);                  // CHECK: @llvm.ppc.altivec.lvxl
   1929                                                 // CHECK: store <8 x i16> zeroinitializer
   1930                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1931                                                 // CHECK: @llvm.ppc.altivec.vperm
   1932 
   1933   res_vi  = vec_lvlxl(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvxl
   1934                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1935                                                 // CHECK: store <4 x i32> zeroinitializer
   1936                                                 // CHECK: @llvm.ppc.altivec.vperm
   1937 
   1938   res_vi  = vec_lvlxl(0, &vi);                  // CHECK: @llvm.ppc.altivec.lvxl
   1939                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1940                                                 // CHECK: store <4 x i32> zeroinitializer
   1941                                                 // CHECK: @llvm.ppc.altivec.vperm
   1942 
   1943   res_vui = vec_lvlxl(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvxl
   1944                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1945                                                 // CHECK: store <4 x i32> zeroinitializer
   1946                                                 // CHECK: @llvm.ppc.altivec.vperm
   1947 
   1948   res_vui = vec_lvlxl(0, &vui);                 // CHECK: @llvm.ppc.altivec.lvxl
   1949                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1950                                                 // CHECK: store <4 x i32> zeroinitializer
   1951                                                 // CHECK: @llvm.ppc.altivec.vperm
   1952 
   1953   res_vbi = vec_lvlxl(0, &vbi);                 // CHECK: @llvm.ppc.altivec.lvxl
   1954                                                 // CHECK: store <4 x i32> zeroinitializer
   1955                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1956                                                 // CHECK: @llvm.ppc.altivec.vperm
   1957 
   1958   res_vf  = vec_lvlxl(0, &vf);                  // CHECK: @llvm.ppc.altivec.lvxl
   1959                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1960                                                 // CHECK: store <4 x float> zeroinitializer
   1961                                                 // CHECK: @llvm.ppc.altivec.vperm
   1962 
   1963   /* vec_lvrx */
   1964   res_vsc = vec_lvrx(0, &param_sc);             // CHECK: @llvm.ppc.altivec.lvx
   1965                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1966                                                 // CHECK: store <16 x i8> zeroinitializer
   1967                                                 // CHECK: @llvm.ppc.altivec.vperm
   1968 
   1969   res_vsc = vec_lvrx(0, &vsc);                  // CHECK: @llvm.ppc.altivec.lvx
   1970                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1971                                                 // CHECK: store <16 x i8> zeroinitializer
   1972                                                 // CHECK: @llvm.ppc.altivec.vperm
   1973 
   1974   res_vuc = vec_lvrx(0, &param_uc);             // CHECK: @llvm.ppc.altivec.lvx
   1975                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1976                                                 // CHECK: store <16 x i8> zeroinitializer
   1977                                                 // CHECK: @llvm.ppc.altivec.vperm
   1978 
   1979   res_vuc = vec_lvrx(0, &vuc);                  // CHECK: @llvm.ppc.altivec.lvx
   1980                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1981                                                 // CHECK: store <16 x i8> zeroinitializer
   1982                                                 // CHECK: @llvm.ppc.altivec.vperm
   1983 
   1984   res_vbc = vec_lvrx(0, &vbc);                  // CHECK: store <16 x i8> zeroinitializer
   1985                                                 // CHECK: @llvm.ppc.altivec.lvx
   1986                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1987                                                 // CHECK: @llvm.ppc.altivec.vperm
   1988 
   1989   res_vs  = vec_lvrx(0, &param_s);              // CHECK: @llvm.ppc.altivec.lvx
   1990                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1991                                                 // CHECK: store <8 x i16> zeroinitializer
   1992                                                 // CHECK: @llvm.ppc.altivec.vperm
   1993 
   1994   res_vs  = vec_lvrx(0, &vs);                   // CHECK: @llvm.ppc.altivec.lvx
   1995                                                 // CHECK: @llvm.ppc.altivec.lvsl
   1996                                                 // CHECK: store <8 x i16> zeroinitializer
   1997                                                 // CHECK: @llvm.ppc.altivec.vperm
   1998 
   1999   res_vus = vec_lvrx(0, &param_us);             // CHECK: @llvm.ppc.altivec.lvx
   2000                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2001                                                 // CHECK: store <8 x i16> zeroinitializer
   2002                                                 // CHECK: @llvm.ppc.altivec.vperm
   2003 
   2004   res_vus = vec_lvrx(0, &vus);                  // CHECK: @llvm.ppc.altivec.lvx
   2005                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2006                                                 // CHECK: store <8 x i16> zeroinitializer
   2007                                                 // CHECK: @llvm.ppc.altivec.vperm
   2008 
   2009   res_vbs = vec_lvrx(0, &vbs);                  // CHECK: store <8 x i16> zeroinitializer
   2010                                                 // CHECK: @llvm.ppc.altivec.lvx
   2011                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2012                                                 // CHECK: @llvm.ppc.altivec.vperm
   2013 
   2014   res_vp  = vec_lvrx(0, &vp);                   // CHECK: store <8 x i16> zeroinitializer
   2015                                                 // CHECK: @llvm.ppc.altivec.lvx
   2016                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2017                                                 // CHECK: @llvm.ppc.altivec.vperm
   2018 
   2019   res_vi  = vec_lvrx(0, &param_i);              // CHECK: @llvm.ppc.altivec.lvx
   2020                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2021                                                 // CHECK: store <4 x i32> zeroinitializer
   2022                                                 // CHECK: @llvm.ppc.altivec.vperm
   2023 
   2024   res_vi  = vec_lvrx(0, &vi);                   // CHECK: @llvm.ppc.altivec.lvx
   2025                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2026                                                 // CHECK: store <4 x i32> zeroinitializer
   2027                                                 // CHECK: @llvm.ppc.altivec.vperm
   2028 
   2029   res_vui = vec_lvrx(0, &param_ui);             // CHECK: @llvm.ppc.altivec.lvx
   2030                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2031                                                 // CHECK: store <4 x i32> zeroinitializer
   2032                                                 // CHECK: @llvm.ppc.altivec.vperm
   2033 
   2034   res_vui = vec_lvrx(0, &vui);                  // CHECK: @llvm.ppc.altivec.lvx
   2035                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2036                                                 // CHECK: store <4 x i32> zeroinitializer
   2037                                                 // CHECK: @llvm.ppc.altivec.vperm
   2038 
   2039   res_vbi = vec_lvrx(0, &vbi);                  // CHECK: store <4 x i32> zeroinitializer
   2040                                                 // CHECK: @llvm.ppc.altivec.lvx
   2041                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2042                                                 // CHECK: @llvm.ppc.altivec.vperm
   2043 
   2044   res_vf  = vec_lvrx(0, &vf);                   // CHECK: @llvm.ppc.altivec.lvx
   2045                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2046                                                 // CHECK: store <4 x float> zeroinitializer
   2047                                                 // CHECK: @llvm.ppc.altivec.vperm
   2048 
   2049   /* vec_lvrxl */
   2050   res_vsc = vec_lvrxl(0, &param_sc);            // CHECK: @llvm.ppc.altivec.lvxl
   2051                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2052                                                 // CHECK: store <16 x i8> zeroinitializer
   2053                                                 // CHECK: @llvm.ppc.altivec.vperm
   2054 
   2055   res_vsc = vec_lvrxl(0, &vsc);                 // CHECK: @llvm.ppc.altivec.lvxl
   2056                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2057                                                 // CHECK: store <16 x i8> zeroinitializer
   2058                                                 // CHECK: @llvm.ppc.altivec.vperm
   2059 
   2060   res_vuc = vec_lvrxl(0, &param_uc);            // CHECK: @llvm.ppc.altivec.lvxl
   2061                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2062                                                 // CHECK: store <16 x i8> zeroinitializer
   2063                                                 // CHECK: @llvm.ppc.altivec.vperm
   2064 
   2065   res_vuc = vec_lvrxl(0, &vuc);                 // CHECK: @llvm.ppc.altivec.lvxl
   2066                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2067                                                 // CHECK: store <16 x i8> zeroinitializer
   2068                                                 // CHECK: @llvm.ppc.altivec.vperm
   2069 
   2070   res_vbc = vec_lvrxl(0, &vbc);                 // CHECK: store <16 x i8> zeroinitializer
   2071                                                 // CHECK: @llvm.ppc.altivec.lvxl
   2072                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2073                                                 // CHECK: @llvm.ppc.altivec.vperm
   2074 
   2075   res_vs  = vec_lvrxl(0, &param_s);             // CHECK: @llvm.ppc.altivec.lvxl
   2076                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2077                                                 // CHECK: store <8 x i16> zeroinitializer
   2078                                                 // CHECK: @llvm.ppc.altivec.vperm
   2079 
   2080   res_vs  = vec_lvrxl(0, &vs);                  // CHECK: @llvm.ppc.altivec.lvxl
   2081                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2082                                                 // CHECK: store <8 x i16> zeroinitializer
   2083                                                 // CHECK: @llvm.ppc.altivec.vperm
   2084 
   2085   res_vus = vec_lvrxl(0, &param_us);            // CHECK: @llvm.ppc.altivec.lvxl
   2086                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2087                                                 // CHECK: store <8 x i16> zeroinitializer
   2088                                                 // CHECK: @llvm.ppc.altivec.vperm
   2089 
   2090   res_vus = vec_lvrxl(0, &vus);                 // CHECK: @llvm.ppc.altivec.lvxl
   2091                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2092                                                 // CHECK: store <8 x i16> zeroinitializer
   2093                                                 // CHECK: @llvm.ppc.altivec.vperm
   2094 
   2095   res_vbs = vec_lvrxl(0, &vbs);                 // CHECK: store <8 x i16> zeroinitializer
   2096                                                 // CHECK: @llvm.ppc.altivec.lvxl
   2097                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2098                                                 // CHECK: @llvm.ppc.altivec.vperm
   2099 
   2100   res_vp  = vec_lvrxl(0, &vp);                  // CHECK: store <8 x i16> zeroinitializer
   2101                                                 // CHECK: @llvm.ppc.altivec.lvxl
   2102                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2103                                                 // CHECK: @llvm.ppc.altivec.vperm
   2104 
   2105   res_vi  = vec_lvrxl(0, &param_i);             // CHECK: @llvm.ppc.altivec.lvxl
   2106                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2107                                                 // CHECK: store <4 x i32> zeroinitializer
   2108                                                 // CHECK: @llvm.ppc.altivec.vperm
   2109 
   2110   res_vi  = vec_lvrxl(0, &vi);                  // CHECK: @llvm.ppc.altivec.lvxl
   2111                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2112                                                 // CHECK: store <4 x i32> zeroinitializer
   2113                                                 // CHECK: @llvm.ppc.altivec.vperm
   2114 
   2115   res_vui = vec_lvrxl(0, &param_ui);            // CHECK: @llvm.ppc.altivec.lvxl
   2116                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2117                                                 // CHECK: store <4 x i32> zeroinitializer
   2118                                                 // CHECK: @llvm.ppc.altivec.vperm
   2119 
   2120   res_vui = vec_lvrxl(0, &vui);                 // CHECK: @llvm.ppc.altivec.lvxl
   2121                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2122                                                 // CHECK: store <4 x i32> zeroinitializer
   2123                                                 // CHECK: @llvm.ppc.altivec.vperm
   2124 
   2125   res_vbi = vec_lvrxl(0, &vbi);                 // CHECK: store <4 x i32> zeroinitializer
   2126                                                 // CHECK: @llvm.ppc.altivec.lvxl
   2127                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2128                                                 // CHECK: @llvm.ppc.altivec.vperm
   2129 
   2130   res_vf  = vec_lvrxl(0, &vf);                  // CHECK: @llvm.ppc.altivec.lvxl
   2131                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2132                                                 // CHECK: store <4 x float> zeroinitializer
   2133                                                 // CHECK: @llvm.ppc.altivec.vperm
   2134 
   2135   /* vec_stvlx */
   2136   vec_stvlx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.lvx
   2137                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2138                                                 // CHECK: store <16 x i8> zeroinitializer
   2139                                                 // CHECK: @llvm.ppc.altivec.vperm
   2140                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2141                                                 // CHECK: @llvm.ppc.altivec.vperm
   2142                                                 // CHECK: @llvm.ppc.altivec.stvx
   2143 
   2144   vec_stvlx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.lvx
   2145                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2146                                                 // CHECK: store <16 x i8> zeroinitializer
   2147                                                 // CHECK: @llvm.ppc.altivec.vperm
   2148                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2149                                                 // CHECK: @llvm.ppc.altivec.vperm
   2150                                                 // CHECK: @llvm.ppc.altivec.stvx
   2151 
   2152   vec_stvlx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.lvx
   2153                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2154                                                 // CHECK: store <16 x i8> zeroinitializer
   2155                                                 // CHECK: @llvm.ppc.altivec.vperm
   2156                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2157                                                 // CHECK: @llvm.ppc.altivec.vperm
   2158                                                 // CHECK: @llvm.ppc.altivec.stvx
   2159 
   2160   vec_stvlx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.lvx
   2161                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2162                                                 // CHECK: store <16 x i8> zeroinitializer
   2163                                                 // CHECK: @llvm.ppc.altivec.vperm
   2164                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2165                                                 // CHECK: @llvm.ppc.altivec.vperm
   2166                                                 // CHECK: @llvm.ppc.altivec.stvx
   2167 
   2168   vec_stvlx(vbc, 0, &vbc);                      // CHECK: store <16 x i8> zeroinitializer
   2169                                                 // CHECK: @llvm.ppc.altivec.lvx
   2170                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2171                                                 // CHECK: @llvm.ppc.altivec.vperm
   2172                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2173                                                 // CHECK: @llvm.ppc.altivec.vperm
   2174                                                 // CHECK: @llvm.ppc.altivec.stvx
   2175 
   2176   vec_stvlx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.lvx
   2177                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2178                                                 // CHECK: store <8 x i16> zeroinitializer
   2179                                                 // CHECK: @llvm.ppc.altivec.vperm
   2180                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2181                                                 // CHECK: @llvm.ppc.altivec.vperm
   2182                                                 // CHECK: @llvm.ppc.altivec.stvx
   2183 
   2184   vec_stvlx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.lvx
   2185                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2186                                                 // CHECK: store <8 x i16> zeroinitializer
   2187                                                 // CHECK: @llvm.ppc.altivec.vperm
   2188                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2189                                                 // CHECK: @llvm.ppc.altivec.vperm
   2190                                                 // CHECK: @llvm.ppc.altivec.stvx
   2191 
   2192   vec_stvlx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.lvx
   2193                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2194                                                 // CHECK: store <8 x i16> zeroinitializer
   2195                                                 // CHECK: @llvm.ppc.altivec.vperm
   2196                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2197                                                 // CHECK: @llvm.ppc.altivec.vperm
   2198                                                 // CHECK: @llvm.ppc.altivec.stvx
   2199 
   2200   vec_stvlx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.lvx
   2201                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2202                                                 // CHECK: store <8 x i16> zeroinitializer
   2203                                                 // CHECK: @llvm.ppc.altivec.vperm
   2204                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2205                                                 // CHECK: @llvm.ppc.altivec.vperm
   2206                                                 // CHECK: @llvm.ppc.altivec.stvx
   2207 
   2208   vec_stvlx(vbs, 0, &vbs);                      // CHECK: store <8 x i16> zeroinitializer
   2209                                                 // CHECK: @llvm.ppc.altivec.lvx
   2210                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2211                                                 // CHECK: @llvm.ppc.altivec.vperm
   2212                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2213                                                 // CHECK: @llvm.ppc.altivec.vperm
   2214                                                 // CHECK: @llvm.ppc.altivec.stvx
   2215 
   2216   vec_stvlx(vp, 0, &vp);                        // CHECK: store <8 x i16> zeroinitializer
   2217                                                 // CHECK: @llvm.ppc.altivec.lvx
   2218                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2219                                                 // CHECK: @llvm.ppc.altivec.vperm
   2220                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2221                                                 // CHECK: @llvm.ppc.altivec.vperm
   2222                                                 // CHECK: @llvm.ppc.altivec.stvx
   2223 
   2224   vec_stvlx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.lvx
   2225                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2226                                                 // CHECK: store <4 x i32> zeroinitializer
   2227                                                 // CHECK: @llvm.ppc.altivec.vperm
   2228                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2229                                                 // CHECK: @llvm.ppc.altivec.vperm
   2230                                                 // CHECK: @llvm.ppc.altivec.stvx
   2231 
   2232   vec_stvlx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.lvx
   2233                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2234                                                 // CHECK: store <4 x i32> zeroinitializer
   2235                                                 // CHECK: @llvm.ppc.altivec.vperm
   2236                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2237                                                 // CHECK: @llvm.ppc.altivec.vperm
   2238                                                 // CHECK: @llvm.ppc.altivec.stvx
   2239 
   2240   vec_stvlx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.lvx
   2241                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2242                                                 // CHECK: store <4 x i32> zeroinitializer
   2243                                                 // CHECK: @llvm.ppc.altivec.vperm
   2244                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2245                                                 // CHECK: @llvm.ppc.altivec.vperm
   2246                                                 // CHECK: @llvm.ppc.altivec.stvx
   2247 
   2248   vec_stvlx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.lvx
   2249                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2250                                                 // CHECK: store <4 x i32> zeroinitializer
   2251                                                 // CHECK: @llvm.ppc.altivec.vperm
   2252                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2253                                                 // CHECK: @llvm.ppc.altivec.vperm
   2254                                                 // CHECK: @llvm.ppc.altivec.stvx
   2255 
   2256   vec_stvlx(vbi, 0, &vbi);                      // CHECK: store <4 x i32> zeroinitializer
   2257                                                 // CHECK: @llvm.ppc.altivec.lvx
   2258                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2259                                                 // CHECK: @llvm.ppc.altivec.vperm
   2260                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2261                                                 // CHECK: @llvm.ppc.altivec.vperm
   2262                                                 // CHECK: @llvm.ppc.altivec.stvx
   2263 
   2264   vec_stvlx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.lvx
   2265                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2266                                                 // CHECK: store <4 x float> zeroinitializer
   2267                                                 // CHECK: @llvm.ppc.altivec.vperm
   2268                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2269                                                 // CHECK: @llvm.ppc.altivec.vperm
   2270                                                 // CHECK: @llvm.ppc.altivec.stvx
   2271 
   2272   /* vec_stvlxl */
   2273   vec_stvlxl(vsc, 0, &param_sc);                // CHECK: @llvm.ppc.altivec.lvx
   2274                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2275                                                 // CHECK: store <16 x i8> zeroinitializer
   2276                                                 // CHECK: @llvm.ppc.altivec.vperm
   2277                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2278                                                 // CHECK: @llvm.ppc.altivec.vperm
   2279                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2280 
   2281   vec_stvlxl(vsc, 0, &vsc);                     // CHECK: @llvm.ppc.altivec.lvx
   2282                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2283                                                 // CHECK: store <16 x i8> zeroinitializer
   2284                                                 // CHECK: @llvm.ppc.altivec.vperm
   2285                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2286                                                 // CHECK: @llvm.ppc.altivec.vperm
   2287                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2288 
   2289   vec_stvlxl(vuc, 0, &param_uc);                // CHECK: @llvm.ppc.altivec.lvx
   2290                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2291                                                 // CHECK: store <16 x i8> zeroinitializer
   2292                                                 // CHECK: @llvm.ppc.altivec.vperm
   2293                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2294                                                 // CHECK: @llvm.ppc.altivec.vperm
   2295                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2296 
   2297   vec_stvlxl(vuc, 0, &vuc);                     // CHECK: @llvm.ppc.altivec.lvx
   2298                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2299                                                 // CHECK: store <16 x i8> zeroinitializer
   2300                                                 // CHECK: @llvm.ppc.altivec.vperm
   2301                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2302                                                 // CHECK: @llvm.ppc.altivec.vperm
   2303                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2304 
   2305   vec_stvlxl(vbc, 0, &vbc);                     // CHECK: store <16 x i8> zeroinitializer
   2306                                                 // CHECK: @llvm.ppc.altivec.lvx
   2307                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2308                                                 // CHECK: @llvm.ppc.altivec.vperm
   2309                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2310                                                 // CHECK: @llvm.ppc.altivec.vperm
   2311                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2312 
   2313   vec_stvlxl(vs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.lvx
   2314                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2315                                                 // CHECK: store <8 x i16> zeroinitializer
   2316                                                 // CHECK: @llvm.ppc.altivec.vperm
   2317                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2318                                                 // CHECK: @llvm.ppc.altivec.vperm
   2319                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2320 
   2321   vec_stvlxl(vs, 0, &vs);                       // CHECK: @llvm.ppc.altivec.lvx
   2322                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2323                                                 // CHECK: store <8 x i16> zeroinitializer
   2324                                                 // CHECK: @llvm.ppc.altivec.vperm
   2325                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2326                                                 // CHECK: @llvm.ppc.altivec.vperm
   2327                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2328 
   2329   vec_stvlxl(vus, 0, &param_us);                // CHECK: @llvm.ppc.altivec.lvx
   2330                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2331                                                 // CHECK: store <8 x i16> zeroinitializer
   2332                                                 // CHECK: @llvm.ppc.altivec.vperm
   2333                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2334                                                 // CHECK: @llvm.ppc.altivec.vperm
   2335                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2336 
   2337   vec_stvlxl(vus, 0, &vus);                     // CHECK: @llvm.ppc.altivec.lvx
   2338                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2339                                                 // CHECK: store <8 x i16> zeroinitializer
   2340                                                 // CHECK: @llvm.ppc.altivec.vperm
   2341                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2342                                                 // CHECK: @llvm.ppc.altivec.vperm
   2343                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2344 
   2345   vec_stvlxl(vbs, 0, &vbs);                     // CHECK: store <8 x i16> zeroinitializer
   2346                                                 // CHECK: @llvm.ppc.altivec.lvx
   2347                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2348                                                 // CHECK: @llvm.ppc.altivec.vperm
   2349                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2350                                                 // CHECK: @llvm.ppc.altivec.vperm
   2351                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2352 
   2353   vec_stvlxl(vp, 0, &vp);                       // CHECK: store <8 x i16> zeroinitializer
   2354                                                 // CHECK: @llvm.ppc.altivec.lvx
   2355                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2356                                                 // CHECK: @llvm.ppc.altivec.vperm
   2357                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2358                                                 // CHECK: @llvm.ppc.altivec.vperm
   2359                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2360 
   2361   vec_stvlxl(vi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.lvx
   2362                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2363                                                 // CHECK: store <4 x i32> zeroinitializer
   2364                                                 // CHECK: @llvm.ppc.altivec.vperm
   2365                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2366                                                 // CHECK: @llvm.ppc.altivec.vperm
   2367                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2368 
   2369   vec_stvlxl(vi, 0, &vi);                       // CHECK: @llvm.ppc.altivec.lvx
   2370                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2371                                                 // CHECK: store <4 x i32> zeroinitializer
   2372                                                 // CHECK: @llvm.ppc.altivec.vperm
   2373                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2374                                                 // CHECK: @llvm.ppc.altivec.vperm
   2375                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2376 
   2377   vec_stvlxl(vui, 0, &param_ui);                // CHECK: @llvm.ppc.altivec.lvx
   2378                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2379                                                 // CHECK: store <4 x i32> zeroinitializer
   2380                                                 // CHECK: @llvm.ppc.altivec.vperm
   2381                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2382                                                 // CHECK: @llvm.ppc.altivec.vperm
   2383                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2384 
   2385   vec_stvlxl(vui, 0, &vui);                     // CHECK: @llvm.ppc.altivec.lvx
   2386                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2387                                                 // CHECK: store <4 x i32> zeroinitializer
   2388                                                 // CHECK: @llvm.ppc.altivec.vperm
   2389                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2390                                                 // CHECK: @llvm.ppc.altivec.vperm
   2391                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2392 
   2393   vec_stvlxl(vbi, 0, &vbi);                     // CHECK: store <4 x i32> zeroinitializer
   2394                                                 // CHECK: @llvm.ppc.altivec.lvx
   2395                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2396                                                 // CHECK: @llvm.ppc.altivec.vperm
   2397                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2398                                                 // CHECK: @llvm.ppc.altivec.vperm
   2399                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2400 
   2401   vec_stvlxl(vf, 0, &vf);                       // CHECK: @llvm.ppc.altivec.lvx
   2402                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2403                                                 // CHECK: store <4 x float> zeroinitializer
   2404                                                 // CHECK: @llvm.ppc.altivec.vperm
   2405                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2406                                                 // CHECK: @llvm.ppc.altivec.vperm
   2407                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2408 
   2409   /* vec_stvrx */
   2410   vec_stvrx(vsc, 0, &param_sc);                 // CHECK: @llvm.ppc.altivec.lvx
   2411                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2412                                                 // CHECK: store <16 x i8> zeroinitializer
   2413                                                 // CHECK: @llvm.ppc.altivec.vperm
   2414                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2415                                                 // CHECK: @llvm.ppc.altivec.vperm
   2416                                                 // CHECK: @llvm.ppc.altivec.stvx
   2417 
   2418   vec_stvrx(vsc, 0, &vsc);                      // CHECK: @llvm.ppc.altivec.lvx
   2419                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2420                                                 // CHECK: store <16 x i8> zeroinitializer
   2421                                                 // CHECK: @llvm.ppc.altivec.vperm
   2422                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2423                                                 // CHECK: @llvm.ppc.altivec.vperm
   2424                                                 // CHECK: @llvm.ppc.altivec.stvx
   2425 
   2426   vec_stvrx(vuc, 0, &param_uc);                 // CHECK: @llvm.ppc.altivec.lvx
   2427                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2428                                                 // CHECK: store <16 x i8> zeroinitializer
   2429                                                 // CHECK: @llvm.ppc.altivec.vperm
   2430                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2431                                                 // CHECK: @llvm.ppc.altivec.vperm
   2432                                                 // CHECK: @llvm.ppc.altivec.stvx
   2433 
   2434   vec_stvrx(vuc, 0, &vuc);                      // CHECK: @llvm.ppc.altivec.lvx
   2435                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2436                                                 // CHECK: store <16 x i8> zeroinitializer
   2437                                                 // CHECK: @llvm.ppc.altivec.vperm
   2438                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2439                                                 // CHECK: @llvm.ppc.altivec.vperm
   2440                                                 // CHECK: @llvm.ppc.altivec.stvx
   2441 
   2442   vec_stvrx(vbc, 0, &vbc);                      // CHECK: @llvm.ppc.altivec.lvx
   2443                                                 // CHECK: store <16 x i8> zeroinitializer
   2444                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2445                                                 // CHECK: @llvm.ppc.altivec.vperm
   2446                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2447                                                 // CHECK: @llvm.ppc.altivec.vperm
   2448                                                 // CHECK: @llvm.ppc.altivec.stvx
   2449 
   2450   vec_stvrx(vs, 0, &param_s);                   // CHECK: @llvm.ppc.altivec.lvx
   2451                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2452                                                 // CHECK: store <8 x i16> zeroinitializer
   2453                                                 // CHECK: @llvm.ppc.altivec.vperm
   2454                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2455                                                 // CHECK: @llvm.ppc.altivec.vperm
   2456                                                 // CHECK: @llvm.ppc.altivec.stvx
   2457 
   2458   vec_stvrx(vs, 0, &vs);                        // CHECK: @llvm.ppc.altivec.lvx
   2459                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2460                                                 // CHECK: store <8 x i16> zeroinitializer
   2461                                                 // CHECK: @llvm.ppc.altivec.vperm
   2462                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2463                                                 // CHECK: @llvm.ppc.altivec.vperm
   2464                                                 // CHECK: @llvm.ppc.altivec.stvx
   2465 
   2466   vec_stvrx(vus, 0, &param_us);                 // CHECK: @llvm.ppc.altivec.lvx
   2467                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2468                                                 // CHECK: store <8 x i16> zeroinitializer
   2469                                                 // CHECK: @llvm.ppc.altivec.vperm
   2470                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2471                                                 // CHECK: @llvm.ppc.altivec.vperm
   2472                                                 // CHECK: @llvm.ppc.altivec.stvx
   2473 
   2474   vec_stvrx(vus, 0, &vus);                      // CHECK: @llvm.ppc.altivec.lvx
   2475                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2476                                                 // CHECK: store <8 x i16> zeroinitializer
   2477                                                 // CHECK: @llvm.ppc.altivec.vperm
   2478                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2479                                                 // CHECK: @llvm.ppc.altivec.vperm
   2480                                                 // CHECK: @llvm.ppc.altivec.stvx
   2481 
   2482   vec_stvrx(vbs, 0, &vbs);                      // CHECK: @llvm.ppc.altivec.lvx
   2483                                                 // CHECK: store <8 x i16> zeroinitializer
   2484                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2485                                                 // CHECK: @llvm.ppc.altivec.vperm
   2486                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2487                                                 // CHECK: @llvm.ppc.altivec.vperm
   2488                                                 // CHECK: @llvm.ppc.altivec.stvx
   2489 
   2490   vec_stvrx(vp, 0, &vp);                        // CHECK: @llvm.ppc.altivec.lvx
   2491                                                 // CHECK: store <8 x i16> zeroinitializer
   2492                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2493                                                 // CHECK: @llvm.ppc.altivec.vperm
   2494                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2495                                                 // CHECK: @llvm.ppc.altivec.vperm
   2496                                                 // CHECK: @llvm.ppc.altivec.stvx
   2497 
   2498   vec_stvrx(vi, 0, &param_i);                   // CHECK: @llvm.ppc.altivec.lvx
   2499                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2500                                                 // CHECK: store <4 x i32> zeroinitializer
   2501                                                 // CHECK: @llvm.ppc.altivec.vperm
   2502                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2503                                                 // CHECK: @llvm.ppc.altivec.vperm
   2504                                                 // CHECK: @llvm.ppc.altivec.stvx
   2505 
   2506   vec_stvrx(vi, 0, &vi);                        // CHECK: @llvm.ppc.altivec.lvx
   2507                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2508                                                 // CHECK: store <4 x i32> zeroinitializer
   2509                                                 // CHECK: @llvm.ppc.altivec.vperm
   2510                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2511                                                 // CHECK: @llvm.ppc.altivec.vperm
   2512                                                 // CHECK: @llvm.ppc.altivec.stvx
   2513 
   2514   vec_stvrx(vui, 0, &param_ui);                 // CHECK: @llvm.ppc.altivec.lvx
   2515                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2516                                                 // CHECK: store <4 x i32> zeroinitializer
   2517                                                 // CHECK: @llvm.ppc.altivec.vperm
   2518                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2519                                                 // CHECK: @llvm.ppc.altivec.vperm
   2520                                                 // CHECK: @llvm.ppc.altivec.stvx
   2521 
   2522   vec_stvrx(vui, 0, &vui);                      // CHECK: @llvm.ppc.altivec.lvx
   2523                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2524                                                 // CHECK: store <4 x i32> zeroinitializer
   2525                                                 // CHECK: @llvm.ppc.altivec.vperm
   2526                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2527                                                 // CHECK: @llvm.ppc.altivec.vperm
   2528                                                 // CHECK: @llvm.ppc.altivec.stvx
   2529 
   2530   vec_stvrx(vbi, 0, &vbi);                      // CHECK: @llvm.ppc.altivec.lvx
   2531                                                 // CHECK: store <4 x i32> zeroinitializer
   2532                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2533                                                 // CHECK: @llvm.ppc.altivec.vperm
   2534                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2535                                                 // CHECK: @llvm.ppc.altivec.vperm
   2536                                                 // CHECK: @llvm.ppc.altivec.stvx
   2537 
   2538   vec_stvrx(vf, 0, &vf);                        // CHECK: @llvm.ppc.altivec.lvx
   2539                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2540                                                 // CHECK: store <4 x float> zeroinitializer
   2541                                                 // CHECK: @llvm.ppc.altivec.vperm
   2542                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2543                                                 // CHECK: @llvm.ppc.altivec.vperm
   2544                                                 // CHECK: @llvm.ppc.altivec.stvx
   2545 
   2546   /* vec_stvrxl */
   2547   vec_stvrxl(vsc, 0, &param_sc);                // CHECK: @llvm.ppc.altivec.lvx
   2548                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2549                                                 // CHECK: store <16 x i8> zeroinitializer
   2550                                                 // CHECK: @llvm.ppc.altivec.vperm
   2551                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2552                                                 // CHECK: @llvm.ppc.altivec.vperm
   2553                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2554 
   2555   vec_stvrxl(vsc, 0, &vsc);                     // CHECK: @llvm.ppc.altivec.lvx
   2556                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2557                                                 // CHECK: store <16 x i8> zeroinitializer
   2558                                                 // CHECK: @llvm.ppc.altivec.vperm
   2559                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2560                                                 // CHECK: @llvm.ppc.altivec.vperm
   2561                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2562 
   2563   vec_stvrxl(vuc, 0, &param_uc);                // CHECK: @llvm.ppc.altivec.lvx
   2564                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2565                                                 // CHECK: store <16 x i8> zeroinitializer
   2566                                                 // CHECK: @llvm.ppc.altivec.vperm
   2567                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2568                                                 // CHECK: @llvm.ppc.altivec.vperm
   2569                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2570 
   2571   vec_stvrxl(vuc, 0, &vuc);                     // CHECK: @llvm.ppc.altivec.lvx
   2572                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2573                                                 // CHECK: store <16 x i8> zeroinitializer
   2574                                                 // CHECK: @llvm.ppc.altivec.vperm
   2575                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2576                                                 // CHECK: @llvm.ppc.altivec.vperm
   2577                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2578 
   2579   vec_stvrxl(vbc, 0, &vbc);                     // CHECK: @llvm.ppc.altivec.lvx
   2580                                                 // CHECK: store <16 x i8> zeroinitializer
   2581                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2582                                                 // CHECK: @llvm.ppc.altivec.vperm
   2583                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2584                                                 // CHECK: @llvm.ppc.altivec.vperm
   2585                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2586 
   2587   vec_stvrxl(vs, 0, &param_s);                  // CHECK: @llvm.ppc.altivec.lvx
   2588                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2589                                                 // CHECK: store <8 x i16> zeroinitializer
   2590                                                 // CHECK: @llvm.ppc.altivec.vperm
   2591                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2592                                                 // CHECK: @llvm.ppc.altivec.vperm
   2593                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2594 
   2595   vec_stvrxl(vs, 0, &vs);                       // CHECK: @llvm.ppc.altivec.lvx
   2596                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2597                                                 // CHECK: store <8 x i16> zeroinitializer
   2598                                                 // CHECK: @llvm.ppc.altivec.vperm
   2599                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2600                                                 // CHECK: @llvm.ppc.altivec.vperm
   2601                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2602 
   2603   vec_stvrxl(vus, 0, &param_us);                // CHECK: @llvm.ppc.altivec.lvx
   2604                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2605                                                 // CHECK: store <8 x i16> zeroinitializer
   2606                                                 // CHECK: @llvm.ppc.altivec.vperm
   2607                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2608                                                 // CHECK: @llvm.ppc.altivec.vperm
   2609                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2610 
   2611   vec_stvrxl(vus, 0, &vus);                     // CHECK: @llvm.ppc.altivec.lvx
   2612                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2613                                                 // CHECK: store <8 x i16> zeroinitializer
   2614                                                 // CHECK: @llvm.ppc.altivec.vperm
   2615                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2616                                                 // CHECK: @llvm.ppc.altivec.vperm
   2617                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2618 
   2619   vec_stvrxl(vbs, 0, &vbs);                     // CHECK: @llvm.ppc.altivec.lvx
   2620                                                 // CHECK: store <8 x i16> zeroinitializer
   2621                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2622                                                 // CHECK: @llvm.ppc.altivec.vperm
   2623                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2624                                                 // CHECK: @llvm.ppc.altivec.vperm
   2625                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2626 
   2627   vec_stvrxl(vp, 0, &vp);                       // CHECK: @llvm.ppc.altivec.lvx
   2628                                                 // CHECK: store <8 x i16> zeroinitializer
   2629                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2630                                                 // CHECK: @llvm.ppc.altivec.vperm
   2631                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2632                                                 // CHECK: @llvm.ppc.altivec.vperm
   2633                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2634 
   2635   vec_stvrxl(vi, 0, &param_i);                  // CHECK: @llvm.ppc.altivec.lvx
   2636                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2637                                                 // CHECK: store <4 x i32> zeroinitializer
   2638                                                 // CHECK: @llvm.ppc.altivec.vperm
   2639                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2640                                                 // CHECK: @llvm.ppc.altivec.vperm
   2641                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2642 
   2643   vec_stvrxl(vi, 0, &vi);                       // CHECK: @llvm.ppc.altivec.lvx
   2644                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2645                                                 // CHECK: store <4 x i32> zeroinitializer
   2646                                                 // CHECK: @llvm.ppc.altivec.vperm
   2647                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2648                                                 // CHECK: @llvm.ppc.altivec.vperm
   2649                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2650 
   2651   vec_stvrxl(vui, 0, &param_ui);                // CHECK: @llvm.ppc.altivec.lvx
   2652                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2653                                                 // CHECK: store <4 x i32> zeroinitializer
   2654                                                 // CHECK: @llvm.ppc.altivec.vperm
   2655                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2656                                                 // CHECK: @llvm.ppc.altivec.vperm
   2657                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2658 
   2659   vec_stvrxl(vui, 0, &vui);                     // CHECK: @llvm.ppc.altivec.lvx
   2660                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2661                                                 // CHECK: store <4 x i32> zeroinitializer
   2662                                                 // CHECK: @llvm.ppc.altivec.vperm
   2663                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2664                                                 // CHECK: @llvm.ppc.altivec.vperm
   2665                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2666 
   2667   vec_stvrxl(vbi, 0, &vbi);                     // CHECK: @llvm.ppc.altivec.lvx
   2668                                                 // CHECK: store <4 x i32> zeroinitializer
   2669                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2670                                                 // CHECK: @llvm.ppc.altivec.vperm
   2671                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2672                                                 // CHECK: @llvm.ppc.altivec.vperm
   2673                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2674 
   2675   vec_stvrxl(vf, 0, &vf);                       // CHECK: @llvm.ppc.altivec.lvx
   2676                                                 // CHECK: @llvm.ppc.altivec.lvsl
   2677                                                 // CHECK: store <4 x float> zeroinitializer
   2678                                                 // CHECK: @llvm.ppc.altivec.vperm
   2679                                                 // CHECK: @llvm.ppc.altivec.lvsr
   2680                                                 // CHECK: @llvm.ppc.altivec.vperm
   2681                                                 // CHECK: @llvm.ppc.altivec.stvxl
   2682 
   2683   /* vec_promote */
   2684   res_vsc = vec_promote(param_sc, 0);           // CHECK: store <16 x i8> zeroinitializer
   2685                                                 // CHECK: insertelement <16 x i8>
   2686 
   2687   res_vuc = vec_promote(param_uc, 0);           // CHECK: store <16 x i8> zeroinitializer
   2688                                                 // CHECK: insertelement <16 x i8>
   2689 
   2690   res_vs  = vec_promote(param_s, 0);            // CHECK: store <8 x i16> zeroinitializer
   2691                                                 // CHECK: insertelement <8 x i16>
   2692 
   2693   res_vus = vec_promote(param_us, 0);           // CHECK: store <8 x i16> zeroinitializer
   2694                                                 // CHECK: insertelement <8 x i16>
   2695 
   2696   res_vi  = vec_promote(param_i, 0);            // CHECK: store <4 x i32> zeroinitializer
   2697                                                 // CHECK: insertelement <4 x i32>
   2698 
   2699   res_vui = vec_promote(param_ui, 0);           // CHECK: store <4 x i32> zeroinitializer
   2700                                                 // CHECK: insertelement <4 x i32>
   2701 
   2702   res_vf  = vec_promote(param_f, 0);            // CHECK: store <4 x float> zeroinitializer
   2703                                                 // CHECK: insertelement <4 x float>
   2704 
   2705   /* vec_splats */
   2706   res_vsc = vec_splats(param_sc);               // CHECK: insertelement <16 x i8>
   2707 
   2708   res_vuc = vec_splats(param_uc);               // CHECK: insertelement <16 x i8>
   2709 
   2710   res_vs  = vec_splats(param_s);                // CHECK: insertelement <8 x i16>
   2711 
   2712   res_vus = vec_splats(param_us);               // CHECK: insertelement <8 x i16>
   2713 
   2714   res_vi  = vec_splats(param_i);                // CHECK: insertelement <4 x i32>
   2715 
   2716   res_vui = vec_splats(param_ui);               // CHECK: insertelement <4 x i32>
   2717 
   2718   res_vf  = vec_splats(param_f);                // CHECK: insertelement <4 x float>
   2719 
   2720   /* ------------------------------ predicates -------------------------------------- */
   2721 
   2722   /* vec_all_eq */
   2723   res_i = vec_all_eq(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2724   res_i = vec_all_eq(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2725   res_i = vec_all_eq(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2726   res_i = vec_all_eq(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2727   res_i = vec_all_eq(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2728   res_i = vec_all_eq(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2729   res_i = vec_all_eq(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2730   res_i = vec_all_eq(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2731   res_i = vec_all_eq(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2732   res_i = vec_all_eq(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2733   res_i = vec_all_eq(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2734   res_i = vec_all_eq(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2735   res_i = vec_all_eq(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2736   res_i = vec_all_eq(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2737   res_i = vec_all_eq(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2738   res_i = vec_all_eq(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2739   res_i = vec_all_eq(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2740   res_i = vec_all_eq(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2741   res_i = vec_all_eq(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2742   res_i = vec_all_eq(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2743   res_i = vec_all_eq(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2744   res_i = vec_all_eq(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2745   res_i = vec_all_eq(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   2746 
   2747   /* vec_all_ge */
   2748   res_i = vec_all_ge(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2749   res_i = vec_all_ge(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2750   res_i = vec_all_ge(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2751   res_i = vec_all_ge(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2752   res_i = vec_all_ge(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2753   res_i = vec_all_ge(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2754   res_i = vec_all_ge(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2755   res_i = vec_all_ge(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2756   res_i = vec_all_ge(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2757   res_i = vec_all_ge(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2758   res_i = vec_all_ge(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2759   res_i = vec_all_ge(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2760   res_i = vec_all_ge(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2761   res_i = vec_all_ge(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2762   res_i = vec_all_ge(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2763   res_i = vec_all_ge(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2764   res_i = vec_all_ge(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2765   res_i = vec_all_ge(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2766   res_i = vec_all_ge(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2767   res_i = vec_all_ge(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2768   res_i = vec_all_ge(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2769   res_i = vec_all_ge(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   2770 
   2771   /* vec_all_gt */
   2772   res_i = vec_all_gt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2773   res_i = vec_all_gt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2774   res_i = vec_all_gt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2775   res_i = vec_all_gt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2776   res_i = vec_all_gt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2777   res_i = vec_all_gt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2778   res_i = vec_all_gt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2779   res_i = vec_all_gt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2780   res_i = vec_all_gt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2781   res_i = vec_all_gt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2782   res_i = vec_all_gt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2783   res_i = vec_all_gt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2784   res_i = vec_all_gt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2785   res_i = vec_all_gt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2786   res_i = vec_all_gt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2787   res_i = vec_all_gt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2788   res_i = vec_all_gt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2789   res_i = vec_all_gt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2790   res_i = vec_all_gt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2791   res_i = vec_all_gt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2792   res_i = vec_all_gt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2793   res_i = vec_all_gt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   2794 
   2795   /* vec_all_in */
   2796   res_i = vec_all_in(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpbfp.p
   2797 
   2798   /* vec_all_le */
   2799   res_i = vec_all_le(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2800   res_i = vec_all_le(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2801   res_i = vec_all_le(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2802   res_i = vec_all_le(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2803   res_i = vec_all_le(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2804   res_i = vec_all_le(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2805   res_i = vec_all_le(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2806   res_i = vec_all_le(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2807   res_i = vec_all_le(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2808   res_i = vec_all_le(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2809   res_i = vec_all_le(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2810   res_i = vec_all_le(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2811   res_i = vec_all_le(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2812   res_i = vec_all_le(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2813   res_i = vec_all_le(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2814   res_i = vec_all_le(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2815   res_i = vec_all_le(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2816   res_i = vec_all_le(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2817   res_i = vec_all_le(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2818   res_i = vec_all_le(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2819   res_i = vec_all_le(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2820   res_i = vec_all_le(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   2821 
   2822   /* vec_all_lt */
   2823   res_i = vec_all_lt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2824   res_i = vec_all_lt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2825   res_i = vec_all_lt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2826   res_i = vec_all_lt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2827   res_i = vec_all_lt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2828   res_i = vec_all_lt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2829   res_i = vec_all_lt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2830   res_i = vec_all_lt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2831   res_i = vec_all_lt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2832   res_i = vec_all_lt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2833   res_i = vec_all_lt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2834   res_i = vec_all_lt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2835   res_i = vec_all_lt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2836   res_i = vec_all_lt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2837   res_i = vec_all_lt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2838   res_i = vec_all_lt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2839   res_i = vec_all_lt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2840   res_i = vec_all_lt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2841   res_i = vec_all_lt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2842   res_i = vec_all_lt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2843   res_i = vec_all_lt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2844   res_i = vec_all_lt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   2845 
   2846   /* vec_all_nan */
   2847   res_i = vec_all_nan(vf);                      // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   2848 
   2849   /*  vec_all_ne */
   2850   res_i = vec_all_ne(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2851   res_i = vec_all_ne(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2852   res_i = vec_all_ne(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2853   res_i = vec_all_ne(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2854   res_i = vec_all_ne(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2855   res_i = vec_all_ne(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2856   res_i = vec_all_ne(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2857   res_i = vec_all_ne(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2858   res_i = vec_all_ne(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2859   res_i = vec_all_ne(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2860   res_i = vec_all_ne(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2861   res_i = vec_all_ne(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2862   res_i = vec_all_ne(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2863   res_i = vec_all_ne(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2864   res_i = vec_all_ne(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2865   res_i = vec_all_ne(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2866   res_i = vec_all_ne(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2867   res_i = vec_all_ne(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2868   res_i = vec_all_ne(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2869   res_i = vec_all_ne(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2870   res_i = vec_all_ne(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2871   res_i = vec_all_ne(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2872   res_i = vec_all_ne(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   2873 
   2874   /* vec_all_nge */
   2875   res_i = vec_all_nge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   2876 
   2877   /* vec_all_ngt */
   2878   res_i = vec_all_ngt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   2879 
   2880   /* vec_all_nle */
   2881   res_i = vec_all_nle(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   2882 
   2883   /* vec_all_nlt */
   2884   res_i = vec_all_nlt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   2885 
   2886   /* vec_all_numeric */
   2887   res_i = vec_all_numeric(vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   2888 
   2889   /*  vec_any_eq */
   2890   res_i = vec_any_eq(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2891   res_i = vec_any_eq(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2892   res_i = vec_any_eq(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2893   res_i = vec_any_eq(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2894   res_i = vec_any_eq(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2895   res_i = vec_any_eq(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2896   res_i = vec_any_eq(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   2897   res_i = vec_any_eq(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2898   res_i = vec_any_eq(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2899   res_i = vec_any_eq(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2900   res_i = vec_any_eq(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2901   res_i = vec_any_eq(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2902   res_i = vec_any_eq(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2903   res_i = vec_any_eq(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2904   res_i = vec_any_eq(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   2905   res_i = vec_any_eq(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2906   res_i = vec_any_eq(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2907   res_i = vec_any_eq(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2908   res_i = vec_any_eq(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2909   res_i = vec_any_eq(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2910   res_i = vec_any_eq(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2911   res_i = vec_any_eq(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   2912   res_i = vec_any_eq(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   2913 
   2914   /* vec_any_ge */
   2915   res_i = vec_any_ge(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2916   res_i = vec_any_ge(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2917   res_i = vec_any_ge(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2918   res_i = vec_any_ge(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2919   res_i = vec_any_ge(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2920   res_i = vec_any_ge(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2921   res_i = vec_any_ge(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2922   res_i = vec_any_ge(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2923   res_i = vec_any_ge(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2924   res_i = vec_any_ge(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2925   res_i = vec_any_ge(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2926   res_i = vec_any_ge(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2927   res_i = vec_any_ge(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2928   res_i = vec_any_ge(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2929   res_i = vec_any_ge(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2930   res_i = vec_any_ge(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2931   res_i = vec_any_ge(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2932   res_i = vec_any_ge(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2933   res_i = vec_any_ge(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2934   res_i = vec_any_ge(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2935   res_i = vec_any_ge(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2936   res_i = vec_any_ge(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   2937 
   2938   /* vec_any_gt */
   2939   res_i = vec_any_gt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2940   res_i = vec_any_gt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2941   res_i = vec_any_gt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2942   res_i = vec_any_gt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2943   res_i = vec_any_gt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2944   res_i = vec_any_gt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2945   res_i = vec_any_gt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2946   res_i = vec_any_gt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2947   res_i = vec_any_gt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2948   res_i = vec_any_gt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2949   res_i = vec_any_gt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2950   res_i = vec_any_gt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2951   res_i = vec_any_gt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2952   res_i = vec_any_gt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2953   res_i = vec_any_gt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2954   res_i = vec_any_gt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2955   res_i = vec_any_gt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2956   res_i = vec_any_gt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2957   res_i = vec_any_gt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2958   res_i = vec_any_gt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2959   res_i = vec_any_gt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2960   res_i = vec_any_gt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   2961 
   2962   /* vec_any_le */
   2963   res_i = vec_any_le(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2964   res_i = vec_any_le(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2965   res_i = vec_any_le(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2966   res_i = vec_any_le(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2967   res_i = vec_any_le(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2968   res_i = vec_any_le(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2969   res_i = vec_any_le(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2970   res_i = vec_any_le(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2971   res_i = vec_any_le(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2972   res_i = vec_any_le(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2973   res_i = vec_any_le(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2974   res_i = vec_any_le(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2975   res_i = vec_any_le(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2976   res_i = vec_any_le(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2977   res_i = vec_any_le(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2978   res_i = vec_any_le(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   2979   res_i = vec_any_le(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2980   res_i = vec_any_le(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2981   res_i = vec_any_le(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2982   res_i = vec_any_le(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2983   res_i = vec_any_le(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   2984   res_i = vec_any_le(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   2985 
   2986   /* vec_any_lt */
   2987   res_i = vec_any_lt(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2988   res_i = vec_any_lt(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtsb.p
   2989   res_i = vec_any_lt(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2990   res_i = vec_any_lt(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2991   res_i = vec_any_lt(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2992   res_i = vec_any_lt(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2993   res_i = vec_any_lt(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpgtub.p
   2994   res_i = vec_any_lt(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2995   res_i = vec_any_lt(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpgtsh.p
   2996   res_i = vec_any_lt(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2997   res_i = vec_any_lt(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2998   res_i = vec_any_lt(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   2999   res_i = vec_any_lt(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   3000   res_i = vec_any_lt(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpgtuh.p
   3001   res_i = vec_any_lt(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   3002   res_i = vec_any_lt(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpgtsw.p
   3003   res_i = vec_any_lt(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   3004   res_i = vec_any_lt(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   3005   res_i = vec_any_lt(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   3006   res_i = vec_any_lt(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   3007   res_i = vec_any_lt(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpgtuw.p
   3008   res_i = vec_any_lt(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   3009 
   3010   /* vec_any_nan */
   3011   res_i = vec_any_nan(vf);                      // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   3012 
   3013   /* vec_any_ne */
   3014   res_i = vec_any_ne(vsc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3015   res_i = vec_any_ne(vsc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3016   res_i = vec_any_ne(vuc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3017   res_i = vec_any_ne(vuc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3018   res_i = vec_any_ne(vbc, vsc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3019   res_i = vec_any_ne(vbc, vuc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3020   res_i = vec_any_ne(vbc, vbc);                 // CHECK: @llvm.ppc.altivec.vcmpequb.p
   3021   res_i = vec_any_ne(vs, vs);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3022   res_i = vec_any_ne(vs, vbs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3023   res_i = vec_any_ne(vus, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3024   res_i = vec_any_ne(vus, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3025   res_i = vec_any_ne(vbs, vs);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3026   res_i = vec_any_ne(vbs, vus);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3027   res_i = vec_any_ne(vbs, vbs);                 // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3028   res_i = vec_any_ne(vp, vp);                   // CHECK: @llvm.ppc.altivec.vcmpequh.p
   3029   res_i = vec_any_ne(vi, vi);                   // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3030   res_i = vec_any_ne(vi, vbi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3031   res_i = vec_any_ne(vui, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3032   res_i = vec_any_ne(vui, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3033   res_i = vec_any_ne(vbi, vi);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3034   res_i = vec_any_ne(vbi, vui);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3035   res_i = vec_any_ne(vbi, vbi);                 // CHECK: @llvm.ppc.altivec.vcmpequw.p
   3036   res_i = vec_any_ne(vf, vf);                   // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   3037 
   3038   /* vec_any_nge */
   3039   res_i = vec_any_nge(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   3040 
   3041   /* vec_any_ngt */
   3042   res_i = vec_any_ngt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   3043 
   3044   /* vec_any_nle */
   3045   res_i = vec_any_nle(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgefp.p
   3046 
   3047   /* vec_any_nlt */
   3048   res_i = vec_any_nlt(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpgtfp.p
   3049 
   3050   /* vec_any_numeric */
   3051   res_i = vec_any_numeric(vf);                  // CHECK: @llvm.ppc.altivec.vcmpeqfp.p
   3052 
   3053   /* vec_any_out */
   3054   res_i = vec_any_out(vf, vf);                  // CHECK: @llvm.ppc.altivec.vcmpbfp.p
   3055 }
   3056 
   3057 /* ------------------------------ Relational Operators ------------------------------ */
   3058 // CHECK: define void @test7
   3059 void test7() {
   3060   vector signed char vsc1 = (vector signed char)(-1);
   3061   vector signed char vsc2 = (vector signed char)(-2);
   3062   res_i = (vsc1 == vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
   3063   res_i = (vsc1 != vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
   3064   res_i = (vsc1 <  vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
   3065   res_i = (vsc1 >  vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 2
   3066   res_i = (vsc1 <= vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
   3067   res_i = (vsc1 >= vsc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtsb.p(i32 0
   3068   vector unsigned char vuc1 = (vector unsigned char)(1);
   3069   vector unsigned char vuc2 = (vector unsigned char)(2);
   3070   res_i = (vuc1 == vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 2
   3071   res_i = (vuc1 != vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpequb.p(i32 0
   3072   res_i = (vuc1 <  vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
   3073   res_i = (vuc1 >  vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 2
   3074   res_i = (vuc1 <= vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
   3075   res_i = (vuc1 >= vuc2);                  // CHECK: @llvm.ppc.altivec.vcmpgtub.p(i32 0
   3076   vector short vs1 = (vector short)(-1);
   3077   vector short vs2 = (vector short)(-2);
   3078   res_i = (vs1 == vs2);                    // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
   3079   res_i = (vs1 != vs2);                    // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
   3080   res_i = (vs1 <  vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
   3081   res_i = (vs1 >  vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 2
   3082   res_i = (vs1 <= vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
   3083   res_i = (vs1 >= vs2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsh.p(i32 0
   3084   vector unsigned short vus1 = (vector unsigned short)(1);
   3085   vector unsigned short vus2 = (vector unsigned short)(2);
   3086   res_i = (vus1 == vus2);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 2
   3087   res_i = (vus1 != vus2);                  // CHECK: @llvm.ppc.altivec.vcmpequh.p(i32 0
   3088   res_i = (vus1 <  vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
   3089   res_i = (vus1 >  vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 2
   3090   res_i = (vus1 <= vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
   3091   res_i = (vus1 >= vus2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuh.p(i32 0
   3092   vector int vi1 = (vector int)(-1);
   3093   vector int vi2 = (vector int)(-2);
   3094   res_i = (vi1 == vi2);                    // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
   3095   res_i = (vi1 != vi2);                    // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
   3096   res_i = (vi1 <  vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
   3097   res_i = (vi1 >  vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 2
   3098   res_i = (vi1 <= vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
   3099   res_i = (vi1 >= vi2);                    // CHECK: @llvm.ppc.altivec.vcmpgtsw.p(i32 0
   3100   vector unsigned int vui1 = (vector unsigned int)(1);
   3101   vector unsigned int vui2 = (vector unsigned int)(2);
   3102   res_i = (vui1 == vui2);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 2
   3103   res_i = (vui1 != vui2);                  // CHECK: @llvm.ppc.altivec.vcmpequw.p(i32 0
   3104   res_i = (vui1 <  vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
   3105   res_i = (vui1 >  vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 2
   3106   res_i = (vui1 <= vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
   3107   res_i = (vui1 >= vui2);                  // CHECK: @llvm.ppc.altivec.vcmpgtuw.p(i32 0
   3108   vector float vf1 = (vector float)(1.0);
   3109   vector float vf2 = (vector float)(2.0);
   3110   res_i = (vf1 == vf2);                    // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 2
   3111   res_i = (vf1 != vf2);                    // CHECK: @llvm.ppc.altivec.vcmpeqfp.p(i32 0
   3112   res_i = (vf1 <  vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
   3113   res_i = (vf1 >  vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgtfp.p(i32 2
   3114   res_i = (vf1 <= vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
   3115   res_i = (vf1 >= vf2);                    // CHECK: @llvm.ppc.altivec.vcmpgefp.p(i32 2
   3116 }
   3117