diff options
| author | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-03-21 12:46:13 +0000 |
|---|---|---|
| committer | Simon Pilgrim <llvm-dev@redking.me.uk> | 2017-03-21 12:46:13 +0000 |
| commit | 60e924985cd895aebe757084ac9da71527ce0b51 (patch) | |
| tree | cd91c4e196f1fba50f7258b8513dc7fd1548c674 | |
| parent | 8bc241641425cb306d130f3402f56f873f61b302 (diff) | |
| download | bcm5719-llvm-60e924985cd895aebe757084ac9da71527ce0b51.tar.gz bcm5719-llvm-60e924985cd895aebe757084ac9da71527ce0b51.zip | |
[X86][AVX512] Add _mm512_cvtsd_f64 and _mm512_cvtss_f32 intrinsics (PR32305)
Differential Revision: https://reviews.llvm.org/D31155
llvm-svn: 298364
| -rw-r--r-- | clang/lib/Headers/avx512fintrin.h | 12 | ||||
| -rw-r--r-- | clang/test/CodeGen/avx512f-builtins.c | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index 2877d708c65..35972f7503c 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/lib/Headers/avx512fintrin.h @@ -4229,6 +4229,18 @@ _mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A) _MM_FROUND_CUR_DIRECTION); } +static __inline__ double __DEFAULT_FN_ATTRS +_mm512_cvtsd_f64(__m512d __a) +{ + return __a[0]; +} + +static __inline__ float __DEFAULT_FN_ATTRS +_mm512_cvtss_f32(__m512 __a) +{ + return __a[0]; +} + /* Unpack and Interleave */ static __inline __m512d __DEFAULT_FN_ATTRS diff --git a/clang/test/CodeGen/avx512f-builtins.c b/clang/test/CodeGen/avx512f-builtins.c index 7da441d42cc..b25df327fbe 100644 --- a/clang/test/CodeGen/avx512f-builtins.c +++ b/clang/test/CodeGen/avx512f-builtins.c @@ -7259,6 +7259,18 @@ __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A) return _mm512_maskz_cvtps_epu32( __U, __A); } +double test_mm512_cvtsd_f64(__m512d A) { + // CHECK-LABEL: test_mm512_cvtsd_f64 + // CHECK: extractelement <8 x double> %{{.*}}, i32 0 + return _mm512_cvtsd_f64(A); +} + +float test_mm512_cvtss_f32(__m512 A) { + // CHECK-LABEL: test_mm512_cvtss_f32 + // CHECK: extractelement <16 x float> %{{.*}}, i32 0 + return _mm512_cvtss_f32(A); +} + __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { // CHECK-LABEL: @test_mm512_mask_max_pd |

