[PATCH] D75157: [DAGCombine] Perform the fold of A - (-B) -> A + B only when it is cheaper
qshanz via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 25 23:58:03 PST 2020
steven.zhang created this revision.
steven.zhang added reviewers: rampitec, RKSimon, craig.topper, spatel, dmgreen, arsenm, jsji, PowerPC.
Herald added subscribers: llvm-commits, kerbowa, hiraditya, nhaehnle, wdng, jvesely, nemanjai.
Herald added a project: LLVM.
We have the rule to fold A + B -> A - (-B) only when it is cheaper.
// fold (fadd A, (fneg B)) -> (fsub A, B)
if ((!LegalOperations || TLI.isOperationLegalOrCustom(ISD::FSUB, VT)) &&
TLI.getNegatibleCost(N1, DAG, LegalOperations, ForCodeSize) ==
TargetLowering::NegatibleCost::Cheaper)
return DAG.getNode(
ISD::FSUB, DL, VT, N0,
TLI.getNegatedExpression(N1, DAG, LegalOperations, ForCodeSize), Flags);
But for the reverse folding, it is done as long as it is not expensive, which including that it is neutral. This patch fix this transformation that didn't have any gain.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D75157
Files:
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/AMDGPU/fma-combine.ll
llvm/test/CodeGen/AMDGPU/fmuladd.f16.ll
llvm/test/CodeGen/AMDGPU/fmuladd.f32.ll
llvm/test/CodeGen/AMDGPU/fsub.f16.ll
llvm/test/CodeGen/AMDGPU/reduction.ll
llvm/test/CodeGen/AMDGPU/v_mac.ll
llvm/test/CodeGen/PowerPC/qpx-recipest.ll
llvm/test/CodeGen/X86/dag-fmf-cse.ll
llvm/test/CodeGen/X86/fma_patterns.ll
llvm/test/CodeGen/X86/fma_patterns_wide.ll
llvm/test/CodeGen/X86/fp-fold.ll
llvm/test/CodeGen/X86/fp_constant_op.ll
llvm/test/CodeGen/X86/limited-prec.ll
llvm/test/CodeGen/X86/load-scalar-as-vector.ll
llvm/test/CodeGen/X86/negative-sin.ll
llvm/test/CodeGen/X86/pr44749.ll
llvm/test/CodeGen/X86/vec_ss_load_fold.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D75157.246636.patch
Type: text/x-patch
Size: 36811 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200226/19b44d93/attachment.bin>
More information about the llvm-commits
mailing list