Index: cfe/trunk/lib/Headers/avx512fintrin.h =================================================================== --- cfe/trunk/lib/Headers/avx512fintrin.h +++ cfe/trunk/lib/Headers/avx512fintrin.h @@ -27,6 +27,8 @@ #ifndef __AVX512FINTRIN_H #define __AVX512FINTRIN_H +typedef char __v64qi __attribute__((__vector_size__(64))); +typedef short __v32hi __attribute__((__vector_size__(64))); typedef double __v8df __attribute__((__vector_size__(64))); typedef float __v16sf __attribute__((__vector_size__(64))); typedef long long __v8di __attribute__((__vector_size__(64))); @@ -286,6 +288,28 @@ } static __inline __m512i __DEFAULT_FN_ATTRS +_mm512_set1_epi8(char __w) +{ + return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w }; +} + +static __inline __m512i __DEFAULT_FN_ATTRS +_mm512_set1_epi16(short __w) +{ + return (__m512i)(__v32hi){ __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w, + __w, __w, __w, __w, __w, __w, __w, __w }; +} + +static __inline __m512i __DEFAULT_FN_ATTRS _mm512_set1_epi32(int __s) { return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s, Index: cfe/trunk/test/CodeGen/avx512f-builtins.c =================================================================== --- cfe/trunk/test/CodeGen/avx512f-builtins.c +++ cfe/trunk/test/CodeGen/avx512f-builtins.c @@ -5951,6 +5951,36 @@ return _mm512_castpd128_pd512(__A); } +__m512d test_mm512_set1_epi8(char d) +{ + // CHECK-LABEL: @test_mm512_set1_epi8 + // CHECK: insertelement <64 x i8> {{.*}}, i32 0 + // CHECK: insertelement <64 x i8> {{.*}}, i32 1 + // CHECK: insertelement <64 x i8> {{.*}}, i32 2 + // CHECK: insertelement <64 x i8> {{.*}}, i32 3 + // CHECK: insertelement <64 x i8> {{.*}}, i32 4 + // CHECK: insertelement <64 x i8> {{.*}}, i32 5 + // CHECK: insertelement <64 x i8> {{.*}}, i32 6 + // CHECK: insertelement <64 x i8> {{.*}}, i32 7 + // CHECK: insertelement <64 x i8> {{.*}}, i32 63 + return _mm512_set1_epi8(d); +} + +__m512d test_mm512_set1_epi16(short d) +{ + // CHECK-LABEL: @test_mm512_set1_epi16 + // CHECK: insertelement <32 x i16> {{.*}}, i32 0 + // CHECK: insertelement <32 x i16> {{.*}}, i32 1 + // CHECK: insertelement <32 x i16> {{.*}}, i32 2 + // CHECK: insertelement <32 x i16> {{.*}}, i32 3 + // CHECK: insertelement <32 x i16> {{.*}}, i32 4 + // CHECK: insertelement <32 x i16> {{.*}}, i32 5 + // CHECK: insertelement <32 x i16> {{.*}}, i32 6 + // CHECK: insertelement <32 x i16> {{.*}}, i32 7 + // CHECK: insertelement <32 x i16> {{.*}}, i32 31 + return _mm512_set1_epi16(d); +} + __m512d test_mm512_castpd256_pd512(__m256d a) { // CHECK-LABEL: @test_mm512_castpd256_pd512