[PATCH] D75501: [DAGCombine] Check the uses of negated floating constant and remove the hack

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 3 08:53:28 PST 2020


RKSimon added inline comments.


================
Comment at: llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp:5570-5575
+  if (!Op.hasOneUse() &&
+      !(Op.getOpcode() == ISD::FP_EXTEND &&
+        isFPExtFree(VT, Op.getOperand(0).getValueType())) &&
+      !(Op.getOpcode() == ISD::ConstantFP &&
+        !getNegatedExpression(Op, DAG, LegalOperations, ForCodeSize)
+             .hasOneUse()))
----------------
spatel wrote:
> This is difficult to read. Please add some intermediate names (maybe as shown below).
> 
> It's not clear to me if that's the logic we want - is this a good or better fix for the problem?
> 
> ```
>   bool IsFreeExtend = Op.getOpcode() == ISD::FP_EXTEND &&
>                       isFPExtFree(VT, Op.getOperand(0).getValueType());
>   bool IsFreeConstant =
>       Op.getOpcode() == ISD::ConstantFP &&
>       !getNegatedExpression(Op, DAG, LegalOperations, ForCodeSize).use_empty();
>   if (!Op.hasOneUse() && !IsFreeExtend && !IsFreeConstant)
>     return NegatibleCost::Expensive;
> 
> 
> ```
```
if (!Op.hasOneUse()) {
  bool IsFreeExtend = Op.getOpcode() == ISD::FP_EXTEND &&
                    isFPExtFree(VT, Op.getOperand(0).getValueType());
  if (!IsFreeExtend)
    return NegatibleCost::Expensive;

  bool IsFreeConstant = Op.getOpcode() == ISD::ConstantFP &&
        !getNegatedExpression(Op, DAG, LegalOperations, ForCodeSize).use_empty();
  if (!IsFreeConstant)
    return NegatibleCost::Expensive;
}
```


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D75501/new/

https://reviews.llvm.org/D75501





More information about the llvm-commits mailing list