From: Asaf Badouh Date: Tue, 21 Jul 2015 15:27:28 +0000 (+0000) Subject: [X86][AVX512F] add FP arithmetic intrinsics X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fa5d0d4ae431b05e6eaa73b3e0029fc63921a800;p=clang [X86][AVX512F] add FP arithmetic intrinsics add/div/mul/sub include rounding versions Differential Revision: http://reviews.llvm.org/D11354 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@242790 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/BuiltinsX86.def b/include/clang/Basic/BuiltinsX86.def index 6ef04c76d6..bfd10da50f 100644 --- a/include/clang/Basic/BuiltinsX86.def +++ b/include/clang/Basic/BuiltinsX86.def @@ -1220,4 +1220,12 @@ BUILTIN(__builtin_ia32_vpermt2varhi256_maskz, "V16sV16sV16sV16sUs", "") BUILTIN(__builtin_ia32_pmulhrsw512_mask, "V32sV32sV32sV32sUi", "") BUILTIN(__builtin_ia32_pmulhuw512_mask, "V32sV32sV32sV32sUi", "") BUILTIN(__builtin_ia32_pmulhw512_mask, "V32sV32sV32sV32sUi", "") +BUILTIN(__builtin_ia32_addpd512_mask, "V8dV8dV8dV8dUcIi", "") +BUILTIN(__builtin_ia32_addps512_mask, "V16fV16fV16fV16fUsIi", "") +BUILTIN(__builtin_ia32_divpd512_mask, "V8dV8dV8dV8dUcIi", "") +BUILTIN(__builtin_ia32_divps512_mask, "V16fV16fV16fV16fUsIi", "") +BUILTIN(__builtin_ia32_mulpd512_mask, "V8dV8dV8dV8dUcIi", "") +BUILTIN(__builtin_ia32_mulps512_mask, "V16fV16fV16fV16fUsIi", "") +BUILTIN(__builtin_ia32_subpd512_mask, "V8dV8dV8dV8dUcIi", "") +BUILTIN(__builtin_ia32_subps512_mask, "V16fV16fV16fV16fUsIi", "") #undef BUILTIN diff --git a/lib/Headers/avx512fintrin.h b/lib/Headers/avx512fintrin.h index 0991144536..69179c95da 100644 --- a/lib/Headers/avx512fintrin.h +++ b/lib/Headers/avx512fintrin.h @@ -873,6 +873,252 @@ _mm512_abs_epi32(__m512i __A) (__mmask16) -1); } +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) + +#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \ + (__v8df) __W, (__mmask8) __U, __R); }) + +#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); }) + +#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); }) + +#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) __W, (__mmask16)__U, __R); }) + +#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); }) + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\ + (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) + +#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) __W, (__mmask8) __U, __R); }) + +#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);}) + +#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);}) + +#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) __W, (__mmask16) __U, __R); }); + +#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);}); + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\ + (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) + +#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) __W, (__mmask8) __U, __R); }) + +#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);}) + +#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);}) + +#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) __W, (__mmask16) __U, __R); }); + +#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);}); + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) __W, + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512d __DEFAULT_FN_ATTRS +_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) { + return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, + (__v8df) __B, + (__v8df) + _mm512_setzero_pd (), + (__mmask8) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) __W, + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +static __inline__ __m512 __DEFAULT_FN_ATTRS +_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) { + return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, + (__v16sf) __B, + (__v16sf) + _mm512_setzero_ps (), + (__mmask16) __U, + _MM_FROUND_CUR_DIRECTION); +} + +#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\ + (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) + +#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) __W, (__mmask8) __U, __R); }) + +#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \ + (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \ + (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);}) + +#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);}) + +#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) __W, (__mmask16) __U, __R); }); + +#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \ + (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \ + (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);}); + #define _mm512_roundscale_ps(A, B) __extension__ ({ \ (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \ -1, _MM_FROUND_CUR_DIRECTION); }) diff --git a/test/CodeGen/avx512f-builtins.c b/test/CodeGen/avx512f-builtins.c index 112dfd8b6e..29969639ee 100644 --- a/test/CodeGen/avx512f-builtins.c +++ b/test/CodeGen/avx512f-builtins.c @@ -1374,3 +1374,204 @@ __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) { //CHECK: mul <16 x i32> return _mm512_mullo_epi32(__A,__B); } + +__m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_add_round_pd + // CHECK: @llvm.x86.avx512.mask.add.pd.512 + return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_add_round_pd + // CHECK: @llvm.x86.avx512.mask.add.pd.512 + return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_add_round_pd + // CHECK: @llvm.x86.avx512.mask.add.pd.512 + return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_add_pd + // CHECK: @llvm.x86.avx512.mask.add.pd.512 + return _mm512_mask_add_pd(__W,__U,__A,__B); +} +__m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_add_pd + // CHECK: @llvm.x86.avx512.mask.add.pd.512 + return _mm512_maskz_add_pd(__U,__A,__B); +} +__m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_add_round_ps + // CHECK: @llvm.x86.avx512.mask.add.ps.512 + return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_add_round_ps + // CHECK: @llvm.x86.avx512.mask.add.ps.512 + return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_add_round_ps + // CHECK: @llvm.x86.avx512.mask.add.ps.512 + return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_add_ps + // CHECK: @llvm.x86.avx512.mask.add.ps.512 + return _mm512_mask_add_ps(__W,__U,__A,__B); +} +__m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_add_ps + // CHECK: @llvm.x86.avx512.mask.add.ps.512 + return _mm512_maskz_add_ps(__U,__A,__B); +} +__m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_sub_round_pd + // CHECK: @llvm.x86.avx512.mask.sub.pd.512 + return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_sub_round_pd + // CHECK: @llvm.x86.avx512.mask.sub.pd.512 + return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_sub_round_pd + // CHECK: @llvm.x86.avx512.mask.sub.pd.512 + return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_sub_pd + // CHECK: @llvm.x86.avx512.mask.sub.pd.512 + return _mm512_mask_sub_pd(__W,__U,__A,__B); +} +__m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_sub_pd + // CHECK: @llvm.x86.avx512.mask.sub.pd.512 + return _mm512_maskz_sub_pd(__U,__A,__B); +} +__m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_sub_round_ps + // CHECK: @llvm.x86.avx512.mask.sub.ps.512 + return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_sub_round_ps + // CHECK: @llvm.x86.avx512.mask.sub.ps.512 + return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_sub_round_ps + // CHECK: @llvm.x86.avx512.mask.sub.ps.512 + return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_sub_ps + // CHECK: @llvm.x86.avx512.mask.sub.ps.512 + return _mm512_mask_sub_ps(__W,__U,__A,__B); +} +__m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_sub_ps + // CHECK: @llvm.x86.avx512.mask.sub.ps.512 + return _mm512_maskz_sub_ps(__U,__A,__B); +} +__m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mul_round_pd + // CHECK: @llvm.x86.avx512.mask.mul.pd.512 + return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_mul_round_pd + // CHECK: @llvm.x86.avx512.mask.mul.pd.512 + return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_mul_round_pd + // CHECK: @llvm.x86.avx512.mask.mul.pd.512 + return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_mul_pd + // CHECK: @llvm.x86.avx512.mask.mul.pd.512 + return _mm512_mask_mul_pd(__W,__U,__A,__B); +} +__m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_mul_pd + // CHECK: @llvm.x86.avx512.mask.mul.pd.512 + return _mm512_maskz_mul_pd(__U,__A,__B); +} +__m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mul_round_ps + // CHECK: @llvm.x86.avx512.mask.mul.ps.512 + return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_mul_round_ps + // CHECK: @llvm.x86.avx512.mask.mul.ps.512 + return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_mul_round_ps + // CHECK: @llvm.x86.avx512.mask.mul.ps.512 + return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_mul_ps + // CHECK: @llvm.x86.avx512.mask.mul.ps.512 + return _mm512_mask_mul_ps(__W,__U,__A,__B); +} +__m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_mul_ps + // CHECK: @llvm.x86.avx512.mask.mul.ps.512 + return _mm512_maskz_mul_ps(__U,__A,__B); +} +__m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_div_round_pd + // CHECK: @llvm.x86.avx512.mask.div.pd.512 + return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_div_round_pd + // CHECK: @llvm.x86.avx512.mask.div.pd.512 + return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_div_round_pd + // CHECK: @llvm.x86.avx512.mask.div.pd.512 + return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512d test_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_mask_div_pd + // CHECK: @llvm.x86.avx512.mask.div.pd.512 + return _mm512_mask_div_pd(__W,__U,__A,__B); +} +__m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) { + // CHECK-LABEL: @test_mm512_maskz_div_pd + // CHECK: @llvm.x86.avx512.mask.div.pd.512 + return _mm512_maskz_div_pd(__U,__A,__B); +} +__m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_div_round_ps + // CHECK: @llvm.x86.avx512.mask.div.ps.512 + return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_div_round_ps + // CHECK: @llvm.x86.avx512.mask.div.ps.512 + return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_div_round_ps + // CHECK: @llvm.x86.avx512.mask.div.ps.512 + return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); +} +__m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_mask_div_ps + // CHECK: @llvm.x86.avx512.mask.div.ps.512 + return _mm512_mask_div_ps(__W,__U,__A,__B); +} +__m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) { + // CHECK-LABEL: @test_mm512_maskz_div_ps + // CHECK: @llvm.x86.avx512.mask.div.ps.512 + return _mm512_maskz_div_ps(__U,__A,__B); +}