/* { dg-do compile } */
/* { dg-require-effective-target powerpc_p8vector_ok } */
/* { dg-options "-mdejagnu-cpu=power8 -O0 -mno-fold-gimple -dp" } */
/* { dg-prune-output "gimple folding of rs6000 builtins has been disabled." } */

#include <altivec.h>

vector double y = { 2.0, 4.0 };
vector double z;

int main ()
{
  vector float fa = {1.0, 2.0, 3.0, -4.0};
  vector float fb = {-2.0, -3.0, -4.0, -5.0};
  vector float fd = vec_and (fa, fb);
  vector float fc = vec_cpsgn (fa, fb);
  vector float fe = vec_mergeh (fa, fb);
  vector float ff = vec_mergel (fa, fb);

  vector double da = {1.0, 2.0};
  vector double db = {-2.0, -3.0};
  vector double dz = vec_and (da, db);

  vector signed int si_a = {1, 2, 3, 4};
  vector unsigned int ui_a = {1, 2, 3, 4};

  vector long long la = {5L, 14L};
  vector long long lb = {3L, 86L};
  vector long long lc = vec_and (la, lb);
  vector bool long long ld = {0, -1};
  vector long long le = vec_and (la, ld);
  vector long long lf = vec_and (ld, lb);

  vector unsigned long long ua = {5L, 14L};
  vector unsigned long long ub = {3L, 86L};
  vector unsigned long long uc = vec_and (ua, ub);
  vector bool long long ud = {0, -1};
  vector unsigned long long ue = vec_and (ua, ud);
  vector unsigned long long uf = vec_and (ud, ub);

  vector long long lg = vec_andc (la, lb);
  vector long long lh = vec_andc (la, ld);
  vector long long li = vec_andc (ld, lb);

  vector unsigned long long ug = vec_andc (ua, ub);
  vector unsigned long long uh = vec_andc (ua, ud);
  vector unsigned long long ui = vec_andc (ud, ub);

  vector double de = {1.0, -4.0};
  vector double df = {-2.0, 5.0};
  vector double dg = vec_cpsgn (de, df);
  vector double dzw = vec_mergeh (de, df);
  vector double dze = vec_mergel (de, df);

  vector long long lj = vec_mergeh (la, lb);
  vector long long lk = vec_mergeh (la, ld);
  vector long long ll = vec_mergeh (ld, la);

  vector unsigned long long uj = vec_mergeh (ua, ub);
  vector unsigned long long uk = vec_mergeh (ua, ud);
  vector unsigned long long ul = vec_mergeh (ud, ua);

  vector pixel pa = {9, 16, 25, 36, 1, 2, 3, 4};
  vector pixel pb = {25, 36, 1, 2, 45, 3, 4, 99};
  vector pixel pc = vec_mergeh (pa, pb);
  vector pixel pd = vec_mergel (pa, pb);

  vector long long lm = vec_mergel (la, lb);
  vector long long ln = vec_mergel (la, ld);
  vector long long lo = vec_mergel (ld, la);

  vector unsigned long long um = vec_mergel (ua, ub);
  vector unsigned long long un = vec_mergel (ua, ud);
  vector unsigned long long uo = vec_mergel (ud, ua);

  vector long long lp = vec_nor (la, lb);
  vector long long lq = vec_nor (la, ld);
  vector long long lr = vec_nor (ld, la);

  vector unsigned long long up = vec_nor (ua, ub);
  vector unsigned long long uq = vec_nor (ua, ud);
  vector unsigned long long ur = vec_nor (ud, ua);

  vector unsigned char ca = {0,4,8,1,5,9,2,6,10,3,7,11,15,12,14,13};
  vector unsigned char cbb = {5,4,8,3,1,9,2,6,10,3,7,11,15,12,14,13};

  vector unsigned char ucba = {5,4,8,3,1,9,2,6,10,3,7,11,15,12,14,13};
  vector unsigned char ucbb = {5,4,8,3,1,9,2,6,10,3,7,11,15,12,14,13};
  vector unsigned char ucbc = {5,4,8,3,1,9,2,6,10,3,7,11,15,12,14,13};

  vector long long lv = vec_perm (la, lb, ca);

  vector unsigned char  ucm = vec_and (ca, cbb);
  vector unsigned char  ucn = vec_andc (ca, cbb);
  vector unsigned char  uco = vec_mergel (ca, cbb);

  vector unsigned long long uv = vec_perm (ua, ub, ca);

  vector long long lx = vec_sel (la, lb, uc);
  vector long long ly = vec_sel (la, lb, ld);

  vector unsigned long long uw = vec_sel (ua, ub, lc);
  vector unsigned long long ux = vec_sel (ua, ub, uc);
  vector unsigned long long uy = vec_sel (ua, ub, ld);

  vector long long lz = vec_xor (la, lb);
  vector long long l0 = vec_xor (la, ld);
  vector long long l1 = vec_xor (ld, la);

  vector unsigned long long uz = vec_xor (ua, ub);
  vector unsigned long long u0 = vec_xor (ua, ud);
  vector unsigned long long u1 = vec_xor (ud, ua);

  int ia = vec_all_eq (ua, ub);
  int ib = vec_all_ge (ua, ub);
  int ic = vec_all_gt (ua, ub);
  int id = vec_all_le (ua, ub);
  int ie = vec_all_lt (ua, ub);
  int ig = vec_all_ne (ua, ub);

  int ih = vec_any_eq (ua, ub);
  int ii = vec_any_ge (ua, ub);
  int ij = vec_any_gt (ua, ub);
  int ik = vec_any_le (ua, ub);
  int il = vec_any_lt (ua, ub);
  int im = vec_any_ne (ua, ub);

  vector short ssa = {9, 16, 25, 36, 1, 2, 3, 4};
  vector short ssb = {-8, -27, -64, -125, 2, 3, 5, 3};
  vector short sscc = vec_and (ssa, ssb);
  vector short sscd = vec_mergeh (ssa, ssb);
  vector short ssce = vec_mergel (ssa, ssb);

  vector int sia = {9, 16, 25, 36};
  vector int sib = {-8, -27, -64, -125};
  vector int sicc = vec_and (sia, sib);
  vector int sicd = vec_andc (sia, sib);
  vector int sig = vec_mergel (sia, sib);

  vector unsigned int uia = {9, 16, 25, 36};
  vector unsigned int uib = {8, 27, 64, 125};
  vector unsigned int uicc = vec_and (uia, uib);
  vector unsigned int uidd = vec_andc (uia, uib);
  vector unsigned int uig = vec_mergel (uia, uib);

  vector bool char bca = {0, 1, 4, 7};
  vector bool char bcb = {-8, 9, 2, 9};
  vector bool char bcc = vec_and (bca, bcb);
  vector bool char bcd = vec_andc (bca, bcb);
  vector bool char bce = vec_mergel (bca, bcb);

  vector bool short bsa = {0, -1, -1, 0, 3, 4, 6, 7};
  vector bool short bsb = {-1, -1, 0, -1, 0, 0, 0, 0};
  vector bool short bscc = vec_and (bsa, bsb);
  vector bool short bscd = vec_andc (bsa, bsb);
  vector bool short bsce = vec_mergel (bsa, bsb);

  vector bool int bia = {0, -1, -1, 0};
  vector bool int bib = {-1, -1, 0, -1};
  vector bool int bicc = vec_and (bia, bib);
  vector bool int bicd = vec_andc (bia, bib);
  vector bool int bide = vec_mergel (bia, bib);

  vector unsigned int uie = vec_packsu (ua, ub);

  vector long long l2 = vec_cntlz (la);
  vector unsigned long long u2 = vec_cntlz (ua);
  vector int sie = vec_cntlz (sia);
  vector unsigned int uif = vec_cntlz (uia);
  vector short sszz = vec_cntlz (ssa);

  vector unsigned short usa = {81, 72, 63, 54, 45, 36, 27, 18};
  vector unsigned short usb = {81, 72, 63, 54, 45, 36, 27, 18};
  vector unsigned short usd = vec_and (usa, usb);
  vector unsigned short use = vec_andc (usa, usb);
  vector unsigned short usc = vec_cntlz (usa);
  vector unsigned short uscd = vec_mergeh (usa, usb);
  vector unsigned short usce = vec_mergel (usa, usb);

  vector signed char sca = {-4, 3, -9, 15, -31, 31, 0, 0,
		            1, 117, -36, 99, 98, 97, 96, 95};
  vector signed char scb = vec_cntlz (sca);
  vector signed char scc = vec_mergel (sca, scb);

  vector unsigned char uca = {4, 3, 9, 15, 30, 31, 0, 0,
			      1, 117, 36, 99, 98, 97, 96, 95};
  vector unsigned char cb = vec_cntlz (ca);

  vector double dd = vec_xl (0, &y);
  vec_xst (dd, 0, &z);

  vector double dzz = vec_round (dd);
  vector double dzz1 = vec_rsqrt (dd);
  vector double dzz2 = vec_rsqrte (dd);

  vector float ff1 = vec_round (fa);
  vector float ff2 = vec_rsqrt (fa);
  vector float ff3 = vec_rsqrte (fa);

  vector double dff = vec_splat (de, 0);
  vector double dgg = vec_splat (de, 1);
  vector long long l3 = vec_splat (l2, 0);
  vector long long l4 = vec_splat (l2, 1);
  vector unsigned long long u3 = vec_splat (u2, 0);
  vector unsigned long long u4 = vec_splat (u2, 1);
  vector bool long long l5 = vec_splat (ld, 0);
  vector bool long long l6 = vec_splat (ld, 1);
  vector bool long long l10 = vec_mergee (ld, ld);
  vector bool long long l11 = vec_mergeo (ld, ld);
  vector bool long long l15 = vec_and (ld, ld);
  
  vector long long l7 = vec_div (l3, l4);
  vector unsigned long long u5 = vec_div (u3, u4);
  vector long long l12 = vec_mergee (la, lb);
  vector long long l13 = vec_mergeo (la, lb);
  vector unsigned long long u8 = vec_mergee (u3, u4);
  vector unsigned long long u9 = vec_mergeo (u3, u4);

  vector long long l8 = vec_mul (l3, l4);
  vector unsigned long long u6 = vec_mul (u3, u4);

  vector int sz = vec_cts (fa, 0x1F);
  vector unsigned int usz = vec_ctu (fa, 0x1F);

  vector float f1 = vec_mergee (fa, fb);
  vector float f2 = vec_mergeo (fa, fb);

  vector double d1 = vec_mergee (da, db);
  vector double d2 = vec_mergeo (da, db);

  vector float f3 = vec_ctf (si_a, 1);
  vector float f4 = vec_ctf (ui_a, 2);

  vector bool char z_vbc2 = vec_splat (bca, 0);
  vector signed char z_vsc1 = vec_splat (sca, 1);
  vector unsigned char z_vuc1 = vec_splat (ucbc, 2);

  vector bool int z_vbi1 = vec_splat (bia, 3);
  vector signed int z_vsi1 = vec_splat (sia, 1);
  vector unsigned int z_vui1 = vec_splat (uia, 2);

  vector bool int z_bi2 = vec_mergee (bia, bib);
  vector signed int z_si2 = vec_mergee (sia, sib);
  vector unsigned int z_ui2 = vec_mergee (uia, uib);
  
  vector bool char z_bc2 = vec_mergeh (bca, bcb);
  vector signed char z_sc2 = vec_mergeh (sca, scb);
  vector bool int z_bi3 = vec_mergeh (bia, bib);
  vector signed int z_si3 = vec_mergeh (sia, sib);
  vector unsigned int z_ui3 = vec_mergeh (uia, uib);
  vector bool short z_bs1 = vec_mergeh (bsa, bsb);

  vector bool int z_bi4 = vec_mergeo (bia, bib);
  vector signed int z_si4 = vec_mergeo (sia, sib);
  vector unsigned int z_ui4 = vec_mergeo (uia, uib);
  
  vector pixel int z_vp1 = vec_splat (pa, 1);
  vector bool short z_bs2 = vec_splat (bsa, 0);
  vector short signed int z_vss1 = vec_splat (ssa, 2);
  vector unsigned short int z_vuss1 = vec_splat (usa, 1);

  return 0;
}

