[PATCH] D29268: [DAGCombine] Combine composition of ADDC(ADDE)

Zvi Rackover via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 30 01:18:57 PST 2017


zvi added inline comments.


================
Comment at: lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1872
+  if (N1.getOpcode() == ISD::ADDE &&
+      N->isOnlyUserOf(N1.getValue(0).getNode()) &&
+      isNullConstant(N1.getOperand(1)))
----------------
deadalnix wrote:
> Is that important to check this has only one use ? I'd assume that having (adde Y, 0, Carry) + (adde X, Y, Carry) is still preferable to (addc X, (adde Y, 0, Carry)) as it break dependencies between instructions.
That's a fair point, but here I am following the practice that is common in the DAG Combiner. If you search for "hasOneUse" or "isOnlyUserOf" you can see the conservative approach of avoiding increase in instruction count.
If you can provide a benchmark that can show this case is an exception, we can discuss the trade-off with data to guide us - and better do it in a follow-up patch.


Repository:
  rL LLVM

https://reviews.llvm.org/D29268





More information about the llvm-commits mailing list