Skip to content

Commit c182a9a

Browse files
committed
Use sd_match. Make comment clearer.
Signed-off-by: John Lu <[email protected]>
1 parent 19a0a2e commit c182a9a

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16581,24 +16581,24 @@ SDValue SITargetLowering::performSetCCCombine(SDNode *N,
1658116581

1658216582
// Eliminate setcc by using carryout from add/sub instruction
1658316583

16584-
// X = ADD i64 Y, Z Xlo = UADDO i32 Ylo, Zlo
16585-
// setcc X ult Y -> XHi = UADDO_CARRY i32 Yhi, Zhi
16584+
// LHS = ADD i64 RHS, Z LHSlo = UADDO i32 RHSlo, Zlo
16585+
// setcc LHS ult RHS -> LHSHi = UADDO_CARRY i32 RHShi, Zhi
1658616586
// similarly for subtraction
1658716587

16588-
// X = ADD i64 Y, 1 Xlo = UADDO i32 Ylo, 1
16589-
// setcc X eq 0 -> XHi = UADDO_CARRY i32 Yhi, 0
16588+
// LHS = ADD i64 Y, 1 LHSlo = UADDO i32 Ylo, 1
16589+
// setcc LHS eq 0 -> LHSHi = UADDO_CARRY i32 Yhi, 0
1659016590

1659116591
// Don't split a 64-bit add/sub into two 32-bit add/sub instructions for
1659216592
// non-divergent operations. This can result in lo/hi 32-bit operations
1659316593
// being done in SGPR and VGPR with additional operations being needed
1659416594
// to move operands and/or generate the intermediate carry.
1659516595
if (VT == MVT::i64 && N->isDivergent() &&
16596-
((((LHS.getOpcode() == ISD::ADD && CC == ISD::SETULT) ||
16597-
(LHS.getOpcode() == ISD::SUB && CC == ISD::SETUGT)) &&
16598-
LHS.getOperand(0) == RHS) ||
16599-
(LHS.getOpcode() == ISD::ADD && CC == ISD::SETEQ && CRHS &&
16600-
CRHS->isZero() && dyn_cast<ConstantSDNode>(LHS.getOperand(1)) &&
16601-
dyn_cast<ConstantSDNode>(LHS.getOperand(1))->isOne()))) {
16596+
((CC == ISD::SETULT &&
16597+
sd_match(LHS, m_Add(m_Specific(RHS), m_Value()))) ||
16598+
(CC == ISD::SETUGT &&
16599+
sd_match(LHS, m_Sub(m_Specific(RHS), m_Value()))) ||
16600+
(CC == ISD::SETEQ && CRHS && CRHS->isZero() &&
16601+
sd_match(LHS, m_Add(m_Value(), m_One()))))) {
1660216602
EVT TargetType = MVT::i32;
1660316603
EVT CarryVT = MVT::i1;
1660416604
bool IsAdd = LHS.getOpcode() == ISD::ADD;

0 commit comments

Comments
 (0)