Skip to content

Commit 0f4e48e

Browse files
committed
address review comment
1 parent cf872e0 commit 0f4e48e

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

llvm/include/llvm/CodeGen/SDPatternMatch.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -553,7 +553,8 @@ struct MaxMin_match {
553553

554554
template <typename MatchContext>
555555
bool match(const MatchContext &Ctx, SDValue N) {
556-
if (sd_context_match(N, Ctx, m_Opc(ISD::SELECT))) {
556+
if (sd_context_match(N, Ctx, m_Opc(ISD::SELECT)) ||
557+
sd_context_match(N, Ctx, m_Opc(ISD::VSELECT))) {
557558
EffectiveOperands<ExcludeChain> EO_SELECT(N, Ctx);
558559
assert(EO_SELECT.Size == 3);
559560
SDValue Cond = N->getOperand(EO_SELECT.FirstIndex);
@@ -565,7 +566,7 @@ struct MaxMin_match {
565566
assert(EO_SETCC.Size == 3);
566567
SDValue L = Cond->getOperand(EO_SETCC.FirstIndex);
567568
SDValue R = Cond->getOperand(EO_SETCC.FirstIndex + 1);
568-
CondCodeSDNode *CondNode =
569+
auto *CondNode =
569570
cast<CondCodeSDNode>(Cond->getOperand(EO_SETCC.FirstIndex + 2));
570571

571572
if ((TrueValue != L || FalseValue != R) &&

llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,13 +202,21 @@ TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
202202
SDValue UMin = DAG->getNode(ISD::UMIN, DL, Int32VT, Op1, Op0);
203203

204204
SDValue ICMP_GT = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETGT);
205+
SDValue ICMP_GE = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETGE);
205206
SDValue ICMP_UGT = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETUGT);
207+
SDValue ICMP_UGE = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETUGE);
206208
SDValue ICMP_LT = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETLT);
209+
SDValue ICMP_LE = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETLE);
207210
SDValue ICMP_ULT = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETULT);
208-
SDValue SMaxLike = DAG->getSelect(DL, MVT::i32, ICMP_GT, Op0, Op1);
209-
SDValue UMaxLike = DAG->getSelect(DL, MVT::i32, ICMP_UGT, Op0, Op1);
210-
SDValue SMinLike = DAG->getSelect(DL, MVT::i32, ICMP_LT, Op0, Op1);
211-
SDValue UMinLike = DAG->getSelect(DL, MVT::i32, ICMP_ULT, Op0, Op1);
211+
SDValue ICMP_ULE = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETULE);
212+
SDValue SMaxLikeGT = DAG->getSelect(DL, MVT::i32, ICMP_GT, Op0, Op1);
213+
SDValue SMaxLikeGE = DAG->getSelect(DL, MVT::i32, ICMP_GE, Op0, Op1);
214+
SDValue UMaxLikeUGT = DAG->getSelect(DL, MVT::i32, ICMP_UGT, Op0, Op1);
215+
SDValue UMaxLikeUGE = DAG->getSelect(DL, MVT::i32, ICMP_UGE, Op0, Op1);
216+
SDValue SMinLikeLT = DAG->getSelect(DL, MVT::i32, ICMP_LT, Op0, Op1);
217+
SDValue SMinLikeLE = DAG->getSelect(DL, MVT::i32, ICMP_LE, Op0, Op1);
218+
SDValue UMinLikeULT = DAG->getSelect(DL, MVT::i32, ICMP_ULT, Op0, Op1);
219+
SDValue UMinLikeULE = DAG->getSelect(DL, MVT::i32, ICMP_ULE, Op0, Op1);
212220

213221
SDValue SFAdd = DAG->getNode(ISD::STRICT_FADD, DL, {Float32VT, MVT::Other},
214222
{DAG->getEntryNode(), Op2, Op2});
@@ -241,19 +249,23 @@ TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
241249
EXPECT_TRUE(sd_match(SMax, m_c_BinOp(ISD::SMAX, m_Value(), m_Value())));
242250
EXPECT_TRUE(sd_match(SMax, m_SMax(m_Value(), m_Value())));
243251
EXPECT_TRUE(sd_match(SMax, m_SMaxLike(m_Value(), m_Value())));
244-
EXPECT_TRUE(sd_match(SMaxLike, m_SMaxLike(m_Value(), m_Value())));
252+
EXPECT_TRUE(sd_match(SMaxLikeGT, m_SMaxLike(m_Value(), m_Value())));
253+
EXPECT_TRUE(sd_match(SMaxLikeGE, m_SMaxLike(m_Value(), m_Value())));
245254
EXPECT_TRUE(sd_match(SMin, m_c_BinOp(ISD::SMIN, m_Value(), m_Value())));
246255
EXPECT_TRUE(sd_match(SMin, m_SMin(m_Value(), m_Value())));
247256
EXPECT_TRUE(sd_match(SMin, m_SMinLike(m_Value(), m_Value())));
248-
EXPECT_TRUE(sd_match(SMinLike, m_SMinLike(m_Value(), m_Value())));
257+
EXPECT_TRUE(sd_match(SMinLikeLT, m_SMinLike(m_Value(), m_Value())));
258+
EXPECT_TRUE(sd_match(SMinLikeLE, m_SMinLike(m_Value(), m_Value())));
249259
EXPECT_TRUE(sd_match(UMax, m_c_BinOp(ISD::UMAX, m_Value(), m_Value())));
250260
EXPECT_TRUE(sd_match(UMax, m_UMax(m_Value(), m_Value())));
251261
EXPECT_TRUE(sd_match(UMax, m_UMaxLike(m_Value(), m_Value())));
252-
EXPECT_TRUE(sd_match(UMaxLike, m_UMaxLike(m_Value(), m_Value())));
262+
EXPECT_TRUE(sd_match(UMaxLikeUGT, m_UMaxLike(m_Value(), m_Value())));
263+
EXPECT_TRUE(sd_match(UMaxLikeUGE, m_UMaxLike(m_Value(), m_Value())));
253264
EXPECT_TRUE(sd_match(UMin, m_c_BinOp(ISD::UMIN, m_Value(), m_Value())));
254265
EXPECT_TRUE(sd_match(UMin, m_UMin(m_Value(), m_Value())));
255266
EXPECT_TRUE(sd_match(UMin, m_UMinLike(m_Value(), m_Value())));
256-
EXPECT_TRUE(sd_match(UMinLike, m_UMinLike(m_Value(), m_Value())));
267+
EXPECT_TRUE(sd_match(UMinLikeULT, m_UMinLike(m_Value(), m_Value())));
268+
EXPECT_TRUE(sd_match(UMinLikeULE, m_UMinLike(m_Value(), m_Value())));
257269

258270
SDValue BindVal;
259271
EXPECT_TRUE(sd_match(SFAdd, m_ChainedBinOp(ISD::STRICT_FADD, m_Value(BindVal),

0 commit comments

Comments
 (0)