diff options
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/avx-vzeroupper-3.c')
-rw-r--r-- | gcc/testsuite/gcc.target/i386/avx-vzeroupper-3.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-3.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-3.c new file mode 100644 index 000000000..8053d787f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-3.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-require-effective-target avx } */ +/* { dg-options "-O2 -mavx -mvzeroupper" } */ + +#include "avx-check.h" + +int s[8] = {1, 2, 3, 4, 5, 6, 7, 8}; +int d[8] = {11, 22, 33, 44, 55, 66, 77, 88}; + +void +__attribute__((noinline)) +foo () +{ + int i; + for (i = 0; i < ARRAY_SIZE (d); i++) + d[i] = s[i] + 0x1000; +} + +static void +__attribute__((noinline)) +bar (__m256i src) +{ + foo (); + _mm256_storeu_si256 ((__m256i*) d, src); + if (__builtin_memcmp (d, s, sizeof (d))) + abort (); +} + +static void +avx_test (void) +{ + __m256i src = _mm256_loadu_si256 ((__m256i*) s); + bar (src); +} |