1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */ 2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */ 3 /* { dg-require-effective-target powerpc_p8vector_ok } */ 4 /* { dg-options "-O2 -mdejagnu-cpu=power8" } */ 5 6 /* { dg-final { scan-assembler-times "vspltw" 6 } } */ 7 /* { dg-final { scan-assembler-times "xvcvsxwdp" 4 } } */ 8 /* { dg-final { scan-assembler-times "xvcvuxwdp" 4 } } */ 9 /* { dg-final { scan-assembler-times "frsp\|xsrsp" 8 } } */ 10 /* { dg-final { scan-assembler-not "mtvsrd" } } */ 11 /* { dg-final { scan-assembler-not "mtvsrwa" } } */ 12 /* { dg-final { scan-assembler-not "mtvsrwz" } } */ 13 /* { dg-final { scan-assembler-not "mfvsrd" } } */ 14 /* { dg-final { scan-assembler-not "mfvsrwz" } } */ 15 16 #include <altivec.h> 17 18 #ifndef TYPE 19 #define TYPE float 20 #endif 21 22 TYPE foo_0s(vector int v)23foo_0s (vector int v) 24 { 25 int c = 0; 26 int i = vec_extract (v, c); 27 return (TYPE) i; 28 } 29 30 TYPE foo_1s(vector int v)31foo_1s (vector int v) 32 { 33 int c = 1; 34 int i = vec_extract (v, c); 35 return (TYPE) i; 36 } 37 38 TYPE foo_2s(vector int v)39foo_2s (vector int v) 40 { 41 int c = 2; 42 int i = vec_extract (v, c); 43 return (TYPE) i; 44 } 45 46 TYPE foo_3s(vector int v)47foo_3s (vector int v) 48 { 49 int c = 3; 50 int i = vec_extract (v, c); 51 return (TYPE) i; 52 } 53 54 TYPE foo_0u(vector unsigned int v)55foo_0u (vector unsigned int v) 56 { 57 int c = 0; 58 unsigned int u = vec_extract (v, c); 59 return (TYPE) u; 60 } 61 62 TYPE foo_1u(vector unsigned int v)63foo_1u (vector unsigned int v) 64 { 65 int c = 1; 66 unsigned int u = vec_extract (v, c); 67 return (TYPE) u; 68 } 69 70 TYPE foo_2u(vector unsigned int v)71foo_2u (vector unsigned int v) 72 { 73 int c = 2; 74 unsigned int u = vec_extract (v, c); 75 return (TYPE) u; 76 } 77 78 TYPE foo_3u(vector unsigned int v)79foo_3u (vector unsigned int v) 80 { 81 int c = 3; 82 unsigned int u = vec_extract (v, c); 83 return (TYPE) u; 84 } 85