diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2014-06-18 13:00:04 -0700 |
---|---|---|
committer | Pavel Chupin <pavel.v.chupin@intel.com> | 2014-06-19 22:38:42 +0400 |
commit | f190d6284359da8ae8694b2d2e14b01602a959ed (patch) | |
tree | d4e0548e7cec02d60b1082368032e66a1c509a02 /gcc-4.8/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c | |
parent | 4ff2f42147bc128ce38789071d98e55844cd3a5e (diff) | |
download | toolchain_gcc-f190d6284359da8ae8694b2d2e14b01602a959ed.tar.gz toolchain_gcc-f190d6284359da8ae8694b2d2e14b01602a959ed.tar.bz2 toolchain_gcc-f190d6284359da8ae8694b2d2e14b01602a959ed.zip |
Merge GCC 4.8.3
Change-Id: I0abe59f7705b3eccc6b2f123af75b2e30917696a
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c')
-rw-r--r-- | gcc-4.8/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c b/gcc-4.8/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c new file mode 100644 index 000000000..17563bf47 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c @@ -0,0 +1,87 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-mcpu=power8 -O2 -ftree-vectorize -fvect-cost-model -fno-unroll-loops -fno-unroll-all-loops" } */ + +#ifndef SIZE +#define SIZE 1024 +#endif + +#ifndef ALIGN +#define ALIGN 32 +#endif + +#ifndef ATTR_ALIGN +#define ATTR_ALIGN __attribute__((__aligned__(ALIGN))) +#endif + +#ifndef TYPE +#define TYPE unsigned int +#endif + +TYPE in1 [SIZE] ATTR_ALIGN; +TYPE in2 [SIZE] ATTR_ALIGN; +TYPE eqv [SIZE] ATTR_ALIGN; +TYPE nand1[SIZE] ATTR_ALIGN; +TYPE nand2[SIZE] ATTR_ALIGN; +TYPE orc1 [SIZE] ATTR_ALIGN; +TYPE orc2 [SIZE] ATTR_ALIGN; + +void +do_eqv (void) +{ + unsigned long i; + + for (i = 0; i < SIZE; i++) + { + eqv[i] = ~(in1[i] ^ in2[i]); + } +} + +void +do_nand1 (void) +{ + unsigned long i; + + for (i = 0; i < SIZE; i++) + { + nand1[i] = ~(in1[i] & in2[i]); + } +} + +void +do_nand2 (void) +{ + unsigned long i; + + for (i = 0; i < SIZE; i++) + { + nand2[i] = (~in1[i]) | (~in2[i]); + } +} + +void +do_orc1 (void) +{ + unsigned long i; + + for (i = 0; i < SIZE; i++) + { + orc1[i] = (~in1[i]) | in2[i]; + } +} + +void +do_orc2 (void) +{ + unsigned long i; + + for (i = 0; i < SIZE; i++) + { + orc1[i] = in1[i] | (~in2[i]); + } +} + +/* { dg-final { scan-assembler-times "xxleqv" 1 } } */ +/* { dg-final { scan-assembler-times "xxlnand" 2 } } */ +/* { dg-final { scan-assembler-times "xxlorc" 2 } } */ |