aymanmus created this revision. aymanmus added reviewers: m_zuckerman, igorb, delena. aymanmus added a subscriber: cfe-commits.
- "//_mm512_cmp<op>_pd_mask//" Intrinsics, where <op> = {eq, le, lt, neq, nle, nlt, ord, unord}. - //_mm512_cvtepi32lo_pd, _mm512_mask_cvtepi32lo_pd, _mm512_cvtepu32lo_pd, _mm512_mask_cvtepu32lo_pd// - //_mm512_cvtpd_pslo, _mm512_mask_cvtpd_pslo, _mm512_cvtpslo_pd, _mm512_mask_cvtpslo_pd// https://reviews.llvm.org/D24961 Files: lib/Headers/avx512fintrin.h test/CodeGen/avx512f-builtins.c
Index: lib/Headers/avx512fintrin.h =================================================================== --- lib/Headers/avx512fintrin.h +++ lib/Headers/avx512fintrin.h @@ -3555,10 +3555,49 @@ #define _mm512_cmp_ps_mask(A, B, P) \ _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION) - #define _mm512_mask_cmp_ps_mask(U, A, B, P) \ _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION) +#define _mm512_cmpeq_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_EQ_OQ) +#define _mm512_mask_cmpeq_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_EQ_OQ) + +#define _mm512_cmplt_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_LT_OS) +#define _mm512_mask_cmplt_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_LT_OS) + +#define _mm512_cmple_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_LE_OS) +#define _mm512_mask_cmple_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_LE_OS) + +#define _mm512_cmpunord_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_UNORD_Q) +#define _mm512_mask_cmpunord_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_UNORD_Q) + +#define _mm512_cmpneq_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_NEQ_UQ) +#define _mm512_mask_cmpneq_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_NEQ_UQ) + +#define _mm512_cmpnlt_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_NLT_US) +#define _mm512_mask_cmpnlt_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_NLT_US) + +#define _mm512_cmpnle_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_NLE_US) +#define _mm512_mask_cmpnle_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_NLE_US) + +#define _mm512_cmpord_ps_mask(A, B) \ + _mm512_cmp_ps_mask((A), (B), _CMP_ORD_Q) +#define _mm512_mask_cmpord_ps_mask(k, A, B) \ + _mm512_mask_cmp_ps_mask((k), (A), (B), _CMP_ORD_Q) + #define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \ (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \ (__v8df)(__m512d)(B), (int)(P), \ @@ -3571,10 +3610,49 @@ #define _mm512_cmp_pd_mask(A, B, P) \ _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION) - #define _mm512_mask_cmp_pd_mask(U, A, B, P) \ _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION) +#define _mm512_cmpeq_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_EQ_OQ) +#define _mm512_mask_cmpeq_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_EQ_OQ) + +#define _mm512_cmplt_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_LT_OS) +#define _mm512_mask_cmplt_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_LT_OS) + +#define _mm512_cmple_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_LE_OS) +#define _mm512_mask_cmple_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_LE_OS) + +#define _mm512_cmpunord_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_UNORD_Q) +#define _mm512_mask_cmpunord_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_UNORD_Q) + +#define _mm512_cmpneq_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_NEQ_UQ) +#define _mm512_mask_cmpneq_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_NEQ_UQ) + +#define _mm512_cmpnlt_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_NLT_US) +#define _mm512_mask_cmpnlt_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_NLT_US) + +#define _mm512_cmpnle_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_NLE_US) +#define _mm512_mask_cmpnle_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_NLE_US) + +#define _mm512_cmpord_pd_mask(A, B) \ + _mm512_cmp_pd_mask((A), (B), _CMP_ORD_Q) +#define _mm512_mask_cmpord_pd_mask(k, A, B) \ + _mm512_mask_cmp_pd_mask((k), (A), (B), _CMP_ORD_Q) + /* Conversion */ #define _mm512_cvtt_roundps_epu32(A, R) __extension__ ({ \ @@ -3703,6 +3781,18 @@ (__mmask8) __U); } +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_cvtepi32lo_pd(__m512i __A) +{ + return (__m512d) _mm512_cvtepi32_pd(_mm512_castsi512_si256(__A)); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_cvtepi32lo_pd(__m512d __W, __mmask8 __U,__m512i __A) +{ + return (__m512d) _mm512_mask_cvtepi32_pd(__W, __U, _mm512_castsi512_si256(__A)); +} + static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_cvtepi32_ps (__m512i __A) { @@ -3755,6 +3845,18 @@ (__mmask8) __U); } +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_cvtepu32lo_pd(__m512i __A) +{ + return (__m512d) _mm512_cvtepu32_pd(_mm512_castsi512_si256(__A)); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_cvtepu32lo_pd(__m512d __W, __mmask8 __U,__m512i __A) +{ + return (__m512d) _mm512_mask_cvtepu32_pd(__W, __U, _mm512_castsi512_si256(__A)); +} + #define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \ (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \ (__v8sf)_mm256_setzero_ps(), \ @@ -3797,6 +3899,24 @@ _MM_FROUND_CUR_DIRECTION); } +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_cvtpd_pslo (__m512d __A) +{ + return (__m512) __builtin_shufflevector((__v8sf) _mm512_cvtpd_ps(__A), + (__v8sf) _mm256_setzero_ps (), + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_cvtpd_pslo (__m512 __W, __mmask8 __U,__m512d __A) +{ + return (__m512) __builtin_shufflevector ( + (__v8sf) _mm512_mask_cvtpd_ps (_mm512_castps512_ps256(__W), + __U, __A), + (__v8sf) _mm256_setzero_ps (), + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); +} + #define _mm512_cvt_roundps_ph(A, I) __extension__ ({ \ (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \ (__v16hi)_mm256_undefined_si256(), \ @@ -9260,6 +9380,18 @@ _MM_FROUND_CUR_DIRECTION); } +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_cvtpslo_pd (__m512d __A) +{ + return (__m512) _mm512_cvtps_pd(_mm512_castps512_ps256(__A)); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_cvtpslo_pd (__m512d __W, __mmask8 __U, __m512d __A) +{ + return (__m512) _mm512_mask_cvtps_pd(__W, __U, _mm512_castps512_ps256(__A)); +} + static __inline__ __m512d __DEFAULT_FN_ATTRS _mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A) { Index: test/CodeGen/avx512f-builtins.c =================================================================== --- test/CodeGen/avx512f-builtins.c +++ test/CodeGen/avx512f-builtins.c @@ -1044,6 +1044,198 @@ return _mm512_mask_cmp_pd_mask(m, a, b, 0); } +__mmask8 test_mm512_cmpeq_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmpeq_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpeq_pd_mask(a, b); +} + +__mmask8 test_mm512_cmpeq_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmpeq_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpeq_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmpeq_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmpeq_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmpeq_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmpeq_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmpeq_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmpeq_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmple_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmple_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpeq_pd_mask(a, b); +} + +__mmask8 test_mm512_cmple_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmple_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpeq_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmple_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmple_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmple_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmple_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmple_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmple_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmplt_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmplt_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmplt_pd_mask(a, b); +} + +__mmask8 test_mm512_cmplt_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmplt_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmplt_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmplt_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmplt_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmplt_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmplt_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmplt_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmplt_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmpneq_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmpneq_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpneq_pd_mask(a, b); +} + +__mmask8 test_mm512_cmpneq_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmpneq_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpneq_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmpneq_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmpneq_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmpneq_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmpneq_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmpneq_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmpneq_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmpnle_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmpnle_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpnle_pd_mask(a, b); +} + +__mmask8 test_mm512_cmpnle_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmpnle_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpnle_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmpnle_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmpnle_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmpnle_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmpnle_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmpnle_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmpnle_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmpnlt_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmpnlt_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpnlt_pd_mask(a, b); +} + +__mmask8 test_mm512_cmpnlt_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmpnlt_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpnlt_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmpnlt_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmpnlt_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmpnlt_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmpnlt_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmpnlt_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmpnlt_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmpord_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmpord_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpord_pd_mask(a, b); +} + +__mmask8 test_mm512_cmpord_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmpord_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpord_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmpord_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmpord_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmpord_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmpord_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmpord_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmpord_ps_mask(k, a, b); +} + +__mmask8 test_mm512_cmpunord_pd_mask(__m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_cmpunord_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_cmpunord_pd_mask(a, b); +} + +__mmask8 test_mm512_cmpunord_ps_mask(__m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_cmpunord_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_cmpunord_ps_mask(a, b); +} + +__mmask8 test_mm512_mask_cmpunord_pd_mask(__mmask8 k, __m512d a, __m512d b) { + // CHECK-LABEL: @test_mm512_mask_cmpunord_pd_mask + // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 + return _mm512_mask_cmpunord_pd_mask(k, a, b); +} + +__mmask8 test_mm512_mask_cmpunord_ps_mask(__mmask8 k, __m512 a, __m512 b) { + // CHECK-LABEL: @test_mm512_mask_cmpunord_ps_mask + // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 + return _mm512_mask_cmpunord_ps_mask(k, a, b); +} + __m256d test_mm512_extractf64x4_pd(__m512d a) { // CHECK-LABEL: @test_mm512_extractf64x4_pd @@ -6220,12 +6412,26 @@ return _mm512_cvtps_pd(__A); } +__m512d test_mm512_cvtpslo_pd(__m512 __A) { + // CHECK-LABEL: @test_mm512_cvtpslo_pd + // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> + // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 + return _mm512_cvtpslo_pd(__A); +} + __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) { // CHECK-LABEL: @test_mm512_mask_cvtps_pd // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 return _mm512_mask_cvtps_pd(__W, __U, __A); } +__m512d test_mm512_mask_cvtpslo_pd(__m512d __W, __mmask8 __U, __m512 __A) { + // CHECK-LABEL: @test_mm512_mask_cvtpslo_pd + // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> + // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 + return _mm512_mask_cvtpslo_pd(__W, __U, __A); +} + __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) { // CHECK-LABEL: @test_mm512_maskz_cvtps_pd // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 @@ -6672,6 +6878,22 @@ return _mm512_maskz_cvtepi32_pd (__U,__A); } +__m512d test_mm512_cvtepi32lo_pd (__m512i __A) +{ + // CHECK-LABEL: @test_mm512_cvtepi32lo_pd + // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // CHECK: @llvm.x86.avx512.mask.cvtdq2pd.512 + return _mm512_cvtepi32lo_pd (__A); +} + +__m512d test_mm512_mask_cvtepi32lo_pd (__m512d __W, __mmask8 __U, __m512i __A) +{ + // CHECK-LABEL: @test_mm512_mask_cvtepi32lo_pd + // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // CHECK: @llvm.x86.avx512.mask.cvtdq2pd.512 + return _mm512_mask_cvtepi32lo_pd (__W, __U, __A); +} + __m512 test_mm512_cvtepi32_ps (__m512i __A) { // CHECK-LABEL: @test_mm512_cvtepi32_ps @@ -6707,6 +6929,22 @@ return _mm512_maskz_cvtepu32_pd (__U,__A); } +__m512d test_mm512_cvtepu32lo_pd (__m512i __A) +{ + // CHECK-LABEL: @test_mm512_cvtepu32lo_pd + // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // CHECK: @llvm.x86.avx512.mask.cvtudq2pd.512 + return _mm512_cvtepu32lo_pd (__A); +} + +__m512d test_mm512_mask_cvtepu32lo_pd (__m512d __W, __mmask8 __U, __m512i __A) +{ + // CHECK-LABEL: @test_mm512_mask_cvtepu32lo_pd + // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> + // CHECK: @llvm.x86.avx512.mask.cvtudq2pd.512 + return _mm512_mask_cvtepu32lo_pd (__W, __U, __A); +} + __m256 test_mm512_cvtpd_ps (__m512d __A) { // CHECK-LABEL: @test_mm512_cvtpd_ps @@ -6721,6 +6959,23 @@ return _mm512_mask_cvtpd_ps (__W,__U,__A); } +__m512d test_mm512_cvtpd_pslo(__m512 __A) +{ + // CHECK-LABEL: @test_mm512_cvtpd_pslo + // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 + // CHECK: zeroinitializer + // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> + return _mm512_cvtpd_pslo(__A); +} + +__m512d test_mm512_mask_cvtpd_pslo(__m512 __W, __mmask8 __U, __m512d __A) { + // CHECK-LABEL: @test_mm512_mask_cvtpd_pslo + // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 + // CHECK: zeroinitializer + // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15> + return _mm512_mask_cvtpd_pslo(__W, __U, __A); +} + __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A) { // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits