@@ -307,6 +307,23 @@ TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
307
307
SDValue UMinLikeULT = DAG->getSelect (DL, MVT::i32 , ICMP_ULT, Op0, Op1);
308
308
SDValue UMinLikeULE = DAG->getSelect (DL, MVT::i32 , ICMP_ULE, Op0, Op1);
309
309
310
+ SDValue CCSMaxLikeGT = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETGT);
311
+ SDValue CCSMaxLikeGE = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETGE);
312
+ SDValue CCSMaxLikeLT = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETLT);
313
+ SDValue CCSMaxLikeLE = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETLE);
314
+ SDValue CCUMaxLikeUGT = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETUGT);
315
+ SDValue CCUMaxLikeUGE = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETUGE);
316
+ SDValue CCUMaxLikeULT = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETULT);
317
+ SDValue CCUMaxLikeULE = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETULE);
318
+ SDValue CCSMinLikeLT = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETLT);
319
+ SDValue CCSMinLikeGT = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETGT);
320
+ SDValue CCSMinLikeLE = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETLE);
321
+ SDValue CCSMinLikeGE = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETGE);
322
+ SDValue CCUMinLikeULT = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETULT);
323
+ SDValue CCUMinLikeUGT = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETUGT);
324
+ SDValue CCUMinLikeULE = DAG->getSelectCC (DL, Op0, Op1, Op0, Op1, ISD::SETULE);
325
+ SDValue CCUMinLikeUGE = DAG->getSelectCC (DL, Op0, Op1, Op1, Op0, ISD::SETUGE);
326
+
310
327
SDValue SFAdd = DAG->getNode (ISD::STRICT_FADD, DL, {Float32VT, MVT::Other},
311
328
{DAG->getEntryNode (), Op2, Op2});
312
329
@@ -357,21 +374,37 @@ TEST_F(SelectionDAGPatternMatchTest, matchBinaryOp) {
357
374
EXPECT_TRUE (sd_match (SMax, m_SMaxLike (m_Value (), m_Value ())));
358
375
EXPECT_TRUE (sd_match (SMaxLikeGT, m_SMaxLike (m_Value (), m_Value ())));
359
376
EXPECT_TRUE (sd_match (SMaxLikeGE, m_SMaxLike (m_Value (), m_Value ())));
377
+ EXPECT_TRUE (sd_match (CCSMaxLikeGT, m_SMaxLike (m_Value (), m_Value ())));
378
+ EXPECT_TRUE (sd_match (CCSMaxLikeGE, m_SMaxLike (m_Value (), m_Value ())));
379
+ EXPECT_TRUE (sd_match (CCSMaxLikeLT, m_SMaxLike (m_Value (), m_Value ())));
380
+ EXPECT_TRUE (sd_match (CCSMaxLikeLE, m_SMaxLike (m_Value (), m_Value ())));
360
381
EXPECT_TRUE (sd_match (SMin, m_c_BinOp (ISD::SMIN, m_Value (), m_Value ())));
361
382
EXPECT_TRUE (sd_match (SMin, m_SMin (m_Value (), m_Value ())));
362
383
EXPECT_TRUE (sd_match (SMin, m_SMinLike (m_Value (), m_Value ())));
363
384
EXPECT_TRUE (sd_match (SMinLikeLT, m_SMinLike (m_Value (), m_Value ())));
364
385
EXPECT_TRUE (sd_match (SMinLikeLE, m_SMinLike (m_Value (), m_Value ())));
386
+ EXPECT_TRUE (sd_match (CCSMinLikeGT, m_SMinLike (m_Value (), m_Value ())));
387
+ EXPECT_TRUE (sd_match (CCSMinLikeGE, m_SMinLike (m_Value (), m_Value ())));
388
+ EXPECT_TRUE (sd_match (CCSMinLikeLT, m_SMinLike (m_Value (), m_Value ())));
389
+ EXPECT_TRUE (sd_match (CCSMinLikeLE, m_SMinLike (m_Value (), m_Value ())));
365
390
EXPECT_TRUE (sd_match (UMax, m_c_BinOp (ISD::UMAX, m_Value (), m_Value ())));
366
391
EXPECT_TRUE (sd_match (UMax, m_UMax (m_Value (), m_Value ())));
367
392
EXPECT_TRUE (sd_match (UMax, m_UMaxLike (m_Value (), m_Value ())));
368
393
EXPECT_TRUE (sd_match (UMaxLikeUGT, m_UMaxLike (m_Value (), m_Value ())));
369
394
EXPECT_TRUE (sd_match (UMaxLikeUGE, m_UMaxLike (m_Value (), m_Value ())));
395
+ EXPECT_TRUE (sd_match (CCUMaxLikeUGT, m_UMaxLike (m_Value (), m_Value ())));
396
+ EXPECT_TRUE (sd_match (CCUMaxLikeUGE, m_UMaxLike (m_Value (), m_Value ())));
397
+ EXPECT_TRUE (sd_match (CCUMaxLikeULT, m_UMaxLike (m_Value (), m_Value ())));
398
+ EXPECT_TRUE (sd_match (CCUMaxLikeULE, m_UMaxLike (m_Value (), m_Value ())));
370
399
EXPECT_TRUE (sd_match (UMin, m_c_BinOp (ISD::UMIN, m_Value (), m_Value ())));
371
400
EXPECT_TRUE (sd_match (UMin, m_UMin (m_Value (), m_Value ())));
372
401
EXPECT_TRUE (sd_match (UMin, m_UMinLike (m_Value (), m_Value ())));
373
402
EXPECT_TRUE (sd_match (UMinLikeULT, m_UMinLike (m_Value (), m_Value ())));
374
403
EXPECT_TRUE (sd_match (UMinLikeULE, m_UMinLike (m_Value (), m_Value ())));
404
+ EXPECT_TRUE (sd_match (CCUMinLikeUGT, m_UMinLike (m_Value (), m_Value ())));
405
+ EXPECT_TRUE (sd_match (CCUMinLikeUGE, m_UMinLike (m_Value (), m_Value ())));
406
+ EXPECT_TRUE (sd_match (CCUMinLikeULT, m_UMinLike (m_Value (), m_Value ())));
407
+ EXPECT_TRUE (sd_match (CCUMinLikeULE, m_UMinLike (m_Value (), m_Value ())));
375
408
376
409
// By default, it matches any of the results.
377
410
EXPECT_TRUE (
0 commit comments