diff options
author | Adam Nemet <anemet@apple.com> | 2014-07-28 17:14:45 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2014-07-28 17:14:45 +0000 |
commit | fce1ad0b99377fd2d4f56d9f7876fa4d299d532a (patch) | |
tree | c8bfb15275fdf3ead2ce2aecb1a7d50dcfcc4418 | |
parent | a3ebe6214b7bc1f1217ca745ccd825e85c3026cb (diff) | |
download | llvm-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.h | 24 | ||||
-rw-r--r-- | clang/test/CodeGen/avx512f-builtins.c | 28 |
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); +} |