/* Expected results:
   vec_all_eq          vcmpequd.
   vec_all_ge          vcmpgtud.
   vec_all_ne          vcmpequd.
   vec_any_eq          vcmpequd.
   vec_any_ne          vcmpequd.
   vec_all_gt          vcmpgtud.
   vec_all_le          vcmpgtud.
   vec_all_lt          vcmpgtud.
   vec_any_ge          vcmpgtud.
   vec_any_gt          vcmpgtud.
   vec_any_lt          vcmpgtud.
   vec_any_le          vcmpgtud.
   vec_and             xxland
   vec_andc            xxlandc
   vec_cntlz           vclzd, vclzb, vclzw, vclzh
   vec_cpsgn           xvcpsgnsp           
   vec_ctf             xvmuldp 
   vec_cts             vctsxs
   vec_ctu             vctuxs
   vec_div             divd, divdu | __divdi3(), __udivdi3()
   vec_mergel          vmrghb, vmrghh, xxmrghw
   vec_mergeh          xxmrglw, vmrglh, vmrglb
   vec_mul             mulld | mullw, mulhwu
   vec_nor             xxlnor
   vec_packsu          vpkudus
   vec_perm            vperm
   vec_round           xvrdpi
   vec_sel             xxsel
   vec_xor             xxlxor 
   vec_rsqrt           xvrsqrtesp
   vec_rsqrte          xvrsqrtesp
   vec_xl              lxvd2x
   vec_xst             stxvd2x
   vec_splat           xxspltb, xxspltw, vsplth
   vec_mergee          xxmrgld, vmrgow
   vec_mergeo          xxmrghd, vmrgew  */

