@@ -131,6 +131,12 @@ TEST_F(SelectionDAGPatternMatchTest, matchTernaryOp) {
131
131
SDValue ICMP_EQ01 = DAG->getSetCC (DL, MVT::i1, Op0, Op1, ISD::SETEQ);
132
132
SDValue ICMP_EQ10 = DAG->getSetCC (DL, MVT::i1, Op1, Op0, ISD::SETEQ);
133
133
134
+ auto Int1VT = EVT::getIntegerVT (Context, 1 );
135
+ SDValue Cond = DAG->getCopyFromReg (DAG->getEntryNode (), DL, 3 , Int1VT);
136
+ SDValue T = DAG->getCopyFromReg (DAG->getEntryNode (), DL, 4 , Int1VT);
137
+ SDValue F = DAG->getCopyFromReg (DAG->getEntryNode (), DL, 5 , Int1VT);
138
+ SDValue Select = DAG->getSelect (DL, MVT::i1, Cond, T, F);
139
+
134
140
using namespace SDPatternMatch ;
135
141
ISD::CondCode CC;
136
142
EXPECT_TRUE (sd_match (ICMP_UGT, m_SetCC (m_Value (), m_Value (),
@@ -153,6 +159,13 @@ TEST_F(SelectionDAGPatternMatchTest, matchTernaryOp) {
153
159
m_SpecificCondCode (ISD::SETEQ))));
154
160
EXPECT_TRUE (sd_match (ICMP_EQ10, m_c_SetCC (m_Specific (Op0), m_Specific (Op1),
155
161
m_SpecificCondCode (ISD::SETEQ))));
162
+
163
+ EXPECT_TRUE (sd_match (
164
+ Select, m_Select (m_Specific (Cond), m_Specific (T), m_Specific (F))));
165
+ EXPECT_FALSE (sd_match (
166
+ Select, m_Select (m_Specific (Cond), m_Specific (F), m_Specific (T))));
167
+ EXPECT_FALSE (sd_match (ICMP_EQ01, m_Select (m_Specific (Op0), m_Specific (Op1),
168
+ m_SpecificCondCode (ISD::SETEQ))));
156
169
}
157
170
158
171
TEST_F (SelectionDAGPatternMatchTest, matchBinaryOp) {
0 commit comments