Skip to content

Commit 1d466f5

Browse files
committedFeb 6, 2017
[DAGCombiner] (add X, (adde Y, 0, Carry)) -> (adde X, Y, Carry)
Summary: This is extracted from D29443 . Reviewers: mkuper, spatel, RKSimon, zvi, bkramer Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D29564 llvm-svn: 294186
1 parent bdf3c5a commit 1d466f5

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed
 

‎llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -1834,6 +1834,12 @@ SDValue DAGCombiner::visitADDLike(SDValue N0, SDValue N1, SDNode *LocReference)
18341834
}
18351835
}
18361836

1837+
// (add X, (adde Y, 0, Carry)) -> (adde X, Y, Carry)
1838+
if (N1.getOpcode() == ISD::ADDE && N1->hasOneUse() &&
1839+
isNullConstant(N1.getOperand(1)))
1840+
return DAG.getNode(ISD::ADDE, DL, DAG.getVTList(VT, MVT::Glue),
1841+
N0, N1->getOperand(0), N1->getOperand(2));
1842+
18371843
return SDValue();
18381844
}
18391845

‎llvm/test/CodeGen/X86/adde-carry.ll

+6-7
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,16 @@ define %scalar @pr31719(%scalar* nocapture readonly %this, %scalar %arg.b) {
9393
; CHECK-NEXT: sbbq %r10, %r10
9494
; CHECK-NEXT: andl $1, %r10d
9595
; CHECK-NEXT: addq 8(%rsi), %rcx
96-
; CHECK-NEXT: sbbq %r11, %r11
97-
; CHECK-NEXT: andl $1, %r11d
98-
; CHECK-NEXT: addq %r10, %rcx
99-
; CHECK-NEXT: adcq $0, %r11
100-
; CHECK-NEXT: addq 16(%rsi), %r8
10196
; CHECK-NEXT: sbbq %rax, %rax
10297
; CHECK-NEXT: andl $1, %eax
103-
; CHECK-NEXT: addq %r11, %r8
98+
; CHECK-NEXT: addq %r10, %rcx
10499
; CHECK-NEXT: adcq $0, %rax
100+
; CHECK-NEXT: addq 16(%rsi), %r8
101+
; CHECK-NEXT: sbbq %r10, %r10
102+
; CHECK-NEXT: andl $1, %r10d
105103
; CHECK-NEXT: addq 24(%rsi), %r9
106-
; CHECK-NEXT: addq %rax, %r9
104+
; CHECK-NEXT: addq %rax, %r8
105+
; CHECK-NEXT: adcq %r10, %r9
107106
; CHECK-NEXT: movq %rdx, (%rdi)
108107
; CHECK-NEXT: movq %rcx, 8(%rdi)
109108
; CHECK-NEXT: movq %r8, 16(%rdi)

0 commit comments

Comments
 (0)
Please sign in to comment.