@@ -201,6 +201,15 @@ TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
201201 SDValue UMax = DAG->getNode (ISD::UMAX, DL, Int32VT, Op0, Op1);
202202 SDValue UMin = DAG->getNode (ISD::UMIN, DL, Int32VT, Op1, Op0);
203203
204+ SDValue ICMP_GT = DAG->getSetCC (DL, MVT::i1, Op0, Op1, ISD::SETGT);
205+ SDValue ICMP_UGT = DAG->getSetCC (DL, MVT::i1, Op0, Op1, ISD::SETUGT);
206+ SDValue ICMP_LT = DAG->getSetCC (DL, MVT::i1, Op0, Op1, ISD::SETLT);
207+ 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);
212+
204213 SDValue SFAdd = DAG->getNode (ISD::STRICT_FADD, DL, {Float32VT, MVT::Other},
205214 {DAG->getEntryNode (), Op2, Op2});
206215
@@ -231,12 +240,20 @@ TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
231240
232241 EXPECT_TRUE (sd_match (SMax, m_c_BinOp (ISD::SMAX, m_Value (), m_Value ())));
233242 EXPECT_TRUE (sd_match (SMax, m_SMax (m_Value (), m_Value ())));
243+ EXPECT_TRUE (sd_match (SMax, m_SMaxLike (m_Value (), m_Value ())));
244+ EXPECT_TRUE (sd_match (SMaxLike, m_SMaxLike (m_Value (), m_Value ())));
234245 EXPECT_TRUE (sd_match (SMin, m_c_BinOp (ISD::SMIN, m_Value (), m_Value ())));
235246 EXPECT_TRUE (sd_match (SMin, m_SMin (m_Value (), m_Value ())));
247+ EXPECT_TRUE (sd_match (SMin, m_SMinLike (m_Value (), m_Value ())));
248+ EXPECT_TRUE (sd_match (SMinLike, m_SMinLike (m_Value (), m_Value ())));
236249 EXPECT_TRUE (sd_match (UMax, m_c_BinOp (ISD::UMAX, m_Value (), m_Value ())));
237250 EXPECT_TRUE (sd_match (UMax, m_UMax (m_Value (), m_Value ())));
251+ EXPECT_TRUE (sd_match (UMax, m_UMaxLike (m_Value (), m_Value ())));
252+ EXPECT_TRUE (sd_match (UMaxLike, m_UMaxLike (m_Value (), m_Value ())));
238253 EXPECT_TRUE (sd_match (UMin, m_c_BinOp (ISD::UMIN, m_Value (), m_Value ())));
239254 EXPECT_TRUE (sd_match (UMin, m_UMin (m_Value (), m_Value ())));
255+ EXPECT_TRUE (sd_match (UMin, m_UMinLike (m_Value (), m_Value ())));
256+ EXPECT_TRUE (sd_match (UMinLike, m_UMinLike (m_Value (), m_Value ())));
240257
241258 SDValue BindVal;
242259 EXPECT_TRUE (sd_match (SFAdd, m_ChainedBinOp (ISD::STRICT_FADD, m_Value (BindVal),
0 commit comments