From: Lama Saba Date: Wed, 10 Aug 2016 10:34:45 +0000 (+0000) Subject: [X86][AVX512] lower __mm512_andnot_ps/__mm512_andnot_pd to IR X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c4bce8b1950fe0172c4b2b7cd75983b3b7a4311d;p=clang [X86][AVX512] lower __mm512_andnot_ps/__mm512_andnot_pd to IR Differential revision: https://reviews.llvm.org/D23262 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@278209 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Headers/avx512dqintrin.h b/lib/Headers/avx512dqintrin.h index 13665e4c66..b60bec12bc 100644 --- a/lib/Headers/avx512dqintrin.h +++ b/lib/Headers/avx512dqintrin.h @@ -187,11 +187,7 @@ _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) { static __inline__ __m512d __DEFAULT_FN_ATTRS _mm512_andnot_pd (__m512d __A, __m512d __B) { - return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A, - (__v8df) __B, - (__v8df) - _mm512_setzero_pd (), - (__mmask8) -1); + return (__m512d)(~(__v8du)__A & (__v8du)__B); } static __inline__ __m512d __DEFAULT_FN_ATTRS @@ -213,11 +209,7 @@ _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) { static __inline__ __m512 __DEFAULT_FN_ATTRS _mm512_andnot_ps (__m512 __A, __m512 __B) { - return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A, - (__v16sf) __B, - (__v16sf) - _mm512_setzero_ps (), - (__mmask16) -1); + return (__m512)(~(__v16su)__A & (__v16su)__B); } static __inline__ __m512 __DEFAULT_FN_ATTRS diff --git a/test/CodeGen/avx512dq-builtins.c b/test/CodeGen/avx512dq-builtins.c index 27c32a8685..91bfbaf52b 100644 --- a/test/CodeGen/avx512dq-builtins.c +++ b/test/CodeGen/avx512dq-builtins.c @@ -133,7 +133,8 @@ __m512 test_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) { __m512d test_mm512_andnot_pd (__m512d __A, __m512d __B) { // CHECK-LABEL: @test_mm512_andnot_pd - // CHECK: @llvm.x86.avx512.mask.andn.pd.512 + // CHECK: xor <8 x i64> %{{.*}}, + // CHECK: and <8 x i64> return (__m512d) _mm512_andnot_pd(__A, __B); } @@ -151,7 +152,8 @@ __m512d test_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) { __m512 test_mm512_andnot_ps (__m512 __A, __m512 __B) { // CHECK-LABEL: @test_mm512_andnot_ps - // CHECK: @llvm.x86.avx512.mask.andn.ps.512 + // CHECK: xor <16 x i32> %{{.*}}, + // CHECK: and <16 x i32> return (__m512) _mm512_andnot_ps(__A, __B); }