Home | History | Annotate | Download | only in CodeGen
      1 // REQUIRES: systemz-registered-target
      2 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
      3 // RUN: -O -fzvector -fno-lax-vector-conversions \
      4 // RUN: -Wall -Wno-unused -Werror -emit-llvm %s -o - | FileCheck %s
      5 
      6 #include <vecintrin.h>
      7 
      8 volatile vector signed char vsc;
      9 volatile vector signed short vss;
     10 volatile vector signed int vsi;
     11 volatile vector signed long long vsl;
     12 volatile vector unsigned char vuc;
     13 volatile vector unsigned short vus;
     14 volatile vector unsigned int vui;
     15 volatile vector unsigned long long vul;
     16 volatile vector bool char vbc;
     17 volatile vector bool short vbs;
     18 volatile vector bool int vbi;
     19 volatile vector bool long long vbl;
     20 volatile vector double vd;
     21 
     22 volatile signed char sc;
     23 volatile signed short ss;
     24 volatile signed int si;
     25 volatile signed long long sl;
     26 volatile unsigned char uc;
     27 volatile unsigned short us;
     28 volatile unsigned int ui;
     29 volatile unsigned long long ul;
     30 volatile double d;
     31 
     32 const void * volatile cptr;
     33 const signed char * volatile cptrsc;
     34 const signed short * volatile cptrss;
     35 const signed int * volatile cptrsi;
     36 const signed long long * volatile cptrsl;
     37 const unsigned char * volatile cptruc;
     38 const unsigned short * volatile cptrus;
     39 const unsigned int * volatile cptrui;
     40 const unsigned long long * volatile cptrul;
     41 const float * volatile cptrf;
     42 const double * volatile cptrd;
     43 
     44 void * volatile ptr;
     45 signed char * volatile ptrsc;
     46 signed short * volatile ptrss;
     47 signed int * volatile ptrsi;
     48 signed long long * volatile ptrsl;
     49 unsigned char * volatile ptruc;
     50 unsigned short * volatile ptrus;
     51 unsigned int * volatile ptrui;
     52 unsigned long long * volatile ptrul;
     53 float * volatile ptrf;
     54 double * volatile ptrd;
     55 
     56 volatile unsigned int len;
     57 volatile int idx;
     58 int cc;
     59 
     60 void test_core(void) {
     61   len = __lcbb(cptr, 64);
     62   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 0)
     63   len = __lcbb(cptr, 128);
     64   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 1)
     65   len = __lcbb(cptr, 256);
     66   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 2)
     67   len = __lcbb(cptr, 512);
     68   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 3)
     69   len = __lcbb(cptr, 1024);
     70   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 4)
     71   len = __lcbb(cptr, 2048);
     72   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 5)
     73   len = __lcbb(cptr, 4096);
     74   // CHECK: call i32 @llvm.s390.lcbb(i8* %{{.*}}, i32 6)
     75 
     76   sc = vec_extract(vsc, idx);
     77   // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
     78   uc = vec_extract(vuc, idx);
     79   // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
     80   uc = vec_extract(vbc, idx);
     81   // CHECK: extractelement <16 x i8> %{{.*}}, i32 %{{.*}}
     82   ss = vec_extract(vss, idx);
     83   // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
     84   us = vec_extract(vus, idx);
     85   // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
     86   us = vec_extract(vbs, idx);
     87   // CHECK: extractelement <8 x i16> %{{.*}}, i32 %{{.*}}
     88   si = vec_extract(vsi, idx);
     89   // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
     90   ui = vec_extract(vui, idx);
     91   // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
     92   ui = vec_extract(vbi, idx);
     93   // CHECK: extractelement <4 x i32> %{{.*}}, i32 %{{.*}}
     94   sl = vec_extract(vsl, idx);
     95   // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
     96   ul = vec_extract(vul, idx);
     97   // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
     98   ul = vec_extract(vbl, idx);
     99   // CHECK: extractelement <2 x i64> %{{.*}}, i32 %{{.*}}
    100   d = vec_extract(vd, idx);
    101   // CHECK: extractelement <2 x double> %{{.*}}, i32 %{{.*}}
    102 
    103   vsc = vec_insert(sc, vsc, idx);
    104   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
    105   vuc = vec_insert(uc, vuc, idx);
    106   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
    107   vuc = vec_insert(uc, vbc, idx);
    108   // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 %{{.*}}
    109   vss = vec_insert(ss, vss, idx);
    110   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
    111   vus = vec_insert(us, vus, idx);
    112   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
    113   vus = vec_insert(us, vbs, idx);
    114   // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 %{{.*}}
    115   vsi = vec_insert(si, vsi, idx);
    116   // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
    117   vui = vec_insert(ui, vui, idx);
    118   // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
    119   vui = vec_insert(ui, vbi, idx);
    120   // CHECK: insertelement <4 x i32> %{{.*}}, i32 %{{.*}}, i32 %{{.*}}
    121   vsl = vec_insert(sl, vsl, idx);
    122   // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
    123   vul = vec_insert(ul, vul, idx);
    124   // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
    125   vul = vec_insert(ul, vbl, idx);
    126   // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 %{{.*}}
    127   vd = vec_insert(d, vd, idx);
    128   // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 %{{.*}}
    129 
    130   vsc = vec_promote(sc, idx);
    131   // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 %{{.*}}
    132   vuc = vec_promote(uc, idx);
    133   // CHECK: insertelement <16 x i8> undef, i8 %{{.*}}, i32 %{{.*}}
    134   vss = vec_promote(ss, idx);
    135   // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 %{{.*}}
    136   vus = vec_promote(us, idx);
    137   // CHECK: insertelement <8 x i16> undef, i16 %{{.*}}, i32 %{{.*}}
    138   vsi = vec_promote(si, idx);
    139   // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 %{{.*}}
    140   vui = vec_promote(ui, idx);
    141   // CHECK: insertelement <4 x i32> undef, i32 %{{.*}}, i32 %{{.*}}
    142   vsl = vec_promote(sl, idx);
    143   // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 %{{.*}}
    144   vul = vec_promote(ul, idx);
    145   // CHECK: insertelement <2 x i64> undef, i64 %{{.*}}, i32 %{{.*}}
    146   vd = vec_promote(d, idx);
    147   // CHECK: insertelement <2 x double> undef, double %{{.*}}, i32 %{{.*}}
    148 
    149   vsc = vec_insert_and_zero(cptrsc);
    150   // CHECK: insertelement <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i32 7
    151   vuc = vec_insert_and_zero(cptruc);
    152   // CHECK: insertelement <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 undef, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, i8 %{{.*}}, i32 7
    153   vss = vec_insert_and_zero(cptrss);
    154   // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 undef, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i32 3
    155   vus = vec_insert_and_zero(cptrus);
    156   // CHECK: insertelement <8 x i16> <i16 0, i16 0, i16 0, i16 undef, i16 0, i16 0, i16 0, i16 0>, i16 %{{.*}}, i32 3
    157   vsi = vec_insert_and_zero(cptrsi);
    158   // CHECK: insertelement <4 x i32> <i32 0, i32 undef, i32 0, i32 0>, i32 %{{.*}}, i32 1
    159   vui = vec_insert_and_zero(cptrui);
    160   // CHECK: insertelement <4 x i32> <i32 0, i32 undef, i32 0, i32 0>, i32 %{{.*}}, i32 1
    161   vsl = vec_insert_and_zero(cptrsl);
    162   // CHECK: insertelement <2 x i64> <i64 undef, i64 0>, i64 %{{.*}}, i32 0
    163   vul = vec_insert_and_zero(cptrul);
    164   // CHECK: insertelement <2 x i64> <i64 undef, i64 0>, i64 %{{.*}}, i32 0
    165   vd = vec_insert_and_zero(cptrd);
    166   // CHECK: insertelement <2 x double> <double undef, double 0.000000e+00>, double %{{.*}}, i32 0
    167 
    168   vsc = vec_perm(vsc, vsc, vuc);
    169   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    170   vuc = vec_perm(vuc, vuc, vuc);
    171   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    172   vbc = vec_perm(vbc, vbc, vuc);
    173   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    174   vss = vec_perm(vss, vss, vuc);
    175   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    176   vus = vec_perm(vus, vus, vuc);
    177   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    178   vbs = vec_perm(vbs, vbs, vuc);
    179   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    180   vsi = vec_perm(vsi, vsi, vuc);
    181   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    182   vui = vec_perm(vui, vui, vuc);
    183   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    184   vbi = vec_perm(vbi, vbi, vuc);
    185   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    186   vsl = vec_perm(vsl, vsl, vuc);
    187   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    188   vul = vec_perm(vul, vul, vuc);
    189   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    190   vbl = vec_perm(vbl, vbl, vuc);
    191   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    192   vd = vec_perm(vd, vd, vuc);
    193   // CHECK: call <16 x i8> @llvm.s390.vperm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    194 
    195   vsl = vec_permi(vsl, vsl, 0);
    196   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
    197   vsl = vec_permi(vsl, vsl, 1);
    198   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
    199   vsl = vec_permi(vsl, vsl, 2);
    200   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
    201   vsl = vec_permi(vsl, vsl, 3);
    202   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
    203   vul = vec_permi(vul, vul, 0);
    204   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
    205   vul = vec_permi(vul, vul, 1);
    206   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
    207   vul = vec_permi(vul, vul, 2);
    208   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
    209   vul = vec_permi(vul, vul, 3);
    210   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
    211   vbl = vec_permi(vbl, vbl, 0);
    212   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
    213   vbl = vec_permi(vbl, vbl, 1);
    214   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
    215   vbl = vec_permi(vbl, vbl, 2);
    216   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
    217   vbl = vec_permi(vbl, vbl, 3);
    218   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
    219   vd = vec_permi(vd, vd, 0);
    220   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
    221   vd = vec_permi(vd, vd, 1);
    222   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 1)
    223   vd = vec_permi(vd, vd, 2);
    224   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 4)
    225   vd = vec_permi(vd, vd, 3);
    226   // CHECK: call <2 x i64> @llvm.s390.vpdi(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 5)
    227 
    228   vsc = vec_sel(vsc, vsc, vuc);
    229   vsc = vec_sel(vsc, vsc, vbc);
    230   vuc = vec_sel(vuc, vuc, vuc);
    231   vuc = vec_sel(vuc, vuc, vbc);
    232   vbc = vec_sel(vbc, vbc, vuc);
    233   vbc = vec_sel(vbc, vbc, vbc);
    234   vss = vec_sel(vss, vss, vus);
    235   vss = vec_sel(vss, vss, vbs);
    236   vus = vec_sel(vus, vus, vus);
    237   vus = vec_sel(vus, vus, vbs);
    238   vbs = vec_sel(vbs, vbs, vus);
    239   vbs = vec_sel(vbs, vbs, vbs);
    240   vsi = vec_sel(vsi, vsi, vui);
    241   vsi = vec_sel(vsi, vsi, vbi);
    242   vui = vec_sel(vui, vui, vui);
    243   vui = vec_sel(vui, vui, vbi);
    244   vbi = vec_sel(vbi, vbi, vui);
    245   vbi = vec_sel(vbi, vbi, vbi);
    246   vsl = vec_sel(vsl, vsl, vul);
    247   vsl = vec_sel(vsl, vsl, vbl);
    248   vul = vec_sel(vul, vul, vul);
    249   vul = vec_sel(vul, vul, vbl);
    250   vbl = vec_sel(vbl, vbl, vul);
    251   vbl = vec_sel(vbl, vbl, vbl);
    252   vd = vec_sel(vd, vd, vul);
    253   vd = vec_sel(vd, vd, vbl);
    254 
    255   vsi = vec_gather_element(vsi, vui, cptrsi, 0);
    256   vsi = vec_gather_element(vsi, vui, cptrsi, 1);
    257   vsi = vec_gather_element(vsi, vui, cptrsi, 2);
    258   vsi = vec_gather_element(vsi, vui, cptrsi, 3);
    259   vui = vec_gather_element(vui, vui, cptrui, 0);
    260   vui = vec_gather_element(vui, vui, cptrui, 1);
    261   vui = vec_gather_element(vui, vui, cptrui, 2);
    262   vui = vec_gather_element(vui, vui, cptrui, 3);
    263   vbi = vec_gather_element(vbi, vui, cptrui, 0);
    264   vbi = vec_gather_element(vbi, vui, cptrui, 1);
    265   vbi = vec_gather_element(vbi, vui, cptrui, 2);
    266   vbi = vec_gather_element(vbi, vui, cptrui, 3);
    267   vsl = vec_gather_element(vsl, vul, cptrsl, 0);
    268   vsl = vec_gather_element(vsl, vul, cptrsl, 1);
    269   vul = vec_gather_element(vul, vul, cptrul, 0);
    270   vul = vec_gather_element(vul, vul, cptrul, 1);
    271   vbl = vec_gather_element(vbl, vul, cptrul, 0);
    272   vbl = vec_gather_element(vbl, vul, cptrul, 1);
    273   vd = vec_gather_element(vd, vul, cptrd, 0);
    274   vd = vec_gather_element(vd, vul, cptrd, 1);
    275 
    276   vec_scatter_element(vsi, vui, ptrsi, 0);
    277   vec_scatter_element(vsi, vui, ptrsi, 1);
    278   vec_scatter_element(vsi, vui, ptrsi, 2);
    279   vec_scatter_element(vsi, vui, ptrsi, 3);
    280   vec_scatter_element(vui, vui, ptrui, 0);
    281   vec_scatter_element(vui, vui, ptrui, 1);
    282   vec_scatter_element(vui, vui, ptrui, 2);
    283   vec_scatter_element(vui, vui, ptrui, 3);
    284   vec_scatter_element(vbi, vui, ptrui, 0);
    285   vec_scatter_element(vbi, vui, ptrui, 1);
    286   vec_scatter_element(vbi, vui, ptrui, 2);
    287   vec_scatter_element(vbi, vui, ptrui, 3);
    288   vec_scatter_element(vsl, vul, ptrsl, 0);
    289   vec_scatter_element(vsl, vul, ptrsl, 1);
    290   vec_scatter_element(vul, vul, ptrul, 0);
    291   vec_scatter_element(vul, vul, ptrul, 1);
    292   vec_scatter_element(vbl, vul, ptrul, 0);
    293   vec_scatter_element(vbl, vul, ptrul, 1);
    294   vec_scatter_element(vd, vul, ptrd, 0);
    295   vec_scatter_element(vd, vul, ptrd, 1);
    296 
    297   vsc = vec_xld2(idx, cptrsc);
    298   vuc = vec_xld2(idx, cptruc);
    299   vss = vec_xld2(idx, cptrss);
    300   vus = vec_xld2(idx, cptrus);
    301   vsi = vec_xld2(idx, cptrsi);
    302   vui = vec_xld2(idx, cptrui);
    303   vsl = vec_xld2(idx, cptrsl);
    304   vul = vec_xld2(idx, cptrul);
    305   vd = vec_xld2(idx, cptrd);
    306 
    307   vsc = vec_xlw4(idx, cptrsc);
    308   vuc = vec_xlw4(idx, cptruc);
    309   vss = vec_xlw4(idx, cptrss);
    310   vus = vec_xlw4(idx, cptrus);
    311   vsi = vec_xlw4(idx, cptrsi);
    312   vui = vec_xlw4(idx, cptrui);
    313 
    314   vec_xstd2(vsc, idx, ptrsc);
    315   vec_xstd2(vuc, idx, ptruc);
    316   vec_xstd2(vss, idx, ptrss);
    317   vec_xstd2(vus, idx, ptrus);
    318   vec_xstd2(vsi, idx, ptrsi);
    319   vec_xstd2(vui, idx, ptrui);
    320   vec_xstd2(vsl, idx, ptrsl);
    321   vec_xstd2(vul, idx, ptrul);
    322   vec_xstd2(vd, idx, ptrd);
    323 
    324   vec_xstw4(vsc, idx, ptrsc);
    325   vec_xstw4(vuc, idx, ptruc);
    326   vec_xstw4(vss, idx, ptrss);
    327   vec_xstw4(vus, idx, ptrus);
    328   vec_xstw4(vsi, idx, ptrsi);
    329   vec_xstw4(vui, idx, ptrui);
    330 
    331   vsc = vec_load_bndry(cptrsc, 64);
    332   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    333   vuc = vec_load_bndry(cptruc, 64);
    334   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    335   vss = vec_load_bndry(cptrss, 64);
    336   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    337   vus = vec_load_bndry(cptrus, 64);
    338   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    339   vsi = vec_load_bndry(cptrsi, 64);
    340   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    341   vui = vec_load_bndry(cptrui, 64);
    342   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    343   vsl = vec_load_bndry(cptrsl, 64);
    344   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    345   vul = vec_load_bndry(cptrul, 64);
    346   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    347   vd = vec_load_bndry(cptrd, 64);
    348   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 0)
    349   vsc = vec_load_bndry(cptrsc, 128);
    350   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 1)
    351   vsc = vec_load_bndry(cptrsc, 256);
    352   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 2)
    353   vsc = vec_load_bndry(cptrsc, 512);
    354   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 3)
    355   vsc = vec_load_bndry(cptrsc, 1024);
    356   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 4)
    357   vsc = vec_load_bndry(cptrsc, 2048);
    358   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 5)
    359   vsc = vec_load_bndry(cptrsc, 4096);
    360   // CHECK: call <16 x i8> @llvm.s390.vlbb(i8* %{{.*}}, i32 6)
    361 
    362   vsc = vec_load_len(cptrsc, idx);
    363   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    364   vuc = vec_load_len(cptruc, idx);
    365   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    366   vss = vec_load_len(cptrss, idx);
    367   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    368   vus = vec_load_len(cptrus, idx);
    369   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    370   vsi = vec_load_len(cptrsi, idx);
    371   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    372   vui = vec_load_len(cptrui, idx);
    373   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    374   vsl = vec_load_len(cptrsl, idx);
    375   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    376   vul = vec_load_len(cptrul, idx);
    377   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    378   vd = vec_load_len(cptrd, idx);
    379   // CHECK: call <16 x i8> @llvm.s390.vll(i32 %{{.*}}, i8* %{{.*}})
    380 
    381   vec_store_len(vsc, ptrsc, idx);
    382   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    383   vec_store_len(vuc, ptruc, idx);
    384   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    385   vec_store_len(vss, ptrss, idx);
    386   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    387   vec_store_len(vus, ptrus, idx);
    388   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    389   vec_store_len(vsi, ptrsi, idx);
    390   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    391   vec_store_len(vui, ptrui, idx);
    392   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    393   vec_store_len(vsl, ptrsl, idx);
    394   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    395   vec_store_len(vul, ptrul, idx);
    396   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    397   vec_store_len(vd, ptrd, idx);
    398   // CHECK: call void @llvm.s390.vstl(<16 x i8> %{{.*}}, i32 %{{.*}}, i8* %{{.*}})
    399 
    400   vsl = vec_load_pair(sl, sl);
    401   vul = vec_load_pair(ul, ul);
    402 
    403   vuc = vec_genmask(0);
    404   // CHECK: <16 x i8> zeroinitializer
    405   vuc = vec_genmask(0x8000);
    406   // CHECK: <16 x i8> <i8 -1, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>
    407   vuc = vec_genmask(0xffff);
    408   // CHECK: <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>
    409 
    410   vuc = vec_genmasks_8(0, 7);
    411   // CHECK: <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>
    412   vuc = vec_genmasks_8(1, 4);
    413   // CHECK: <16 x i8> <i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120, i8 120>
    414   vuc = vec_genmasks_8(6, 2);
    415   // CHECK: <16 x i8> <i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29, i8 -29>
    416   vus = vec_genmasks_16(0, 15);
    417   // CHECK: <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
    418   vus = vec_genmasks_16(2, 11);
    419   // CHECK: <8 x i16> <i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368, i16 16368>
    420   vus = vec_genmasks_16(9, 2);
    421   // CHECK:  <8 x i16> <i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065, i16 -8065>
    422   vui = vec_genmasks_32(0, 31);
    423   // CHECK: <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
    424   vui = vec_genmasks_32(7, 20);
    425   // CHECK: <4 x i32> <i32 33552384, i32 33552384, i32 33552384, i32 33552384>
    426   vui = vec_genmasks_32(25, 4);
    427   // CHECK: <4 x i32> <i32 -134217601, i32 -134217601, i32 -134217601, i32 -134217601>
    428   vul = vec_genmasks_64(0, 63);
    429   // CHECK: <2 x i64> <i64 -1, i64 -1>
    430   vul = vec_genmasks_64(3, 40);
    431   // CHECK: <2 x i64> <i64 2305843009205305344, i64 2305843009205305344>
    432   vul = vec_genmasks_64(30, 11);
    433   // CHECK: <2 x i64> <i64 -4503582447501313, i64 -4503582447501313>
    434 
    435   vsc = vec_splat(vsc, 0);
    436   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
    437   vsc = vec_splat(vsc, 15);
    438   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
    439   vuc = vec_splat(vuc, 0);
    440   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
    441   vuc = vec_splat(vuc, 15);
    442   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
    443   vbc = vec_splat(vbc, 0);
    444   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
    445   vbc = vec_splat(vbc, 15);
    446   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>
    447   vss = vec_splat(vss, 0);
    448   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
    449   vss = vec_splat(vss, 7);
    450   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
    451   vus = vec_splat(vus, 0);
    452   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
    453   vus = vec_splat(vus, 7);
    454   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
    455   vbs = vec_splat(vbs, 0);
    456   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
    457   vbs = vec_splat(vbs, 7);
    458   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>
    459   vsi = vec_splat(vsi, 0);
    460   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
    461   vsi = vec_splat(vsi, 3);
    462   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
    463   vui = vec_splat(vui, 0);
    464   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
    465   vui = vec_splat(vui, 3);
    466   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
    467   vbi = vec_splat(vbi, 0);
    468   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
    469   vbi = vec_splat(vbi, 3);
    470   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>
    471   vsl = vec_splat(vsl, 0);
    472   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
    473   vsl = vec_splat(vsl, 1);
    474   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
    475   vul = vec_splat(vul, 0);
    476   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
    477   vul = vec_splat(vul, 1);
    478   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
    479   vbl = vec_splat(vbl, 0);
    480   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
    481   vbl = vec_splat(vbl, 1);
    482   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> <i32 1, i32 1>
    483   vd = vec_splat(vd, 0);
    484   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> zeroinitializer
    485   vd = vec_splat(vd, 1);
    486   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> <i32 1, i32 1>
    487 
    488   vsc = vec_splat_s8(-128);
    489   // CHECK: <16 x i8> <i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128>
    490   vsc = vec_splat_s8(127);
    491   // CHECK: <16 x i8> <i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127, i8 127>
    492   vuc = vec_splat_u8(1);
    493   // CHECK: <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>
    494   vuc = vec_splat_u8(254);
    495   // CHECK: <16 x i8> <i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2, i8 -2>
    496   vss = vec_splat_s16(-32768);
    497   // CHECK: <8 x i16> <i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768, i16 -32768>
    498   vss = vec_splat_s16(32767);
    499   // CHECK: <8 x i16> <i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767, i16 32767>
    500   vus = vec_splat_u16(1);
    501   // CHECK: <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
    502   vus = vec_splat_u16(65534);
    503   // CHECK: <8 x i16> <i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2>
    504   vsi = vec_splat_s32(-32768);
    505   // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
    506   vsi = vec_splat_s32(32767);
    507   // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
    508   vui = vec_splat_u32(-32768);
    509   // CHECK: <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
    510   vui = vec_splat_u32(32767);
    511   // CHECK: <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
    512   vsl = vec_splat_s64(-32768);
    513   // CHECK: <2 x i64> <i64 -32768, i64 -32768>
    514   vsl = vec_splat_s64(32767);
    515   // CHECK: <2 x i64> <i64 32767, i64 32767>
    516   vul = vec_splat_u64(-32768);
    517   // CHECK: <2 x i64> <i64 -32768, i64 -32768>
    518   vul = vec_splat_u64(32767);
    519   // CHECK: <2 x i64> <i64 32767, i64 32767>
    520 
    521   vsc = vec_splats(sc);
    522   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
    523   vuc = vec_splats(uc);
    524   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <16 x i32> zeroinitializer
    525   vss = vec_splats(ss);
    526   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
    527   vus = vec_splats(us);
    528   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <8 x i32> zeroinitializer
    529   vsi = vec_splats(si);
    530   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
    531   vui = vec_splats(ui);
    532   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <4 x i32> zeroinitializer
    533   vsl = vec_splats(sl);
    534   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
    535   vul = vec_splats(ul);
    536   // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <2 x i32> zeroinitializer
    537   vd = vec_splats(d);
    538   // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <2 x i32> zeroinitializer
    539 
    540   vsl = vec_extend_s64(vsc);
    541   vsl = vec_extend_s64(vss);
    542   vsl = vec_extend_s64(vsi);
    543 
    544   vsc = vec_mergeh(vsc, vsc);
    545   // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
    546   vuc = vec_mergeh(vuc, vuc);
    547   // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
    548   vbc = vec_mergeh(vbc, vbc);
    549   // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>
    550   vss = vec_mergeh(vss, vss);
    551   // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
    552   vus = vec_mergeh(vus, vus);
    553   // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
    554   vbs = vec_mergeh(vbs, vbs);
    555   // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>
    556   vsi = vec_mergeh(vsi, vsi);
    557   // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
    558   vui = vec_mergeh(vui, vui);
    559   // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
    560   vbi = vec_mergeh(vbi, vbi);
    561   // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>
    562   vsl = vec_mergeh(vsl, vsl);
    563   // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
    564   vul = vec_mergeh(vul, vul);
    565   // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
    566   vbl = vec_mergeh(vbl, vbl);
    567   // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>
    568   vd = vec_mergeh(vd, vd);
    569   // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>
    570 
    571   vsc = vec_mergel(vsc, vsc);
    572   // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
    573   vuc = vec_mergel(vuc, vuc);
    574   // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
    575   vbc = vec_mergel(vbc, vbc);
    576   // shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %a, <16 x i8> %b, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>
    577   vss = vec_mergel(vss, vss);
    578   // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
    579   vus = vec_mergel(vus, vus);
    580   // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
    581   vbs = vec_mergel(vbs, vbs);
    582   // shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
    583   vsi = vec_mergel(vsi, vsi);
    584   // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
    585   vui = vec_mergel(vui, vui);
    586   // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
    587   vbi = vec_mergel(vbi, vbi);
    588   // shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <i32 2, i32 6, i32 3, i32 7>
    589   vsl = vec_mergel(vsl, vsl);
    590   // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
    591   vul = vec_mergel(vul, vul);
    592   // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
    593   vbl = vec_mergel(vbl, vbl);
    594   // shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <i32 1, i32 3>
    595   vd = vec_mergel(vd, vd);
    596   // shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <i32 1, i32 3>
    597 
    598   vsc = vec_pack(vss, vss);
    599   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
    600   vuc = vec_pack(vus, vus);
    601   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
    602   vbc = vec_pack(vbs, vbs);
    603   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15, i32 17, i32 19, i32 21, i32 23, i32 25, i32 27, i32 29, i32 31>
    604   vss = vec_pack(vsi, vsi);
    605   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
    606   vus = vec_pack(vui, vui);
    607   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
    608   vbs = vec_pack(vbi, vbi);
    609   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
    610   vsi = vec_pack(vsl, vsl);
    611   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
    612   vui = vec_pack(vul, vul);
    613   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
    614   vbi = vec_pack(vbl, vbl);
    615   // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
    616 
    617   vsc = vec_packs(vss, vss);
    618   // CHECK: call <16 x i8> @llvm.s390.vpksh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    619   vuc = vec_packs(vus, vus);
    620   // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    621   vss = vec_packs(vsi, vsi);
    622   // CHECK: call <8 x i16> @llvm.s390.vpksf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    623   vus = vec_packs(vui, vui);
    624   // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    625   vsi = vec_packs(vsl, vsl);
    626   // CHECK: call <4 x i32> @llvm.s390.vpksg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    627   vui = vec_packs(vul, vul);
    628   // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    629 
    630   vsc = vec_packs_cc(vss, vss, &cc);
    631   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpkshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    632   vuc = vec_packs_cc(vus, vus, &cc);
    633   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    634   vss = vec_packs_cc(vsi, vsi, &cc);
    635   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpksfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    636   vus = vec_packs_cc(vui, vui, &cc);
    637   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    638   vsi = vec_packs_cc(vsl, vsl, &cc);
    639   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpksgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    640   vui = vec_packs_cc(vul, vul, &cc);
    641   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    642 
    643   vuc = vec_packsu(vss, vss);
    644   // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    645   vuc = vec_packsu(vus, vus);
    646   // CHECK: call <16 x i8> @llvm.s390.vpklsh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    647   vus = vec_packsu(vsi, vsi);
    648   // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    649   vus = vec_packsu(vui, vui);
    650   // CHECK: call <8 x i16> @llvm.s390.vpklsf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    651   vui = vec_packsu(vsl, vsl);
    652   // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    653   vui = vec_packsu(vul, vul);
    654   // CHECK: call <4 x i32> @llvm.s390.vpklsg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    655 
    656   vuc = vec_packsu_cc(vus, vus, &cc);
    657   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vpklshs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    658   vus = vec_packsu_cc(vui, vui, &cc);
    659   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vpklsfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    660   vui = vec_packsu_cc(vul, vul, &cc);
    661   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vpklsgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    662 
    663   vss = vec_unpackh(vsc);
    664   // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}})
    665   vus = vec_unpackh(vuc);
    666   // CHECK: call <8 x i16> @llvm.s390.vuplhb(<16 x i8> %{{.*}})
    667   vbs = vec_unpackh(vbc);
    668   // CHECK: call <8 x i16> @llvm.s390.vuphb(<16 x i8> %{{.*}})
    669   vsi = vec_unpackh(vss);
    670   // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}})
    671   vui = vec_unpackh(vus);
    672   // CHECK: call <4 x i32> @llvm.s390.vuplhh(<8 x i16> %{{.*}})
    673   vbi = vec_unpackh(vbs);
    674   // CHECK: call <4 x i32> @llvm.s390.vuphh(<8 x i16> %{{.*}})
    675   vsl = vec_unpackh(vsi);
    676   // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}})
    677   vul = vec_unpackh(vui);
    678   // CHECK: call <2 x i64> @llvm.s390.vuplhf(<4 x i32> %{{.*}})
    679   vbl = vec_unpackh(vbi);
    680   // CHECK: call <2 x i64> @llvm.s390.vuphf(<4 x i32> %{{.*}})
    681 
    682   vss = vec_unpackl(vsc);
    683   // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}})
    684   vus = vec_unpackl(vuc);
    685   // CHECK: call <8 x i16> @llvm.s390.vupllb(<16 x i8> %{{.*}})
    686   vbs = vec_unpackl(vbc);
    687   // CHECK: call <8 x i16> @llvm.s390.vuplb(<16 x i8> %{{.*}})
    688   vsi = vec_unpackl(vss);
    689   // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}})
    690   vui = vec_unpackl(vus);
    691   // CHECK: call <4 x i32> @llvm.s390.vupllh(<8 x i16> %{{.*}})
    692   vbi = vec_unpackl(vbs);
    693   // CHECK: call <4 x i32> @llvm.s390.vuplhw(<8 x i16> %{{.*}})
    694   vsl = vec_unpackl(vsi);
    695   // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}})
    696   vul = vec_unpackl(vui);
    697   // CHECK: call <2 x i64> @llvm.s390.vupllf(<4 x i32> %{{.*}})
    698   vbl = vec_unpackl(vbi);
    699   // CHECK: call <2 x i64> @llvm.s390.vuplf(<4 x i32> %{{.*}})
    700 }
    701 
    702 void test_compare(void) {
    703   vbc = vec_cmpeq(vsc, vsc);
    704   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
    705   vbc = vec_cmpeq(vuc, vuc);
    706   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
    707   vbc = vec_cmpeq(vbc, vbc);
    708   // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}
    709   vbs = vec_cmpeq(vss, vss);
    710   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
    711   vbs = vec_cmpeq(vus, vus);
    712   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
    713   vbs = vec_cmpeq(vbs, vbs);
    714   // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}
    715   vbi = vec_cmpeq(vsi, vsi);
    716   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
    717   vbi = vec_cmpeq(vui, vui);
    718   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
    719   vbi = vec_cmpeq(vbi, vbi);
    720   // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}
    721   vbl = vec_cmpeq(vsl, vsl);
    722   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
    723   vbl = vec_cmpeq(vul, vul);
    724   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
    725   vbl = vec_cmpeq(vbl, vbl);
    726   // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}
    727   vbl = vec_cmpeq(vd, vd);
    728   // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}
    729 
    730   vbc = vec_cmpge(vsc, vsc);
    731   // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}
    732   vbc = vec_cmpge(vuc, vuc);
    733   // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}
    734   vbs = vec_cmpge(vss, vss);
    735   // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}
    736   vbs = vec_cmpge(vus, vus);
    737   // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}
    738   vbi = vec_cmpge(vsi, vsi);
    739   // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}
    740   vbi = vec_cmpge(vui, vui);
    741   // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}
    742   vbl = vec_cmpge(vsl, vsl);
    743   // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}
    744   vbl = vec_cmpge(vul, vul);
    745   // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}
    746   vbl = vec_cmpge(vd, vd);
    747   // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}
    748 
    749   vbc = vec_cmpgt(vsc, vsc);
    750   // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}
    751   vbc = vec_cmpgt(vuc, vuc);
    752   // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}
    753   vbs = vec_cmpgt(vss, vss);
    754   // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}
    755   vbs = vec_cmpgt(vus, vus);
    756   // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}
    757   vbi = vec_cmpgt(vsi, vsi);
    758   // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}
    759   vbi = vec_cmpgt(vui, vui);
    760   // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}
    761   vbl = vec_cmpgt(vsl, vsl);
    762   // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}
    763   vbl = vec_cmpgt(vul, vul);
    764   // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}
    765   vbl = vec_cmpgt(vd, vd);
    766   // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}
    767 
    768   vbc = vec_cmple(vsc, vsc);
    769   // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}
    770   vbc = vec_cmple(vuc, vuc);
    771   // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}
    772   vbs = vec_cmple(vss, vss);
    773   // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}
    774   vbs = vec_cmple(vus, vus);
    775   // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}
    776   vbi = vec_cmple(vsi, vsi);
    777   // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}
    778   vbi = vec_cmple(vui, vui);
    779   // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}
    780   vbl = vec_cmple(vsl, vsl);
    781   // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}
    782   vbl = vec_cmple(vul, vul);
    783   // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}
    784   vbl = vec_cmple(vd, vd);
    785   // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}
    786 
    787   vbc = vec_cmplt(vsc, vsc);
    788   // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}
    789   vbc = vec_cmplt(vuc, vuc);
    790   // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}
    791   vbs = vec_cmplt(vss, vss);
    792   // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}
    793   vbs = vec_cmplt(vus, vus);
    794   // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}
    795   vbi = vec_cmplt(vsi, vsi);
    796   // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}
    797   vbi = vec_cmplt(vui, vui);
    798   // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}
    799   vbl = vec_cmplt(vsl, vsl);
    800   // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}
    801   vbl = vec_cmplt(vul, vul);
    802   // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}
    803   vbl = vec_cmplt(vd, vd);
    804   // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}
    805 
    806   idx = vec_all_eq(vsc, vsc);
    807   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    808   idx = vec_all_eq(vsc, vbc);
    809   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    810   idx = vec_all_eq(vbc, vsc);
    811   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    812   idx = vec_all_eq(vuc, vuc);
    813   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    814   idx = vec_all_eq(vuc, vbc);
    815   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    816   idx = vec_all_eq(vbc, vuc);
    817   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    818   idx = vec_all_eq(vbc, vbc);
    819   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    820   idx = vec_all_eq(vss, vss);
    821   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    822   idx = vec_all_eq(vss, vbs);
    823   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    824   idx = vec_all_eq(vbs, vss);
    825   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    826   idx = vec_all_eq(vus, vus);
    827   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    828   idx = vec_all_eq(vus, vbs);
    829   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    830   idx = vec_all_eq(vbs, vus);
    831   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    832   idx = vec_all_eq(vbs, vbs);
    833   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    834   idx = vec_all_eq(vsi, vsi);
    835   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    836   idx = vec_all_eq(vsi, vbi);
    837   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    838   idx = vec_all_eq(vbi, vsi);
    839   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    840   idx = vec_all_eq(vui, vui);
    841   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    842   idx = vec_all_eq(vui, vbi);
    843   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    844   idx = vec_all_eq(vbi, vui);
    845   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    846   idx = vec_all_eq(vbi, vbi);
    847   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    848   idx = vec_all_eq(vsl, vsl);
    849   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    850   idx = vec_all_eq(vsl, vbl);
    851   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    852   idx = vec_all_eq(vbl, vsl);
    853   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    854   idx = vec_all_eq(vul, vul);
    855   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    856   idx = vec_all_eq(vul, vbl);
    857   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    858   idx = vec_all_eq(vbl, vul);
    859   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    860   idx = vec_all_eq(vbl, vbl);
    861   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    862   idx = vec_all_eq(vd, vd);
    863   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
    864 
    865   idx = vec_all_ne(vsc, vsc);
    866   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    867   idx = vec_all_ne(vsc, vbc);
    868   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    869   idx = vec_all_ne(vbc, vsc);
    870   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    871   idx = vec_all_ne(vuc, vuc);
    872   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    873   idx = vec_all_ne(vuc, vbc);
    874   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    875   idx = vec_all_ne(vbc, vuc);
    876   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    877   idx = vec_all_ne(vbc, vbc);
    878   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    879   idx = vec_all_ne(vss, vss);
    880   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    881   idx = vec_all_ne(vss, vbs);
    882   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    883   idx = vec_all_ne(vbs, vss);
    884   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    885   idx = vec_all_ne(vus, vus);
    886   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    887   idx = vec_all_ne(vus, vbs);
    888   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    889   idx = vec_all_ne(vbs, vus);
    890   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    891   idx = vec_all_ne(vbs, vbs);
    892   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    893   idx = vec_all_ne(vsi, vsi);
    894   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    895   idx = vec_all_ne(vsi, vbi);
    896   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    897   idx = vec_all_ne(vbi, vsi);
    898   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    899   idx = vec_all_ne(vui, vui);
    900   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    901   idx = vec_all_ne(vui, vbi);
    902   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    903   idx = vec_all_ne(vbi, vui);
    904   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    905   idx = vec_all_ne(vbi, vbi);
    906   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    907   idx = vec_all_ne(vsl, vsl);
    908   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    909   idx = vec_all_ne(vsl, vbl);
    910   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    911   idx = vec_all_ne(vbl, vsl);
    912   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    913   idx = vec_all_ne(vul, vul);
    914   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    915   idx = vec_all_ne(vul, vbl);
    916   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    917   idx = vec_all_ne(vbl, vul);
    918   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    919   idx = vec_all_ne(vbl, vbl);
    920   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    921   idx = vec_all_ne(vd, vd);
    922   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
    923 
    924   idx = vec_all_ge(vsc, vsc);
    925   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    926   idx = vec_all_ge(vsc, vbc);
    927   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    928   idx = vec_all_ge(vbc, vsc);
    929   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    930   idx = vec_all_ge(vuc, vuc);
    931   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    932   idx = vec_all_ge(vuc, vbc);
    933   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    934   idx = vec_all_ge(vbc, vuc);
    935   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    936   idx = vec_all_ge(vbc, vbc);
    937   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    938   idx = vec_all_ge(vss, vss);
    939   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    940   idx = vec_all_ge(vss, vbs);
    941   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    942   idx = vec_all_ge(vbs, vss);
    943   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    944   idx = vec_all_ge(vus, vus);
    945   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    946   idx = vec_all_ge(vus, vbs);
    947   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    948   idx = vec_all_ge(vbs, vus);
    949   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    950   idx = vec_all_ge(vbs, vbs);
    951   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    952   idx = vec_all_ge(vsi, vsi);
    953   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    954   idx = vec_all_ge(vsi, vbi);
    955   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    956   idx = vec_all_ge(vbi, vsi);
    957   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    958   idx = vec_all_ge(vui, vui);
    959   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    960   idx = vec_all_ge(vui, vbi);
    961   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    962   idx = vec_all_ge(vbi, vui);
    963   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    964   idx = vec_all_ge(vbi, vbi);
    965   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
    966   idx = vec_all_ge(vsl, vsl);
    967   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    968   idx = vec_all_ge(vsl, vbl);
    969   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    970   idx = vec_all_ge(vbl, vsl);
    971   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    972   idx = vec_all_ge(vul, vul);
    973   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    974   idx = vec_all_ge(vul, vbl);
    975   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    976   idx = vec_all_ge(vbl, vul);
    977   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    978   idx = vec_all_ge(vbl, vbl);
    979   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
    980   idx = vec_all_ge(vd, vd);
    981   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
    982 
    983   idx = vec_all_gt(vsc, vsc);
    984   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    985   idx = vec_all_gt(vsc, vbc);
    986   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    987   idx = vec_all_gt(vbc, vsc);
    988   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    989   idx = vec_all_gt(vuc, vuc);
    990   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    991   idx = vec_all_gt(vuc, vbc);
    992   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    993   idx = vec_all_gt(vbc, vuc);
    994   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    995   idx = vec_all_gt(vbc, vbc);
    996   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
    997   idx = vec_all_gt(vss, vss);
    998   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
    999   idx = vec_all_gt(vss, vbs);
   1000   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1001   idx = vec_all_gt(vbs, vss);
   1002   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1003   idx = vec_all_gt(vus, vus);
   1004   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1005   idx = vec_all_gt(vus, vbs);
   1006   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1007   idx = vec_all_gt(vbs, vus);
   1008   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1009   idx = vec_all_gt(vbs, vbs);
   1010   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1011   idx = vec_all_gt(vsi, vsi);
   1012   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1013   idx = vec_all_gt(vsi, vbi);
   1014   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1015   idx = vec_all_gt(vbi, vsi);
   1016   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1017   idx = vec_all_gt(vui, vui);
   1018   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1019   idx = vec_all_gt(vui, vbi);
   1020   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1021   idx = vec_all_gt(vbi, vui);
   1022   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1023   idx = vec_all_gt(vbi, vbi);
   1024   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1025   idx = vec_all_gt(vsl, vsl);
   1026   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1027   idx = vec_all_gt(vsl, vbl);
   1028   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1029   idx = vec_all_gt(vbl, vsl);
   1030   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1031   idx = vec_all_gt(vul, vul);
   1032   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1033   idx = vec_all_gt(vul, vbl);
   1034   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1035   idx = vec_all_gt(vbl, vul);
   1036   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1037   idx = vec_all_gt(vbl, vbl);
   1038   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1039   idx = vec_all_gt(vd, vd);
   1040   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1041 
   1042   idx = vec_all_le(vsc, vsc);
   1043   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1044   idx = vec_all_le(vsc, vbc);
   1045   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1046   idx = vec_all_le(vbc, vsc);
   1047   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1048   idx = vec_all_le(vuc, vuc);
   1049   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1050   idx = vec_all_le(vuc, vbc);
   1051   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1052   idx = vec_all_le(vbc, vuc);
   1053   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1054   idx = vec_all_le(vbc, vbc);
   1055   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1056   idx = vec_all_le(vss, vss);
   1057   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1058   idx = vec_all_le(vss, vbs);
   1059   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1060   idx = vec_all_le(vbs, vss);
   1061   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1062   idx = vec_all_le(vus, vus);
   1063   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1064   idx = vec_all_le(vus, vbs);
   1065   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1066   idx = vec_all_le(vbs, vus);
   1067   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1068   idx = vec_all_le(vbs, vbs);
   1069   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1070   idx = vec_all_le(vsi, vsi);
   1071   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1072   idx = vec_all_le(vsi, vbi);
   1073   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1074   idx = vec_all_le(vbi, vsi);
   1075   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1076   idx = vec_all_le(vui, vui);
   1077   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1078   idx = vec_all_le(vui, vbi);
   1079   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1080   idx = vec_all_le(vbi, vui);
   1081   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1082   idx = vec_all_le(vbi, vbi);
   1083   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1084   idx = vec_all_le(vsl, vsl);
   1085   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1086   idx = vec_all_le(vsl, vbl);
   1087   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1088   idx = vec_all_le(vbl, vsl);
   1089   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1090   idx = vec_all_le(vul, vul);
   1091   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1092   idx = vec_all_le(vul, vbl);
   1093   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1094   idx = vec_all_le(vbl, vul);
   1095   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1096   idx = vec_all_le(vbl, vbl);
   1097   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1098   idx = vec_all_le(vd, vd);
   1099   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1100 
   1101   idx = vec_all_lt(vsc, vsc);
   1102   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1103   idx = vec_all_lt(vsc, vbc);
   1104   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1105   idx = vec_all_lt(vbc, vsc);
   1106   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1107   idx = vec_all_lt(vuc, vuc);
   1108   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1109   idx = vec_all_lt(vuc, vbc);
   1110   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1111   idx = vec_all_lt(vbc, vuc);
   1112   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1113   idx = vec_all_lt(vbc, vbc);
   1114   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1115   idx = vec_all_lt(vss, vss);
   1116   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1117   idx = vec_all_lt(vss, vbs);
   1118   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1119   idx = vec_all_lt(vbs, vss);
   1120   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1121   idx = vec_all_lt(vus, vus);
   1122   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1123   idx = vec_all_lt(vus, vbs);
   1124   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1125   idx = vec_all_lt(vbs, vus);
   1126   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1127   idx = vec_all_lt(vbs, vbs);
   1128   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1129   idx = vec_all_lt(vsi, vsi);
   1130   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1131   idx = vec_all_lt(vsi, vbi);
   1132   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1133   idx = vec_all_lt(vbi, vsi);
   1134   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1135   idx = vec_all_lt(vui, vui);
   1136   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1137   idx = vec_all_lt(vui, vbi);
   1138   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1139   idx = vec_all_lt(vbi, vui);
   1140   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1141   idx = vec_all_lt(vbi, vbi);
   1142   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1143   idx = vec_all_lt(vsl, vsl);
   1144   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1145   idx = vec_all_lt(vsl, vbl);
   1146   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1147   idx = vec_all_lt(vbl, vsl);
   1148   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1149   idx = vec_all_lt(vul, vul);
   1150   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1151   idx = vec_all_lt(vul, vbl);
   1152   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1153   idx = vec_all_lt(vbl, vul);
   1154   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1155   idx = vec_all_lt(vbl, vbl);
   1156   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1157   idx = vec_all_lt(vd, vd);
   1158   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1159 
   1160   idx = vec_all_nge(vd, vd);
   1161   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1162   idx = vec_all_ngt(vd, vd);
   1163   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1164   idx = vec_all_nle(vd, vd);
   1165   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1166   idx = vec_all_nlt(vd, vd);
   1167   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1168 
   1169   idx = vec_all_nan(vd);
   1170   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
   1171   idx = vec_all_numeric(vd);
   1172   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
   1173 
   1174   idx = vec_any_eq(vsc, vsc);
   1175   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1176   idx = vec_any_eq(vsc, vbc);
   1177   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1178   idx = vec_any_eq(vbc, vsc);
   1179   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1180   idx = vec_any_eq(vuc, vuc);
   1181   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1182   idx = vec_any_eq(vuc, vbc);
   1183   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1184   idx = vec_any_eq(vbc, vuc);
   1185   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1186   idx = vec_any_eq(vbc, vbc);
   1187   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1188   idx = vec_any_eq(vss, vss);
   1189   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1190   idx = vec_any_eq(vss, vbs);
   1191   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1192   idx = vec_any_eq(vbs, vss);
   1193   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1194   idx = vec_any_eq(vus, vus);
   1195   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1196   idx = vec_any_eq(vus, vbs);
   1197   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1198   idx = vec_any_eq(vbs, vus);
   1199   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1200   idx = vec_any_eq(vbs, vbs);
   1201   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1202   idx = vec_any_eq(vsi, vsi);
   1203   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1204   idx = vec_any_eq(vsi, vbi);
   1205   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1206   idx = vec_any_eq(vbi, vsi);
   1207   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1208   idx = vec_any_eq(vui, vui);
   1209   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1210   idx = vec_any_eq(vui, vbi);
   1211   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1212   idx = vec_any_eq(vbi, vui);
   1213   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1214   idx = vec_any_eq(vbi, vbi);
   1215   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1216   idx = vec_any_eq(vsl, vsl);
   1217   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1218   idx = vec_any_eq(vsl, vbl);
   1219   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1220   idx = vec_any_eq(vbl, vsl);
   1221   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1222   idx = vec_any_eq(vul, vul);
   1223   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1224   idx = vec_any_eq(vul, vbl);
   1225   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1226   idx = vec_any_eq(vbl, vul);
   1227   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1228   idx = vec_any_eq(vbl, vbl);
   1229   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1230   idx = vec_any_eq(vd, vd);
   1231   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1232 
   1233   idx = vec_any_ne(vsc, vsc);
   1234   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1235   idx = vec_any_ne(vsc, vbc);
   1236   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1237   idx = vec_any_ne(vbc, vsc);
   1238   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1239   idx = vec_any_ne(vuc, vuc);
   1240   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1241   idx = vec_any_ne(vuc, vbc);
   1242   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1243   idx = vec_any_ne(vbc, vuc);
   1244   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1245   idx = vec_any_ne(vbc, vbc);
   1246   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vceqbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1247   idx = vec_any_ne(vss, vss);
   1248   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1249   idx = vec_any_ne(vss, vbs);
   1250   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1251   idx = vec_any_ne(vbs, vss);
   1252   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1253   idx = vec_any_ne(vus, vus);
   1254   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1255   idx = vec_any_ne(vus, vbs);
   1256   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1257   idx = vec_any_ne(vbs, vus);
   1258   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1259   idx = vec_any_ne(vbs, vbs);
   1260   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vceqhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1261   idx = vec_any_ne(vsi, vsi);
   1262   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1263   idx = vec_any_ne(vsi, vbi);
   1264   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1265   idx = vec_any_ne(vbi, vsi);
   1266   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1267   idx = vec_any_ne(vui, vui);
   1268   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1269   idx = vec_any_ne(vui, vbi);
   1270   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1271   idx = vec_any_ne(vbi, vui);
   1272   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1273   idx = vec_any_ne(vbi, vbi);
   1274   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vceqfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1275   idx = vec_any_ne(vsl, vsl);
   1276   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1277   idx = vec_any_ne(vsl, vbl);
   1278   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1279   idx = vec_any_ne(vbl, vsl);
   1280   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1281   idx = vec_any_ne(vul, vul);
   1282   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1283   idx = vec_any_ne(vul, vbl);
   1284   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1285   idx = vec_any_ne(vbl, vul);
   1286   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1287   idx = vec_any_ne(vbl, vbl);
   1288   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vceqgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1289   idx = vec_any_ne(vd, vd);
   1290   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfcedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1291 
   1292   idx = vec_any_ge(vsc, vsc);
   1293   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1294   idx = vec_any_ge(vsc, vbc);
   1295   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1296   idx = vec_any_ge(vbc, vsc);
   1297   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1298   idx = vec_any_ge(vuc, vuc);
   1299   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1300   idx = vec_any_ge(vuc, vbc);
   1301   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1302   idx = vec_any_ge(vbc, vuc);
   1303   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1304   idx = vec_any_ge(vbc, vbc);
   1305   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1306   idx = vec_any_ge(vss, vss);
   1307   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1308   idx = vec_any_ge(vss, vbs);
   1309   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1310   idx = vec_any_ge(vbs, vss);
   1311   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1312   idx = vec_any_ge(vus, vus);
   1313   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1314   idx = vec_any_ge(vus, vbs);
   1315   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1316   idx = vec_any_ge(vbs, vus);
   1317   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1318   idx = vec_any_ge(vbs, vbs);
   1319   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1320   idx = vec_any_ge(vsi, vsi);
   1321   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1322   idx = vec_any_ge(vsi, vbi);
   1323   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1324   idx = vec_any_ge(vbi, vsi);
   1325   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1326   idx = vec_any_ge(vui, vui);
   1327   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1328   idx = vec_any_ge(vui, vbi);
   1329   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1330   idx = vec_any_ge(vbi, vui);
   1331   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1332   idx = vec_any_ge(vbi, vbi);
   1333   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1334   idx = vec_any_ge(vsl, vsl);
   1335   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1336   idx = vec_any_ge(vsl, vbl);
   1337   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1338   idx = vec_any_ge(vbl, vsl);
   1339   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1340   idx = vec_any_ge(vul, vul);
   1341   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1342   idx = vec_any_ge(vul, vbl);
   1343   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1344   idx = vec_any_ge(vbl, vul);
   1345   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1346   idx = vec_any_ge(vbl, vbl);
   1347   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1348   idx = vec_any_ge(vd, vd);
   1349   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1350 
   1351   idx = vec_any_gt(vsc, vsc);
   1352   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1353   idx = vec_any_gt(vsc, vbc);
   1354   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1355   idx = vec_any_gt(vbc, vsc);
   1356   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1357   idx = vec_any_gt(vuc, vuc);
   1358   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1359   idx = vec_any_gt(vuc, vbc);
   1360   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1361   idx = vec_any_gt(vbc, vuc);
   1362   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1363   idx = vec_any_gt(vbc, vbc);
   1364   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1365   idx = vec_any_gt(vss, vss);
   1366   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1367   idx = vec_any_gt(vss, vbs);
   1368   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1369   idx = vec_any_gt(vbs, vss);
   1370   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1371   idx = vec_any_gt(vus, vus);
   1372   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1373   idx = vec_any_gt(vus, vbs);
   1374   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1375   idx = vec_any_gt(vbs, vus);
   1376   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1377   idx = vec_any_gt(vbs, vbs);
   1378   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1379   idx = vec_any_gt(vsi, vsi);
   1380   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1381   idx = vec_any_gt(vsi, vbi);
   1382   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1383   idx = vec_any_gt(vbi, vsi);
   1384   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1385   idx = vec_any_gt(vui, vui);
   1386   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1387   idx = vec_any_gt(vui, vbi);
   1388   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1389   idx = vec_any_gt(vbi, vui);
   1390   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1391   idx = vec_any_gt(vbi, vbi);
   1392   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1393   idx = vec_any_gt(vsl, vsl);
   1394   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1395   idx = vec_any_gt(vsl, vbl);
   1396   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1397   idx = vec_any_gt(vbl, vsl);
   1398   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1399   idx = vec_any_gt(vul, vul);
   1400   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1401   idx = vec_any_gt(vul, vbl);
   1402   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1403   idx = vec_any_gt(vbl, vul);
   1404   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1405   idx = vec_any_gt(vbl, vbl);
   1406   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1407   idx = vec_any_gt(vd, vd);
   1408   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1409 
   1410   idx = vec_any_le(vsc, vsc);
   1411   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1412   idx = vec_any_le(vsc, vbc);
   1413   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1414   idx = vec_any_le(vbc, vsc);
   1415   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1416   idx = vec_any_le(vuc, vuc);
   1417   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1418   idx = vec_any_le(vuc, vbc);
   1419   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1420   idx = vec_any_le(vbc, vuc);
   1421   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1422   idx = vec_any_le(vbc, vbc);
   1423   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1424   idx = vec_any_le(vss, vss);
   1425   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1426   idx = vec_any_le(vss, vbs);
   1427   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1428   idx = vec_any_le(vbs, vss);
   1429   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1430   idx = vec_any_le(vus, vus);
   1431   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1432   idx = vec_any_le(vus, vbs);
   1433   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1434   idx = vec_any_le(vbs, vus);
   1435   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1436   idx = vec_any_le(vbs, vbs);
   1437   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1438   idx = vec_any_le(vsi, vsi);
   1439   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1440   idx = vec_any_le(vsi, vbi);
   1441   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1442   idx = vec_any_le(vbi, vsi);
   1443   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1444   idx = vec_any_le(vui, vui);
   1445   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1446   idx = vec_any_le(vui, vbi);
   1447   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1448   idx = vec_any_le(vbi, vui);
   1449   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1450   idx = vec_any_le(vbi, vbi);
   1451   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1452   idx = vec_any_le(vsl, vsl);
   1453   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1454   idx = vec_any_le(vsl, vbl);
   1455   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1456   idx = vec_any_le(vbl, vsl);
   1457   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1458   idx = vec_any_le(vul, vul);
   1459   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1460   idx = vec_any_le(vul, vbl);
   1461   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1462   idx = vec_any_le(vbl, vul);
   1463   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1464   idx = vec_any_le(vbl, vbl);
   1465   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1466   idx = vec_any_le(vd, vd);
   1467   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1468 
   1469   idx = vec_any_lt(vsc, vsc);
   1470   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1471   idx = vec_any_lt(vsc, vbc);
   1472   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1473   idx = vec_any_lt(vbc, vsc);
   1474   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1475   idx = vec_any_lt(vuc, vuc);
   1476   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1477   idx = vec_any_lt(vuc, vbc);
   1478   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1479   idx = vec_any_lt(vbc, vuc);
   1480   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1481   idx = vec_any_lt(vbc, vbc);
   1482   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vchlbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1483   idx = vec_any_lt(vss, vss);
   1484   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1485   idx = vec_any_lt(vss, vbs);
   1486   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1487   idx = vec_any_lt(vbs, vss);
   1488   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1489   idx = vec_any_lt(vus, vus);
   1490   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1491   idx = vec_any_lt(vus, vbs);
   1492   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1493   idx = vec_any_lt(vbs, vus);
   1494   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1495   idx = vec_any_lt(vbs, vbs);
   1496   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vchlhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1497   idx = vec_any_lt(vsi, vsi);
   1498   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1499   idx = vec_any_lt(vsi, vbi);
   1500   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1501   idx = vec_any_lt(vbi, vsi);
   1502   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1503   idx = vec_any_lt(vui, vui);
   1504   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1505   idx = vec_any_lt(vui, vbi);
   1506   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1507   idx = vec_any_lt(vbi, vui);
   1508   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1509   idx = vec_any_lt(vbi, vbi);
   1510   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vchlfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1511   idx = vec_any_lt(vsl, vsl);
   1512   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1513   idx = vec_any_lt(vsl, vbl);
   1514   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1515   idx = vec_any_lt(vbl, vsl);
   1516   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1517   idx = vec_any_lt(vul, vul);
   1518   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1519   idx = vec_any_lt(vul, vbl);
   1520   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1521   idx = vec_any_lt(vbl, vul);
   1522   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1523   idx = vec_any_lt(vbl, vbl);
   1524   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vchlgs(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1525   idx = vec_any_lt(vd, vd);
   1526   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1527 
   1528   idx = vec_any_nge(vd, vd);
   1529   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1530   idx = vec_any_ngt(vd, vd);
   1531   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1532   idx = vec_any_nle(vd, vd);
   1533   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchedbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1534   idx = vec_any_nlt(vd, vd);
   1535   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vfchdbs(<2 x double> %{{.*}}, <2 x double> %{{.*}})
   1536 
   1537   idx = vec_any_nan(vd);
   1538   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
   1539   idx = vec_any_numeric(vd);
   1540   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 15)
   1541 }
   1542 
   1543 void test_integer(void) {
   1544   vsc = vec_andc(vsc, vsc);
   1545   vsc = vec_andc(vsc, vbc);
   1546   vsc = vec_andc(vbc, vsc);
   1547   vuc = vec_andc(vuc, vuc);
   1548   vuc = vec_andc(vuc, vbc);
   1549   vuc = vec_andc(vbc, vuc);
   1550   vbc = vec_andc(vbc, vbc);
   1551   vss = vec_andc(vss, vss);
   1552   vss = vec_andc(vss, vbs);
   1553   vss = vec_andc(vbs, vss);
   1554   vus = vec_andc(vus, vus);
   1555   vus = vec_andc(vus, vbs);
   1556   vus = vec_andc(vbs, vus);
   1557   vbs = vec_andc(vbs, vbs);
   1558   vsi = vec_andc(vsi, vsi);
   1559   vsi = vec_andc(vsi, vbi);
   1560   vsi = vec_andc(vbi, vsi);
   1561   vui = vec_andc(vui, vui);
   1562   vui = vec_andc(vui, vbi);
   1563   vui = vec_andc(vbi, vui);
   1564   vbi = vec_andc(vbi, vbi);
   1565   vsl = vec_andc(vsl, vsl);
   1566   vsl = vec_andc(vsl, vbl);
   1567   vsl = vec_andc(vbl, vsl);
   1568   vul = vec_andc(vul, vul);
   1569   vul = vec_andc(vul, vbl);
   1570   vul = vec_andc(vbl, vul);
   1571   vbl = vec_andc(vbl, vbl);
   1572   vd = vec_andc(vd, vd);
   1573   vd = vec_andc(vd, vbl);
   1574   vd = vec_andc(vbl, vd);
   1575 
   1576   vsc = vec_nor(vsc, vsc);
   1577   vsc = vec_nor(vsc, vbc);
   1578   vsc = vec_nor(vbc, vsc);
   1579   vuc = vec_nor(vuc, vuc);
   1580   vuc = vec_nor(vuc, vbc);
   1581   vuc = vec_nor(vbc, vuc);
   1582   vbc = vec_nor(vbc, vbc);
   1583   vss = vec_nor(vss, vss);
   1584   vss = vec_nor(vss, vbs);
   1585   vss = vec_nor(vbs, vss);
   1586   vus = vec_nor(vus, vus);
   1587   vus = vec_nor(vus, vbs);
   1588   vus = vec_nor(vbs, vus);
   1589   vbs = vec_nor(vbs, vbs);
   1590   vsi = vec_nor(vsi, vsi);
   1591   vsi = vec_nor(vsi, vbi);
   1592   vsi = vec_nor(vbi, vsi);
   1593   vui = vec_nor(vui, vui);
   1594   vui = vec_nor(vui, vbi);
   1595   vui = vec_nor(vbi, vui);
   1596   vbi = vec_nor(vbi, vbi);
   1597   vsl = vec_nor(vsl, vsl);
   1598   vsl = vec_nor(vsl, vbl);
   1599   vsl = vec_nor(vbl, vsl);
   1600   vul = vec_nor(vul, vul);
   1601   vul = vec_nor(vul, vbl);
   1602   vul = vec_nor(vbl, vul);
   1603   vbl = vec_nor(vbl, vbl);
   1604   vd = vec_nor(vd, vd);
   1605   vd = vec_nor(vd, vbl);
   1606   vd = vec_nor(vbl, vd);
   1607 
   1608   vuc = vec_cntlz(vsc);
   1609   // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false)
   1610   vuc = vec_cntlz(vuc);
   1611   // CHECK: call <16 x i8> @llvm.ctlz.v16i8(<16 x i8> %{{.*}}, i1 false)
   1612   vus = vec_cntlz(vss);
   1613   // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false)
   1614   vus = vec_cntlz(vus);
   1615   // CHECK: call <8 x i16> @llvm.ctlz.v8i16(<8 x i16> %{{.*}}, i1 false)
   1616   vui = vec_cntlz(vsi);
   1617   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
   1618   vui = vec_cntlz(vui);
   1619   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
   1620   vul = vec_cntlz(vsl);
   1621   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
   1622   vul = vec_cntlz(vul);
   1623   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
   1624 
   1625   vuc = vec_cnttz(vsc);
   1626   // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false)
   1627   vuc = vec_cnttz(vuc);
   1628   // CHECK: call <16 x i8> @llvm.cttz.v16i8(<16 x i8> %{{.*}}, i1 false)
   1629   vus = vec_cnttz(vss);
   1630   // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false)
   1631   vus = vec_cnttz(vus);
   1632   // CHECK: call <8 x i16> @llvm.cttz.v8i16(<8 x i16> %{{.*}}, i1 false)
   1633   vui = vec_cnttz(vsi);
   1634   // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false)
   1635   vui = vec_cnttz(vui);
   1636   // CHECK: call <4 x i32> @llvm.cttz.v4i32(<4 x i32> %{{.*}}, i1 false)
   1637   vul = vec_cnttz(vsl);
   1638   // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false)
   1639   vul = vec_cnttz(vul);
   1640   // CHECK: call <2 x i64> @llvm.cttz.v2i64(<2 x i64> %{{.*}}, i1 false)
   1641 
   1642   vuc = vec_popcnt(vsc);
   1643   // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}})
   1644   vuc = vec_popcnt(vuc);
   1645   // CHECK: call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %{{.*}})
   1646   vus = vec_popcnt(vss);
   1647   // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}})
   1648   vus = vec_popcnt(vus);
   1649   // CHECK: call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %{{.*}})
   1650   vui = vec_popcnt(vsi);
   1651   // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}})
   1652   vui = vec_popcnt(vui);
   1653   // CHECK: call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %{{.*}})
   1654   vul = vec_popcnt(vsl);
   1655   // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}})
   1656   vul = vec_popcnt(vul);
   1657   // CHECK: call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %{{.*}})
   1658 
   1659   vsc = vec_rl(vsc, vuc);
   1660   // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1661   vuc = vec_rl(vuc, vuc);
   1662   // CHECK: call <16 x i8> @llvm.s390.verllvb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1663   vss = vec_rl(vss, vus);
   1664   // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1665   vus = vec_rl(vus, vus);
   1666   // CHECK: call <8 x i16> @llvm.s390.verllvh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   1667   vsi = vec_rl(vsi, vui);
   1668   // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1669   vui = vec_rl(vui, vui);
   1670   // CHECK: call <4 x i32> @llvm.s390.verllvf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   1671   vsl = vec_rl(vsl, vul);
   1672   // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1673   vul = vec_rl(vul, vul);
   1674   // CHECK: call <2 x i64> @llvm.s390.verllvg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   1675 
   1676   vsc = vec_rli(vsc, ul);
   1677   // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}})
   1678   vuc = vec_rli(vuc, ul);
   1679   // CHECK: call <16 x i8> @llvm.s390.verllb(<16 x i8> %{{.*}}, i32 %{{.*}})
   1680   vss = vec_rli(vss, ul);
   1681   // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}})
   1682   vus = vec_rli(vus, ul);
   1683   // CHECK: call <8 x i16> @llvm.s390.verllh(<8 x i16> %{{.*}}, i32 %{{.*}})
   1684   vsi = vec_rli(vsi, ul);
   1685   // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}})
   1686   vui = vec_rli(vui, ul);
   1687   // CHECK: call <4 x i32> @llvm.s390.verllf(<4 x i32> %{{.*}}, i32 %{{.*}})
   1688   vsl = vec_rli(vsl, ul);
   1689   // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}})
   1690   vul = vec_rli(vul, ul);
   1691   // CHECK: call <2 x i64> @llvm.s390.verllg(<2 x i64> %{{.*}}, i32 %{{.*}})
   1692 
   1693   vsc = vec_rl_mask(vsc, vuc, 0);
   1694   // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1695   vsc = vec_rl_mask(vsc, vuc, 255);
   1696   // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255)
   1697   vuc = vec_rl_mask(vuc, vuc, 0);
   1698   // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1699   vuc = vec_rl_mask(vuc, vuc, 255);
   1700   // CHECK: call <16 x i8> @llvm.s390.verimb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 255)
   1701   vss = vec_rl_mask(vss, vus, 0);
   1702   // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   1703   vss = vec_rl_mask(vss, vus, 255);
   1704   // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255)
   1705   vus = vec_rl_mask(vus, vus, 0);
   1706   // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   1707   vus = vec_rl_mask(vus, vus, 255);
   1708   // CHECK: call <8 x i16> @llvm.s390.verimh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 255)
   1709   vsi = vec_rl_mask(vsi, vui, 0);
   1710   // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   1711   vsi = vec_rl_mask(vsi, vui, 255);
   1712   // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255)
   1713   vui = vec_rl_mask(vui, vui, 0);
   1714   // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   1715   vui = vec_rl_mask(vui, vui, 255);
   1716   // CHECK: call <4 x i32> @llvm.s390.verimf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 255)
   1717   vsl = vec_rl_mask(vsl, vul, 0);
   1718   // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
   1719   vsl = vec_rl_mask(vsl, vul, 255);
   1720   // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255)
   1721   vul = vec_rl_mask(vul, vul, 0);
   1722   // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 0)
   1723   vul = vec_rl_mask(vul, vul, 255);
   1724   // CHECK: call <2 x i64> @llvm.s390.verimg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, i32 255)
   1725 
   1726   vsc = vec_sll(vsc, vuc);
   1727   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1728   vsc = vec_sll(vsc, vus);
   1729   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1730   vsc = vec_sll(vsc, vui);
   1731   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1732   vuc = vec_sll(vuc, vuc);
   1733   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1734   vuc = vec_sll(vuc, vus);
   1735   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1736   vuc = vec_sll(vuc, vui);
   1737   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1738   vbc = vec_sll(vbc, vuc);
   1739   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1740   vbc = vec_sll(vbc, vus);
   1741   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1742   vbc = vec_sll(vbc, vui);
   1743   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1744   vss = vec_sll(vss, vuc);
   1745   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1746   vss = vec_sll(vss, vus);
   1747   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1748   vss = vec_sll(vss, vui);
   1749   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1750   vus = vec_sll(vus, vuc);
   1751   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1752   vus = vec_sll(vus, vus);
   1753   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1754   vus = vec_sll(vus, vui);
   1755   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1756   vbs = vec_sll(vbs, vuc);
   1757   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1758   vbs = vec_sll(vbs, vus);
   1759   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1760   vbs = vec_sll(vbs, vui);
   1761   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1762   vsi = vec_sll(vsi, vuc);
   1763   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1764   vsi = vec_sll(vsi, vus);
   1765   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1766   vsi = vec_sll(vsi, vui);
   1767   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1768   vui = vec_sll(vui, vuc);
   1769   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1770   vui = vec_sll(vui, vus);
   1771   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1772   vui = vec_sll(vui, vui);
   1773   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1774   vbi = vec_sll(vbi, vuc);
   1775   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1776   vbi = vec_sll(vbi, vus);
   1777   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1778   vbi = vec_sll(vbi, vui);
   1779   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1780   vsl = vec_sll(vsl, vuc);
   1781   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1782   vsl = vec_sll(vsl, vus);
   1783   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1784   vsl = vec_sll(vsl, vui);
   1785   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1786   vul = vec_sll(vul, vuc);
   1787   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1788   vul = vec_sll(vul, vus);
   1789   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1790   vul = vec_sll(vul, vui);
   1791   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1792   vbl = vec_sll(vbl, vuc);
   1793   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1794   vbl = vec_sll(vbl, vus);
   1795   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1796   vbl = vec_sll(vbl, vui);
   1797   // CHECK: call <16 x i8> @llvm.s390.vsl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1798 
   1799   vsc = vec_slb(vsc, vsc);
   1800   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1801   vsc = vec_slb(vsc, vuc);
   1802   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1803   vuc = vec_slb(vuc, vsc);
   1804   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1805   vuc = vec_slb(vuc, vuc);
   1806   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1807   vss = vec_slb(vss, vss);
   1808   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1809   vss = vec_slb(vss, vus);
   1810   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1811   vus = vec_slb(vus, vss);
   1812   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1813   vus = vec_slb(vus, vus);
   1814   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1815   vsi = vec_slb(vsi, vsi);
   1816   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1817   vsi = vec_slb(vsi, vui);
   1818   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1819   vui = vec_slb(vui, vsi);
   1820   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1821   vui = vec_slb(vui, vui);
   1822   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1823   vsl = vec_slb(vsl, vsl);
   1824   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1825   vsl = vec_slb(vsl, vul);
   1826   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1827   vul = vec_slb(vul, vsl);
   1828   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1829   vul = vec_slb(vul, vul);
   1830   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1831   vd = vec_slb(vd, vsl);
   1832   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1833   vd = vec_slb(vd, vul);
   1834   // CHECK: call <16 x i8> @llvm.s390.vslb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1835 
   1836   vsc = vec_sld(vsc, vsc, 0);
   1837   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1838   vsc = vec_sld(vsc, vsc, 15);
   1839   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1840   vuc = vec_sld(vuc, vuc, 0);
   1841   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1842   vuc = vec_sld(vuc, vuc, 15);
   1843   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1844   vss = vec_sld(vss, vss, 0);
   1845   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1846   vss = vec_sld(vss, vss, 15);
   1847   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1848   vus = vec_sld(vus, vus, 0);
   1849   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1850   vus = vec_sld(vus, vus, 15);
   1851   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1852   vsi = vec_sld(vsi, vsi, 0);
   1853   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1854   vsi = vec_sld(vsi, vsi, 15);
   1855   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1856   vui = vec_sld(vui, vui, 0);
   1857   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1858   vui = vec_sld(vui, vui, 15);
   1859   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1860   vsl = vec_sld(vsl, vsl, 0);
   1861   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1862   vsl = vec_sld(vsl, vsl, 15);
   1863   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1864   vul = vec_sld(vul, vul, 0);
   1865   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1866   vul = vec_sld(vul, vul, 15);
   1867   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1868   vd = vec_sld(vd, vd, 0);
   1869   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1870   vd = vec_sld(vd, vd, 15);
   1871   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 15)
   1872 
   1873   vsc = vec_sldw(vsc, vsc, 0);
   1874   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1875   vsc = vec_sldw(vsc, vsc, 3);
   1876   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1877   vuc = vec_sldw(vuc, vuc, 0);
   1878   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1879   vuc = vec_sldw(vuc, vuc, 3);
   1880   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1881   vss = vec_sldw(vss, vss, 0);
   1882   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1883   vss = vec_sldw(vss, vss, 3);
   1884   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1885   vus = vec_sldw(vus, vus, 0);
   1886   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1887   vus = vec_sldw(vus, vus, 3);
   1888   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1889   vsi = vec_sldw(vsi, vsi, 0);
   1890   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1891   vsi = vec_sldw(vsi, vsi, 3);
   1892   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1893   vui = vec_sldw(vui, vui, 0);
   1894   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1895   vui = vec_sldw(vui, vui, 3);
   1896   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1897   vsl = vec_sldw(vsl, vsl, 0);
   1898   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1899   vsl = vec_sldw(vsl, vsl, 3);
   1900   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1901   vul = vec_sldw(vul, vul, 0);
   1902   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1903   vul = vec_sldw(vul, vul, 3);
   1904   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1905   vd = vec_sldw(vd, vd, 0);
   1906   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   1907   vd = vec_sldw(vd, vd, 3);
   1908   // CHECK: call <16 x i8> @llvm.s390.vsldb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   1909 
   1910   vsc = vec_sral(vsc, vuc);
   1911   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1912   vsc = vec_sral(vsc, vus);
   1913   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1914   vsc = vec_sral(vsc, vui);
   1915   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1916   vuc = vec_sral(vuc, vuc);
   1917   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1918   vuc = vec_sral(vuc, vus);
   1919   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1920   vuc = vec_sral(vuc, vui);
   1921   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1922   vbc = vec_sral(vbc, vuc);
   1923   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1924   vbc = vec_sral(vbc, vus);
   1925   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1926   vbc = vec_sral(vbc, vui);
   1927   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1928   vss = vec_sral(vss, vuc);
   1929   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1930   vss = vec_sral(vss, vus);
   1931   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1932   vss = vec_sral(vss, vui);
   1933   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1934   vus = vec_sral(vus, vuc);
   1935   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1936   vus = vec_sral(vus, vus);
   1937   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1938   vus = vec_sral(vus, vui);
   1939   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1940   vbs = vec_sral(vbs, vuc);
   1941   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1942   vbs = vec_sral(vbs, vus);
   1943   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1944   vbs = vec_sral(vbs, vui);
   1945   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1946   vsi = vec_sral(vsi, vuc);
   1947   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1948   vsi = vec_sral(vsi, vus);
   1949   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1950   vsi = vec_sral(vsi, vui);
   1951   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1952   vui = vec_sral(vui, vuc);
   1953   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1954   vui = vec_sral(vui, vus);
   1955   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1956   vui = vec_sral(vui, vui);
   1957   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1958   vbi = vec_sral(vbi, vuc);
   1959   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1960   vbi = vec_sral(vbi, vus);
   1961   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1962   vbi = vec_sral(vbi, vui);
   1963   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1964   vsl = vec_sral(vsl, vuc);
   1965   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1966   vsl = vec_sral(vsl, vus);
   1967   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1968   vsl = vec_sral(vsl, vui);
   1969   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1970   vul = vec_sral(vul, vuc);
   1971   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1972   vul = vec_sral(vul, vus);
   1973   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1974   vul = vec_sral(vul, vui);
   1975   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1976   vbl = vec_sral(vbl, vuc);
   1977   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1978   vbl = vec_sral(vbl, vus);
   1979   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1980   vbl = vec_sral(vbl, vui);
   1981   // CHECK: call <16 x i8> @llvm.s390.vsra(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1982 
   1983   vsc = vec_srab(vsc, vsc);
   1984   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1985   vsc = vec_srab(vsc, vuc);
   1986   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1987   vuc = vec_srab(vuc, vsc);
   1988   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1989   vuc = vec_srab(vuc, vuc);
   1990   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1991   vss = vec_srab(vss, vss);
   1992   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1993   vss = vec_srab(vss, vus);
   1994   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1995   vus = vec_srab(vus, vss);
   1996   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1997   vus = vec_srab(vus, vus);
   1998   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   1999   vsi = vec_srab(vsi, vsi);
   2000   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2001   vsi = vec_srab(vsi, vui);
   2002   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2003   vui = vec_srab(vui, vsi);
   2004   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2005   vui = vec_srab(vui, vui);
   2006   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2007   vsl = vec_srab(vsl, vsl);
   2008   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2009   vsl = vec_srab(vsl, vul);
   2010   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2011   vul = vec_srab(vul, vsl);
   2012   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2013   vul = vec_srab(vul, vul);
   2014   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2015   vd = vec_srab(vd, vsl);
   2016   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2017   vd = vec_srab(vd, vul);
   2018   // CHECK: call <16 x i8> @llvm.s390.vsrab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2019 
   2020   vsc = vec_srl(vsc, vuc);
   2021   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2022   vsc = vec_srl(vsc, vus);
   2023   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2024   vsc = vec_srl(vsc, vui);
   2025   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2026   vuc = vec_srl(vuc, vuc);
   2027   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2028   vuc = vec_srl(vuc, vus);
   2029   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2030   vuc = vec_srl(vuc, vui);
   2031   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2032   vbc = vec_srl(vbc, vuc);
   2033   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2034   vbc = vec_srl(vbc, vus);
   2035   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2036   vbc = vec_srl(vbc, vui);
   2037   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2038   vss = vec_srl(vss, vuc);
   2039   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2040   vss = vec_srl(vss, vus);
   2041   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2042   vss = vec_srl(vss, vui);
   2043   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2044   vus = vec_srl(vus, vuc);
   2045   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2046   vus = vec_srl(vus, vus);
   2047   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2048   vus = vec_srl(vus, vui);
   2049   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2050   vbs = vec_srl(vbs, vuc);
   2051   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2052   vbs = vec_srl(vbs, vus);
   2053   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2054   vbs = vec_srl(vbs, vui);
   2055   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2056   vsi = vec_srl(vsi, vuc);
   2057   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2058   vsi = vec_srl(vsi, vus);
   2059   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2060   vsi = vec_srl(vsi, vui);
   2061   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2062   vui = vec_srl(vui, vuc);
   2063   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2064   vui = vec_srl(vui, vus);
   2065   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2066   vui = vec_srl(vui, vui);
   2067   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2068   vbi = vec_srl(vbi, vuc);
   2069   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2070   vbi = vec_srl(vbi, vus);
   2071   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2072   vbi = vec_srl(vbi, vui);
   2073   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2074   vsl = vec_srl(vsl, vuc);
   2075   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2076   vsl = vec_srl(vsl, vus);
   2077   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2078   vsl = vec_srl(vsl, vui);
   2079   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2080   vul = vec_srl(vul, vuc);
   2081   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2082   vul = vec_srl(vul, vus);
   2083   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2084   vul = vec_srl(vul, vui);
   2085   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2086   vbl = vec_srl(vbl, vuc);
   2087   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2088   vbl = vec_srl(vbl, vus);
   2089   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2090   vbl = vec_srl(vbl, vui);
   2091   // CHECK: call <16 x i8> @llvm.s390.vsrl(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2092 
   2093   vsc = vec_srb(vsc, vsc);
   2094   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2095   vsc = vec_srb(vsc, vuc);
   2096   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2097   vuc = vec_srb(vuc, vsc);
   2098   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2099   vuc = vec_srb(vuc, vuc);
   2100   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2101   vss = vec_srb(vss, vss);
   2102   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2103   vss = vec_srb(vss, vus);
   2104   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2105   vus = vec_srb(vus, vss);
   2106   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2107   vus = vec_srb(vus, vus);
   2108   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2109   vsi = vec_srb(vsi, vsi);
   2110   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2111   vsi = vec_srb(vsi, vui);
   2112   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2113   vui = vec_srb(vui, vsi);
   2114   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2115   vui = vec_srb(vui, vui);
   2116   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2117   vsl = vec_srb(vsl, vsl);
   2118   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2119   vsl = vec_srb(vsl, vul);
   2120   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2121   vul = vec_srb(vul, vsl);
   2122   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2123   vul = vec_srb(vul, vul);
   2124   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2125   vd = vec_srb(vd, vsl);
   2126   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2127   vd = vec_srb(vd, vul);
   2128   // CHECK: call <16 x i8> @llvm.s390.vsrlb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2129 
   2130   vsc = vec_abs(vsc);
   2131   vss = vec_abs(vss);
   2132   vsi = vec_abs(vsi);
   2133   vsl = vec_abs(vsl);
   2134 
   2135   vsc = vec_max(vsc, vsc);
   2136   vsc = vec_max(vsc, vbc);
   2137   vsc = vec_max(vbc, vsc);
   2138   vuc = vec_max(vuc, vuc);
   2139   vuc = vec_max(vuc, vbc);
   2140   vuc = vec_max(vbc, vuc);
   2141   vss = vec_max(vss, vss);
   2142   vss = vec_max(vss, vbs);
   2143   vss = vec_max(vbs, vss);
   2144   vus = vec_max(vus, vus);
   2145   vus = vec_max(vus, vbs);
   2146   vus = vec_max(vbs, vus);
   2147   vsi = vec_max(vsi, vsi);
   2148   vsi = vec_max(vsi, vbi);
   2149   vsi = vec_max(vbi, vsi);
   2150   vui = vec_max(vui, vui);
   2151   vui = vec_max(vui, vbi);
   2152   vui = vec_max(vbi, vui);
   2153   vsl = vec_max(vsl, vsl);
   2154   vsl = vec_max(vsl, vbl);
   2155   vsl = vec_max(vbl, vsl);
   2156   vul = vec_max(vul, vul);
   2157   vul = vec_max(vul, vbl);
   2158   vul = vec_max(vbl, vul);
   2159   vd = vec_max(vd, vd);
   2160 
   2161   vsc = vec_min(vsc, vsc);
   2162   vsc = vec_min(vsc, vbc);
   2163   vsc = vec_min(vbc, vsc);
   2164   vuc = vec_min(vuc, vuc);
   2165   vuc = vec_min(vuc, vbc);
   2166   vuc = vec_min(vbc, vuc);
   2167   vss = vec_min(vss, vss);
   2168   vss = vec_min(vss, vbs);
   2169   vss = vec_min(vbs, vss);
   2170   vus = vec_min(vus, vus);
   2171   vus = vec_min(vus, vbs);
   2172   vus = vec_min(vbs, vus);
   2173   vsi = vec_min(vsi, vsi);
   2174   vsi = vec_min(vsi, vbi);
   2175   vsi = vec_min(vbi, vsi);
   2176   vui = vec_min(vui, vui);
   2177   vui = vec_min(vui, vbi);
   2178   vui = vec_min(vbi, vui);
   2179   vsl = vec_min(vsl, vsl);
   2180   vsl = vec_min(vsl, vbl);
   2181   vsl = vec_min(vbl, vsl);
   2182   vul = vec_min(vul, vul);
   2183   vul = vec_min(vul, vbl);
   2184   vul = vec_min(vbl, vul);
   2185   vd = vec_min(vd, vd);
   2186 
   2187   vuc = vec_addc(vuc, vuc);
   2188   // CHECK: call <16 x i8> @llvm.s390.vaccb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2189   vus = vec_addc(vus, vus);
   2190   // CHECK: call <8 x i16> @llvm.s390.vacch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2191   vui = vec_addc(vui, vui);
   2192   // CHECK: call <4 x i32> @llvm.s390.vaccf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2193   vul = vec_addc(vul, vul);
   2194   // CHECK: call <2 x i64> @llvm.s390.vaccg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   2195 
   2196   vuc = vec_add_u128(vuc, vuc);
   2197   // CHECK: call <16 x i8> @llvm.s390.vaq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2198   vuc = vec_addc_u128(vuc, vuc);
   2199   // CHECK: call <16 x i8> @llvm.s390.vaccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2200   vuc = vec_adde_u128(vuc, vuc, vuc);
   2201   // CHECK: call <16 x i8> @llvm.s390.vacq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2202   vuc = vec_addec_u128(vuc, vuc, vuc);
   2203   // CHECK: call <16 x i8> @llvm.s390.vacccq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2204 
   2205   vsc = vec_avg(vsc, vsc);
   2206   // CHECK: call <16 x i8> @llvm.s390.vavgb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2207   vuc = vec_avg(vuc, vuc);
   2208   // CHECK: call <16 x i8> @llvm.s390.vavglb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2209   vss = vec_avg(vss, vss);
   2210   // CHECK: call <8 x i16> @llvm.s390.vavgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2211   vus = vec_avg(vus, vus);
   2212   // CHECK: call <8 x i16> @llvm.s390.vavglh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2213   vsi = vec_avg(vsi, vsi);
   2214   // CHECK: call <4 x i32> @llvm.s390.vavgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2215   vui = vec_avg(vui, vui);
   2216   // CHECK: call <4 x i32> @llvm.s390.vavglf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2217   vsl = vec_avg(vsl, vsl);
   2218   // CHECK: call <2 x i64> @llvm.s390.vavgg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   2219   vul = vec_avg(vul, vul);
   2220   // CHECK: call <2 x i64> @llvm.s390.vavglg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   2221 
   2222   vui = vec_checksum(vui, vui);
   2223   // CHECK: call <4 x i32> @llvm.s390.vcksm(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2224 
   2225   vus = vec_gfmsum(vuc, vuc);
   2226   // CHECK: call <8 x i16> @llvm.s390.vgfmb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2227   vui = vec_gfmsum(vus, vus);
   2228   // CHECK: call <4 x i32> @llvm.s390.vgfmh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2229   vul = vec_gfmsum(vui, vui);
   2230   // CHECK: call <2 x i64> @llvm.s390.vgfmf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2231   vuc = vec_gfmsum_128(vul, vul);
   2232   // CHECK: call <16 x i8> @llvm.s390.vgfmg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   2233 
   2234   vus = vec_gfmsum_accum(vuc, vuc, vus);
   2235   // CHECK: call <8 x i16> @llvm.s390.vgfmab(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
   2236   vui = vec_gfmsum_accum(vus, vus, vui);
   2237   // CHECK: call <4 x i32> @llvm.s390.vgfmah(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
   2238   vul = vec_gfmsum_accum(vui, vui, vul);
   2239   // CHECK: call <2 x i64> @llvm.s390.vgfmaf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
   2240   vuc = vec_gfmsum_accum_128(vul, vul, vuc);
   2241   // CHECK: call <16 x i8> @llvm.s390.vgfmag(<2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <16 x i8> %{{.*}})
   2242 
   2243   vsc = vec_mladd(vsc, vsc, vsc);
   2244   vsc = vec_mladd(vuc, vsc, vsc);
   2245   vsc = vec_mladd(vsc, vuc, vuc);
   2246   vuc = vec_mladd(vuc, vuc, vuc);
   2247   vss = vec_mladd(vss, vss, vss);
   2248   vss = vec_mladd(vus, vss, vss);
   2249   vss = vec_mladd(vss, vus, vus);
   2250   vus = vec_mladd(vus, vus, vus);
   2251   vsi = vec_mladd(vsi, vsi, vsi);
   2252   vsi = vec_mladd(vui, vsi, vsi);
   2253   vsi = vec_mladd(vsi, vui, vui);
   2254   vui = vec_mladd(vui, vui, vui);
   2255 
   2256   vsc = vec_mhadd(vsc, vsc, vsc);
   2257   // CHECK: call <16 x i8> @llvm.s390.vmahb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2258   vuc = vec_mhadd(vuc, vuc, vuc);
   2259   // CHECK: call <16 x i8> @llvm.s390.vmalhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2260   vss = vec_mhadd(vss, vss, vss);
   2261   // CHECK: call <8 x i16> @llvm.s390.vmahh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2262   vus = vec_mhadd(vus, vus, vus);
   2263   // CHECK: call <8 x i16> @llvm.s390.vmalhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2264   vsi = vec_mhadd(vsi, vsi, vsi);
   2265   // CHECK: call <4 x i32> @llvm.s390.vmahf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2266   vui = vec_mhadd(vui, vui, vui);
   2267   // CHECK: call <4 x i32> @llvm.s390.vmalhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2268 
   2269   vss = vec_meadd(vsc, vsc, vss);
   2270   // CHECK: call <8 x i16> @llvm.s390.vmaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
   2271   vus = vec_meadd(vuc, vuc, vus);
   2272   // CHECK: call <8 x i16> @llvm.s390.vmaleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
   2273   vsi = vec_meadd(vss, vss, vsi);
   2274   // CHECK: call <4 x i32> @llvm.s390.vmaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
   2275   vui = vec_meadd(vus, vus, vui);
   2276   // CHECK: call <4 x i32> @llvm.s390.vmaleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
   2277   vsl = vec_meadd(vsi, vsi, vsl);
   2278   // CHECK: call <2 x i64> @llvm.s390.vmaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
   2279   vul = vec_meadd(vui, vui, vul);
   2280   // CHECK: call <2 x i64> @llvm.s390.vmalef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
   2281 
   2282   vss = vec_moadd(vsc, vsc, vss);
   2283   // CHECK: call <8 x i16> @llvm.s390.vmaob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
   2284   vus = vec_moadd(vuc, vuc, vus);
   2285   // CHECK: call <8 x i16> @llvm.s390.vmalob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <8 x i16> %{{.*}})
   2286   vsi = vec_moadd(vss, vss, vsi);
   2287   // CHECK: call <4 x i32> @llvm.s390.vmaoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
   2288   vui = vec_moadd(vus, vus, vui);
   2289   // CHECK: call <4 x i32> @llvm.s390.vmaloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <4 x i32> %{{.*}})
   2290   vsl = vec_moadd(vsi, vsi, vsl);
   2291   // CHECK: call <2 x i64> @llvm.s390.vmaof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
   2292   vul = vec_moadd(vui, vui, vul);
   2293   // CHECK: call <2 x i64> @llvm.s390.vmalof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i64> %{{.*}})
   2294 
   2295   vsc = vec_mulh(vsc, vsc);
   2296   // CHECK: call <16 x i8> @llvm.s390.vmhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2297   vuc = vec_mulh(vuc, vuc);
   2298   // CHECK: call <16 x i8> @llvm.s390.vmlhb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2299   vss = vec_mulh(vss, vss);
   2300   // CHECK: call <8 x i16> @llvm.s390.vmhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2301   vus = vec_mulh(vus, vus);
   2302   // CHECK: call <8 x i16> @llvm.s390.vmlhh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2303   vsi = vec_mulh(vsi, vsi);
   2304   // CHECK: call <4 x i32> @llvm.s390.vmhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2305   vui = vec_mulh(vui, vui);
   2306   // CHECK: call <4 x i32> @llvm.s390.vmlhf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2307 
   2308   vss = vec_mule(vsc, vsc);
   2309   // CHECK: call <8 x i16> @llvm.s390.vmeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2310   vus = vec_mule(vuc, vuc);
   2311   // CHECK: call <8 x i16> @llvm.s390.vmleb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2312   vsi = vec_mule(vss, vss);
   2313   // CHECK: call <4 x i32> @llvm.s390.vmeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2314   vui = vec_mule(vus, vus);
   2315   // CHECK: call <4 x i32> @llvm.s390.vmleh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2316   vsl = vec_mule(vsi, vsi);
   2317   // CHECK: call <2 x i64> @llvm.s390.vmef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2318   vul = vec_mule(vui, vui);
   2319   // CHECK: call <2 x i64> @llvm.s390.vmlef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2320 
   2321   vss = vec_mulo(vsc, vsc);
   2322   // CHECK: call <8 x i16> @llvm.s390.vmob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2323   vus = vec_mulo(vuc, vuc);
   2324   // CHECK: call <8 x i16> @llvm.s390.vmlob(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2325   vsi = vec_mulo(vss, vss);
   2326   // CHECK: call <4 x i32> @llvm.s390.vmoh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2327   vui = vec_mulo(vus, vus);
   2328   // CHECK: call <4 x i32> @llvm.s390.vmloh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2329   vsl = vec_mulo(vsi, vsi);
   2330   // CHECK: call <2 x i64> @llvm.s390.vmof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2331   vul = vec_mulo(vui, vui);
   2332   // CHECK: call <2 x i64> @llvm.s390.vmlof(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2333 
   2334   vuc = vec_subc(vuc, vuc);
   2335   // CHECK: call <16 x i8> @llvm.s390.vscbib(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2336   vus = vec_subc(vus, vus);
   2337   // CHECK: call <8 x i16> @llvm.s390.vscbih(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2338   vui = vec_subc(vui, vui);
   2339   // CHECK: call <4 x i32> @llvm.s390.vscbif(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2340   vul = vec_subc(vul, vul);
   2341   // CHECK: call <2 x i64> @llvm.s390.vscbig(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   2342 
   2343   vuc = vec_sub_u128(vuc, vuc);
   2344   // CHECK: call <16 x i8> @llvm.s390.vsq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2345   vuc = vec_subc_u128(vuc, vuc);
   2346   // CHECK: call <16 x i8> @llvm.s390.vscbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2347   vuc = vec_sube_u128(vuc, vuc, vuc);
   2348   // CHECK: call <16 x i8> @llvm.s390.vsbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2349   vuc = vec_subec_u128(vuc, vuc, vuc);
   2350   // CHECK: call <16 x i8> @llvm.s390.vsbcbiq(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2351 
   2352   vui = vec_sum4(vuc, vuc);
   2353   // CHECK: call <4 x i32> @llvm.s390.vsumb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2354   vui = vec_sum4(vus, vus);
   2355   // CHECK: call <4 x i32> @llvm.s390.vsumh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2356   vul = vec_sum2(vus, vus);
   2357   // CHECK: call <2 x i64> @llvm.s390.vsumgh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2358   vul = vec_sum2(vui, vui);
   2359   // CHECK: call <2 x i64> @llvm.s390.vsumgf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2360   vuc = vec_sum_u128(vui, vui);
   2361   // CHECK: call <16 x i8> @llvm.s390.vsumqf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2362   vuc = vec_sum_u128(vul, vul);
   2363   // CHECK: call <16 x i8> @llvm.s390.vsumqg(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})
   2364 
   2365   idx = vec_test_mask(vsc, vuc);
   2366   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2367   idx = vec_test_mask(vuc, vuc);
   2368   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2369   idx = vec_test_mask(vss, vus);
   2370   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2371   idx = vec_test_mask(vus, vus);
   2372   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2373   idx = vec_test_mask(vsi, vui);
   2374   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2375   idx = vec_test_mask(vui, vui);
   2376   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2377   idx = vec_test_mask(vsl, vul);
   2378   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2379   idx = vec_test_mask(vul, vul);
   2380   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2381   idx = vec_test_mask(vd, vul);
   2382   // CHECK: call i32 @llvm.s390.vtm(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2383 }
   2384 
   2385 void test_string(void) {
   2386   vsc = vec_cp_until_zero(vsc);
   2387   // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
   2388   vuc = vec_cp_until_zero(vuc);
   2389   // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
   2390   vbc = vec_cp_until_zero(vbc);
   2391   // CHECK: call <16 x i8> @llvm.s390.vistrb(<16 x i8> %{{.*}})
   2392   vss = vec_cp_until_zero(vss);
   2393   // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
   2394   vus = vec_cp_until_zero(vus);
   2395   // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
   2396   vbs = vec_cp_until_zero(vbs);
   2397   // CHECK: call <8 x i16> @llvm.s390.vistrh(<8 x i16> %{{.*}})
   2398   vsi = vec_cp_until_zero(vsi);
   2399   // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
   2400   vui = vec_cp_until_zero(vui);
   2401   // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
   2402   vbi = vec_cp_until_zero(vbi);
   2403   // CHECK: call <4 x i32> @llvm.s390.vistrf(<4 x i32> %{{.*}})
   2404 
   2405   vsc = vec_cp_until_zero_cc(vsc, &cc);
   2406   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
   2407   vuc = vec_cp_until_zero_cc(vuc, &cc);
   2408   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
   2409   vbc = vec_cp_until_zero_cc(vbc, &cc);
   2410   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vistrbs(<16 x i8> %{{.*}})
   2411   vss = vec_cp_until_zero_cc(vss, &cc);
   2412   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
   2413   vus = vec_cp_until_zero_cc(vus, &cc);
   2414   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
   2415   vbs = vec_cp_until_zero_cc(vbs, &cc);
   2416   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vistrhs(<8 x i16> %{{.*}})
   2417   vsi = vec_cp_until_zero_cc(vsi, &cc);
   2418   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
   2419   vui = vec_cp_until_zero_cc(vui, &cc);
   2420   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
   2421   vbi = vec_cp_until_zero_cc(vbi, &cc);
   2422   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vistrfs(<4 x i32> %{{.*}})
   2423 
   2424   vsc = vec_cmpeq_idx(vsc, vsc);
   2425   // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2426   vuc = vec_cmpeq_idx(vuc, vuc);
   2427   // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2428   vuc = vec_cmpeq_idx(vbc, vbc);
   2429   // CHECK: call <16 x i8> @llvm.s390.vfeeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2430   vss = vec_cmpeq_idx(vss, vss);
   2431   // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2432   vus = vec_cmpeq_idx(vus, vus);
   2433   // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2434   vus = vec_cmpeq_idx(vbs, vbs);
   2435   // CHECK: call <8 x i16> @llvm.s390.vfeeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2436   vsi = vec_cmpeq_idx(vsi, vsi);
   2437   // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2438   vui = vec_cmpeq_idx(vui, vui);
   2439   // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2440   vui = vec_cmpeq_idx(vbi, vbi);
   2441   // CHECK: call <4 x i32> @llvm.s390.vfeef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2442 
   2443   vsc = vec_cmpeq_idx_cc(vsc, vsc, &cc);
   2444   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2445   vuc = vec_cmpeq_idx_cc(vuc, vuc, &cc);
   2446   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2447   vuc = vec_cmpeq_idx_cc(vbc, vbc, &cc);
   2448   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2449   vss = vec_cmpeq_idx_cc(vss, vss, &cc);
   2450   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2451   vus = vec_cmpeq_idx_cc(vus, vus, &cc);
   2452   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2453   vus = vec_cmpeq_idx_cc(vbs, vbs, &cc);
   2454   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2455   vsi = vec_cmpeq_idx_cc(vsi, vsi, &cc);
   2456   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2457   vui = vec_cmpeq_idx_cc(vui, vui, &cc);
   2458   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2459   vui = vec_cmpeq_idx_cc(vbi, vbi, &cc);
   2460   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2461 
   2462   vsc = vec_cmpeq_or_0_idx(vsc, vsc);
   2463   // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2464   vuc = vec_cmpeq_or_0_idx(vuc, vuc);
   2465   // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2466   vuc = vec_cmpeq_or_0_idx(vbc, vbc);
   2467   // CHECK: call <16 x i8> @llvm.s390.vfeezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2468   vss = vec_cmpeq_or_0_idx(vss, vss);
   2469   // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2470   vus = vec_cmpeq_or_0_idx(vus, vus);
   2471   // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2472   vus = vec_cmpeq_or_0_idx(vbs, vbs);
   2473   // CHECK: call <8 x i16> @llvm.s390.vfeezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2474   vsi = vec_cmpeq_or_0_idx(vsi, vsi);
   2475   // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2476   vui = vec_cmpeq_or_0_idx(vui, vui);
   2477   // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2478   vui = vec_cmpeq_or_0_idx(vbi, vbi);
   2479   // CHECK: call <4 x i32> @llvm.s390.vfeezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2480 
   2481   vsc = vec_cmpeq_or_0_idx_cc(vsc, vsc, &cc);
   2482   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2483   vuc = vec_cmpeq_or_0_idx_cc(vuc, vuc, &cc);
   2484   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2485   vuc = vec_cmpeq_or_0_idx_cc(vbc, vbc, &cc);
   2486   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfeezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2487   vss = vec_cmpeq_or_0_idx_cc(vss, vss, &cc);
   2488   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2489   vus = vec_cmpeq_or_0_idx_cc(vus, vus, &cc);
   2490   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2491   vus = vec_cmpeq_or_0_idx_cc(vbs, vbs, &cc);
   2492   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfeezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2493   vsi = vec_cmpeq_or_0_idx_cc(vsi, vsi, &cc);
   2494   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2495   vui = vec_cmpeq_or_0_idx_cc(vui, vui, &cc);
   2496   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2497   vui = vec_cmpeq_or_0_idx_cc(vbi, vbi, &cc);
   2498   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfeezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2499 
   2500   vsc = vec_cmpne_idx(vsc, vsc);
   2501   // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2502   vuc = vec_cmpne_idx(vuc, vuc);
   2503   // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2504   vuc = vec_cmpne_idx(vbc, vbc);
   2505   // CHECK: call <16 x i8> @llvm.s390.vfeneb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2506   vss = vec_cmpne_idx(vss, vss);
   2507   // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2508   vus = vec_cmpne_idx(vus, vus);
   2509   // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2510   vus = vec_cmpne_idx(vbs, vbs);
   2511   // CHECK: call <8 x i16> @llvm.s390.vfeneh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2512   vsi = vec_cmpne_idx(vsi, vsi);
   2513   // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2514   vui = vec_cmpne_idx(vui, vui);
   2515   // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2516   vui = vec_cmpne_idx(vbi, vbi);
   2517   // CHECK: call <4 x i32> @llvm.s390.vfenef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2518 
   2519   vsc = vec_cmpne_idx_cc(vsc, vsc, &cc);
   2520   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2521   vuc = vec_cmpne_idx_cc(vuc, vuc, &cc);
   2522   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2523   vuc = vec_cmpne_idx_cc(vbc, vbc, &cc);
   2524   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2525   vss = vec_cmpne_idx_cc(vss, vss, &cc);
   2526   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2527   vus = vec_cmpne_idx_cc(vus, vus, &cc);
   2528   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2529   vus = vec_cmpne_idx_cc(vbs, vbs, &cc);
   2530   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2531   vsi = vec_cmpne_idx_cc(vsi, vsi, &cc);
   2532   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2533   vui = vec_cmpne_idx_cc(vui, vui, &cc);
   2534   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2535   vui = vec_cmpne_idx_cc(vbi, vbi, &cc);
   2536   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2537 
   2538   vsc = vec_cmpne_or_0_idx(vsc, vsc);
   2539   // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2540   vuc = vec_cmpne_or_0_idx(vuc, vuc);
   2541   // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2542   vuc = vec_cmpne_or_0_idx(vbc, vbc);
   2543   // CHECK: call <16 x i8> @llvm.s390.vfenezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2544   vss = vec_cmpne_or_0_idx(vss, vss);
   2545   // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2546   vus = vec_cmpne_or_0_idx(vus, vus);
   2547   // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2548   vus = vec_cmpne_or_0_idx(vbs, vbs);
   2549   // CHECK: call <8 x i16> @llvm.s390.vfenezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2550   vsi = vec_cmpne_or_0_idx(vsi, vsi);
   2551   // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2552   vui = vec_cmpne_or_0_idx(vui, vui);
   2553   // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2554   vui = vec_cmpne_or_0_idx(vbi, vbi);
   2555   // CHECK: call <4 x i32> @llvm.s390.vfenezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2556 
   2557   vsc = vec_cmpne_or_0_idx_cc(vsc, vsc, &cc);
   2558   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2559   vuc = vec_cmpne_or_0_idx_cc(vuc, vuc, &cc);
   2560   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2561   vuc = vec_cmpne_or_0_idx_cc(vbc, vbc, &cc);
   2562   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfenezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})
   2563   vss = vec_cmpne_or_0_idx_cc(vss, vss, &cc);
   2564   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2565   vus = vec_cmpne_or_0_idx_cc(vus, vus, &cc);
   2566   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2567   vus = vec_cmpne_or_0_idx_cc(vbs, vbs, &cc);
   2568   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfenezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})
   2569   vsi = vec_cmpne_or_0_idx_cc(vsi, vsi, &cc);
   2570   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2571   vui = vec_cmpne_or_0_idx_cc(vui, vui, &cc);
   2572   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2573   vui = vec_cmpne_or_0_idx_cc(vbi, vbi, &cc);
   2574   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfenezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})
   2575 
   2576   vbc = vec_cmprg(vuc, vuc, vuc);
   2577   // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2578   vbs = vec_cmprg(vus, vus, vus);
   2579   // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2580   vbi = vec_cmprg(vui, vui, vui);
   2581   // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2582 
   2583   vbc = vec_cmprg_cc(vuc, vuc, vuc, &cc);
   2584   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2585   vbs = vec_cmprg_cc(vus, vus, vus, &cc);
   2586   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2587   vbi = vec_cmprg_cc(vui, vui, vui, &cc);
   2588   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2589 
   2590   vuc = vec_cmprg_idx(vuc, vuc, vuc);
   2591   // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2592   vus = vec_cmprg_idx(vus, vus, vus);
   2593   // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2594   vui = vec_cmprg_idx(vui, vui, vui);
   2595   // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2596 
   2597   vuc = vec_cmprg_idx_cc(vuc, vuc, vuc, &cc);
   2598   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2599   vus = vec_cmprg_idx_cc(vus, vus, vus, &cc);
   2600   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2601   vui = vec_cmprg_idx_cc(vui, vui, vui, &cc);
   2602   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2603 
   2604   vuc = vec_cmprg_or_0_idx(vuc, vuc, vuc);
   2605   // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2606   vus = vec_cmprg_or_0_idx(vus, vus, vus);
   2607   // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2608   vui = vec_cmprg_or_0_idx(vui, vui, vui);
   2609   // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2610 
   2611   vuc = vec_cmprg_or_0_idx_cc(vuc, vuc, vuc, &cc);
   2612   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2613   vus = vec_cmprg_or_0_idx_cc(vus, vus, vus, &cc);
   2614   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2615   vui = vec_cmprg_or_0_idx_cc(vui, vui, vui, &cc);
   2616   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2617 
   2618   vbc = vec_cmpnrg(vuc, vuc, vuc);
   2619   // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2620   vbs = vec_cmpnrg(vus, vus, vus);
   2621   // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2622   vbi = vec_cmpnrg(vui, vui, vui);
   2623   // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2624 
   2625   vbc = vec_cmpnrg_cc(vuc, vuc, vuc, &cc);
   2626   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2627   vbs = vec_cmpnrg_cc(vus, vus, vus, &cc);
   2628   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2629   vbi = vec_cmpnrg_cc(vui, vui, vui, &cc);
   2630   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2631 
   2632   vuc = vec_cmpnrg_idx(vuc, vuc, vuc);
   2633   // CHECK: call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2634   vus = vec_cmpnrg_idx(vus, vus, vus);
   2635   // CHECK: call <8 x i16> @llvm.s390.vstrch(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2636   vui = vec_cmpnrg_idx(vui, vui, vui);
   2637   // CHECK: call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2638 
   2639   vuc = vec_cmpnrg_idx_cc(vuc, vuc, vuc, &cc);
   2640   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2641   vus = vec_cmpnrg_idx_cc(vus, vus, vus, &cc);
   2642   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2643   vui = vec_cmpnrg_idx_cc(vui, vui, vui, &cc);
   2644   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2645 
   2646   vuc = vec_cmpnrg_or_0_idx(vuc, vuc, vuc);
   2647   // CHECK: call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2648   vus = vec_cmpnrg_or_0_idx(vus, vus, vus);
   2649   // CHECK: call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2650   vui = vec_cmpnrg_or_0_idx(vui, vui, vui);
   2651   // CHECK: call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2652 
   2653   vuc = vec_cmpnrg_or_0_idx_cc(vuc, vuc, vuc, &cc);
   2654   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2655   vus = vec_cmpnrg_or_0_idx_cc(vus, vus, vus, &cc);
   2656   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2657   vui = vec_cmpnrg_or_0_idx_cc(vui, vui, vui, &cc);
   2658   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2659 
   2660   vbc = vec_find_any_eq(vsc, vsc);
   2661   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2662   vbc = vec_find_any_eq(vuc, vuc);
   2663   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2664   vbc = vec_find_any_eq(vbc, vbc);
   2665   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2666   vbs = vec_find_any_eq(vss, vss);
   2667   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2668   vbs = vec_find_any_eq(vus, vus);
   2669   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2670   vbs = vec_find_any_eq(vbs, vbs);
   2671   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2672   vbi = vec_find_any_eq(vsi, vsi);
   2673   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2674   vbi = vec_find_any_eq(vui, vui);
   2675   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2676   vbi = vec_find_any_eq(vbi, vbi);
   2677   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2678 
   2679   vbc = vec_find_any_eq_cc(vsc, vsc, &cc);
   2680   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2681   vbc = vec_find_any_eq_cc(vuc, vuc, &cc);
   2682   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2683   vbc = vec_find_any_eq_cc(vbc, vbc, &cc);
   2684   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 4)
   2685   vbs = vec_find_any_eq_cc(vss, vss, &cc);
   2686   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2687   vbs = vec_find_any_eq_cc(vus, vus, &cc);
   2688   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2689   vbs = vec_find_any_eq_cc(vbs, vbs, &cc);
   2690   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 4)
   2691   vbi = vec_find_any_eq_cc(vsi, vsi, &cc);
   2692   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2693   vbi = vec_find_any_eq_cc(vui, vui, &cc);
   2694   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2695   vbi = vec_find_any_eq_cc(vbi, vbi, &cc);
   2696   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 4)
   2697 
   2698   vsc = vec_find_any_eq_idx(vsc, vsc);
   2699   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2700   vuc = vec_find_any_eq_idx(vuc, vuc);
   2701   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2702   vuc = vec_find_any_eq_idx(vbc, vbc);
   2703   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2704   vss = vec_find_any_eq_idx(vss, vss);
   2705   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2706   vus = vec_find_any_eq_idx(vus, vus);
   2707   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2708   vus = vec_find_any_eq_idx(vbs, vbs);
   2709   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2710   vsi = vec_find_any_eq_idx(vsi, vsi);
   2711   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2712   vui = vec_find_any_eq_idx(vui, vui);
   2713   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2714   vui = vec_find_any_eq_idx(vbi, vbi);
   2715   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2716 
   2717   vsc = vec_find_any_eq_idx_cc(vsc, vsc, &cc);
   2718   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2719   vuc = vec_find_any_eq_idx_cc(vuc, vuc, &cc);
   2720   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2721   vuc = vec_find_any_eq_idx_cc(vbc, vbc, &cc);
   2722   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2723   vss = vec_find_any_eq_idx_cc(vss, vss, &cc);
   2724   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2725   vus = vec_find_any_eq_idx_cc(vus, vus, &cc);
   2726   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2727   vus = vec_find_any_eq_idx_cc(vbs, vbs, &cc);
   2728   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2729   vsi = vec_find_any_eq_idx_cc(vsi, vsi, &cc);
   2730   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2731   vui = vec_find_any_eq_idx_cc(vui, vui, &cc);
   2732   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2733   vui = vec_find_any_eq_idx_cc(vbi, vbi, &cc);
   2734   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2735 
   2736   vsc = vec_find_any_eq_or_0_idx(vsc, vsc);
   2737   // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2738   vuc = vec_find_any_eq_or_0_idx(vuc, vuc);
   2739   // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2740   vuc = vec_find_any_eq_or_0_idx(vbc, vbc);
   2741   // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2742   vss = vec_find_any_eq_or_0_idx(vss, vss);
   2743   // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2744   vus = vec_find_any_eq_or_0_idx(vus, vus);
   2745   // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2746   vus = vec_find_any_eq_or_0_idx(vbs, vbs);
   2747   // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2748   vsi = vec_find_any_eq_or_0_idx(vsi, vsi);
   2749   // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2750   vui = vec_find_any_eq_or_0_idx(vui, vui);
   2751   // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2752   vui = vec_find_any_eq_or_0_idx(vbi, vbi);
   2753   // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2754 
   2755   vsc = vec_find_any_eq_or_0_idx_cc(vsc, vsc, &cc);
   2756   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2757   vuc = vec_find_any_eq_or_0_idx_cc(vuc, vuc, &cc);
   2758   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2759   vuc = vec_find_any_eq_or_0_idx_cc(vbc, vbc, &cc);
   2760   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 0)
   2761   vss = vec_find_any_eq_or_0_idx_cc(vss, vss, &cc);
   2762   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2763   vus = vec_find_any_eq_or_0_idx_cc(vus, vus, &cc);
   2764   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2765   vus = vec_find_any_eq_or_0_idx_cc(vbs, vbs, &cc);
   2766   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 0)
   2767   vsi = vec_find_any_eq_or_0_idx_cc(vsi, vsi, &cc);
   2768   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2769   vui = vec_find_any_eq_or_0_idx_cc(vui, vui, &cc);
   2770   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2771   vui = vec_find_any_eq_or_0_idx_cc(vbi, vbi, &cc);
   2772   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 0)
   2773 
   2774   vbc = vec_find_any_ne(vsc, vsc);
   2775   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2776   vbc = vec_find_any_ne(vuc, vuc);
   2777   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2778   vbc = vec_find_any_ne(vbc, vbc);
   2779   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2780   vbs = vec_find_any_ne(vss, vss);
   2781   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2782   vbs = vec_find_any_ne(vus, vus);
   2783   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2784   vbs = vec_find_any_ne(vbs, vbs);
   2785   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2786   vbi = vec_find_any_ne(vsi, vsi);
   2787   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2788   vbi = vec_find_any_ne(vui, vui);
   2789   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2790   vbi = vec_find_any_ne(vbi, vbi);
   2791   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2792 
   2793   vbc = vec_find_any_ne_cc(vsc, vsc, &cc);
   2794   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2795   vbc = vec_find_any_ne_cc(vuc, vuc, &cc);
   2796   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2797   vbc = vec_find_any_ne_cc(vbc, vbc, &cc);
   2798   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 12)
   2799   vbs = vec_find_any_ne_cc(vss, vss, &cc);
   2800   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2801   vbs = vec_find_any_ne_cc(vus, vus, &cc);
   2802   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2803   vbs = vec_find_any_ne_cc(vbs, vbs, &cc);
   2804   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 12)
   2805   vbi = vec_find_any_ne_cc(vsi, vsi, &cc);
   2806   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2807   vbi = vec_find_any_ne_cc(vui, vui, &cc);
   2808   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2809   vbi = vec_find_any_ne_cc(vbi, vbi, &cc);
   2810   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 12)
   2811 
   2812   vsc = vec_find_any_ne_idx(vsc, vsc);
   2813   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2814   vuc = vec_find_any_ne_idx(vuc, vuc);
   2815   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2816   vuc = vec_find_any_ne_idx(vbc, vbc);
   2817   // CHECK: call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2818   vss = vec_find_any_ne_idx(vss, vss);
   2819   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2820   vus = vec_find_any_ne_idx(vus, vus);
   2821   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2822   vus = vec_find_any_ne_idx(vbs, vbs);
   2823   // CHECK: call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2824   vsi = vec_find_any_ne_idx(vsi, vsi);
   2825   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2826   vui = vec_find_any_ne_idx(vui, vui);
   2827   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2828   vui = vec_find_any_ne_idx(vbi, vbi);
   2829   // CHECK: call <4 x i32> @llvm.s390.vfaef(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2830 
   2831   vsc = vec_find_any_ne_idx_cc(vsc, vsc, &cc);
   2832   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2833   vuc = vec_find_any_ne_idx_cc(vuc, vuc, &cc);
   2834   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2835   vuc = vec_find_any_ne_idx_cc(vbc, vbc, &cc);
   2836   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2837   vss = vec_find_any_ne_idx_cc(vss, vss, &cc);
   2838   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2839   vus = vec_find_any_ne_idx_cc(vus, vus, &cc);
   2840   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2841   vus = vec_find_any_ne_idx_cc(vbs, vbs, &cc);
   2842   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2843   vsi = vec_find_any_ne_idx_cc(vsi, vsi, &cc);
   2844   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2845   vui = vec_find_any_ne_idx_cc(vui, vui, &cc);
   2846   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2847   vui = vec_find_any_ne_idx_cc(vbi, vbi, &cc);
   2848   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2849 
   2850   vsc = vec_find_any_ne_or_0_idx(vsc, vsc);
   2851   // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2852   vuc = vec_find_any_ne_or_0_idx(vuc, vuc);
   2853   // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2854   vuc = vec_find_any_ne_or_0_idx(vbc, vbc);
   2855   // CHECK: call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2856   vss = vec_find_any_ne_or_0_idx(vss, vss);
   2857   // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2858   vus = vec_find_any_ne_or_0_idx(vus, vus);
   2859   // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2860   vus = vec_find_any_ne_or_0_idx(vbs, vbs);
   2861   // CHECK: call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2862   vsi = vec_find_any_ne_or_0_idx(vsi, vsi);
   2863   // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2864   vui = vec_find_any_ne_or_0_idx(vui, vui);
   2865   // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2866   vui = vec_find_any_ne_or_0_idx(vbi, vbi);
   2867   // CHECK: call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2868 
   2869   vsc = vec_find_any_ne_or_0_idx_cc(vsc, vsc, &cc);
   2870   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2871   vuc = vec_find_any_ne_or_0_idx_cc(vuc, vuc, &cc);
   2872   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2873   vuc = vec_find_any_ne_or_0_idx_cc(vbc, vbc, &cc);
   2874   // CHECK: call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %{{.*}}, <16 x i8> %{{.*}}, i32 8)
   2875   vss = vec_find_any_ne_or_0_idx_cc(vss, vss, &cc);
   2876   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2877   vus = vec_find_any_ne_or_0_idx_cc(vus, vus, &cc);
   2878   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2879   vus = vec_find_any_ne_or_0_idx_cc(vbs, vbs, &cc);
   2880   // CHECK: call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %{{.*}}, <8 x i16> %{{.*}}, i32 8)
   2881   vsi = vec_find_any_ne_or_0_idx_cc(vsi, vsi, &cc);
   2882   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2883   vui = vec_find_any_ne_or_0_idx_cc(vui, vui, &cc);
   2884   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2885   vui = vec_find_any_ne_or_0_idx_cc(vbi, vbi, &cc);
   2886   // CHECK: call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %{{.*}}, <4 x i32> %{{.*}}, i32 8)
   2887 }
   2888 
   2889 void test_float(void) {
   2890   vd = vec_abs(vd);
   2891   // CHECK: call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
   2892 
   2893   vd = vec_nabs(vd);
   2894   // CHECK: [[ABS:%[^ ]+]] = tail call <2 x double> @llvm.fabs.v2f64(<2 x double> %{{.*}})
   2895   // CHECK-NEXT: fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, [[ABS]]
   2896 
   2897   vd = vec_madd(vd, vd, vd);
   2898   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})
   2899   vd = vec_msub(vd, vd, vd);
   2900   // CHECK: [[NEG:%[^ ]+]] = fsub <2 x double> <double -0.000000e+00, double -0.000000e+00>, %{{.*}}
   2901   // CHECK: call <2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]])
   2902   vd = vec_sqrt(vd);
   2903   // CHECK: call <2 x double> @llvm.sqrt.v2f64(<2 x double> %{{.*}})
   2904 
   2905   vd = vec_ld2f(cptrf);
   2906   // CHECK: [[VAL:%[^ ]+]] = load <2 x float>, <2 x float>* %{{.*}}
   2907   // CHECK: fpext <2 x float> [[VAL]] to <2 x double>
   2908   vec_st2f(vd, ptrf);
   2909   // CHECK: [[VAL:%[^ ]+]] = fptrunc <2 x double> %{{.*}} to <2 x float>
   2910   // CHECK: store <2 x float> [[VAL]], <2 x float>* %{{.*}}
   2911 
   2912   vd = vec_ctd(vsl, 0);
   2913   // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
   2914   vd = vec_ctd(vul, 0);
   2915   // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
   2916   vd = vec_ctd(vsl, 1);
   2917   // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double>
   2918   // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01>
   2919   vd = vec_ctd(vul, 1);
   2920   // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double>
   2921   // CHECK: fmul <2 x double> [[VAL]], <double 5.000000e-01, double 5.000000e-01>
   2922   vd = vec_ctd(vsl, 31);
   2923   // CHECK: [[VAL:%[^ ]+]] = sitofp <2 x i64> %{{.*}} to <2 x double>
   2924   // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000>
   2925   vd = vec_ctd(vul, 31);
   2926   // CHECK: [[VAL:%[^ ]+]] = uitofp <2 x i64> %{{.*}} to <2 x double>
   2927   // CHECK: fmul <2 x double> [[VAL]], <double 0x3E00000000000000, double 0x3E00000000000000>
   2928 
   2929   vsl = vec_ctsl(vd, 0);
   2930   // CHECK: fptosi <2 x double> %{{.*}} to <2 x i64>
   2931   vul = vec_ctul(vd, 0);
   2932   // CHECK: fptoui <2 x double> %{{.*}} to <2 x i64>
   2933   vsl = vec_ctsl(vd, 1);
   2934   // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00>
   2935   // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64>
   2936   vul = vec_ctul(vd, 1);
   2937   // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 2.000000e+00, double 2.000000e+00>
   2938   // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64>
   2939   vsl = vec_ctsl(vd, 31);
   2940   // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000>
   2941   // CHECK: fptosi <2 x double> [[VAL]] to <2 x i64>
   2942   vul = vec_ctul(vd, 31);
   2943   // CHECK: [[VAL:%[^ ]+]] = fmul <2 x double> %{{.*}}, <double 0x41E0000000000000, double 0x41E0000000000000>
   2944   // CHECK: fptoui <2 x double> [[VAL]] to <2 x i64>
   2945 
   2946   vd = vec_roundp(vd);
   2947   // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}})
   2948   vd = vec_ceil(vd);
   2949   // CHECK: call <2 x double> @llvm.ceil.v2f64(<2 x double> %{{.*}})
   2950   vd = vec_roundm(vd);
   2951   // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}})
   2952   vd = vec_floor(vd);
   2953   // CHECK: call <2 x double> @llvm.floor.v2f64(<2 x double> %{{.*}})
   2954   vd = vec_roundz(vd);
   2955   // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}})
   2956   vd = vec_trunc(vd);
   2957   // CHECK: call <2 x double> @llvm.trunc.v2f64(<2 x double> %{{.*}})
   2958   vd = vec_roundc(vd);
   2959   // CHECK: call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %{{.*}})
   2960   vd = vec_round(vd);
   2961   // CHECK: call <2 x double> @llvm.s390.vfidb(<2 x double> %{{.*}}, i32 4, i32 4)
   2962 
   2963   vbl = vec_fp_test_data_class(vd, 0, &cc);
   2964   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 0)
   2965   vbl = vec_fp_test_data_class(vd, 4095, &cc);
   2966   // CHECK: call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %{{.*}}, i32 4095)
   2967 }
   2968