diff options
author | Haochen Jiang <haochen.jiang@intel.com> | 2023-08-18 11:05:16 +0800 |
---|---|---|
committer | Haochen Jiang <haochen.jiang@intel.com> | 2023-08-18 15:46:42 +0800 |
commit | 68f7cb6cf9e8b9f2254855507f3b479552adda5f (patch) | |
tree | 03cb3a37c81eb35f0036641c6183ba6b04a6ad2c | |
parent | 7cd2df4dc0b53c172d04bc7f238ce55775fbb7df (diff) | |
download | gcc-68f7cb6cf9e8b9f2254855507f3b479552adda5f.zip gcc-68f7cb6cf9e8b9f2254855507f3b479552adda5f.tar.gz gcc-68f7cb6cf9e8b9f2254855507f3b479552adda5f.tar.bz2 |
i386: Add AVX2 pragma wrapper for AVX512DQVL intrins
PR target/111051
gcc/ChangeLog:
* config/i386/avx512vldqintrin.h: Push AVX2 when AVX2 is
disabled.
gcc/testsuite/ChangeLog:
PR target/111051
* gcc.target/i386/pr111051-1.c: New test.
-rw-r--r-- | gcc/config/i386/avx512vldqintrin.h | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr111051-1.c | 11 |
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/config/i386/avx512vldqintrin.h b/gcc/config/i386/avx512vldqintrin.h index 1fbf93a..db900eb 100644 --- a/gcc/config/i386/avx512vldqintrin.h +++ b/gcc/config/i386/avx512vldqintrin.h @@ -28,6 +28,12 @@ #ifndef _AVX512VLDQINTRIN_H_INCLUDED #define _AVX512VLDQINTRIN_H_INCLUDED +#if !defined(__AVX2__) +#pragma GCC push_options +#pragma GCC target("avx2") +#define __DISABLE_AVX2__ +#endif /* __AVX2__ */ + extern __inline __m256i __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) _mm256_cvttpd_epi64 (__m256d __A) @@ -2002,4 +2008,9 @@ _mm256_maskz_insertf64x2 (__mmask8 __U, __m256d __A, __m128d __B, #endif +#ifdef __DISABLE_AVX2__ +#undef __DISABLE_AVX2__ +#pragma GCC pop_options +#endif /* __DISABLE_AVX2__ */ + #endif /* _AVX512VLDQINTRIN_H_INCLUDED */ diff --git a/gcc/testsuite/gcc.target/i386/pr111051-1.c b/gcc/testsuite/gcc.target/i386/pr111051-1.c new file mode 100644 index 0000000..9730070 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr111051-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ + +#include <immintrin.h> + +#pragma GCC target("avx512vl,avx512dq") + +void foo (__m256i i) +{ + volatile __m256d v1 = _mm256_cvtepi64_pd (i); +} + |