Skip to content

Commit

Permalink
[X86] Replace avx512f integer mul reduction builtins with generic bui…
Browse files Browse the repository at this point in the history
…ltin

D117829 added the generic "__builtin_reduce_mul" which we can use to replace the x86 specific integer mul reduction builtins - internally these were mapping to the same intrinsic already so there are no test changes required.

Differential Revision: https://reviews.llvm.org/D125222
  • Loading branch information
RKSimon committed May 9, 2022
1 parent 33f02de commit ec6024d
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 12 deletions.
2 changes: 0 additions & 2 deletions clang/include/clang/Basic/BuiltinsX86.def
Expand Up @@ -2010,8 +2010,6 @@ TARGET_BUILTIN(__builtin_ia32_reduce_fmul_ps512, "ffV16f", "ncV:512:", "avx512f"
TARGET_BUILTIN(__builtin_ia32_reduce_fmul_ph512, "xxV32x", "ncV:512:", "avx512fp16")
TARGET_BUILTIN(__builtin_ia32_reduce_fmul_ph256, "xxV16x", "ncV:256:", "avx512fp16,avx512vl")
TARGET_BUILTIN(__builtin_ia32_reduce_fmul_ph128, "xxV8x", "ncV:128:", "avx512fp16,avx512vl")
TARGET_BUILTIN(__builtin_ia32_reduce_mul_d512, "iV16i", "ncV:512:", "avx512f")
TARGET_BUILTIN(__builtin_ia32_reduce_mul_q512, "OiV8Oi", "ncV:512:", "avx512f")

// MONITORX/MWAITX
TARGET_BUILTIN(__builtin_ia32_monitorx, "vvC*UiUi", "n", "mwaitx")
Expand Down
6 changes: 0 additions & 6 deletions clang/lib/CodeGen/CGBuiltin.cpp
Expand Up @@ -14409,12 +14409,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
Builder.getFastMathFlags().setNoNaNs();
return Builder.CreateCall(F, {Ops[0]});
}
case X86::BI__builtin_ia32_reduce_mul_d512:
case X86::BI__builtin_ia32_reduce_mul_q512: {
Function *F =
CGM.getIntrinsic(Intrinsic::vector_reduce_mul, Ops[0]->getType());
return Builder.CreateCall(F, {Ops[0]});
}

// 3DNow!
case X86::BI__builtin_ia32_pswapdsf:
Expand Down
8 changes: 4 additions & 4 deletions clang/lib/Headers/avx512fintrin.h
Expand Up @@ -9323,7 +9323,7 @@ static __inline__ long long __DEFAULT_FN_ATTRS512 _mm512_reduce_add_epi64(__m512
}

static __inline__ long long __DEFAULT_FN_ATTRS512 _mm512_reduce_mul_epi64(__m512i __W) {
return __builtin_ia32_reduce_mul_q512(__W);
return __builtin_reduce_mul((__v8di)__W);
}

static __inline__ long long __DEFAULT_FN_ATTRS512 _mm512_reduce_and_epi64(__m512i __W) {
Expand All @@ -9343,7 +9343,7 @@ _mm512_mask_reduce_add_epi64(__mmask8 __M, __m512i __W) {
static __inline__ long long __DEFAULT_FN_ATTRS512
_mm512_mask_reduce_mul_epi64(__mmask8 __M, __m512i __W) {
__W = _mm512_mask_mov_epi64(_mm512_set1_epi64(1), __M, __W);
return __builtin_ia32_reduce_mul_q512(__W);
return __builtin_reduce_mul((__v8di)__W);
}

static __inline__ long long __DEFAULT_FN_ATTRS512
Expand Down Expand Up @@ -9388,7 +9388,7 @@ _mm512_reduce_add_epi32(__m512i __W) {

static __inline__ int __DEFAULT_FN_ATTRS512
_mm512_reduce_mul_epi32(__m512i __W) {
return __builtin_ia32_reduce_mul_d512((__v16si)__W);
return __builtin_reduce_mul((__v16si)__W);
}

static __inline__ int __DEFAULT_FN_ATTRS512
Expand All @@ -9410,7 +9410,7 @@ _mm512_mask_reduce_add_epi32( __mmask16 __M, __m512i __W) {
static __inline__ int __DEFAULT_FN_ATTRS512
_mm512_mask_reduce_mul_epi32( __mmask16 __M, __m512i __W) {
__W = _mm512_mask_mov_epi32(_mm512_set1_epi32(1), __M, __W);
return __builtin_ia32_reduce_mul_d512((__v16si)__W);
return __builtin_reduce_mul((__v16si)__W);
}

static __inline__ int __DEFAULT_FN_ATTRS512
Expand Down

0 comments on commit ec6024d

Please sign in to comment.