Index: cfe/trunk/include/clang/Basic/BuiltinsX86.def =================================================================== --- cfe/trunk/include/clang/Basic/BuiltinsX86.def +++ cfe/trunk/include/clang/Basic/BuiltinsX86.def @@ -1035,6 +1035,8 @@ TARGET_BUILTIN(__builtin_ia32_blendmpd_512_mask, "V8dV8dV8dUc", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_ptestmd512, "UsV16iV16iUs", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_ptestmq512, "UcV8LLiV8LLiUc", "", "avx512f") +TARGET_BUILTIN(__builtin_ia32_pbroadcastd512, "V16iV4iV16iUs","","avx512f") +TARGET_BUILTIN(__builtin_ia32_pbroadcastq512, "V8LLiV2LLiV8LLiUc","","avx512f") TARGET_BUILTIN(__builtin_ia32_pbroadcastd512_gpr_mask, "V16iiV16iUs", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_pbroadcastq512_gpr_mask, "V8LLiLLiV8LLiUc", "", "avx512f") TARGET_BUILTIN(__builtin_ia32_pbroadcastq512_mem_mask, "V8LLiLLiV8LLiUc", "", "avx512f") @@ -1999,6 +2001,18 @@ TARGET_BUILTIN(__builtin_ia32_cvtmask2q256, "V4LLiUc","","avx512dq,avx512vl") TARGET_BUILTIN(__builtin_ia32_cvtq2mask128, "UcV2LLi","","avx512dq,avx512vl") TARGET_BUILTIN(__builtin_ia32_cvtq2mask256, "UcV4LLi","","avx512dq,avx512vl") +TARGET_BUILTIN(__builtin_ia32_broadcastmb512, "V8LLiUc","","avx512cd") +TARGET_BUILTIN(__builtin_ia32_broadcastmw512, "V16iUs","","avx512cd") +TARGET_BUILTIN(__builtin_ia32_broadcastf32x4_512, "V16fV4fV16fUs","","avx512f") +TARGET_BUILTIN(__builtin_ia32_broadcastf64x4_512, "V8dV4dV8dUc","","avx512f") +TARGET_BUILTIN(__builtin_ia32_broadcasti32x4_512, "V16iV4iV16iUs","","avx512f") +TARGET_BUILTIN(__builtin_ia32_broadcasti64x4_512, "V8LLiV4LLiV8LLiUc","","avx512f") +TARGET_BUILTIN(__builtin_ia32_broadcastsd512, "V8dV2dV8dUc","","avx512f") +TARGET_BUILTIN(__builtin_ia32_broadcastss512, "V16fV4fV16fUs","","avx512f") +TARGET_BUILTIN(__builtin_ia32_broadcastmb128, "V2LLiUc","","avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_broadcastmb256, "V4LLiUc","","avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_broadcastmw128, "V4iUs","","avx512cd,avx512vl") +TARGET_BUILTIN(__builtin_ia32_broadcastmw256, "V8iUs","","avx512cd,avx512vl") TARGET_BUILTIN(__builtin_ia32_broadcastf32x2_512_mask, "V16fV4fV16fUs","","avx512dq") TARGET_BUILTIN(__builtin_ia32_broadcastf32x8_512_mask, "V16fV8fV16fUs","","avx512dq") TARGET_BUILTIN(__builtin_ia32_broadcastf64x2_512_mask, "V8dV2dV8dUc","","avx512dq") Index: cfe/trunk/lib/Headers/CMakeLists.txt =================================================================== --- cfe/trunk/lib/Headers/CMakeLists.txt +++ cfe/trunk/lib/Headers/CMakeLists.txt @@ -11,6 +11,7 @@ avx512pfintrin.h avx512vlbwintrin.h avx512vlintrin.h + avx512vlcdintrin.h avx512dqintrin.h avx512vldqintrin.h avx512vbmiintrin.h Index: cfe/trunk/lib/Headers/avx512cdintrin.h =================================================================== --- cfe/trunk/lib/Headers/avx512cdintrin.h +++ cfe/trunk/lib/Headers/avx512cdintrin.h @@ -126,6 +126,19 @@ (__v8di) _mm512_setzero_si512 (), (__mmask8) __U); } + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcastmb_epi64 (__mmask8 __A) +{ + return (__m512i) __builtin_ia32_broadcastmb512 (__A); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcastmw_epi32 (__mmask16 __A) +{ + return (__m512i) __builtin_ia32_broadcastmw512 (__A); +} + #undef __DEFAULT_FN_ATTRS #endif Index: cfe/trunk/lib/Headers/avx512fintrin.h =================================================================== --- cfe/trunk/lib/Headers/avx512fintrin.h +++ cfe/trunk/lib/Headers/avx512fintrin.h @@ -185,6 +185,55 @@ { return (__m512i)__builtin_ia32_undef512(); } +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcastd_epi32 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, + (__v16si) + _mm512_undefined_epi32 (), + (__mmask16) -1); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, + (__v16si) __O, __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcastq_epi64 (__m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, + (__v8di) + _mm512_undefined_pd (), + (__mmask8) -1); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, + (__v8di) __O, __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A, + (__v8di) + _mm512_setzero_si512 (), + __M); +} static __inline __m512i __DEFAULT_FN_ATTRS _mm512_maskz_set1_epi32(__mmask16 __M, int __A) @@ -5834,6 +5883,142 @@ __R);\ }) +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_broadcast_f32x4 (__m128 __A) +{ + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, + (__v16sf) + _mm512_undefined_ps (), + (__mmask16) -1); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, + (__v16sf) __O, + __M); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A, + (__v16sf) + _mm512_setzero_ps (), + __M); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_broadcast_f64x4 (__m256d __A) +{ + return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, + (__v8df) + _mm512_undefined_pd (), + (__mmask8) -1); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A) +{ + return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, + (__v8df) __O, + __M); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A) +{ + return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A, + (__v8df) + _mm512_setzero_pd (), + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcast_i32x4 (__m128i __A) +{ + return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, + (__v16si) + _mm512_undefined_epi32 (), + (__mmask16) -1); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, + (__v16si) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A) +{ + return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A, + (__v16si) + _mm512_setzero_si512 (), + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_broadcast_i64x4 (__m256i __A) +{ + return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, + (__v8di) + _mm512_undefined_epi32 (), + (__mmask8) -1); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A) +{ + return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, + (__v8di) __O, + __M); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS +_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A) +{ + return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A, + (__v8di) + _mm512_setzero_si512 (), + __M); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A) +{ + return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, + (__v8df) __O, __M); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A) +{ + return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A, + (__v8df) + _mm512_setzero_pd (), + __M); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, + (__v16sf) __O, __M); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A) +{ + return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A, + (__v16sf) + _mm512_setzero_ps (), + __M); +} + static __inline__ __m128i __DEFAULT_FN_ATTRS _mm512_cvtsepi32_epi8 (__m512i __A) { Index: cfe/trunk/lib/Headers/avx512vlcdintrin.h =================================================================== --- cfe/trunk/lib/Headers/avx512vlcdintrin.h +++ cfe/trunk/lib/Headers/avx512vlcdintrin.h @@ -0,0 +1,61 @@ +/*===---- avx512vlcdintrin.h - AVX512VL and AVX512CD intrinsics ---------------------------=== + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + *===-----------------------------------------------------------------------=== + */ +#ifndef __IMMINTRIN_H +#error "Never use directly; include instead." +#endif + +#ifndef __AVX512VLCDINTRIN_H +#define __AVX512VLCDINTRIN_H + +/* Define the default attributes for the functions in this file. */ +#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512cd"))) + + +static __inline__ __m128i __DEFAULT_FN_ATTRS +_mm_broadcastmb_epi64 (__mmask8 __A) +{ + return (__m128i) __builtin_ia32_broadcastmb128 (__A); +} + +static __inline__ __m256i __DEFAULT_FN_ATTRS +_mm256_broadcastmb_epi64 (__mmask8 __A) +{ + return (__m256i) __builtin_ia32_broadcastmb256 (__A); +} + +static __inline__ __m128i __DEFAULT_FN_ATTRS +_mm_broadcastmw_epi32 (__mmask16 __A) +{ + return (__m128i) __builtin_ia32_broadcastmw128 (__A); +} + +static __inline__ __m256i __DEFAULT_FN_ATTRS +_mm256_broadcastmw_epi32 (__mmask16 __A) +{ + return (__m256i) __builtin_ia32_broadcastmw256 (__A); +} + + +#undef __DEFAULT_FN_ATTRS + +#endif /* __AVX512VLCDINTRIN_H */ \ No newline at end of file Index: cfe/trunk/lib/Headers/immintrin.h =================================================================== --- cfe/trunk/lib/Headers/immintrin.h +++ cfe/trunk/lib/Headers/immintrin.h @@ -75,6 +75,8 @@ #include +#include + #include #include Index: cfe/trunk/test/CodeGen/avx512cdintrin.c =================================================================== --- cfe/trunk/test/CodeGen/avx512cdintrin.c +++ cfe/trunk/test/CodeGen/avx512cdintrin.c @@ -65,3 +65,15 @@ // CHECK: @llvm.x86.avx512.mask.lzcnt.q.512 return _mm512_maskz_lzcnt_epi64(__U,__A); } + +__m512i test_mm512_broadcastmb_epi64(__mmask8 __A) { + // CHECK-LABEL: @test_mm512_broadcastmb_epi64 + // CHECK: @llvm.x86.avx512.broadcastmb.512 + return _mm512_broadcastmb_epi64(__A); +} + +__m512i test_mm512_broadcastmw_epi32(__mmask16 __A) { + // CHECK-LABEL: @test_mm512_broadcastmw_epi32 + // CHECK: @llvm.x86.avx512.broadcastmw.512 + return _mm512_broadcastmw_epi32(__A); +} Index: cfe/trunk/test/CodeGen/avx512f-builtins.c =================================================================== --- cfe/trunk/test/CodeGen/avx512f-builtins.c +++ cfe/trunk/test/CodeGen/avx512f-builtins.c @@ -3698,6 +3698,138 @@ return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); } +__m512 test_mm512_broadcast_f32x4(__m128 __A) { + // CHECK-LABEL: @test_mm512_broadcast_f32x4 + // CHECK: @llvm.x86.avx512.mask.broadcastf32x4 + return _mm512_broadcast_f32x4(__A); +} + +__m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, __m128 __A) { + // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4 + // CHECK: @llvm.x86.avx512.mask.broadcastf32x4 + return _mm512_mask_broadcast_f32x4(__O, __M, __A); +} + +__m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, __m128 __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4 + // CHECK: @llvm.x86.avx512.mask.broadcastf32x4 + return _mm512_maskz_broadcast_f32x4(__M, __A); +} + +__m512d test_mm512_broadcast_f64x4(__m256d __A) { + // CHECK-LABEL: @test_mm512_broadcast_f64x4 + // CHECK: @llvm.x86.avx512.mask.broadcastf64x4 + return _mm512_broadcast_f64x4(__A); +} + +__m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, __m256d __A) { + // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4 + // CHECK: @llvm.x86.avx512.mask.broadcastf64x4 + return _mm512_mask_broadcast_f64x4(__O, __M, __A); +} + +__m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, __m256d __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4 + // CHECK: @llvm.x86.avx512.mask.broadcastf64x4 + return _mm512_maskz_broadcast_f64x4(__M, __A); +} + +__m512i test_mm512_broadcast_i32x4(__m128i __A) { + // CHECK-LABEL: @test_mm512_broadcast_i32x4 + // CHECK: @llvm.x86.avx512.mask.broadcasti32x4 + return _mm512_broadcast_i32x4(__A); +} + +__m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i __A) { + // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4 + // CHECK: @llvm.x86.avx512.mask.broadcasti32x4 + return _mm512_mask_broadcast_i32x4(__O, __M, __A); +} + +__m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4 + // CHECK: @llvm.x86.avx512.mask.broadcasti32x4 + return _mm512_maskz_broadcast_i32x4(__M, __A); +} + +__m512i test_mm512_broadcast_i64x4(__m256i __A) { + // CHECK-LABEL: @test_mm512_broadcast_i64x4 + // CHECK: @llvm.x86.avx512.mask.broadcasti64x4 + return _mm512_broadcast_i64x4(__A); +} + +__m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i __A) { + // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4 + // CHECK: @llvm.x86.avx512.mask.broadcasti64x4 + return _mm512_mask_broadcast_i64x4(__O, __M, __A); +} + +__m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4 + // CHECK: @llvm.x86.avx512.mask.broadcasti64x4 + return _mm512_maskz_broadcast_i64x4(__M, __A); +} + +__m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) { + // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd + // CHECK: @llvm.x86.avx512.mask.broadcast.sd.pd.512 + return _mm512_mask_broadcastsd_pd(__O, __M, __A); +} + +__m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd + // CHECK: @llvm.x86.avx512.mask.broadcast.sd.pd.512 + return _mm512_maskz_broadcastsd_pd(__M, __A); +} + +__m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) { + // CHECK-LABEL: @test_mm512_mask_broadcastss_ps + // CHECK: @llvm.x86.avx512.mask.broadcast.ss.ps.512 + return _mm512_mask_broadcastss_ps(__O, __M, __A); +} + +__m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps + // CHECK: @llvm.x86.avx512.mask.broadcast.ss.ps.512 + return _mm512_maskz_broadcastss_ps(__M, __A); +} + +__m512i test_mm512_broadcastd_epi32(__m128i __A) { + // CHECK-LABEL: @test_mm512_broadcastd_epi32 + // CHECK: @llvm.x86.avx512.pbroadcastd.512 + return _mm512_broadcastd_epi32(__A); +} + +__m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) { + // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32 + // CHECK: @llvm.x86.avx512.pbroadcastd.512 + return _mm512_mask_broadcastd_epi32(__O, __M, __A); +} + +__m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32 + // CHECK: @llvm.x86.avx512.pbroadcastd.512 + return _mm512_maskz_broadcastd_epi32(__M, __A); +} + +__m512i test_mm512_broadcastq_epi64(__m128i __A) { + // CHECK-LABEL: @test_mm512_broadcastq_epi64 + // CHECK: @llvm.x86.avx512.pbroadcastq.512 + return _mm512_broadcastq_epi64(__A); +} + +__m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) { + // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64 + // CHECK: @llvm.x86.avx512.pbroadcastq.512 + return _mm512_mask_broadcastq_epi64(__O, __M, __A); +} + +__m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) { + // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64 + // CHECK: @llvm.x86.avx512.pbroadcastq.512 + return _mm512_maskz_broadcastq_epi64(__M, __A); +} + __m128i test_mm512_cvtsepi32_epi8(__m512i __A) { // CHECK-LABEL: @test_mm512_cvtsepi32_epi8 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512 Index: cfe/trunk/test/CodeGen/avx512vlcd-builtins.c =================================================================== --- cfe/trunk/test/CodeGen/avx512vlcd-builtins.c +++ cfe/trunk/test/CodeGen/avx512vlcd-builtins.c @@ -0,0 +1,30 @@ +// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512vl -target-feature +avx512cd -emit-llvm -o - -Werror | FileCheck %s + +// Don't include mm_malloc.h, it's system specific. +#define __MM_MALLOC_H + +#include + +__m128i test_mm_broadcastmb_epi64(__mmask8 __A) { + // CHECK-LABEL: @test_mm_broadcastmb_epi64 + // CHECK: @llvm.x86.avx512.broadcastmb.128 + return _mm_broadcastmb_epi64(__A); +} + +__m256i test_mm256_broadcastmb_epi64(__mmask8 __A) { + // CHECK-LABEL: @test_mm256_broadcastmb_epi64 + // CHECK: @llvm.x86.avx512.broadcastmb.256 + return _mm256_broadcastmb_epi64(__A); +} + +__m128i test_mm_broadcastmw_epi32(__mmask16 __A) { + // CHECK-LABEL: @test_mm_broadcastmw_epi32 + // CHECK: @llvm.x86.avx512.broadcastmw.128 + return _mm_broadcastmw_epi32(__A); +} + +__m256i test_mm256_broadcastmw_epi32(__mmask16 __A) { + // CHECK-LABEL: @test_mm256_broadcastmw_epi32 + // CHECK: @llvm.x86.avx512.broadcastmw.256 + return _mm256_broadcastmw_epi32(__A); +}