r269631 - [AVX512] Add typecasts to some intrinsics to avoid doing operations on the __m512/__m512i/__m512d types.

Craig Topper via cfe-commits cfe-commits at lists.llvm.org
Sun May 15 23:38:37 PDT 2016


Author: ctopper
Date: Mon May 16 01:38:36 2016
New Revision: 269631

URL: http://llvm.org/viewvc/llvm-project?rev=269631&view=rev
Log:
[AVX512] Add typecasts to some intrinsics to avoid doing operations on the __m512/__m512i/__m512d types.

Modified:
    cfe/trunk/lib/Headers/avx512fintrin.h
    cfe/trunk/test/CodeGen/avx512f-builtins.c

Modified: cfe/trunk/lib/Headers/avx512fintrin.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/avx512fintrin.h?rev=269631&r1=269630&r2=269631&view=diff
==============================================================================
--- cfe/trunk/lib/Headers/avx512fintrin.h (original)
+++ cfe/trunk/lib/Headers/avx512fintrin.h Mon May 16 01:38:36 2016
@@ -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, __
 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,
 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, __m
 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, __m5
 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, __
 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, __m
 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

Modified: cfe/trunk/test/CodeGen/avx512f-builtins.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/avx512f-builtins.c?rev=269631&r1=269630&r2=269631&view=diff
==============================================================================
--- cfe/trunk/test/CodeGen/avx512f-builtins.c (original)
+++ cfe/trunk/test/CodeGen/avx512f-builtins.c Mon May 16 01:38:36 2016
@@ -1348,7 +1348,7 @@ __m512i test_mm512_maskz_xor_epi64(__mma
 
 __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 __s
 
 __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 __sr
 
 __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);
 }
 




More information about the cfe-commits mailing list