]> granicus.if.org Git - clang/commitdiff
[AVX512] Add non-masking FP store intrinsics
authorAdam Nemet <anemet@apple.com>
Mon, 28 Jul 2014 17:14:45 +0000 (17:14 +0000)
committerAdam Nemet <anemet@apple.com>
Mon, 28 Jul 2014 17:14:45 +0000 (17:14 +0000)
Part of <rdar://problem/17688758>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214099 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Headers/avx512fintrin.h
test/CodeGen/avx512f-builtins.c

index 785d5281bc0e013562c84bd366f2a0799b1d4792..cebb0d5a0563b9f9567605281b137f6877135fe4 100644 (file)
@@ -760,6 +760,12 @@ _mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
   __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
 }
 
+static __inline void __attribute__ ((__always_inline__, __nodebug__))
+_mm512_storeu_pd(void *__P, __m512d __A)
+{
+  __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
+}
+
 static __inline void __attribute__ ((__always_inline__, __nodebug__))
 _mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
 {
@@ -767,4 +773,22 @@ _mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
                                    (__mmask16) __U);
 }
 
+static __inline void __attribute__ ((__always_inline__, __nodebug__))
+_mm512_storeu_ps(void *__P, __m512 __A)
+{
+  __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
+}
+
+static __inline void __attribute__ ((__always_inline__, __nodebug__))
+_mm512_store_ps(void *__P, __m512 __A)
+{
+  *(__m512*)__P = __A;
+}
+
+static __inline void __attribute__ ((__always_inline__, __nodebug__))
+_mm512_store_pd(void *__P, __m512d __A)
+{
+  *(__m512d*)__P = __A;
+}
+
 #endif // __AVX512FINTRIN_H
index 968c015c870dff99ae19a0c1e85dac0d41a9b30d..ea84583734f0340fa0160a02609c4f761a19ef73 100644 (file)
@@ -60,3 +60,31 @@ __m512d test_mm512_mul_pd(__m512d a, __m512d b)
   // CHECK: fmul <8 x double>
   return _mm512_mul_pd(a, b);
 }
+
+void test_mm512_storeu_ps(void *p, __m512 a)
+{
+  // CHECK-LABEL: @test_mm512_storeu_ps
+  // CHECK: @llvm.x86.avx512.mask.storeu.ps.512
+  _mm512_storeu_ps(p, a);
+}
+
+void test_mm512_storeu_pd(void *p, __m512d a)
+{
+  // CHECK-LABEL: @test_mm512_storeu_pd
+  // CHECK: @llvm.x86.avx512.mask.storeu.pd.512
+  _mm512_storeu_pd(p, a);
+}
+
+void test_mm512_store_ps(void *p, __m512 a)
+{
+  // CHECK-LABEL: @test_mm512_store_ps
+  // CHECK: store <16 x float>
+  _mm512_store_ps(p, a);
+}
+
+void test_mm512_store_pd(void *p, __m512d a)
+{
+  // CHECK-LABEL: @test_mm512_store_pd
+  // CHECK: store <8 x double>
+  _mm512_store_pd(p, a);
+}