/* { dg-final { scan-assembler-times "vcmpequd" 8 } } */
/* { dg-final { scan-assembler-times "vcmpgtud" 16 } } */
/* { dg-final { scan-assembler-times "xxland" 30 } } */
/* { dg-final { scan-assembler-times "xxlandc" 13 } } */
/* { dg-final { scan-assembler-times "vclzb" 2 } } */
/* { dg-final { scan-assembler-times "vclzd" 2 } } */
/* { dg-final { scan-assembler-times "vclzw" 2 } } */
/* { dg-final { scan-assembler-times "vclzh" 2 } } */
/* { dg-final { scan-assembler-times "xvcpsgnsp" 1 } } */
/* { dg-final { scan-assembler-times "xvcpsgndp" 1 } } */
/* { dg-final { scan-assembler-times "xvmuldp" 2 } } */
/* { dg-final { scan-assembler-times "xvcvdpsxds" 0 } } */
/* { dg-final { scan-assembler-times "vctsxs" 2 } } */
/* { dg-final { scan-assembler-times "xvcvdpuxds" 0 } } */
/* { dg-final { scan-assembler-times "vctuxs" 2 } } */

/* { dg-final { scan-assembler-times "vmrghb" 4 { target be } } } */
/* { dg-final { scan-assembler-times "vmrghb" 6 { target le } } } */
/* { dg-final { scan-assembler-times "vmrghh" 8 } } */
/* { dg-final { scan-assembler-times "xxmrghw" 4 } } */
/* { dg-final { scan-assembler-times "xxmrglw" 4 } } */
/* { dg-final { scan-assembler-times "vmrglh" 8 } } */
/* { dg-final { scan-assembler-times "xxlnor" 6 } } */
/* { dg-final { scan-assembler-times {\mvpkudus\M} 1 } } */
/* { dg-final { scan-assembler-times "vperm" 4 } } */
/* { dg-final { scan-assembler-times "xvrdpi" 2 } } */
/* { dg-final { scan-assembler-times "xxsel" 10 } } */
/* { dg-final { scan-assembler-times "xxlxor" 6 } } */
/* { dg-final { scan-assembler-times "divd" 8  { target lp64 } } } */
/* { dg-final { scan-assembler-times "divdu" 2  { target lp64 } } } */
/* { dg-final { scan-assembler-times "mulld" 4  { target lp64 } } } */
/* check for .__divdi3 (AIX), __divdi3 (Linux) and ___divdi3 (Darwin) */
/* { dg-final { scan-assembler-times {\mbl \.?_?__divdi3\M} 2   { target { ilp32 } } } } */
/* check for both .__udivdi3 (AIX), __udivdi3 (Linux) and ___udivdi3 (Darwin) */
/* { dg-final { scan-assembler-times {\mbl \.?_?__udivdi3\M} 2  { target { ilp32 } } } } */
/* { dg-final { scan-assembler-times "mullw" 12  { target ilp32 } } } */
/* { dg-final { scan-assembler-times "mulhwu" 4  { target ilp32 } } } */
/* { dg-final { scan-assembler-times "xxmrgld" 0 } } */
/* { dg-final { scan-assembler-times "xxmrghd" 0 } } */
/* { dg-final { scan-assembler-times "xvrsqrtesp" 2 } } */
/* { dg-final { scan-assembler-times "xvrsqrtedp" 2 } } */
/* { dg-final { scan-assembler-times "xxspltd" 8 } } */
/* { dg-final { scan-assembler-times "vcfsx" 2 } } */
/* { dg-final { scan-assembler-times "vcfux" 2 } } */
/* { dg-final { scan-assembler-times "vspltb" 6 } } */
/* { dg-final { scan-assembler-times "vspltw" 0 } } */
/* { dg-final { scan-assembler-times "vmrgow" 8 } } */
/* { dg-final { scan-assembler-times "vmrglb" 4 { target le } } } */
/* { dg-final { scan-assembler-times "vmrglb" 6 { target be } } } */
/* { dg-final { scan-assembler-times "vmrgew" 8 } } */
/* { dg-final { scan-assembler-times "vsplth" 8 } } */
/* { dg-final { scan-assembler-times "vcmpequd." 8 } } */
/* { dg-final { scan-assembler-times "vcmpgtud." 16 } } */
/* { dg-final { scan-assembler-times "vrfin" 2 } } */

