From: Craig Topper Date: Mon, 16 May 2016 06:38:36 +0000 (+0000) Subject: [AVX512] Add typecasts to some intrinsics to avoid doing operations on the __m512... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da0ab60396df9767ae9d9149cb512d102ad76c94;p=clang [AVX512] Add typecasts to some intrinsics to avoid doing operations on the __m512/__m512i/__m512d types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@269631 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Headers/avx512fintrin.h b/lib/Headers/avx512fintrin.h index 4b168f57b9..edb5c168e2 100644 --- a/lib/Headers/avx512fintrin.h +++ b/lib/Headers/avx512fintrin.h @@ -372,7 +372,7 @@ _mm512_castsi256_si512 (__m256i __A) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_and_epi32(__m512i __a, __m512i __b) { - return __a & __b; + return (__m512i)((__v16si)__a & (__v16si)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS @@ -396,7 +396,7 @@ _mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_and_epi64(__m512i __a, __m512i __b) { - return __a & __b; + return (__m512i)((__v8di)__a & (__v8di)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS @@ -476,7 +476,7 @@ _mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_or_epi32(__m512i __a, __m512i __b) { - return __a | __b; + return (__m512i)((__v16si)__a | (__v16si)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS @@ -500,7 +500,7 @@ _mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_or_epi64(__m512i __a, __m512i __b) { - return __a | __b; + return (__m512i)((__v8di)__a | (__v8di)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS @@ -524,7 +524,7 @@ _mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_xor_epi32(__m512i __a, __m512i __b) { - return __a ^ __b; + return (__m512i)((__v16si)__a ^ (__v16si)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS @@ -548,7 +548,7 @@ _mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_xor_epi64(__m512i __a, __m512i __b) { - return __a ^ __b; + return (__m512i)((__v8di)__a ^ (__v8di)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS @@ -572,56 +572,56 @@ _mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_and_si512(__m512i __a, __m512i __b) { - return __a & __b; + return (__m512i)((__v8di)__a & (__v8di)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_or_si512(__m512i __a, __m512i __b) { - return __a | __b; + return (__m512i)((__v8di)__a | (__v8di)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_xor_si512(__m512i __a, __m512i __b) { - return __a ^ __b; + return (__m512i)((__v8di)__a ^ (__v8di)__b); } /* Arithmetic */ static __inline __m512d __DEFAULT_FN_ATTRS _mm512_add_pd(__m512d __a, __m512d __b) { - return __a + __b; + return (__m512d)((__v8df)__a + (__v8df)__b); } static __inline __m512 __DEFAULT_FN_ATTRS _mm512_add_ps(__m512 __a, __m512 __b) { - return __a + __b; + return (__m512)((__v16sf)__a + (__v16sf)__b); } static __inline __m512d __DEFAULT_FN_ATTRS _mm512_mul_pd(__m512d __a, __m512d __b) { - return __a * __b; + return (__m512d)((__v8df)__a * (__v8df)__b); } static __inline __m512 __DEFAULT_FN_ATTRS _mm512_mul_ps(__m512 __a, __m512 __b) { - return __a * __b; + return (__m512)((__v16sf)__a * (__v16sf)__b); } static __inline __m512d __DEFAULT_FN_ATTRS _mm512_sub_pd(__m512d __a, __m512d __b) { - return __a - __b; + return (__m512d)((__v8df)__a - (__v8df)__b); } static __inline __m512 __DEFAULT_FN_ATTRS _mm512_sub_ps(__m512 __a, __m512 __b) { - return __a - __b; + return (__m512)((__v16sf)__a - (__v16sf)__b); } static __inline__ __m512i __DEFAULT_FN_ATTRS diff --git a/test/CodeGen/avx512f-builtins.c b/test/CodeGen/avx512f-builtins.c index e751fbd116..8317fb793c 100644 --- a/test/CodeGen/avx512f-builtins.c +++ b/test/CodeGen/avx512f-builtins.c @@ -1348,7 +1348,7 @@ __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) { __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_and_epi32 - // CHECK: and <8 x i64> + // CHECK: and <16 x i32> return _mm512_and_epi32(__a, __b); } @@ -1360,7 +1360,7 @@ __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __ __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_or_epi32 - // CHECK: or <8 x i64> + // CHECK: or <16 x i32> return _mm512_or_epi32(__a, __b); } @@ -1372,7 +1372,7 @@ __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { // CHECK-LABEL: @test_mm512_xor_epi32 - // CHECK: xor <8 x i64> + // CHECK: xor <16 x i32> return _mm512_xor_epi32(__a, __b); }