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