[PATCH] D118362: [DAGCombine] Extend and refactor combineCarryDiamond()
Paweł Bylica via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 21 12:45:18 PST 2022
chfast updated this revision to Diff 410369.
chfast added a comment.
Rebased.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D118362/new/
https://reviews.llvm.org/D118362
Files:
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/test/CodeGen/X86/addcarry.ll
Index: llvm/test/CodeGen/X86/addcarry.ll
===================================================================
--- llvm/test/CodeGen/X86/addcarry.ll
+++ llvm/test/CodeGen/X86/addcarry.ll
@@ -451,12 +451,9 @@
; CHECK-LABEL: addcarry_hidden_2x64:
; CHECK: # %bb.0:
; CHECK-NEXT: movq %rdi, %rax
-; CHECK-NEXT: addq %rcx, %rsi
-; CHECK-NEXT: setb %dil
; CHECK-NEXT: addq %rdx, %rax
-; CHECK-NEXT: adcq $0, %rsi
+; CHECK-NEXT: adcq %rcx, %rsi
; CHECK-NEXT: setb %cl
-; CHECK-NEXT: orb %dil, %cl
; CHECK-NEXT: movq %rsi, %rdx
; CHECK-NEXT: retq
%t0 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %x0, i64 %y0)
Index: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
===================================================================
--- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+++ llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
@@ -3137,9 +3137,14 @@
// Our goal is to identify A, B, and CarryIn and produce ADDCARRY/SUBCARRY with
// a single path for carry/borrow out propagation:
static SDValue combineCarryDiamond(SelectionDAG &DAG, const TargetLowering &TLI,
- SDValue Carry0, SDValue Carry1, SDNode *N) {
- if (Carry0.getResNo() != 1 || Carry1.getResNo() != 1)
+ SDValue N0, SDValue N1, SDNode *N) {
+ SDValue Carry0 = getAsCarry(TLI, N0);
+ if (!Carry0)
return SDValue();
+ SDValue Carry1 = getAsCarry(TLI, N1);
+ if (!Carry1)
+ return SDValue();
+
unsigned Opcode = Carry0.getOpcode();
if (Opcode != Carry1.getOpcode())
return SDValue();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D118362.410369.patch
Type: text/x-patch
Size: 1587 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220221/0986cc08/attachment.bin>
More information about the llvm-commits
mailing list