Home | History | Annotate | Download | only in CodeGen
      1 // REQUIRES: powerpc-registered-target
      2 // RUN: %clang_cc1 -faltivec -target-feature +power8-vector -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck %s
      3 // RUN: %clang_cc1 -faltivec -target-feature +power8-vector -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck %s -check-prefix=CHECK-LE
      4 // RUN: not %clang_cc1 -faltivec -target-feature +vsx -triple powerpc64-unknown-unknown -emit-llvm %s -o - 2>&1 | FileCheck %s -check-prefix=CHECK-PPC
      5 // Added -target-feature +vsx above to avoid errors about "vector double" and to
      6 // generate the correct errors for functions that are only overloaded with VSX
      7 // (vec_cmpge, vec_cmple). Without this option, there is only one overload so
      8 // it is selected.
      9 
     10 void dummy() { }
     11 signed int si;
     12 signed long long sll;
     13 unsigned long long ull;
     14 signed __int128 sx;
     15 unsigned __int128 ux;
     16 double d;
     17 vector signed char vsc = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
     18 vector unsigned char vuc = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5 };
     19 vector bool char vbc = { 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1 };
     20 
     21 vector signed short vss = { 0, 1, 2, 3, 4, 5, 6, 7 };
     22 vector unsigned short vus = { 0, 1, 2, 3, 4, 5, 6, 7 };
     23 vector bool short vbs = { 1, 1, 0, 0, 0, 0, 1, 1 };
     24 
     25 vector signed int vsi = { -1, 2, -3, 4 };
     26 vector unsigned int vui = { 1, 2, 3, 4 };
     27 vector bool int vbi = {0, -1, -1, 0};
     28 
     29 vector signed long long vsll = { 1, 2 };
     30 vector unsigned long long vull = { 1, 2 };
     31 vector bool long long vbll = { 1, 0 };
     32 
     33 vector signed __int128 vsx = { 1 };
     34 vector unsigned __int128 vux = { 1 };
     35 
     36 vector float vfa = { 1.e-4f, -132.23f, -22.1, 32.00f };
     37 vector double vda = { 1.e-11, -132.23e10 };
     38 
     39 int res_i;
     40 double res_d;
     41 signed long long res_sll;
     42 unsigned long long res_ull;
     43 
     44 vector signed char res_vsc;
     45 vector unsigned char res_vuc;
     46 vector bool char res_vbc;
     47 
     48 vector signed short res_vss;
     49 vector unsigned short res_vus;
     50 vector bool short res_vbs;
     51 
     52 vector signed int res_vsi;
     53 vector unsigned int res_vui;
     54 vector bool int res_vbi;
     55 
     56 vector signed long long res_vsll;
     57 vector unsigned long long res_vull;
     58 vector bool long long res_vbll;
     59 
     60 vector signed __int128 res_vsx;
     61 vector unsigned __int128 res_vux;
     62 
     63 vector float res_vf;
     64 vector double res_vd;
     65 
     66 // CHECK-LABEL: define void @test1
     67 void test1() {
     68 
     69   /* vec_abs */
     70   res_vsll = vec_abs(vsll);
     71 // CHECK: call <2 x i64> @llvm.ppc.altivec.vmaxsd(<2 x i64> %{{[0-9]*}}, <2 x i64>
     72 // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vmaxsd(<2 x i64> %{{[0-9]*}}, <2 x i64>
     73 // CHECK-PPC: error: call to 'vec_abs' is ambiguous
     74 
     75   res_vd = vec_abs(vda);
     76 // CHECK: store <2 x i64> <i64 9223372036854775807, i64 9223372036854775807>, <2 x i64>*
     77 // CHECK: and <2 x i64>
     78 // CHECK-LE: store <2 x i64> <i64 9223372036854775807, i64 9223372036854775807>, <2 x i64>*
     79 // CHECK-LE: and <2 x i64>
     80 // CHECK-PPC: error: call to 'vec_abs' is ambiguous
     81 
     82   /* vec_add */
     83   res_vsll = vec_add(vsll, vsll);
     84 // CHECK: add <2 x i64>
     85 // CHECK-LE: add <2 x i64>
     86 // CHECK-PPC: error: call to 'vec_add' is ambiguous
     87 
     88   res_vull = vec_add(vull, vull);
     89 // CHECK: add <2 x i64>
     90 // CHECK-LE: add <2 x i64>
     91 // CHECK-PPC: error: call to 'vec_add' is ambiguous
     92 
     93   /* vec_addc */
     94   res_vsi = vec_addc(vsi, vsi);
     95 // CHECK: @llvm.ppc.altivec.vaddcuw
     96 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
     97 
     98   res_vui = vec_addc(vui, vui);
     99 // CHECK: @llvm.ppc.altivec.vaddcuw
    100 // CHECK-LE: @llvm.ppc.altivec.vaddcuw
    101 
    102   res_vsx = vec_addc(vsx, vsx);
    103 // CHECK: @llvm.ppc.altivec.vaddcuq
    104 // CHECK-LE: @llvm.ppc.altivec.vaddcuq
    105 
    106   res_vux = vec_addc(vux, vux);
    107 // CHECK: @llvm.ppc.altivec.vaddcuq
    108 // CHECK-LE: @llvm.ppc.altivec.vaddcuq
    109 
    110   /* vec_adde */
    111   res_vsx = vec_adde(vsx, vsx, vsx);
    112 // CHECK: @llvm.ppc.altivec.vaddeuqm
    113 // CHECK-LE: @llvm.ppc.altivec.vaddeuqm
    114 
    115   res_vux = vec_adde(vux, vux, vux);
    116 // CHECK: @llvm.ppc.altivec.vaddeuqm
    117 // CHECK-LE: @llvm.ppc.altivec.vaddeuqm
    118 
    119   /* vec_addec */
    120   res_vsx = vec_addec(vsx, vsx, vsx);
    121 // CHECK: @llvm.ppc.altivec.vaddecuq
    122 // CHECK-LE: @llvm.ppc.altivec.vaddecuq
    123 
    124   /* vec_mergee */
    125   res_vbi = vec_mergee(vbi, vbi);
    126 // CHECK: @llvm.ppc.altivec.vperm
    127 // CHECK-LE: @llvm.ppc.altivec.vperm
    128 
    129   res_vsi = vec_mergee(vsi, vsi);
    130 // CHECK: @llvm.ppc.altivec.vperm
    131 // CHECK-LE: @llvm.ppc.altivec.vperm
    132 
    133   res_vui = vec_mergee(vui, vui);
    134 // CHECK: @llvm.ppc.altivec.vperm
    135 // CHECK-LE: @llvm.ppc.altivec.vperm
    136 // CHECK-PPC: warning: implicit declaration of function 'vec_mergee'
    137 
    138   /* vec_mergeo */
    139   res_vbi = vec_mergeo(vbi, vbi);
    140 // CHECK: @llvm.ppc.altivec.vperm
    141 // CHECK-LE: @llvm.ppc.altivec.vperm
    142 
    143   res_vsi = vec_mergeo(vsi, vsi);
    144 // CHECK: @llvm.ppc.altivec.vperm
    145 // CHECK-LE: @llvm.ppc.altivec.vperm
    146 
    147   res_vui = vec_mergeo(vui, vui);
    148 // CHECK: @llvm.ppc.altivec.vperm
    149 // CHECK-LE: @llvm.ppc.altivec.vperm
    150 // CHECK-PPC: warning: implicit declaration of function 'vec_mergeo'
    151 
    152   /* vec_cmpeq */
    153   res_vbll = vec_cmpeq(vsll, vsll);
    154 // CHECK: @llvm.ppc.altivec.vcmpequd
    155 // CHECK-LE: @llvm.ppc.altivec.vcmpequd
    156 // CHECK-PPC: error: call to 'vec_cmpeq' is ambiguous
    157 
    158   res_vbll = vec_cmpeq(vull, vull);
    159 // CHECK: @llvm.ppc.altivec.vcmpequd
    160 // CHECK-LE: @llvm.ppc.altivec.vcmpequd
    161 // CHECK-PPC: error: call to 'vec_cmpeq' is ambiguous
    162 
    163   /* vec_cmpge */
    164   res_vbll = vec_cmpge(vsll, vsll);
    165 // CHECK: @llvm.ppc.altivec.vcmpgtsd
    166 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
    167 // CHECK-PPC: error: call to 'vec_cmpge' is ambiguous
    168 
    169   res_vbll = vec_cmpge(vull, vull);
    170 // CHECK: @llvm.ppc.altivec.vcmpgtud
    171 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
    172 // CHECK-PPC: error: call to 'vec_cmpge' is ambiguous
    173 
    174   /* vec_cmple */
    175   res_vbll = vec_cmple(vsll, vsll);
    176 // CHECK: @llvm.ppc.altivec.vcmpgtsd
    177 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
    178 // CHECK-PPC: error: call to 'vec_cmple' is ambiguous
    179 
    180   res_vbll = vec_cmple(vull, vull);
    181 // CHECK: @llvm.ppc.altivec.vcmpgtud
    182 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
    183 // CHECK-PPC: error: call to 'vec_cmple' is ambiguous
    184 
    185   /* vec_cmpgt */
    186   res_vbll = vec_cmpgt(vsll, vsll);
    187 // CHECK: @llvm.ppc.altivec.vcmpgtsd
    188 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd
    189 // CHECK-PPC: error: call to 'vec_cmpgt' is ambiguous
    190 
    191   res_vbll = vec_cmpgt(vull, vull);
    192 // CHECK: @llvm.ppc.altivec.vcmpgtud
    193 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud
    194 // CHECK-PPC: error: call to 'vec_cmpgt' is ambiguous
    195 
    196   /* vec_cmplt */
    197   res_vbll = vec_cmplt(vsll, vsll);
    198 // CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
    199 // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vcmpgtsd(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
    200 // CHECK-PPC: error: call to 'vec_cmplt' is ambiguous
    201 
    202   res_vbll = vec_cmplt(vull, vull);
    203 // CHECK: call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
    204 // CHECK-LE: call <2 x i64> @llvm.ppc.altivec.vcmpgtud(<2 x i64> %{{[0-9]*}}, <2 x i64> %{{[0-9]*}})
    205 // CHECK-PPC: error: call to 'vec_cmplt' is ambiguous
    206 
    207   /* vec_double */
    208   res_vd = vec_double(vsll);
    209 // CHECK: sitofp i64 {{.+}} to double
    210 // CHECK-BE: sitofp i64 {{.+}} to double
    211 
    212   res_vd = vec_double(vull);
    213 // CHECK: uitofp i64 {{.+}} to double
    214 // CHECK-BE: uitofp i64 {{.+}} to double
    215 
    216   /* vec_eqv */
    217   res_vsc =  vec_eqv(vsc, vsc);
    218 // CHECK: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    219 // CHECK: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    220 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    221 // CHECK: bitcast <4 x i32> [[T3]] to <16 x i8>
    222 // CHECK-LE: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    223 // CHECK-LE: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    224 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    225 // CHECK-LE: bitcast <4 x i32> [[T3]] to <16 x i8>
    226 // CHECK-PPC: error: assigning to
    227 
    228   res_vsc =  vec_eqv(vbc, vbc);
    229 // CHECK: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    230 // CHECK: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    231 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    232 // CHECK: bitcast <4 x i32> [[T3]] to <16 x i8>
    233 // CHECK-LE: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    234 // CHECK-LE: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    235 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    236 // CHECK-LE: bitcast <4 x i32> [[T3]] to <16 x i8>
    237 // CHECK-PPC: error: assigning to
    238 
    239   res_vuc =  vec_eqv(vuc, vuc);
    240 // CHECK: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    241 // CHECK: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    242 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    243 // CHECK: bitcast <4 x i32> [[T3]] to <16 x i8>
    244 // CHECK-LE: [[T1:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    245 // CHECK-LE: [[T2:%.+]] = bitcast <16 x i8> {{.+}} to <4 x i32>
    246 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    247 // CHECK-LE: bitcast <4 x i32> [[T3]] to <16 x i8>
    248 // CHECK-PPC: error: assigning to
    249 
    250   res_vss =  vec_eqv(vss, vss);
    251 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    252 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    253 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    254 // CHECK: bitcast <4 x i32> [[T3]] to <8 x i16>
    255 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    256 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    257 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    258 // CHECK-LE: bitcast <4 x i32> [[T3]] to <8 x i16>
    259 // CHECK-PPC: error: assigning to
    260 
    261   res_vss =  vec_eqv(vbs, vbs);
    262 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    263 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    264 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    265 // CHECK: bitcast <4 x i32> [[T3]] to <8 x i16>
    266 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    267 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    268 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    269 // CHECK-LE: bitcast <4 x i32> [[T3]] to <8 x i16>
    270 // CHECK-PPC: error: assigning to
    271 
    272   res_vus =  vec_eqv(vus, vus);
    273 // CHECK: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    274 // CHECK: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    275 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    276 // CHECK: bitcast <4 x i32> [[T3]] to <8 x i16>
    277 // CHECK-LE: [[T1:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    278 // CHECK-LE: [[T2:%.+]] = bitcast <8 x i16> {{.+}} to <4 x i32>
    279 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    280 // CHECK-LE: bitcast <4 x i32> [[T3]] to <8 x i16>
    281 // CHECK-PPC: error: assigning to
    282 
    283   res_vsi =  vec_eqv(vsi, vsi);
    284 // CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
    285 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
    286 // CHECK-PPC: error: assigning to
    287 
    288   res_vsi =  vec_eqv(vbi, vbi);
    289 // CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
    290 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
    291 // CHECK-PPC: error: assigning to
    292 
    293   res_vui =  vec_eqv(vui, vui);
    294 // CHECK: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
    295 // CHECK-LE: call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> {{.*}}, <4 x i32> {{.+}})
    296 // CHECK-PPC: error: assigning to
    297 
    298   res_vsll =  vec_eqv(vsll, vsll);
    299 // CHECK: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    300 // CHECK: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    301 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    302 // CHECK: bitcast <4 x i32> [[T3]] to <2 x i64>
    303 // CHECK-LE: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    304 // CHECK-LE: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    305 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    306 // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x i64>
    307 // CHECK-PPC: error: assigning to
    308 
    309   res_vsll =  vec_eqv(vbll, vbll);
    310 // CHECK: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    311 // CHECK: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    312 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    313 // CHECK: bitcast <4 x i32> [[T3]] to <2 x i64>
    314 // CHECK-LE: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    315 // CHECK-LE: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    316 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    317 // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x i64>
    318 // CHECK-PPC: error: assigning to
    319 
    320   res_vull =  vec_eqv(vull, vull);
    321 // CHECK: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    322 // CHECK: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    323 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    324 // CHECK: bitcast <4 x i32> [[T3]] to <2 x i64>
    325 // CHECK-LE: [[T1:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    326 // CHECK-LE: [[T2:%.+]] = bitcast <2 x i64> {{.+}} to <4 x i32>
    327 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    328 // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x i64>
    329 // CHECK-PPC: error: assigning to
    330 
    331   res_vf = vec_eqv(vfa, vfa);
    332 // CHECK: [[T1:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
    333 // CHECK: [[T2:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
    334 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    335 // CHECK: bitcast <4 x i32> [[T3]] to <4 x float>
    336 // CHECK-LE: [[T1:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
    337 // CHECK-LE: [[T2:%.+]] = bitcast <4 x float> {{.+}} to <4 x i32>
    338 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    339 // CHECK-LE: bitcast <4 x i32> [[T3]] to <4 x float>
    340 // CHECK-PPC: error: assigning to
    341 
    342   res_vd = vec_eqv(vda, vda);
    343 // CHECK: [[T1:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
    344 // CHECK: [[T2:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
    345 // CHECK: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    346 // CHECK: bitcast <4 x i32> [[T3]] to <2 x double>
    347 // CHECK-LE: [[T1:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
    348 // CHECK-LE: [[T2:%.+]] = bitcast <2 x double> {{.+}} to <4 x i32>
    349 // CHECK-LE: [[T3:%.+]] = call <4 x i32> @llvm.ppc.vsx.xxleqv(<4 x i32> [[T1]], <4 x i32> [[T2]])
    350 // CHECK-LE: bitcast <4 x i32> [[T3]] to <2 x double>
    351 // CHECK-PPC: error: assigning to
    352 
    353   /* vec_extract */
    354   res_sll = vec_extract(vsll, si);
    355 // CHECK: extractelement <2 x i64>
    356 // CHECK-LE: extractelement <2 x i64>
    357 
    358   res_ull = vec_extract(vull, si);
    359 // CHECK: extractelement <2 x i64>
    360 // CHECK-LE: extractelement <2 x i64>
    361 
    362   res_ull = vec_extract(vbll, si);
    363 // CHECK: extractelement <2 x i64>
    364 // CHECK-LE: extractelement <2 x i64>
    365 
    366   res_d = vec_extract(vda, si);
    367 // CHECK: extractelement <2 x double>
    368 // CHECK-LE: extractelement <2 x double>
    369 
    370   /* vec_insert */
    371   res_vsll = vec_insert(sll, vsll, si);
    372 // CHECK: insertelement <2 x i64>
    373 // CHECK-LE: insertelement <2 x i64>
    374 
    375   res_vbll = vec_insert(ull, vbll, si);
    376 // CHECK: insertelement <2 x i64>
    377 // CHECK-LE: insertelement <2 x i64>
    378 
    379   res_vull = vec_insert(ull, vull, si);
    380 // CHECK: insertelement <2 x i64>
    381 // CHECK-LE: insertelement <2 x i64>
    382 
    383   res_vd = vec_insert(d, vda, si);
    384 // CHECK: insertelement <2 x double>
    385 // CHECK-LE: insertelement <2 x double>
    386 
    387   /* vec_cntlz */
    388   res_vsc = vec_cntlz(vsc);
    389 // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
    390 // CHECK-LE: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
    391 // CHECK-PPC: warning: implicit declaration of function 'vec_cntlz' is invalid in C99
    392 
    393   res_vuc = vec_cntlz(vuc);
    394 // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
    395 // CHECK-LE: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.+}}, i1 false)
    396 
    397   res_vss = vec_cntlz(vss);
    398 // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
    399 // CHECK-LE: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
    400 
    401   res_vus = vec_cntlz(vus);
    402 // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
    403 // CHECK-LE: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.+}}, i1 false)
    404 
    405   res_vsi = vec_cntlz(vsi);
    406 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
    407 // CHECK-LE: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
    408 
    409   res_vui = vec_cntlz(vui);
    410 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
    411 // CHECK-LE: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.+}}, i1 false)
    412 
    413   res_vsll = vec_cntlz(vsll);
    414 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
    415 // CHECK-LE: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
    416 
    417   res_vull = vec_cntlz(vull);
    418 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
    419 // CHECK-LE: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.+}}, i1 false)
    420 
    421   /* ----------------------- predicates --------------------------- */
    422   /* vec_all_eq */
    423   res_i = vec_all_eq(vsll, vsll);
    424 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    425 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    426 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    427 
    428   res_i = vec_all_eq(vsll, vbll);
    429 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    430 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    431 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    432 
    433   res_i = vec_all_eq(vull, vull);
    434 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    435 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    436 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    437 
    438   res_i = vec_all_eq(vull, vbll);
    439 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    440 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    441 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    442 
    443   res_i = vec_all_eq(vbll, vsll);
    444 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    445 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    446 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    447 
    448   res_i = vec_all_eq(vbll, vull);
    449 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    450 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    451 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    452 
    453   res_i = vec_all_eq(vbll, vbll);
    454 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    455 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    456 // CHECK-PPC: error: call to 'vec_all_eq' is ambiguous
    457 
    458   res_i = vec_all_eq(vda, vda);
    459 // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
    460 // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
    461 
    462   /* vec_all_ne */
    463   res_i = vec_all_ne(vsll, vsll);
    464 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    465 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    466 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    467 
    468   res_i = vec_all_ne(vsll, vbll);
    469 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    470 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    471 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    472 
    473   res_i = vec_all_ne(vull, vull);
    474 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    475 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    476 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    477 
    478   res_i = vec_all_ne(vull, vbll);
    479 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    480 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    481 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    482 
    483   res_i = vec_all_ne(vbll, vsll);
    484 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    485 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    486 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    487 
    488   res_i = vec_all_ne(vbll, vull);
    489 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    490 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    491 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    492 
    493   res_i = vec_all_ne(vbll, vbll);
    494 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    495 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    496 // CHECK-PPC: error: call to 'vec_all_ne' is ambiguous
    497 
    498   dummy();
    499 // CHECK: @dummy
    500 
    501   res_i = vec_all_ne(vda, vda);
    502 // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
    503 // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
    504 
    505   dummy();
    506 // CHECK: @dummy
    507 
    508   res_i = vec_all_nge(vda, vda);
    509 // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
    510 // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
    511 
    512   res_i = vec_all_ngt(vda, vda);
    513 // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
    514 // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
    515 
    516   /* vec_any_eq */
    517   res_i = vec_any_eq(vsll, vsll);
    518 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    519 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    520 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    521 
    522   res_i = vec_any_eq(vsll, vbll);
    523 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    524 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    525 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    526 
    527   res_i = vec_any_eq(vull, vull);
    528 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    529 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    530 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    531 
    532   res_i = vec_any_eq(vull, vbll);
    533 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    534 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    535 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    536 
    537   res_i = vec_any_eq(vbll, vsll);
    538 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    539 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    540 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    541 
    542   res_i = vec_any_eq(vbll, vull);
    543 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    544 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    545 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    546 
    547   res_i = vec_any_eq(vbll, vbll);
    548 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    549 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    550 // CHECK-PPC: error: call to 'vec_any_eq' is ambiguous
    551 
    552   res_i = vec_any_eq(vda, vda);
    553 // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
    554 // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
    555 
    556   /* vec_any_ne */
    557   res_i = vec_any_ne(vsll, vsll);
    558 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    559 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    560 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    561 
    562   res_i = vec_any_ne(vsll, vbll);
    563 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    564 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    565 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    566 
    567   res_i = vec_any_ne(vull, vull);
    568 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    569 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    570 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    571 
    572   res_i = vec_any_ne(vull, vbll);
    573 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    574 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    575 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    576 
    577   res_i = vec_any_ne(vbll, vsll);
    578 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    579 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    580 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    581 
    582   res_i = vec_any_ne(vbll, vull);
    583 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    584 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    585 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    586 
    587   res_i = vec_any_ne(vbll, vbll);
    588 // CHECK: @llvm.ppc.altivec.vcmpequd.p
    589 // CHECK-LE: @llvm.ppc.altivec.vcmpequd.p
    590 // CHECK-PPC: error: call to 'vec_any_ne' is ambiguous
    591 
    592   res_i = vec_any_ne(vda, vda);
    593 // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
    594 // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
    595 
    596   /* vec_all_ge */
    597   res_i = vec_all_ge(vsll, vsll);
    598 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    599 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    600 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    601 
    602   res_i = vec_all_ge(vsll, vbll);
    603 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    604 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    605 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    606 
    607   res_i = vec_all_ge(vull, vull);
    608 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    609 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    610 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    611 
    612   res_i = vec_all_ge(vull, vbll);
    613 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    614 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    615 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    616 
    617   res_i = vec_all_ge(vbll, vsll);
    618 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    619 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    620 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    621 
    622   res_i = vec_all_ge(vbll, vull);
    623 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    624 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    625 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    626 
    627   res_i = vec_all_ge(vbll, vbll);
    628 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    629 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    630 // CHECK-PPC: error: call to 'vec_all_ge' is ambiguous
    631 
    632   res_i = vec_all_ge(vda, vda);
    633 // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
    634 // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
    635 
    636   /* vec_all_gt */
    637   res_i = vec_all_gt(vsll, vsll);
    638 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    639 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    640 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    641 
    642   res_i = vec_all_gt(vsll, vbll);
    643 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    644 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    645 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    646 
    647   res_i = vec_all_gt(vull, vull);
    648 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    649 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    650 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    651 
    652   res_i = vec_all_gt(vull, vbll);
    653 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    654 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    655 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    656 
    657   res_i = vec_all_gt(vbll, vsll);
    658 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    659 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    660 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    661 
    662   res_i = vec_all_gt(vbll, vull);
    663 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    664 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    665 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    666 
    667   res_i = vec_all_gt(vbll, vbll);
    668 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    669 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    670 // CHECK-PPC: error: call to 'vec_all_gt' is ambiguous
    671 
    672   res_i = vec_all_gt(vda, vda);
    673 // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
    674 // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
    675 
    676   /* vec_all_le */
    677   res_i = vec_all_le(vsll, vsll);
    678 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    679 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    680 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    681 
    682   res_i = vec_all_le(vsll, vbll);
    683 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    684 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    685 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    686 
    687   res_i = vec_all_le(vull, vull);
    688 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    689 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    690 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    691 
    692   res_i = vec_all_le(vull, vbll);
    693 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    694 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    695 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    696 
    697   res_i = vec_all_le(vbll, vsll);
    698 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    699 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    700 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    701 
    702   res_i = vec_all_le(vbll, vull);
    703 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    704 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    705 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    706 
    707   res_i = vec_all_le(vbll, vbll);
    708 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    709 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    710 // CHECK-PPC: error: call to 'vec_all_le' is ambiguous
    711 
    712   res_i = vec_all_le(vda, vda);
    713 // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
    714 // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
    715 
    716   /* vec_all_lt */
    717   res_i = vec_all_lt(vsll, vsll);
    718 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    719 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    720 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    721 
    722   res_i = vec_all_lt(vsll, vbll);
    723 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    724 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    725 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    726 
    727   res_i = vec_all_lt(vull, vull);
    728 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    729 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    730 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    731 
    732   res_i = vec_all_lt(vull, vbll);
    733 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    734 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    735 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    736 
    737   res_i = vec_all_lt(vbll, vsll);
    738 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    739 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    740 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    741 
    742   res_i = vec_all_lt(vbll, vull);
    743 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    744 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    745 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    746 
    747   res_i = vec_all_lt(vbll, vbll);
    748 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    749 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    750 // CHECK-PPC: error: call to 'vec_all_lt' is ambiguous
    751 
    752   res_i = vec_all_lt(vda, vda);
    753 // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
    754 // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
    755 
    756   res_i = vec_all_nan(vda);
    757 // CHECK: @llvm.ppc.vsx.xvcmpeqdp.p
    758 // CHECK-LE: @llvm.ppc.vsx.xvcmpeqdp.p
    759 
    760   /* vec_any_ge */
    761   res_i = vec_any_ge(vsll, vsll);
    762 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    763 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    764 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    765 
    766   res_i = vec_any_ge(vsll, vbll);
    767 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    768 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    769 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    770 
    771   res_i = vec_any_ge(vull, vull);
    772 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    773 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    774 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    775 
    776   res_i = vec_any_ge(vull, vbll);
    777 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    778 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    779 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    780 
    781   res_i = vec_any_ge(vbll, vsll);
    782 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    783 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    784 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    785 
    786   res_i = vec_any_ge(vbll, vull);
    787 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    788 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    789 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    790 
    791   res_i = vec_any_ge(vbll, vbll);
    792 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    793 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    794 // CHECK-PPC: error: call to 'vec_any_ge' is ambiguous
    795 
    796   res_i = vec_any_ge(vda, vda);
    797 // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
    798 // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
    799 
    800   /* vec_any_gt */
    801   res_i = vec_any_gt(vsll, vsll);
    802 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    803 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    804 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    805 
    806   res_i = vec_any_gt(vsll, vbll);
    807 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    808 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    809 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    810 
    811   res_i = vec_any_gt(vull, vull);
    812 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    813 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    814 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    815 
    816   res_i = vec_any_gt(vull, vbll);
    817 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    818 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    819 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    820 
    821   res_i = vec_any_gt(vbll, vsll);
    822 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    823 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    824 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    825 
    826   res_i = vec_any_gt(vbll, vull);
    827 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    828 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    829 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    830 
    831   res_i = vec_any_gt(vbll, vbll);
    832 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    833 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    834 // CHECK-PPC: error: call to 'vec_any_gt' is ambiguous
    835 
    836   res_i = vec_any_gt(vda, vda);
    837 // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
    838 // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
    839 
    840   /* vec_any_le */
    841   res_i = vec_any_le(vsll, vsll);
    842 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    843 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    844 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    845 
    846   res_i = vec_any_le(vsll, vbll);
    847 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    848 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    849 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    850 
    851   res_i = vec_any_le(vull, vull);
    852 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    853 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    854 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    855 
    856   res_i = vec_any_le(vull, vbll);
    857 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    858 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    859 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    860 
    861   res_i = vec_any_le(vbll, vsll);
    862 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    863 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    864 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    865 
    866   res_i = vec_any_le(vbll, vull);
    867 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    868 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    869 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    870 
    871   res_i = vec_any_le(vbll, vbll);
    872 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    873 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    874 // CHECK-PPC: error: call to 'vec_any_le' is ambiguous
    875 
    876   res_i = vec_any_le(vda, vda);
    877 // CHECK: @llvm.ppc.vsx.xvcmpgedp.p
    878 // CHECK-LE: @llvm.ppc.vsx.xvcmpgedp.p
    879 
    880   /* vec_any_lt */
    881   res_i = vec_any_lt(vsll, vsll);
    882 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    883 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    884 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    885 
    886   res_i = vec_any_lt(vsll, vbll);
    887 // CHECK: @llvm.ppc.altivec.vcmpgtsd.p
    888 // CHECK-LE: @llvm.ppc.altivec.vcmpgtsd.p
    889 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    890 
    891   res_i = vec_any_lt(vull, vull);
    892 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    893 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    894 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    895 
    896   res_i = vec_any_lt(vull, vbll);
    897 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    898 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    899 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    900 
    901   res_i = vec_any_lt(vbll, vsll);
    902 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    903 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    904 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    905 
    906   res_i = vec_any_lt(vbll, vull);
    907 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    908 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    909 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    910 
    911   res_i = vec_any_lt(vbll, vbll);
    912 // CHECK: @llvm.ppc.altivec.vcmpgtud.p
    913 // CHECK-LE: @llvm.ppc.altivec.vcmpgtud.p
    914 // CHECK-PPC: error: call to 'vec_any_lt' is ambiguous
    915 
    916   res_i = vec_any_lt(vda, vda);
    917 // CHECK: @llvm.ppc.vsx.xvcmpgtdp.p
    918 // CHECK-LE: @llvm.ppc.vsx.xvcmpgtdp.p
    919 
    920   /* vec_max */
    921   res_vsll = vec_max(vsll, vsll);
    922 // CHECK: @llvm.ppc.altivec.vmaxsd
    923 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
    924 // CHECK-PPC: error: call to 'vec_max' is ambiguous
    925 
    926   res_vsll = vec_max(vbll, vsll);
    927 // CHECK: @llvm.ppc.altivec.vmaxsd
    928 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
    929 // CHECK-PPC: error: call to 'vec_max' is ambiguous
    930 
    931   res_vsll = vec_max(vsll, vbll);
    932 // CHECK: @llvm.ppc.altivec.vmaxsd
    933 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
    934 // CHECK-PPC: error: call to 'vec_max' is ambiguous
    935 
    936   res_vull = vec_max(vull, vull);
    937 // CHECK: @llvm.ppc.altivec.vmaxud
    938 // CHECK-LE: @llvm.ppc.altivec.vmaxud
    939 // CHECK-PPC: error: call to 'vec_max' is ambiguous
    940 
    941   res_vull = vec_max(vbll, vull);
    942 // CHECK: @llvm.ppc.altivec.vmaxud
    943 // CHECK-LE: @llvm.ppc.altivec.vmaxud
    944 // CHECK-PPC: error: call to 'vec_max' is ambiguous
    945 
    946   res_vull = vec_max(vull, vbll);
    947 // CHECK: @llvm.ppc.altivec.vmaxud
    948 // CHECK-LE: @llvm.ppc.altivec.vmaxud
    949 // CHECK-PPC: error: call to 'vec_max' is ambiguous
    950 
    951   /* vec_mergeh */
    952   res_vbll = vec_mergeh(vbll, vbll);
    953 // CHECK: @llvm.ppc.altivec.vperm
    954 // CHECK-LE: @llvm.ppc.altivec.vperm
    955 
    956   res_vbll = vec_mergel(vbll, vbll);
    957 // CHECK: @llvm.ppc.altivec.vperm
    958 // CHECK-LE: @llvm.ppc.altivec.vperm
    959 
    960   /* vec_min */
    961   res_vsll = vec_min(vsll, vsll);
    962 // CHECK: @llvm.ppc.altivec.vminsd
    963 // CHECK-LE: @llvm.ppc.altivec.vminsd
    964 // CHECK-PPC: error: call to 'vec_min' is ambiguous
    965 
    966   res_vsll = vec_min(vbll, vsll);
    967 // CHECK: @llvm.ppc.altivec.vminsd
    968 // CHECK-LE: @llvm.ppc.altivec.vminsd
    969 // CHECK-PPC: error: call to 'vec_min' is ambiguous
    970 
    971   res_vsll = vec_min(vsll, vbll);
    972 // CHECK: @llvm.ppc.altivec.vminsd
    973 // CHECK-LE: @llvm.ppc.altivec.vminsd
    974 // CHECK-PPC: error: call to 'vec_min' is ambiguous
    975 
    976   res_vull = vec_min(vull, vull);
    977 // CHECK: @llvm.ppc.altivec.vminud
    978 // CHECK-LE: @llvm.ppc.altivec.vminud
    979 // CHECK-PPC: error: call to 'vec_min' is ambiguous
    980 
    981   res_vull = vec_min(vbll, vull);
    982 // CHECK: @llvm.ppc.altivec.vminud
    983 // CHECK-LE: @llvm.ppc.altivec.vminud
    984 // CHECK-PPC: error: call to 'vec_min' is ambiguous
    985 
    986   res_vull = vec_min(vull, vbll);
    987 // CHECK: @llvm.ppc.altivec.vminud
    988 // CHECK-LE: @llvm.ppc.altivec.vminud
    989 // CHECK-PPC: error: call to 'vec_min' is ambiguous
    990 
    991   /* vec_mule */
    992   res_vsll = vec_mule(vsi, vsi);
    993 // CHECK: @llvm.ppc.altivec.vmulesw
    994 // CHECK-LE: @llvm.ppc.altivec.vmulosw
    995 // CHECK-PPC: error: call to 'vec_mule' is ambiguous
    996 
    997   res_vull = vec_mule(vui , vui);
    998 // CHECK: @llvm.ppc.altivec.vmuleuw
    999 // CHECK-LE: @llvm.ppc.altivec.vmulouw
   1000 // CHECK-PPC: error: call to 'vec_mule' is ambiguous
   1001 
   1002   /* vec_mulo */
   1003   res_vsll = vec_mulo(vsi, vsi);
   1004 // CHECK: @llvm.ppc.altivec.vmulosw
   1005 // CHECK-LE: @llvm.ppc.altivec.vmulesw
   1006 // CHECK-PPC: error: call to 'vec_mulo' is ambiguous
   1007 
   1008   res_vull = vec_mulo(vui, vui);
   1009 // CHECK: @llvm.ppc.altivec.vmulouw
   1010 // CHECK-LE: @llvm.ppc.altivec.vmuleuw
   1011 // CHECK-PPC: error: call to 'vec_mulo' is ambiguous
   1012 
   1013   /* vec_packs */
   1014   res_vsi = vec_packs(vsll, vsll);
   1015 // CHECK: @llvm.ppc.altivec.vpksdss
   1016 // CHECK-LE: @llvm.ppc.altivec.vpksdss
   1017 // CHECK-PPC: error: call to 'vec_packs' is ambiguous
   1018 
   1019   res_vui = vec_packs(vull, vull);
   1020 // CHECK: @llvm.ppc.altivec.vpkudus
   1021 // CHECK-LE: @llvm.ppc.altivec.vpkudus
   1022 // CHECK-PPC: error: call to 'vec_packs' is ambiguous
   1023 
   1024   /* vec_packsu */
   1025   res_vui = vec_packsu(vsll, vsll);
   1026 // CHECK: @llvm.ppc.altivec.vpksdus
   1027 // CHECK-LE: @llvm.ppc.altivec.vpksdus
   1028 // CHECK-PPC: error: call to 'vec_packsu' is ambiguous
   1029 
   1030   res_vui = vec_packsu(vull, vull);
   1031 // CHECK: @llvm.ppc.altivec.vpkudus
   1032 // CHECK-LE: @llvm.ppc.altivec.vpkudus
   1033 // CHECK-PPC: error: call to 'vec_packsu' is ambiguous
   1034 
   1035   /* vec_rl */
   1036   res_vsll = vec_rl(vsll, vull);
   1037 // CHECK: @llvm.ppc.altivec.vrld
   1038 // CHECK-LE: @llvm.ppc.altivec.vrld
   1039 // CHECK-PPC: error: call to 'vec_rl' is ambiguous
   1040 
   1041   res_vull = vec_rl(vull, vull);
   1042 // CHECK: @llvm.ppc.altivec.vrld
   1043 // CHECK-LE: @llvm.ppc.altivec.vrld
   1044 // CHECK-PPC: error: call to 'vec_rl' is ambiguous
   1045 
   1046   /* vec_sl */
   1047   res_vsll = vec_sl(vsll, vull);
   1048 // CHECK: shl <2 x i64>
   1049 // CHECK-LE: shl <2 x i64>
   1050 // CHECK-PPC: error: call to 'vec_sl' is ambiguous
   1051 
   1052   res_vull = vec_sl(vull, vull);
   1053 // CHECK: shl <2 x i64>
   1054 // CHECK-LE: shl <2 x i64>
   1055 // CHECK-PPC: error: call to 'vec_sl' is ambiguous
   1056 
   1057   /* vec_sr */
   1058   res_vsll = vec_sr(vsll, vull);
   1059 // CHECK: lshr <2 x i64>
   1060 // CHECK-LE: lshr <2 x i64>
   1061 // CHECK-PPC: error: call to 'vec_sr' is ambiguous
   1062 
   1063   res_vull = vec_sr(vull, vull);
   1064 // CHECK: lshr <2 x i64>
   1065 // CHECK-LE: lshr <2 x i64>
   1066 // CHECK-PPC: error: call to 'vec_sr' is ambiguous
   1067 
   1068   /* vec_sra */
   1069   res_vsll = vec_sra(vsll, vull);
   1070 // CHECK: ashr <2 x i64>
   1071 // CHECK-LE: ashr <2 x i64>
   1072 // CHECK-PPC: error: call to 'vec_sra' is ambiguous
   1073 
   1074   res_vull = vec_sra(vull, vull);
   1075 // CHECK: ashr <2 x i64>
   1076 // CHECK-LE: ashr <2 x i64>
   1077 // CHECK-PPC: error: call to 'vec_sra' is ambiguous
   1078 
   1079   /* vec_splats */
   1080   res_vsll = vec_splats(sll);
   1081 // CHECK: insertelement <2 x i64>
   1082 // CHECK-LE: insertelement <2 x i64>
   1083 
   1084   res_vull = vec_splats(ull);
   1085 // CHECK: insertelement <2 x i64>
   1086 // CHECK-LE: insertelement <2 x i64>
   1087 
   1088   res_vsx = vec_splats(sx);
   1089 // CHECK: insertelement <1 x i128>
   1090 // CHECK-LE: insertelement <1 x i128>
   1091 
   1092   res_vux = vec_splats(ux);
   1093 // CHECK: insertelement <1 x i128>
   1094 // CHECK-LE: insertelement <1 x i128>
   1095 
   1096   res_vd = vec_splats(d);
   1097 // CHECK: insertelement <2 x double>
   1098 // CHECK-LE: insertelement <2 x double>
   1099 
   1100 
   1101   /* vec_unpackh */
   1102   res_vsll = vec_unpackh(vsi);
   1103 // CHECK: llvm.ppc.altivec.vupkhsw
   1104 // CHECK-LE: llvm.ppc.altivec.vupklsw
   1105 // CHECK-PPC: error: call to 'vec_unpackh' is ambiguous
   1106 
   1107   res_vbll = vec_unpackh(vbi);
   1108 // CHECK: llvm.ppc.altivec.vupkhsw
   1109 // CHECK-LE: llvm.ppc.altivec.vupklsw
   1110 // CHECK-PPC: error: call to 'vec_unpackh' is ambiguous
   1111 
   1112   /* vec_unpackl */
   1113   res_vsll = vec_unpackl(vsi);
   1114 // CHECK: llvm.ppc.altivec.vupklsw
   1115 // CHECK-LE: llvm.ppc.altivec.vupkhsw
   1116 // CHECK-PPC: error: call to 'vec_unpackl' is ambiguous
   1117 
   1118   res_vbll = vec_unpackl(vbi);
   1119 // CHECK: llvm.ppc.altivec.vupklsw
   1120 // CHECK-LE: llvm.ppc.altivec.vupkhsw
   1121 // CHECK-PPC: error: call to 'vec_unpackl' is ambiguous
   1122 
   1123   /* vec_vpksdss */
   1124   res_vsi = vec_vpksdss(vsll, vsll);
   1125 // CHECK: llvm.ppc.altivec.vpksdss
   1126 // CHECK-LE: llvm.ppc.altivec.vpksdss
   1127 // CHECK-PPC: warning: implicit declaration of function 'vec_vpksdss'
   1128 
   1129   /* vec_vpksdus */
   1130   res_vui = vec_vpksdus(vsll, vsll);
   1131 // CHECK: llvm.ppc.altivec.vpksdus
   1132 // CHECK-LE: llvm.ppc.altivec.vpksdus
   1133 // CHECK-PPC: warning: implicit declaration of function 'vec_vpksdus'
   1134 
   1135   /* vec_vpkudum */
   1136   res_vsi = vec_vpkudum(vsll, vsll);
   1137 // CHECK: vperm
   1138 // CHECK-LE: vperm
   1139 // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudum'
   1140 
   1141   res_vui = vec_vpkudum(vull, vull);
   1142 // CHECK: vperm
   1143 // CHECK-LE: vperm
   1144 
   1145   res_vui = vec_vpkudus(vull, vull);
   1146 // CHECK: llvm.ppc.altivec.vpkudus
   1147 // CHECK-LE: llvm.ppc.altivec.vpkudus
   1148 // CHECK-PPC: warning: implicit declaration of function 'vec_vpkudus'
   1149 
   1150   /* vec_vupkhsw */
   1151   res_vsll = vec_vupkhsw(vsi);
   1152 // CHECK: llvm.ppc.altivec.vupkhsw
   1153 // CHECK-LE: llvm.ppc.altivec.vupklsw
   1154 // CHECK-PPC: warning: implicit declaration of function 'vec_vupkhsw'
   1155 
   1156   res_vbll = vec_vupkhsw(vbi);
   1157 // CHECK: llvm.ppc.altivec.vupkhsw
   1158 // CHECK-LE: llvm.ppc.altivec.vupklsw
   1159 
   1160   /* vec_vupklsw */
   1161   res_vsll = vec_vupklsw(vsi);
   1162 // CHECK: llvm.ppc.altivec.vupklsw
   1163 // CHECK-LE: llvm.ppc.altivec.vupkhsw
   1164 // CHECK-PPC: warning: implicit declaration of function 'vec_vupklsw'
   1165 
   1166   res_vbll = vec_vupklsw(vbi);
   1167 // CHECK: llvm.ppc.altivec.vupklsw
   1168 // CHECK-LE: llvm.ppc.altivec.vupkhsw
   1169 
   1170   /* vec_max */
   1171   res_vsll = vec_max(vsll, vsll);
   1172 // CHECK: @llvm.ppc.altivec.vmaxsd
   1173 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
   1174 
   1175   res_vsll = vec_max(vbll, vsll);
   1176 // CHECK: @llvm.ppc.altivec.vmaxsd
   1177 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
   1178 
   1179   res_vsll = vec_max(vsll, vbll);
   1180 // CHECK: @llvm.ppc.altivec.vmaxsd
   1181 // CHECK-LE: @llvm.ppc.altivec.vmaxsd
   1182 
   1183   res_vull = vec_max(vull, vull);
   1184 // CHECK: @llvm.ppc.altivec.vmaxud
   1185 // CHECK-LE: @llvm.ppc.altivec.vmaxud
   1186 
   1187   res_vull = vec_max(vbll, vull);
   1188 // CHECK: @llvm.ppc.altivec.vmaxud
   1189 // CHECK-LE: @llvm.ppc.altivec.vmaxud
   1190 
   1191   /* vec_min */
   1192   res_vsll = vec_min(vsll, vsll);
   1193 // CHECK: @llvm.ppc.altivec.vminsd
   1194 // CHECK-LE: @llvm.ppc.altivec.vminsd
   1195 
   1196   res_vsll = vec_min(vbll, vsll);
   1197 // CHECK: @llvm.ppc.altivec.vminsd
   1198 // CHECK-LE: @llvm.ppc.altivec.vminsd
   1199 
   1200   res_vsll = vec_min(vsll, vbll);
   1201 // CHECK: @llvm.ppc.altivec.vminsd
   1202 // CHECK-LE: @llvm.ppc.altivec.vminsd
   1203 
   1204   res_vull = vec_min(vull, vull);
   1205 // CHECK: @llvm.ppc.altivec.vminud
   1206 // CHECK-LE: @llvm.ppc.altivec.vminud
   1207 
   1208   res_vull = vec_min(vbll, vull);
   1209 // CHECK: @llvm.ppc.altivec.vminud
   1210 // CHECK-LE: @llvm.ppc.altivec.vminud
   1211 
   1212   /* vec_nand */
   1213   res_vsc = vec_nand(vsc, vsc);
   1214 // CHECK: [[T1:%.+]] = and <16 x i8>
   1215 // CHECK: xor <16 x i8> [[T1]], <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1216 // CHECK-LE: [[T1:%.+]] = and <16 x i8>
   1217 // CHECK-LE: xor <16 x i8> [[T1]], <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1218 // CHECK-PPC: warning: implicit declaration of function 'vec_nand' is invalid in C99
   1219 
   1220   res_vsc = vec_nand(vbc, vbc);
   1221 // CHECK: [[T1:%.+]] = and <16 x i8>
   1222 // CHECK: xor <16 x i8> [[T1]], <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1223 // CHECK-LE: [[T1:%.+]] = and <16 x i8>
   1224 // CHECK-LE: xor <16 x i8> [[T1]], <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1225 
   1226   res_vuc = vec_nand(vuc, vuc);
   1227 // CHECK: [[T1:%.+]] = and <16 x i8>
   1228 // CHECK: xor <16 x i8> [[T1]], <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1229 // CHECK-LE: [[T1:%.+]] = and <16 x i8>
   1230 // CHECK-LE: xor <16 x i8> [[T1]], <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1231 
   1232   res_vss = vec_nand(vss, vss);
   1233 // CHECK: [[T1:%.+]] = and <8 x i16>
   1234 // CHECK: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1235 // CHECK-LE: [[T1:%.+]] = and <8 x i16>
   1236 // CHECK-LE: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1237 
   1238   res_vss = vec_nand(vbs, vbs);
   1239 // CHECK: [[T1:%.+]] = and <8 x i16>
   1240 // CHECK: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1241 // CHECK-LE: [[T1:%.+]] = and <8 x i16>
   1242 // CHECK-LE: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1243 
   1244   res_vus = vec_nand(vus, vus);
   1245 // CHECK: [[T1:%.+]] = and <8 x i16>
   1246 // CHECK: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1247 // CHECK-LE: [[T1:%.+]] = and <8 x i16>
   1248 // CHECK-LE: xor <8 x i16> [[T1]], <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1249 
   1250   res_vsi = vec_nand(vsi, vsi);
   1251 // CHECK: [[T1:%.+]] = and <4 x i32>
   1252 // CHECK: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
   1253 // CHECK-LE: [[T1:%.+]] = and <4 x i32>
   1254 // CHECK-LE: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
   1255 
   1256   res_vsi = vec_nand(vbi, vbi);
   1257 // CHECK: [[T1:%.+]] = and <4 x i32>
   1258 // CHECK: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
   1259 // CHECK-LE: [[T1:%.+]] = and <4 x i32>
   1260 // CHECK-LE: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
   1261 
   1262   res_vui = vec_nand(vui, vui);
   1263 // CHECK: [[T1:%.+]] = and <4 x i32>
   1264 // CHECK: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
   1265 // CHECK-LE: [[T1:%.+]] = and <4 x i32>
   1266 // CHECK-LE: xor <4 x i32> [[T1]], <i32 -1, i32 -1, i32 -1, i32 -1>
   1267 
   1268   res_vsll = vec_nand(vsll, vsll);
   1269 // CHECK: [[T1:%.+]] = and <2 x i64>
   1270 // CHECK: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
   1271 // CHECK-LE: [[T1:%.+]] = and <2 x i64>
   1272 // CHECK-LE: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
   1273 
   1274   res_vsll = vec_nand(vbll, vbll);
   1275 // CHECK: [[T1:%.+]] = and <2 x i64>
   1276 // CHECK: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
   1277 // CHECK-LE: [[T1:%.+]] = and <2 x i64>
   1278 // CHECK-LE: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
   1279 
   1280   res_vull = vec_nand(vull, vull);
   1281 // CHECK: [[T1:%.+]] = and <2 x i64>
   1282 // CHECK: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
   1283 // CHECK-LE: [[T1:%.+]] = and <2 x i64>
   1284 // CHECK-LE: xor <2 x i64> [[T1]], <i64 -1, i64 -1>
   1285 
   1286   /* vec_orc */
   1287   res_vsc = vec_orc(vsc, vsc);
   1288 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1289 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1290 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1291 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1292 // CHECK-PPC: warning: implicit declaration of function 'vec_orc' is invalid in C99
   1293 
   1294   res_vsc = vec_orc(vsc, vbc);
   1295 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1296 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1297 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1298 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1299 
   1300   res_vsc = vec_orc(vbc, vsc);
   1301 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1302 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1303 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1304 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1305 
   1306   res_vuc = vec_orc(vuc, vuc);
   1307 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1308 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1309 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1310 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1311 
   1312   res_vuc = vec_orc(vuc, vbc);
   1313 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1314 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1315 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1316 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1317 
   1318   res_vuc = vec_orc(vbc, vuc);
   1319 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1320 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1321 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1322 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1323 
   1324   res_vbc = vec_orc(vbc, vbc);
   1325 // CHECK: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1326 // CHECK: or <16 x i8> {{%.+}}, [[T1]]
   1327 // CHECK-LE: [[T1:%.+]] = xor <16 x i8> {{%.+}}, <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
   1328 // CHECK-LE: or <16 x i8> {{%.+}}, [[T1]]
   1329 
   1330   res_vss = vec_orc(vss, vss);
   1331 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1332 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1333 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1334 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1335 
   1336   res_vss = vec_orc(vss, vbs);
   1337 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1338 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1339 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1340 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1341 
   1342   res_vss = vec_orc(vbs, vss);
   1343 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1344 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1345 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1346 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1347 
   1348   res_vus = vec_orc(vus, vus);
   1349 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1350 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1351 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1352 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1353 
   1354   res_vus = vec_orc(vus, vbs);
   1355 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1356 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1357 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1358 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1359 
   1360   res_vus = vec_orc(vbs, vus);
   1361 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1362 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1363 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1364 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1365 
   1366   res_vbs = vec_orc(vbs, vbs);
   1367 // CHECK: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1368 // CHECK: or <8 x i16> {{%.+}}, [[T1]]
   1369 // CHECK-LE: [[T1:%.+]] = xor <8 x i16> {{%.+}}, <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
   1370 // CHECK-LE: or <8 x i16> {{%.+}}, [[T1]]
   1371 
   1372   res_vsi = vec_orc(vsi, vsi);
   1373 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1374 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1375 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1376 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1377 
   1378   res_vsi = vec_orc(vsi, vbi);
   1379 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1380 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1381 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1382 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1383 
   1384   res_vsi = vec_orc(vbi, vsi);
   1385 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1386 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1387 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1388 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1389 
   1390   res_vui = vec_orc(vui, vui);
   1391 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1392 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1393 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1394 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1395 
   1396   res_vui = vec_orc(vui, vbi);
   1397 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1398 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1399 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1400 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1401 
   1402   res_vui = vec_orc(vbi, vui);
   1403 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1404 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1405 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1406 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1407 
   1408   res_vbi = vec_orc(vbi, vbi);
   1409 // CHECK: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1410 // CHECK: or <4 x i32> {{%.+}}, [[T1]]
   1411 // CHECK-LE: [[T1:%.+]] = xor <4 x i32> {{%.+}}, <i32 -1, i32 -1, i32 -1, i32 -1>
   1412 // CHECK-LE: or <4 x i32> {{%.+}}, [[T1]]
   1413 
   1414   res_vsll = vec_orc(vsll, vsll);
   1415 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1416 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1417 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1418 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1419 
   1420   res_vsll = vec_orc(vsll, vbll);
   1421 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1422 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1423 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1424 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1425 
   1426   res_vsll = vec_orc(vbll, vsll);
   1427 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1428 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1429 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1430 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1431 
   1432   res_vull = vec_orc(vull, vull);
   1433 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1434 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1435 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1436 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1437 
   1438   res_vull = vec_orc(vull, vbll);
   1439 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1440 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1441 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1442 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1443 
   1444   res_vull = vec_orc(vbll, vull);
   1445 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1446 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1447 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1448 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1449 
   1450   res_vbll = vec_orc(vbll, vbll);
   1451 // CHECK: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1452 // CHECK: or <2 x i64> {{%.+}}, [[T1]]
   1453 // CHECK-LE: [[T1:%.+]] = xor <2 x i64> {{%.+}}, <i64 -1, i64 -1>
   1454 // CHECK-LE: or <2 x i64> {{%.+}}, [[T1]]
   1455 
   1456   /* vec_sub */
   1457   res_vsll = vec_sub(vsll, vsll);
   1458 // CHECK: sub <2 x i64>
   1459 // CHECK-LE: sub <2 x i64>
   1460 
   1461   res_vull = vec_sub(vull, vull);
   1462 // CHECK: sub <2 x i64>
   1463 // CHECK-LE: sub <2 x i64>
   1464 
   1465   res_vd = vec_sub(vda, vda);
   1466 // CHECK: fsub <2 x double>
   1467 // CHECK-LE: fsub <2 x double>
   1468 
   1469   res_vsx = vec_sub(vsx, vsx);
   1470 // CHECK: sub <1 x i128>
   1471 // CHECK-LE: sub <1 x i128>
   1472 
   1473   res_vux = vec_sub(vux, vux);
   1474 // CHECK: sub <1 x i128>
   1475 // CHECK-LE: sub <1 x i128>
   1476 
   1477   /* vec_vbpermq */
   1478   res_vsll = vec_vbpermq(vsc, vsc);
   1479 // CHECK: llvm.ppc.altivec.vbpermq
   1480 // CHECK-LE: llvm.ppc.altivec.vbpermq
   1481 
   1482   res_vull = vec_vbpermq(vuc, vuc);
   1483 // CHECK: llvm.ppc.altivec.vbpermq
   1484 // CHECK-LE: llvm.ppc.altivec.vbpermq
   1485 // CHECK-PPC: warning: implicit declaration of function 'vec_vbpermq'
   1486 
   1487   /* vec_vgbbd */
   1488   res_vsc = vec_vgbbd(vsc);
   1489 // CHECK: llvm.ppc.altivec.vgbbd
   1490 // CHECK-LE: llvm.ppc.altivec.vgbbd
   1491 
   1492   res_vuc = vec_vgbbd(vuc);
   1493 // CHECK: llvm.ppc.altivec.vgbbd
   1494 // CHECK-LE: llvm.ppc.altivec.vgbbd
   1495 // CHECK-PPC: warning: implicit declaration of function 'vec_vgbbd'
   1496 
   1497   res_vuc = vec_gb(vuc);
   1498 // CHECK: llvm.ppc.altivec.vgbbd
   1499 // CHECK-LE: llvm.ppc.altivec.vgbbd
   1500 // CHECK-PPC: warning: implicit declaration of function 'vec_gb'
   1501 
   1502   res_vull = vec_bperm(vux, vux);
   1503 // CHECK: llvm.ppc.altivec.vbpermq
   1504 // CHECK-LE: llvm.ppc.altivec.vbpermq
   1505 // CHECK-PPC: warning: implicit declaration of function 'vec_bperm'
   1506 }
   1507