blob: 28cd1aa6b1a9bcc67c2965af58bf0b193f0b3b37 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-require-effective-target powerpc_p8vector_ok } */
/* { dg-options "-mdejagnu-cpu=power8 -O2" } */
/* { dg-additional-options "-mbig" { target powerpc64le-*-* } } */
#include <altivec.h>
vector float
foo0 (vector float fa, vector float fb)
{
return vec_and (fa, fb);
}
vector float
foo1 (vector float fa, vector float fb)
{
return vec_cpsgn (fa, fb);
}
vector float
foo2 (vector float fa, vector float fb)
{
return vec_mergeh (fa, fb);
}
vector float
foo3 (vector float fa, vector float fb)
{
return vec_mergel (fa, fb);
}
vector double
foo4 (vector double da, vector double db)
{
return vec_and (da, db);
}
vector long long
foo5 (vector long long la, vector long long lb)
{
return vec_and (la, lb);
}
vector long long
foo6 (vector long long la, vector bool long long ld)
{
return vec_and (la, ld);
}
vector long long
foo7 (vector bool long long ld, vector long long lb)
{
return vec_and (ld, lb);
}
vector unsigned long long
foo8 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_and (ua, ub);
}
vector unsigned long long
foo9 (vector unsigned long long ua, vector bool long long ud)
{
return vec_and (ua, ud);
}
vector unsigned long long
foo10 (vector bool long long ud, vector unsigned long long ub)
{
return vec_and (ud, ub);
}
vector long long
foo11 (vector long long la, vector long long lb)
{
return vec_andc (la, lb);
}
vector long long
foo12 (vector long long la, vector bool long long ld)
{
return vec_andc (la, ld);
}
vector long long
foo13 (vector bool long long ld, vector long long lb)
{
return vec_andc (ld, lb);
}
vector unsigned long long
foo14 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_andc (ua, ub);
}
vector unsigned long long
foo15 (vector unsigned long long ua, vector bool long long ud)
{
return vec_andc (ua, ud);
}
vector unsigned long long
foo16 (vector bool long long ud, vector unsigned long long ub)
{
return vec_andc (ud, ub);
}
vector double
foo17 (vector double de, vector double df)
{
return vec_cpsgn (de, df);
}
vector double
foo18 (vector double de, vector double df)
{
return vec_mergeh (de, df);
}
vector double
foo19 (vector double de, vector double df)
{
return vec_mergel (de, df);
}
vector long long
foo20 (vector long long la, vector long long lb)
{
return vec_mergeh (la, lb);
}
vector long long
foo21 (vector long long la, vector bool long long ld)
{
return vec_mergeh (la, ld);
}
vector long long
foo22 (vector bool long long ld, vector long long lb)
{
return vec_mergeh (ld, lb);
}
vector unsigned long long
foo23 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_mergeh (ua, ub);
}
vector unsigned long long
foo24 (vector unsigned long long ua, vector bool long long ud)
{
return vec_mergeh (ua, ud);
}
vector unsigned long long
foo25 (vector bool long long ud, vector unsigned long long ub)
{
return vec_mergeh (ud, ub);
}
vector pixel
foo26 (vector pixel pa, vector pixel pb)
{
return vec_mergeh (pa, pb);
}
vector pixel
foo27 (vector pixel pa, vector pixel pb)
{
return vec_mergel (pa, pb);
}
vector long long
foo28 (vector long long la, vector long long lb)
{
return vec_mergel (la, lb);
}
vector long long
foo29 (vector long long la, vector bool long long ld)
{
return vec_mergel (la, ld);
}
vector long long
foo30 (vector bool long long ld, vector long long lb)
{
return vec_mergel (ld, lb);
}
vector unsigned long long
foo31 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_mergel (ua, ub);
}
vector unsigned long long
foo32 (vector unsigned long long ua, vector bool long long ud)
{
return vec_mergel (ua, ud);
}
vector unsigned long long
foo33 (vector bool long long ud, vector unsigned long long ub)
{
return vec_mergel (ud, ub);
}
vector long long
foo34 (vector long long la, vector long long lb)
{
return vec_nor (la, lb);
}
vector long long
foo35 (vector long long la, vector bool long long ld)
{
return vec_nor (la, ld);
}
vector long long
foo36 (vector bool long long ld, vector long long lb)
{
return vec_nor (ld, lb);
}
vector unsigned long long
foo37 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_nor (ua, ub);
}
vector unsigned long long
foo38 (vector unsigned long long ua, vector bool long long ud)
{
return vec_nor (ua, ud);
}
vector unsigned long long
foo39 (vector bool long long ud, vector unsigned long long ub)
{
return vec_nor (ud, ub);
}
vector long long
foo40 (vector long long la, vector long long lb, vector unsigned char ca)
{
return vec_perm (la, lb, ca);
}
vector unsigned char
foo41 (vector unsigned char ca, vector unsigned char cbb)
{
return vec_and (ca, cbb);
}
vector unsigned char
foo42 (vector unsigned char ca, vector unsigned char cbb)
{
return vec_andc (ca, cbb);
}
vector unsigned char
foo43 (vector unsigned char ca, vector unsigned char cbb)
{
return vec_mergel (ca, cbb);
}
vector unsigned long long
foo44 (vector unsigned long long ua, vector unsigned long long ub,
vector unsigned char ca)
{
return vec_perm (ua, ub, ca);
}
vector long long
foo45 (vector long long la, vector long long lb, vector unsigned long long uc)
{
return vec_sel (la, lb, uc);
}
vector long long
foo46 (vector long long la, vector long long lb, vector bool long long ld)
{
return vec_sel (la, lb, ld);
}
vector unsigned long long
foo47 (vector unsigned long long ua, vector unsigned long long ub,
vector long long lc)
{
return vec_sel (ua, ub, lc);
}
vector unsigned long long
foo48 (vector unsigned long long ua, vector unsigned long long ub,
vector unsigned long long uc)
{
return vec_sel (ua, ub, uc);
}
vector unsigned long long
foo49 (vector unsigned long long ua, vector unsigned long long ub,
vector bool long long ld)
{
return vec_sel (ua, ub, ld);
}
vector long long
foo50 (vector long long la, vector long long lb)
{
return vec_xor (la, lb);
}
vector long long
foo51 (vector long long la, vector bool long long ld)
{
return vec_xor (la, ld);
}
vector long long
foo52 (vector bool long long ld, vector long long la)
{
return vec_xor (ld, la);
}
vector unsigned long long
foo53 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_xor (ua, ub);
}
vector unsigned long long
foo54 (vector unsigned long long ua, vector bool long long ud)
{
return vec_xor (ua, ud);
}
vector unsigned long long
foo55 (vector bool long long ud, vector unsigned long long ua)
{
return vec_xor (ud, ua);
}
int
foo56 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_all_eq (ua, ub);
}
int
foo57 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_all_ge (ua, ub);
}
int
foo58 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_all_gt (ua, ub);
}
int
foo59 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_all_le (ua, ub);
}
int
foo60 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_all_lt (ua, ub);
}
int
foo61 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_all_ne (ua, ub);
}
int
foo62 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_any_eq (ua, ub);
}
int
foo63 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_any_ge (ua, ub);
}
int
foo64 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_any_gt (ua, ub);
}
int
foo65 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_any_le (ua, ub);
}
int
foo66 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_any_lt (ua, ub);
}
int
foo67 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_any_ne (ua, ub);
}
vector short
foo68 (vector short ssa, vector short ssb)
{
return vec_and (ssa, ssb);
}
vector short
foo69 (vector short ssa, vector short ssb)
{
return vec_mergeh (ssa, ssb);
}
vector short
foo70 (vector short ssa, vector short ssb)
{
return vec_mergel (ssa, ssb);
}
vector int
foo71 (vector int sia, vector int sib)
{
return vec_and (sia, sib);
}
vector int
foo72 (vector int sia, vector int sib)
{
return vec_andc (sia, sib);
}
vector int
foo73 (vector int sia, vector int sib)
{
return vec_mergel (sia, sib);
}
vector unsigned int
foo74 (vector unsigned int uia, vector unsigned int uib)
{
return vec_and (uia, uib);
}
vector unsigned int
foo75 (vector unsigned int uia, vector unsigned int uib)
{
return vec_andc (uia, uib);
}
vector unsigned int
foo76 (vector unsigned int uia, vector unsigned int uib)
{
return vec_mergel (uia, uib);
}
vector bool char
foo77 (vector bool char bca, vector bool char bcb)
{
return vec_and (bca, bcb);
}
vector bool char
foo78 (vector bool char bca, vector bool char bcb)
{
return vec_andc (bca, bcb);
}
vector bool char
foo79 (vector bool char bca, vector bool char bcb)
{
return vec_mergel (bca, bcb);
}
vector bool short
foo80 (vector bool short bsa, vector bool short bsb)
{
return vec_and (bsa, bsb);
}
vector bool short
foo81 (vector bool short bsa, vector bool short bsb)
{
return vec_andc (bsa, bsb);
}
vector bool short
foo82 (vector bool short bsa, vector bool short bsb)
{
return vec_mergel (bsa, bsb);
}
vector bool int
foo83 (vector bool int bia, vector bool int bib)
{
return vec_and (bia, bib);
}
vector bool int
foo84 (vector bool int bia, vector bool int bib)
{
return vec_andc (bia, bib);
}
vector bool int
foo85 (vector bool int bia, vector bool int bib)
{
return vec_mergel (bia, bib);
}
vector unsigned int
foo86 (vector unsigned long long ua, vector unsigned long long ub)
{
return vec_packsu (ua, ub);
}
vector long long
foo87 (vector long long la)
{
return vec_cntlz (la);
}
vector unsigned long long
foo88 (vector unsigned long long ua)
{
return vec_cntlz (ua);
}
vector int
foo89 (vector int sia)
{
return vec_cntlz (sia);
}
vector unsigned int
foo90 (vector unsigned int uia)
{
return vec_cntlz (uia);
}
vector short
foo91 (vector short ssa)
{
return vec_cntlz (ssa);
}
vector unsigned short
foo92 (vector unsigned short usa, vector unsigned short usb)
{
return vec_and (usa, usb);
}
vector unsigned short
foo93 (vector unsigned short usa, vector unsigned short usb)
{
return vec_andc (usa, usb);
}
vector unsigned short
foo94 (vector unsigned short usa)
{
return vec_cntlz (usa);
}
vector unsigned short
foo95 (vector unsigned short usa, vector unsigned short usb)
{
return vec_mergeh (usa, usb);
}
vector unsigned short
foo96 (vector unsigned short usa, vector unsigned short usb)
{
return vec_mergel (usa, usb);
}
vector signed char
foo97 (vector signed char sca)
{
return vec_cntlz (sca);
}
vector signed char
foo98 (vector signed char sca, vector signed char scb)
{
return vec_mergel (sca, scb);
}
vector unsigned char
foo99 (vector unsigned char ca)
{
return vec_cntlz (ca);
}
vector double
foo100 (vector double *y)
{
return vec_xl (0, y);
}
void
foo101 (vector double dd, vector double *z)
{
vec_xst (dd, 0, z);
}
vector double
foo102 (vector double dd)
{
return vec_round (dd);
}
vector double
foo103 (vector double dd)
{
return vec_rsqrt (dd);
}
vector double
foo104 (vector double dd)
{
return vec_rsqrte (dd);
}
vector float
foo105 (vector float fa)
{
return vec_round (fa);
}
vector float
foo106 (vector float fa)
{
return vec_rsqrt (fa);
}
vector float
foo107 (vector float fa)
{
return vec_rsqrte (fa);
}
vector double
foo108 (vector double de)
{
return vec_splat (de, 0);
}
vector double
foo109 (vector double de)
{
return vec_splat (de, 1);
}
vector long long
foo110 (vector long long l2)
{
return vec_splat (l2, 0);
}
vector long long
foo111 (vector long long l2)
{
return vec_splat (l2, 1);
}
vector unsigned long long
foo112 (vector unsigned long long u2)
{
return vec_splat (u2, 0);
}
vector unsigned long long
foo113 (vector unsigned long long u2)
{
return vec_splat (u2, 1);
}
vector bool long long
foo114 (vector bool long long ld)
{
return vec_splat (ld, 0);
}
vector bool long long
foo115 (vector bool long long ld)
{
return vec_splat (ld, 1);
}
vector bool long long
foo116 (vector bool long long la, vector bool long long lb)
{
return vec_mergee (la, lb);
}
vector bool long long
foo117 (vector bool long long la, vector bool long long lb)
{
return vec_mergeo (la, lb);
}
vector bool long long
foo118 (vector bool long long la, vector bool long long lb)
{
return vec_and (la, lb);
}
vector long long
foo119 (vector long long l3, vector long long l4)
{
return vec_div (l3, l4);
}
vector unsigned long long
foo120 (vector unsigned long long u3, vector unsigned long long u4)
{
return vec_div (u3, u4);
}
vector long long
foo121 (vector long long la, vector long long lb)
{
return vec_mergee (la, lb);
}
vector long long
foo122 (vector long long la, vector long long lb)
{
return vec_mergeo (la, lb);
}
vector unsigned long long
foo123 (vector unsigned long long u3, vector unsigned long long u4)
{
return vec_mergee (u3, u4);
}
vector unsigned long long
foo124 (vector unsigned long long u3, vector unsigned long long u4)
{
return vec_mergeo (u3, u4);
}
vector long long
foo125 (vector long long l3, vector long long l4)
{
return vec_mul (l3, l4);
}
vector unsigned long long
foo126 (vector unsigned long long u3, vector unsigned long long u4)
{
return vec_mul (u3, u4);
}
vector int
foo127 (vector float fa)
{
return vec_cts (fa, 0x1F);
}
vector unsigned int
foo128 (vector float fa)
{
return vec_ctu (fa, 0x1F);
}
vector float
foo129 (vector float fa, vector float fb)
{
return vec_mergee (fa, fb);
}
vector float
foo130 (vector float fa, vector float fb)
{
return vec_mergeo (fa, fb);
}
vector double
foo131 (vector double da, vector double db)
{
return vec_mergee (da, db);
}
vector double
foo132 (vector double da, vector double db)
{
return vec_mergeo (da, db);
}
vector float
foo133 (vector signed int si_a)
{
return vec_ctf (si_a, 1);
}
vector float
foo134 (vector unsigned int ui_a)
{
return vec_ctf (ui_a, 2);
}
vector bool char
foo135 (vector bool char bca)
{
return vec_splat (bca, 0);
}
vector signed char
foo136 (vector signed char sca)
{
return vec_splat (sca, 1);
}
vector unsigned char
foo137 (vector unsigned char ucbc)
{
return vec_splat (ucbc, 2);
}
vector bool int
foo138 (vector bool int bia)
{
return vec_splat (bia, 3);
}
vector signed int
foo139 (vector signed int sia)
{
return vec_splat (sia, 1);
}
vector unsigned int
foo140 (vector unsigned int uia)
{
return vec_splat (uia, 2);
}
vector bool int
foo141 (vector bool int bia, vector bool int bib)
{
return vec_mergee (bia, bib);
}
vector signed int
foo142 (vector signed int sia, vector signed int sib)
{
return vec_mergee (sia, sib);
}
vector unsigned int
foo143 (vector unsigned int uia, vector unsigned int uib)
{
return vec_mergee (uia, uib);
}
vector bool char
foo144 (vector bool char bca, vector bool char bcb)
{
return vec_mergeh (bca, bcb);
}
vector signed char
foo145 (vector signed char sca, vector signed char scb)
{
return vec_mergeh (sca, scb);
}
vector bool int
foo146 (vector bool int bia, vector bool int bib)
{
return vec_mergeh (bia, bib);
}
vector signed int
foo147 (vector signed int sia, vector signed int sib)
{
return vec_mergeh (sia, sib);
}
vector unsigned int
foo148 (vector unsigned int uia, vector unsigned int uib)
{
return vec_mergeh (uia, uib);
}
vector bool short
foo149 (vector bool short bsa, vector bool short bsb)
{
return vec_mergeh (bsa, bsb);
}
vector bool int
foo150 (vector bool int bia, vector bool int bib)
{
return vec_mergeo (bia, bib);
}
vector signed int
foo151 (vector signed int sia, vector signed int sib)
{
return vec_mergeo (sia, sib);
}
vector unsigned int
foo152 (vector unsigned int uia, vector unsigned int uib)
{
return vec_mergeo (uia, uib);
}
vector pixel
foo153 (vector pixel pa)
{
return vec_splat (pa, 1);
}
vector bool short
foo154 (vector bool short bsa)
{
return vec_splat (bsa, 0);
}
vector signed short
foo155 (vector signed short ssa)
{
return vec_splat (ssa, 2);
}
vector unsigned short
foo156 (vector unsigned short usa)
{
return vec_splat (usa, 1);
}
/* 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, xvcpsgndp
vec_ctf vcfux, vcfsx
vec_cts vctsxs
vec_ctu vctuxs
vec_div divd, divdu | __divdi3, __udivdi3
vec_mergel vmrglb, vmrglh, xxmrglw, xxpermdi
vec_mergeh xxmrghw, vmrghh, vmrghb, xxpermdi
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, xvrsqrtedp
vec_rsqrte xvrsqrtesp, xvrsqrtedp
vec_xl lxvd2x
vec_xst stxvd2x
vec_splat xxspltb | vspltb, xxspltw | vspltw, xxsplth | vsplth,
xxpermdi
vec_mergee xxpermdi, vmrgew
vec_mergeo xxpermdi, vmrgow */
/* { dg-final { scan-assembler-times {\mvcmpequd\.} 4 } } */
/* { dg-final { scan-assembler-times {\mvcmpgtud\.} 8 } } */
/* { dg-final { scan-assembler-times {\mxxland\M} 17 } } */
/* { dg-final { scan-assembler-times {\mxxlandc\M} 13 } } */
/* { dg-final { scan-assembler-times {\mvclzb\M} 2 } } */
/* { dg-final { scan-assembler-times {\mvclzd\M} 2 } } */
/* { dg-final { scan-assembler-times {\mvclzw\M} 2 } } */
/* { dg-final { scan-assembler-times {\mvclzh\M} 2 } } */
/* { dg-final { scan-assembler-times {\mxvcpsgnsp\M} 1 } } */
/* { dg-final { scan-assembler-times {\mxvcpsgndp\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvcfsx\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvcfux\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvctsxs\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvctuxs\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvmrghb\M} 2 } } */
/* { dg-final { scan-assembler-times {\mvmrghh\M} 4 } } */
/* { dg-final { scan-assembler-times {\mxxmrghw\M} 4 } } */
/* { dg-final { scan-assembler-times {\mxxmrglw\M} 4 } } */
/* { dg-final { scan-assembler-times {\mvmrglh\M} 4 } } */
/* { dg-final { scan-assembler-times {\mxxlnor\M} 6 } } */
/* { dg-final { scan-assembler-times {\mvpkudus\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvperm\M} 2 } } */
/* { dg-final { scan-assembler-times {\mxvrdpi\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvrfin\M} 1 } } */
/* { dg-final { scan-assembler-times {\mxxsel\M} 5 } } */
/* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
/* { dg-final { scan-assembler-times {\mdivd\M} 2 { target lp64 } } } */
/* { dg-final { scan-assembler-times {\mdivdu\M} 2 { target lp64 } } } */
/* { dg-final { scan-assembler-times {\mmulld\M} 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 {\mmullw\M} 12 { target ilp32 } } } */
/* { dg-final { scan-assembler-times {\mxvrsqrtesp\M} 2 } } */
/* { dg-final { scan-assembler-times {\mxvrsqrtedp\M} 2 } } */
/* { dg-final { scan-assembler-times {\mvcfsx\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvcfux\M} 1 } } */
/* { dg-final { scan-assembler-times {\mvspltb|xxspltb\M} 3 } } */
/* { dg-final { scan-assembler-times {\mvspltw|xxspltw\M} 3 } } */
/* { dg-final { scan-assembler-times {\mvmrgow\M} 4 } } */
/* { dg-final { scan-assembler-times {\mvmrglb\M} 3 } } */
/* { dg-final { scan-assembler-times {\mvmrgew\M} 4 } } */
/* { dg-final { scan-assembler-times {\mvsplth|xxsplth\M} 4 } } */
/* { dg-final { scan-assembler-times {\mxxpermdi\M} 44 } } */