Skip to content

Commit 184bcfe

Browse files
committed
Add SDPatternMatch::m_SetCC unit test coverage
1 parent 9d39eaf commit 184bcfe

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,41 @@ TEST_F(SelectionDAGPatternMatchTest, matchValueType) {
119119
EXPECT_FALSE(sd_match(Op2, m_ScalableVectorVT()));
120120
}
121121

122+
TEST_F(SelectionDAGPatternMatchTest, matchTernaryOp) {
123+
SDLoc DL;
124+
auto Int32VT = EVT::getIntegerVT(Context, 32);
125+
126+
SDValue Op0 = DAG->getCopyFromReg(DAG->getEntryNode(), DL, 1, Int32VT);
127+
SDValue Op1 = DAG->getCopyFromReg(DAG->getEntryNode(), DL, 2, Int32VT);
128+
129+
SDValue ICMP_UGT = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETUGT);
130+
SDValue ICMP_EQ01 = DAG->getSetCC(DL, MVT::i1, Op0, Op1, ISD::SETEQ);
131+
SDValue ICMP_EQ10 = DAG->getSetCC(DL, MVT::i1, Op1, Op0, ISD::SETEQ);
132+
133+
using namespace SDPatternMatch;
134+
ISD::CondCode CC;
135+
EXPECT_TRUE(sd_match(ICMP_UGT, m_SetCC(m_Value(), m_Value(),
136+
m_SpecificCondCode(ISD::SETUGT))));
137+
EXPECT_TRUE(
138+
sd_match(ICMP_UGT, m_SetCC(m_Value(), m_Value(), m_CondCode(CC))));
139+
EXPECT_TRUE(CC == ISD::SETUGT);
140+
EXPECT_FALSE(sd_match(ICMP_UGT, m_SetCC(m_Value(), m_Value(),
141+
m_SpecificCondCode(ISD::SETLE))));
142+
143+
EXPECT_TRUE(sd_match(ICMP_EQ01, m_SetCC(m_Specific(Op0), m_Specific(Op1),
144+
m_SpecificCondCode(ISD::SETEQ))));
145+
EXPECT_TRUE(sd_match(ICMP_EQ10, m_SetCC(m_Specific(Op1), m_Specific(Op0),
146+
m_SpecificCondCode(ISD::SETEQ))));
147+
EXPECT_FALSE(sd_match(ICMP_EQ01, m_SetCC(m_Specific(Op1), m_Specific(Op0),
148+
m_SpecificCondCode(ISD::SETEQ))));
149+
EXPECT_FALSE(sd_match(ICMP_EQ10, m_SetCC(m_Specific(Op0), m_Specific(Op1),
150+
m_SpecificCondCode(ISD::SETEQ))));
151+
EXPECT_TRUE(sd_match(ICMP_EQ01, m_c_SetCC(m_Specific(Op1), m_Specific(Op0),
152+
m_SpecificCondCode(ISD::SETEQ))));
153+
EXPECT_TRUE(sd_match(ICMP_EQ10, m_c_SetCC(m_Specific(Op0), m_Specific(Op1),
154+
m_SpecificCondCode(ISD::SETEQ))));
155+
}
156+
122157
TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
123158
SDLoc DL;
124159
auto Int32VT = EVT::getIntegerVT(Context, 32);

0 commit comments

Comments
 (0)