Index: lib/Headers/avx512fintrin.h =================================================================== --- lib/Headers/avx512fintrin.h +++ lib/Headers/avx512fintrin.h @@ -5306,6 +5306,54 @@ (__mmask8)( __U));\ }) +#define _mm512_cvtt_roundpd_epu32( __A, __R) __extension__ ({ \ +__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\ + (__v8si)\ + _mm256_undefined_si256 (),\ + (__mmask8) -1,( __R));\ +}) + +#define _mm512_mask_cvtt_roundpd_epu32( __W, __U, __A, __R) __extension__ ({ \ +__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\ + (__v8si)( __W),\ + (__mmask8)( __U),( __R));\ +}) + +#define _mm512_maskz_cvtt_roundpd_epu32( __U, __A, __R) __extension__ ({ \ +__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\ + (__v8si)\ + _mm256_setzero_si256 (),\ + (__mmask8)( __U),( __R));\ +}) + +static __inline__ __m256i __DEFAULT_FN_ATTRS +_mm512_cvttpd_epu32 (__m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_undefined_si256 (), + (__mmask8) -1, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m256i __DEFAULT_FN_ATTRS +_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m256i __DEFAULT_FN_ATTRS +_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A) +{ + return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A, + (__v8si) + _mm256_setzero_si256 (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} #undef __DEFAULT_FN_ATTRS Index: test/CodeGen/avx512f-builtins.c =================================================================== --- test/CodeGen/avx512f-builtins.c +++ test/CodeGen/avx512f-builtins.c @@ -3539,3 +3539,39 @@ // CHECK: @llvm.x86.avx512.maskz.pternlog.q.512 return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); } + +__m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) { + // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32 + // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 + return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_CUR_DIRECTION); +} + +__m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) { + // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32 + // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 + return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); +} + +__m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) { + // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32 + // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 + return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION); +} + +__m256i test_mm512_cvttpd_epu32(__m512d __A) { + // CHECK-LABEL: @test_mm512_cvttpd_epu32 + // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 + return _mm512_cvttpd_epu32(__A); +} + +__m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) { + // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32 + // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 + return _mm512_mask_cvttpd_epu32(__W, __U, __A); +} + +__m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) { + // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32 + // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 + return _mm512_maskz_cvttpd_epu32(__U, __A); +}