]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
AVX-512: Pacify -Wshift-overflow=2. [PR115409]
authorCollin Funk <collin.funk1@gmail.com>
Mon, 10 Jun 2024 06:36:47 +0000 (06:36 +0000)
committerliuhongt <hongtao.liu@intel.com>
Sun, 23 Jun 2024 06:48:41 +0000 (14:48 +0800)
A shift of 31 on a signed int is undefined behavior.  Since unsigned
int is 32-bits wide this change fixes it and silences the warning.

gcc/ChangeLog:

PR target/115409
* config/i386/avx512fp16intrin.h (_mm512_conj_pch): Make the
constant unsigned before shifting.
* config/i386/avx512fp16vlintrin.h (_mm256_conj_pch): Likewise.
(_mm_conj_pch): Likewise.

Signed-off-by: Collin Funk <collin.funk1@gmail.com>
gcc/config/i386/avx512fp16intrin.h
gcc/config/i386/avx512fp16vlintrin.h

index f86050b20873b1de58f0ebe3270666f1cb2da3c8..1869a920dd32d9862b139062f2541b2950b1105c 100644 (file)
@@ -3355,7 +3355,7 @@ extern __inline __m512h
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _mm512_conj_pch (__m512h __A)
 {
-  return (__m512h) _mm512_xor_epi32 ((__m512i) __A, _mm512_set1_epi32 (1<<31));
+  return (__m512h) _mm512_xor_epi32 ((__m512i) __A, _mm512_set1_epi32 (1U<<31));
 }
 
 extern __inline __m512h
index a1e1cb567ffc4c730253254ceae408c23e4dc558..405a06bbb9ee7a90e34ea90380d9e0e9cbae0069 100644 (file)
@@ -181,7 +181,7 @@ extern __inline __m256h
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _mm256_conj_pch (__m256h __A)
 {
-  return (__m256h) _mm256_xor_epi32 ((__m256i) __A, _mm256_avx512_set1_epi32 (1<<31));
+  return (__m256h) _mm256_xor_epi32 ((__m256i) __A, _mm256_avx512_set1_epi32 (1U<<31));
 }
 
 extern __inline __m256h
@@ -209,7 +209,7 @@ extern __inline __m128h
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 _mm_conj_pch (__m128h __A)
 {
-  return (__m128h) _mm_xor_epi32 ((__m128i) __A, _mm_avx512_set1_epi32 (1<<31));
+  return (__m128h) _mm_xor_epi32 ((__m128i) __A, _mm_avx512_set1_epi32 (1U<<31));
 }
 
 extern __inline __m128h