1291716Sken/* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ 2291716Sken/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ 3291716Sken/* { dg-require-effective-target powerpc_vsx_ok } */ 4291716Sken/* { dg-options "-mvsx -O2" } */ 5291716Sken 6291716Sken#include <altivec.h> 7291716Sken 8291716Skenvoid foo (vector double *out, vector double *in, vector long *p_l, vector bool long *p_b, vector unsigned char *p_uc, int *i) 9291716Sken{ 10291716Sken vector double in0 = in[0]; 11291716Sken vector double in1 = in[1]; 12291716Sken vector double in2 = in[2]; 13291716Sken vector long inl = *p_l; 14291716Sken vector bool long inb = *p_b; 15291716Sken vector unsigned char uc = *p_uc; 16291716Sken 17291716Sken *out++ = vec_abs (in0); 18291716Sken *out++ = vec_add (in0, in1); 19291716Sken *out++ = vec_and (in0, in1); 20291716Sken *out++ = vec_and (in0, inb); 21291716Sken *out++ = vec_and (inb, in0); 22291716Sken *out++ = vec_andc (in0, in1); 23291716Sken *out++ = vec_andc (in0, inb); 24291716Sken *out++ = vec_andc (inb, in0); 25291716Sken *out++ = vec_ceil (in0); 26291716Sken *p_b++ = vec_cmpeq (in0, in1); 27291716Sken *p_b++ = vec_cmpgt (in0, in1); 28291716Sken *p_b++ = vec_cmpge (in0, in1); 29291716Sken *p_b++ = vec_cmplt (in0, in1); 30291716Sken *p_b++ = vec_cmple (in0, in1); 31291716Sken *out++ = vec_div (in0, in1); 32291716Sken *out++ = vec_floor (in0); 33291716Sken *out++ = vec_madd (in0, in1, in2); 34291716Sken *out++ = vec_msub (in0, in1, in2); 35291716Sken *out++ = vec_max (in0, in1); 36291716Sken *out++ = vec_min (in0, in1); 37291716Sken *out++ = vec_msub (in0, in1, in2); 38291716Sken *out++ = vec_mul (in0, in1); 39291716Sken *out++ = vec_nearbyint (in0); 40291716Sken *out++ = vec_nmadd (in0, in1, in2); 41291716Sken *out++ = vec_nmsub (in0, in1, in2); 42291716Sken *out++ = vec_nor (in0, in1); 43291716Sken *out++ = vec_or (in0, in1); 44291716Sken *out++ = vec_or (in0, inb); 45291716Sken *out++ = vec_or (inb, in0); 46291716Sken *out++ = vec_perm (in0, in1, uc); 47291716Sken *out++ = vec_rint (in0); 48291716Sken *out++ = vec_sel (in0, in1, inl); 49291716Sken *out++ = vec_sel (in0, in1, inb); 50291716Sken *out++ = vec_sub (in0, in1); 51291716Sken *out++ = vec_sqrt (in0); 52291716Sken *out++ = vec_trunc (in0); 53291716Sken *out++ = vec_xor (in0, in1); 54291716Sken *out++ = vec_xor (in0, inb); 55291716Sken *out++ = vec_xor (inb, in0); 56291716Sken 57291716Sken *i++ = vec_all_eq (in0, in1); 58291716Sken *i++ = vec_all_ge (in0, in1); 59291716Sken *i++ = vec_all_gt (in0, in1); 60291716Sken *i++ = vec_all_le (in0, in1); 61291716Sken *i++ = vec_all_lt (in0, in1); 62291716Sken *i++ = vec_all_nan (in0); 63291716Sken *i++ = vec_all_ne (in0, in1); 64291716Sken *i++ = vec_all_nge (in0, in1); 65291716Sken *i++ = vec_all_ngt (in0, in1); 66291716Sken *i++ = vec_all_nle (in0, in1); 67291716Sken *i++ = vec_all_nlt (in0, in1); 68291716Sken *i++ = vec_all_numeric (in0); 69291716Sken *i++ = vec_any_eq (in0, in1); 70291716Sken *i++ = vec_any_ge (in0, in1); 71291716Sken *i++ = vec_any_gt (in0, in1); 72291716Sken *i++ = vec_any_le (in0, in1); 73291716Sken *i++ = vec_any_lt (in0, in1); 74291716Sken *i++ = vec_any_nan (in0); 75291716Sken *i++ = vec_any_ne (in0, in1); 76291716Sken *i++ = vec_any_nge (in0, in1); 77291716Sken *i++ = vec_any_ngt (in0, in1); 78291716Sken *i++ = vec_any_nle (in0, in1); 79291716Sken *i++ = vec_any_nlt (in0, in1); 80291716Sken *i++ = vec_any_numeric (in0); 81291716Sken} 82291716Sken