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> + // 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> + // 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> + // 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> + // 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> + // 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> + // 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> + 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> + 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