aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/CodeGen')
-rw-r--r--llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp b/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp
index 4e0bf38..16b9979 100644
--- a/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp
+++ b/llvm/unittests/CodeGen/SelectionDAGPatternMatchTest.cpp
@@ -859,3 +859,35 @@ TEST_F(SelectionDAGPatternMatchTest, MatchZeroOneAllOnes) {
EXPECT_TRUE(sd_match(Vec, DAG.get(), m_AllOnes(true)));
}
}
+
+TEST_F(SelectionDAGPatternMatchTest, MatchSelectCCLike) {
+ using namespace SDPatternMatch;
+
+ SDValue LHS = DAG->getConstant(1, SDLoc(), MVT::i32);
+ SDValue RHS = DAG->getConstant(2, SDLoc(), MVT::i32);
+ SDValue TVal = DAG->getConstant(3, SDLoc(), MVT::i32);
+ SDValue FVal = DAG->getConstant(4, SDLoc(), MVT::i32);
+ SDValue Select = DAG->getNode(ISD::SELECT_CC, SDLoc(), MVT::i32, LHS, RHS,
+ TVal, FVal, DAG->getCondCode(ISD::SETLT));
+
+ ISD::CondCode CC = ISD::SETLT;
+ EXPECT_TRUE(sd_match(
+ Select, m_SelectCCLike(m_Specific(LHS), m_Specific(RHS), m_Specific(TVal),
+ m_Specific(FVal), m_CondCode(CC))));
+}
+
+TEST_F(SelectionDAGPatternMatchTest, MatchSelectCC) {
+ using namespace SDPatternMatch;
+
+ SDValue LHS = DAG->getConstant(1, SDLoc(), MVT::i32);
+ SDValue RHS = DAG->getConstant(2, SDLoc(), MVT::i32);
+ SDValue TVal = DAG->getConstant(3, SDLoc(), MVT::i32);
+ SDValue FVal = DAG->getConstant(4, SDLoc(), MVT::i32);
+ SDValue Select = DAG->getNode(ISD::SELECT_CC, SDLoc(), MVT::i32, LHS, RHS,
+ TVal, FVal, DAG->getCondCode(ISD::SETLT));
+
+ ISD::CondCode CC = ISD::SETLT;
+ EXPECT_TRUE(sd_match(Select, m_SelectCC(m_Specific(LHS), m_Specific(RHS),
+ m_Specific(TVal), m_Specific(FVal),
+ m_CondCode(CC))));
+}