@@ -119,6 +119,41 @@ TEST_F(SelectionDAGPatternMatchTest, matchValueType) {
119
119
EXPECT_FALSE (sd_match (Op2, m_ScalableVectorVT ()));
120
120
}
121
121
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
+
122
157
TEST_F (SelectionDAGPatternMatchTest, matchBinaryOp) {
123
158
SDLoc DL;
124
159
auto Int32VT = EVT::getIntegerVT (Context, 32 );
0 commit comments