Create embedded-5_0-branch branch for development on ARM embedded cores.
[official-gcc.git] / embedded-5_0-branch / gcc / testsuite / gcc.target / powerpc / p8vector-builtin-1.c
blobf230936c7847f564f89720aea13f15a002d39aa9
1 /* { dg-do compile { target { powerpc*-*-* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
3 /* { dg-require-effective-target powerpc_p8vector_ok } */
4 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
5 /* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model=dynamic -fno-unroll-loops -fno-unroll-all-loops" } */
7 #ifndef TYPE
8 #define TYPE long long
9 #endif
11 #ifndef SIGN_TYPE
12 #define SIGN_TYPE signed TYPE
13 #endif
15 #ifndef UNS_TYPE
16 #define UNS_TYPE unsigned TYPE
17 #endif
19 typedef vector SIGN_TYPE v_sign;
20 typedef vector UNS_TYPE v_uns;
22 v_sign sign_add (v_sign a, v_sign b)
24 return a + b;
27 v_sign sign_sub (v_sign a, v_sign b)
29 return a - b;
32 v_sign sign_shift_left (v_sign a, v_sign b)
34 return a << b;
37 v_sign sign_shift_right (v_sign a, v_sign b)
39 return a >> b;
42 v_uns uns_add (v_uns a, v_uns b)
44 return a + b;
47 v_uns uns_sub (v_uns a, v_uns b)
49 return a - b;
52 v_uns uns_shift_left (v_uns a, v_uns b)
54 return a << b;
57 v_uns uns_shift_right (v_uns a, v_uns b)
59 return a >> b;
62 /* { dg-final { scan-assembler-times "vaddudm" 2 } } */
63 /* { dg-final { scan-assembler-times "vsubudm" 2 } } */
64 /* { dg-final { scan-assembler-times "vsld" 2 } } */
65 /* { dg-final { scan-assembler-times "vsrad" 1 } } */
66 /* { dg-final { scan-assembler-times "vsrd" 1 } } */