summaryrefslogtreecommitdiff
path: root/unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-07-01 13:22:02 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-07-01 13:22:02 +0000
commit9df3605dea17e84f8183581f6103bd0c79e2a606 (patch)
tree70a2f36ce9eb9bb213603cd7f2f120af53fc176f /unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp
parent08bbd35a80bf7765fe0d3043f9eb5a2f2786b649 (diff)
Diffstat (limited to 'unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp')
-rw-r--r--unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp b/unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp
index 882df5f252166..0e881759656d9 100644
--- a/unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp
+++ b/unittests/CodeGen/GlobalISel/LegalizerInfoTest.cpp
@@ -117,4 +117,23 @@ TEST(LegalizerInfoTest, MultipleTypes) {
ASSERT_EQ(L.getAction({G_PTRTOINT, 1, p0}),
std::make_pair(LegalizerInfo::Legal, p0));
}
+
+TEST(LegalizerInfoTest, MultipleSteps) {
+ using namespace TargetOpcode;
+ LegalizerInfo L;
+ LLT s16 = LLT::scalar(16);
+ LLT s32 = LLT::scalar(32);
+ LLT s64 = LLT::scalar(64);
+
+ L.setAction({G_UREM, 0, s16}, LegalizerInfo::WidenScalar);
+ L.setAction({G_UREM, 0, s32}, LegalizerInfo::Lower);
+ L.setAction({G_UREM, 0, s64}, LegalizerInfo::Lower);
+
+ L.computeTables();
+
+ ASSERT_EQ(L.getAction({G_UREM, LLT::scalar(16)}),
+ std::make_pair(LegalizerInfo::WidenScalar, LLT::scalar(32)));
+ ASSERT_EQ(L.getAction({G_UREM, LLT::scalar(32)}),
+ std::make_pair(LegalizerInfo::Lower, LLT::scalar(32)));
+}
}