diff options
author | Aditya Nandakumar <aditya_nandakumar@apple.com> | 2018-12-05 20:14:52 +0000 |
---|---|---|
committer | Aditya Nandakumar <aditya_nandakumar@apple.com> | 2018-12-05 20:14:52 +0000 |
commit | f75d4f329cc45542cac4eaa375bad84e0535f278 (patch) | |
tree | d57ae1047f4b49be9749938b4fa88a084b1c00b0 /llvm/unittests | |
parent | 09415a850ec927e45a1639a621c2a3a6aba2687c (diff) | |
download | bcm5719-llvm-f75d4f329cc45542cac4eaa375bad84e0535f278.tar.gz bcm5719-llvm-f75d4f329cc45542cac4eaa375bad84e0535f278.zip |
[GISel]: Provide standard interface to observe changes in GISel passes
https://reviews.llvm.org/D54980
This provides a standard API across GISel passes to observe and notify
passes about changes (insertions/deletions/mutations) to MachineInstrs.
This patch also removes the recordInsertion method in MachineIRBuilder
and instead provides method to setObserver.
Reviewed by: vkeles.
llvm-svn: 348406
Diffstat (limited to 'llvm/unittests')
-rw-r--r-- | llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp | 49 | ||||
-rw-r--r-- | llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.h | 1 |
2 files changed, 36 insertions, 14 deletions
diff --git a/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp b/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp index f0527611975..9ab5a80f5ae 100644 --- a/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp +++ b/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp @@ -11,6 +11,13 @@ namespace { +class DummyGISelObserver : public GISelChangeObserver { +public: + void changedInstr(MachineInstr &MI) override {} + void createdInstr(MachineInstr &MI) override {} + void erasedInstr(MachineInstr &MI) override {} +}; + // Test CTTZ expansion when CTTZ_ZERO_UNDEF is legal or custom, // in which case it becomes CTTZ_ZERO_UNDEF with select. TEST_F(LegalizerHelperTest, LowerBitCountingCTTZ0) { @@ -23,7 +30,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTTZ0) { // Build Instr auto MIBCTTZ = B.buildInstr(TargetOpcode::G_CTTZ, LLT::scalar(64), Copies[0]); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); // Perform Legalization ASSERT_TRUE(Helper.lower(*MIBCTTZ, 0, LLT::scalar(64)) == LegalizerHelper::LegalizeResult::Legalized); @@ -51,7 +59,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTTZ1) { // Build Instr auto MIBCTTZ = B.buildInstr(TargetOpcode::G_CTTZ, LLT::scalar(64), Copies[0]); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); // Perform Legalization ASSERT_TRUE(Helper.lower(*MIBCTTZ, 0, LLT::scalar(64)) == LegalizerHelper::LegalizeResult::Legalized); @@ -81,7 +90,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTTZ2) { // Build auto MIBCTTZ = B.buildInstr(TargetOpcode::G_CTTZ, LLT::scalar(64), Copies[0]); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.lower(*MIBCTTZ, 0, LLT::scalar(64)) == LegalizerHelper::LegalizeResult::Legalized); @@ -109,7 +119,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTTZ3) { auto MIBCTTZ = B.buildInstr(TargetOpcode::G_CTTZ_ZERO_UNDEF, LLT::scalar(64), Copies[0]); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.lower(*MIBCTTZ, 0, LLT::scalar(64)) == LegalizerHelper::LegalizeResult::Legalized); @@ -132,7 +143,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTLZ0) { // Build auto MIBCTLZ = B.buildInstr(TargetOpcode::G_CTLZ, LLT::scalar(64), Copies[0]); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.lower(*MIBCTLZ, 0, LLT::scalar(64)) == LegalizerHelper::LegalizeResult::Legalized); @@ -159,7 +171,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTLZLibcall) { // Build auto MIBCTLZ = B.buildInstr(TargetOpcode::G_CTLZ, LLT::scalar(64), Copies[0]); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.lower(*MIBCTLZ, 0, LLT::scalar(64)) == LegalizerHelper::LegalizeResult::Legalized); @@ -189,7 +202,8 @@ TEST_F(LegalizerHelperTest, LowerBitCountingCTLZ1) { auto MIBTrunc = B.buildTrunc(s8, Copies[0]); auto MIBCTLZ = B.buildInstr(TargetOpcode::G_CTLZ, s8, MIBTrunc); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.lower(*MIBCTLZ, 0, s8) == LegalizerHelper::LegalizeResult::Legalized); @@ -228,7 +242,8 @@ TEST_F(LegalizerHelperTest, WidenBitCountingCTLZ) { auto MIBTrunc = B.buildTrunc(s8, Copies[0]); auto MIBCTLZ = B.buildInstr(TargetOpcode::G_CTLZ, s8, MIBTrunc); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBCTLZ, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); @@ -260,7 +275,8 @@ TEST_F(LegalizerHelperTest, WidenBitCountingCTLZZeroUndef) { auto MIBTrunc = B.buildTrunc(s8, Copies[0]); auto MIBCTLZ_ZU = B.buildInstr(TargetOpcode::G_CTLZ_ZERO_UNDEF, s8, MIBTrunc); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBCTLZ_ZU, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); @@ -292,7 +308,8 @@ TEST_F(LegalizerHelperTest, WidenBitCountingCTPOP) { auto MIBTrunc = B.buildTrunc(s8, Copies[0]); auto MIBCTPOP = B.buildInstr(TargetOpcode::G_CTPOP, s8, MIBTrunc); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBCTPOP, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); @@ -323,7 +340,8 @@ TEST_F(LegalizerHelperTest, WidenBitCountingCTTZ_ZERO_UNDEF) { auto MIBCTTZ_ZERO_UNDEF = B.buildInstr(TargetOpcode::G_CTTZ_ZERO_UNDEF, s8, MIBTrunc); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBCTTZ_ZERO_UNDEF, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); @@ -353,7 +371,8 @@ TEST_F(LegalizerHelperTest, WidenBitCountingCTTZ) { auto MIBTrunc = B.buildTrunc(s8, Copies[0]); auto MIBCTTZ = B.buildInstr(TargetOpcode::G_CTTZ, s8, MIBTrunc); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBCTTZ, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); @@ -388,7 +407,8 @@ TEST_F(LegalizerHelperTest, WidenUADDO) { .addUse(MIBTrunc->getOperand(0).getReg()) .addUse(MIBTrunc->getOperand(0).getReg()); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBUAddO, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); @@ -426,7 +446,8 @@ TEST_F(LegalizerHelperTest, WidenUSUBO) { .addUse(MIBTrunc->getOperand(0).getReg()) .addUse(MIBTrunc->getOperand(0).getReg()); AInfo Info(MF->getSubtarget()); - LegalizerHelper Helper(*MF, Info); + DummyGISelObserver Observer; + LegalizerHelper Helper(*MF, Info, Observer); ASSERT_TRUE(Helper.widenScalar(*MIBUSUBO, 0, s16) == LegalizerHelper::LegalizeResult::Legalized); diff --git a/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.h b/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.h index 28af811e1f1..0a171a76b47 100644 --- a/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.h +++ b/llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.h @@ -8,6 +8,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h" #include "llvm/CodeGen/GlobalISel/LegalizerHelper.h" #include "llvm/CodeGen/GlobalISel/LegalizerInfo.h" #include "llvm/CodeGen/GlobalISel/MIPatternMatch.h" |