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