Index: cfe/trunk/lib/Headers/avx512fintrin.h =================================================================== --- cfe/trunk/lib/Headers/avx512fintrin.h +++ cfe/trunk/lib/Headers/avx512fintrin.h @@ -8959,6 +8959,48 @@ _MM_FROUND_CUR_DIRECTION); } +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A) +{ + return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_set_epi64 (long long __A, long long __B, long long __C, + long long __D, long long __E, long long __F, + long long __G, long long __H) +{ + return __extension__ (__m512i) (__v8di) + { __H, __G, __F, __E, __D, __C, __B, __A }; +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_set_pd (double __A, double __B, double __C, double __D, + double __E, double __F, double __G, double __H) +{ + return __extension__ (__m512d) + { __H, __G, __F, __E, __D, __C, __B, __A }; +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_set_ps (float __A, float __B, float __C, float __D, + float __E, float __F, float __G, float __H, + float __I, float __J, float __K, float __L, + float __M, float __N, float __O, float __P) +{ + return __extension__ (__m512) + { __P, __O, __N, __M, __L, __K, __J, __I, + __H, __G, __F, __E, __D, __C, __B, __A }; +} + #undef __DEFAULT_FN_ATTRS #endif // __AVX512FINTRIN_H Index: cfe/trunk/test/CodeGen/avx512f-builtins.c =================================================================== --- cfe/trunk/test/CodeGen/avx512f-builtins.c +++ cfe/trunk/test/CodeGen/avx512f-builtins.c @@ -6382,3 +6382,75 @@ // CHECK: @llvm.x86.avx512.mask.pminu.q.512 return _mm512_maskz_min_epu64 (__M,__A,__B); } + +__m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A) +{ + //CHECK-LABLE: @test_mm512_mask_set1_epi32 + //CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.512 + return _mm512_mask_set1_epi32 ( __O, __M, __A); +} + +__m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A) +{ + //CHECK-LABLE: @test_mm512_mask_set1_epi64 + //CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.512 + return _mm512_mask_set1_epi64 (__O, __M, __A); +} + +__m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C, + long long __D, long long __E, long long __F, + long long __G, long long __H) +{ + //CHECK-LABLE: @test_mm512_set_epi64 + //CHECK: insertelement{{.*}}i32 0 + //CHECK: insertelement{{.*}}i32 1 + //CHECK: insertelement{{.*}}i32 2 + //CHECK: insertelement{{.*}}i32 3 + //CHECK: insertelement{{.*}}i32 4 + //CHECK: insertelement{{.*}}i32 5 + //CHECK: insertelement{{.*}}i32 6 + //CHECK: insertelement{{.*}}i32 7 + return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H ); +} + +__m512d test_mm512_set_pd (double __A, double __B, double __C, double __D, + double __E, double __F, double __G, double __H) +{ + //CHECK-LABLE: @test_mm512_set_pd + //CHECK: insertelement{{.*}}i32 0 + //CHECK: insertelement{{.*}}i32 1 + //CHECK: insertelement{{.*}}i32 2 + //CHECK: insertelement{{.*}}i32 3 + //CHECK: insertelement{{.*}}i32 4 + //CHECK: insertelement{{.*}}i32 5 + //CHECK: insertelement{{.*}}i32 6 + //CHECK: insertelement{{.*}}i32 7 + return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H); +} + +__m512 test_mm512_set_ps (float __A, float __B, float __C, float __D, + float __E, float __F, float __G, float __H, + float __I, float __J, float __K, float __L, + float __M, float __N, float __O, float __P) +{ + //CHECK-LABLE: @test_mm512_set_ps + //CHECK: insertelement{{.*}}i32 0 + //CHECK: insertelement{{.*}}i32 1 + //CHECK: insertelement{{.*}}i32 2 + //CHECK: insertelement{{.*}}i32 3 + //CHECK: insertelement{{.*}}i32 4 + //CHECK: insertelement{{.*}}i32 5 + //CHECK: insertelement{{.*}}i32 6 + //CHECK: insertelement{{.*}}i32 7 + //CHECK: insertelement{{.*}}i32 8 + //CHECK: insertelement{{.*}}i32 9 + //CHECK: insertelement{{.*}}i32 10 + //CHECK: insertelement{{.*}}i32 11 + //CHECK: insertelement{{.*}}i32 12 + //CHECK: insertelement{{.*}}i32 13 + //CHECK: insertelement{{.*}}i32 14 + //CHECK: insertelement{{.*}}i32 15 + return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H, + __I, __J, __K, __L, __M, __N, __O, __P); +} +