Index: lib/Headers/avx512fintrin.h =================================================================== --- lib/Headers/avx512fintrin.h +++ lib/Headers/avx512fintrin.h @@ -4229,6 +4229,18 @@ _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 Index: test/CodeGen/avx512f-builtins.c =================================================================== --- test/CodeGen/avx512f-builtins.c +++ test/CodeGen/avx512f-builtins.c @@ -7259,6 +7259,18 @@ 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