aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2014-07-28 17:14:45 +0000
committerAdam Nemet <anemet@apple.com>2014-07-28 17:14:45 +0000
commitfce1ad0b99377fd2d4f56d9f7876fa4d299d532a (patch)
treec8bfb15275fdf3ead2ce2aecb1a7d50dcfcc4418
parenta3ebe6214b7bc1f1217ca745ccd825e85c3026cb (diff)
downloadllvm-fce1ad0b99377fd2d4f56d9f7876fa4d299d532a.zip
llvm-fce1ad0b99377fd2d4f56d9f7876fa4d299d532a.tar.gz
llvm-fce1ad0b99377fd2d4f56d9f7876fa4d299d532a.tar.bz2
[AVX512] Add non-masking FP store intrinsics
Part of <rdar://problem/17688758> llvm-svn: 214099
-rw-r--r--clang/lib/Headers/avx512fintrin.h24
-rw-r--r--clang/test/CodeGen/avx512f-builtins.c28
2 files changed, 52 insertions, 0 deletions
diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h
index 785d528..cebb0d5 100644
--- a/clang/lib/Headers/avx512fintrin.h
+++ b/clang/lib/Headers/avx512fintrin.h
@@ -761,10 +761,34 @@ _mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
}
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)
{
__builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __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
diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c
index 968c015..ea84583 100644
--- a/clang/test/CodeGen/avx512f-builtins.c
+++ b/clang/test/CodeGen/avx512f-builtins.c
@@ -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);
+}