forked from OSchip/llvm-project
[Clang][BuiltIn][AVX512] Adding intrinsics without mask for VBROADCAST and VPBROADCAST instruction set .
Differential Revision: http://reviews.llvm.org/D19196 llvm-svn: 267696
This commit is contained in:
parent
8fbae8cf09
commit
8c2900f44d
|
@ -1035,6 +1035,8 @@ TARGET_BUILTIN(__builtin_ia32_blendmps_512_mask, "V16fV16fV16fUs", "", "avx512f"
|
|||
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_cvtmask2q128, "V2LLiUc","","avx512dq,avx512vl")
|
|||
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")
|
||||
|
|
|
@ -11,6 +11,7 @@ set(files
|
|||
avx512pfintrin.h
|
||||
avx512vlbwintrin.h
|
||||
avx512vlintrin.h
|
||||
avx512vlcdintrin.h
|
||||
avx512dqintrin.h
|
||||
avx512vldqintrin.h
|
||||
avx512vbmiintrin.h
|
||||
|
|
|
@ -126,6 +126,19 @@ _mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A)
|
|||
(__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
|
||||
|
|
|
@ -185,6 +185,55 @@ _mm512_undefined_epi32()
|
|||
{
|
||||
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 @@ __builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
|
|||
__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)
|
||||
{
|
||||
|
|
|
@ -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 <avx512vlcdintrin.h> directly; include <immintrin.h> 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 */
|
|
@ -75,6 +75,8 @@ _mm256_cvtph_ps(__m128i __a)
|
|||
|
||||
#include <avx512vlbwintrin.h>
|
||||
|
||||
#include <avx512vlcdintrin.h>
|
||||
|
||||
#include <avx512vldqintrin.h>
|
||||
|
||||
#include <avx512erintrin.h>
|
||||
|
|
|
@ -65,3 +65,15 @@ __m512i test_mm512_maskz_lzcnt_epi64(__mmask8 __U, __m512i __A) {
|
|||
// 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);
|
||||
}
|
||||
|
|
|
@ -3698,6 +3698,138 @@ __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){
|
|||
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
|
||||
|
|
|
@ -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 <immintrin.h>
|
||||
|
||||
__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);
|
||||
}
|
Loading…
Reference in New Issue