]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
i386: Add AVX2 pragma wrapper for AVX512DQVL intrins
authorHaochen Jiang <haochen.jiang@intel.com>
Fri, 18 Aug 2023 03:05:16 +0000 (11:05 +0800)
committerHaochen Jiang <haochen.jiang@intel.com>
Fri, 18 Aug 2023 07:46:42 +0000 (15:46 +0800)
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.

gcc/config/i386/avx512vldqintrin.h
gcc/testsuite/gcc.target/i386/pr111051-1.c [new file with mode: 0644]

index 1fbf93a0b522ae195b8a1b50fe67cae7b4ea93ee..db900ebf467fbeae66e5e63e276f6bad8d9bd2fb 100644 (file)
 #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 (file)
index 0000000..9730070
--- /dev/null
@@ -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);
+}
+