[PATCH] D72004: [llvm-exegesis][mips] Add RegisterAliasingTest unit test
Miloš Stojanović via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 16 08:57:15 PST 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6b3578664961: [llvm-exegesis][mips] Add RegisterAliasingTest unit test (authored by mstojanovic).
Herald added a subscriber: jrtc27.
Changed prior to commit:
https://reviews.llvm.org/D72004?vs=235601&id=238518#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D72004/new/
https://reviews.llvm.org/D72004
Files:
llvm/unittests/tools/llvm-exegesis/Mips/CMakeLists.txt
llvm/unittests/tools/llvm-exegesis/Mips/RegisterAliasingTest.cpp
Index: llvm/unittests/tools/llvm-exegesis/Mips/RegisterAliasingTest.cpp
===================================================================
--- /dev/null
+++ llvm/unittests/tools/llvm-exegesis/Mips/RegisterAliasingTest.cpp
@@ -0,0 +1,74 @@
+//===-- RegisterAliasingTest.cpp --------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "RegisterAliasing.h"
+
+#include <cassert>
+#include <memory>
+
+#include "MipsInstrInfo.h"
+#include "TestBase.h"
+#include "llvm/Support/TargetRegistry.h"
+#include "llvm/Support/TargetSelect.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+namespace llvm {
+namespace exegesis {
+namespace {
+
+class RegisterAliasingTest : public MipsTestBase {};
+
+TEST_F(RegisterAliasingTest, TrackSimpleRegister) {
+ const auto &RegInfo = State.getRegInfo();
+ const RegisterAliasingTracker tracker(RegInfo, Mips::T0_64);
+ std::set<MCPhysReg> ActualAliasedRegisters;
+ for (unsigned I : tracker.aliasedBits().set_bits())
+ ActualAliasedRegisters.insert(static_cast<MCPhysReg>(I));
+ const std::set<MCPhysReg> ExpectedAliasedRegisters = {Mips::T0, Mips::T0_64};
+ ASSERT_THAT(ActualAliasedRegisters, ExpectedAliasedRegisters);
+ for (MCPhysReg aliased : ExpectedAliasedRegisters) {
+ ASSERT_THAT(tracker.getOrigin(aliased), Mips::T0_64);
+ }
+}
+
+TEST_F(RegisterAliasingTest, TrackRegisterClass) {
+ // The alias bits for
+ // GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClassID
+ // are the union of the alias bits for ZERO_64, V0_64, V1_64 and S1_64.
+ const auto &RegInfo = State.getRegInfo();
+ const BitVector NoReservedReg(RegInfo.getNumRegs());
+
+ const RegisterAliasingTracker RegClassTracker(
+ RegInfo, NoReservedReg,
+ RegInfo.getRegClass(
+ Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClassID));
+
+ BitVector sum(RegInfo.getNumRegs());
+ sum |= RegisterAliasingTracker(RegInfo, Mips::ZERO_64).aliasedBits();
+ sum |= RegisterAliasingTracker(RegInfo, Mips::V0_64).aliasedBits();
+ sum |= RegisterAliasingTracker(RegInfo, Mips::V1_64).aliasedBits();
+ sum |= RegisterAliasingTracker(RegInfo, Mips::S1_64).aliasedBits();
+
+ ASSERT_THAT(RegClassTracker.aliasedBits(), sum);
+}
+
+TEST_F(RegisterAliasingTest, TrackRegisterClassCache) {
+ // Fetching the same tracker twice yields the same pointers.
+ const auto &RegInfo = State.getRegInfo();
+ const BitVector NoReservedReg(RegInfo.getNumRegs());
+ RegisterAliasingTrackerCache Cache(RegInfo, NoReservedReg);
+ ASSERT_THAT(&Cache.getRegister(Mips::T0), &Cache.getRegister(Mips::T0));
+
+ ASSERT_THAT(&Cache.getRegisterClass(Mips::ACC64RegClassID),
+ &Cache.getRegisterClass(Mips::ACC64RegClassID));
+}
+
+} // namespace
+} // namespace exegesis
+} // namespace llvm
Index: llvm/unittests/tools/llvm-exegesis/Mips/CMakeLists.txt
===================================================================
--- llvm/unittests/tools/llvm-exegesis/Mips/CMakeLists.txt
+++ llvm/unittests/tools/llvm-exegesis/Mips/CMakeLists.txt
@@ -15,6 +15,7 @@
add_llvm_target_unittest(LLVMExegesisMipsTests
BenchmarkResultTest.cpp
+ RegisterAliasingTest.cpp
SnippetGeneratorTest.cpp
TargetTest.cpp
)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72004.238518.patch
Type: text/x-patch
Size: 3465 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200116/535732d3/attachment-0001.bin>
More information about the llvm-commits
mailing list