diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/ext/apple-altivec-1.C')
-rw-r--r-- | gcc/testsuite/g++.dg/ext/apple-altivec-1.C | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ext/apple-altivec-1.C b/gcc/testsuite/g++.dg/ext/apple-altivec-1.C new file mode 100644 index 00000000000..2726c81b3af --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/apple-altivec-1.C @@ -0,0 +1,43 @@ +/* APPLE LOCAL file AltiVec */ +/* Additional AltiVec PIM argument type combinations. */ + +/* { dg-do compile { target powerpc*-*-darwin* } } */ +/* { dg-options "-faltivec -Wall" } */ + +vector signed int +LoadUnalignedSI( signed int *p) +{ + vector signed int vload1 = vec_ld( 0, (vector signed int *)p); + if ( ((long)p) * 0xF){ + vector signed int vload2 = vec_ld( 16, (vector signed int *)p); + vector unsigned char vperm = vec_ldl( 0, p); + + vload1 = vec_perm(vload1, vload2, vperm); + } + return vload1; +} + +inline vector float Reciprocal( vector float v ) +{ + + vector float estimate = vec_re( v ); + + return vec_madd( vec_nmsub( estimate, v, (vector float) (1.0) ), estimate, estimate ); +} + +void foo(void) { + vector bool char vbc1 = (vector bool char)(255); + vector pixel vp1, vp2; + vector float vf1, vf2; + vector unsigned char vuc1; + vector unsigned short vus1, vus2; + vector bool short vbs1, vbs2; + vector signed short vss1; + vector signed int vsi1, vsi2; + vbc1 = vec_splat (vbc1, 9); + vp2 = vec_splat (vp1, 7); + vf1 = vec_splat (vf2, 31); + vuc1 = vec_pack (vus1, vus2); + vbc1 = vec_pack (vbs1, vbs2); + vss1 = vec_pack (vsi1, vsi2); +} |