forked from OSchip/llvm-project
[llvm-exegesis][NFC] Refactor Mips tests fixtures into a base class.
Differential Revision: https://reviews.llvm.org/D72003
This commit is contained in:
parent
4ca1ad85b7
commit
31458a9fee
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include "BenchmarkResult.h"
|
#include "BenchmarkResult.h"
|
||||||
#include "MipsInstrInfo.h"
|
#include "MipsInstrInfo.h"
|
||||||
|
#include "TestBase.h"
|
||||||
#include "llvm/ADT/SmallString.h"
|
#include "llvm/ADT/SmallString.h"
|
||||||
#include "llvm/Support/Error.h"
|
#include "llvm/Support/Error.h"
|
||||||
#include "llvm/Support/Path.h"
|
#include "llvm/Support/Path.h"
|
||||||
|
@ -27,8 +28,6 @@ using ::testing::Property;
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
namespace exegesis {
|
namespace exegesis {
|
||||||
|
|
||||||
void InitializeMipsExegesisTarget();
|
|
||||||
|
|
||||||
bool operator==(const BenchmarkMeasure &A, const BenchmarkMeasure &B) {
|
bool operator==(const BenchmarkMeasure &A, const BenchmarkMeasure &B) {
|
||||||
return std::tie(A.Key, A.PerInstructionValue, A.PerSnippetValue) ==
|
return std::tie(A.Key, A.PerInstructionValue, A.PerSnippetValue) ==
|
||||||
std::tie(B.Key, B.PerInstructionValue, B.PerSnippetValue);
|
std::tie(B.Key, B.PerInstructionValue, B.PerSnippetValue);
|
||||||
|
@ -53,15 +52,9 @@ MATCHER(EqMCInst, "") {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
TEST(BenchmarkResultTest, WriteToAndReadFromDisk) {
|
class BenchmarkResultTest : public MipsTestBase {};
|
||||||
LLVMInitializeMipsTargetInfo();
|
|
||||||
LLVMInitializeMipsTarget();
|
|
||||||
LLVMInitializeMipsTargetMC();
|
|
||||||
InitializeMipsExegesisTarget();
|
|
||||||
|
|
||||||
// Read benchmarks.
|
|
||||||
const LLVMState State("mips-unknown-linux", "mips32");
|
|
||||||
|
|
||||||
|
TEST_F(BenchmarkResultTest, WriteToAndReadFromDisk) {
|
||||||
ExitOnError ExitOnErr;
|
ExitOnError ExitOnErr;
|
||||||
|
|
||||||
InstructionBenchmark ToDisk;
|
InstructionBenchmark ToDisk;
|
||||||
|
@ -126,7 +119,7 @@ TEST(BenchmarkResultTest, WriteToAndReadFromDisk) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(BenchmarkResultTest, PerInstructionStats) {
|
TEST_F(BenchmarkResultTest, PerInstructionStats) {
|
||||||
PerInstructionStats Stats;
|
PerInstructionStats Stats;
|
||||||
Stats.push(BenchmarkMeasure{"a", 0.5, 0.0});
|
Stats.push(BenchmarkMeasure{"a", 0.5, 0.0});
|
||||||
Stats.push(BenchmarkMeasure{"a", 1.5, 0.0});
|
Stats.push(BenchmarkMeasure{"a", 1.5, 0.0});
|
||||||
|
|
|
@ -10,16 +10,14 @@
|
||||||
#include "Latency.h"
|
#include "Latency.h"
|
||||||
#include "LlvmState.h"
|
#include "LlvmState.h"
|
||||||
#include "MCInstrDescView.h"
|
#include "MCInstrDescView.h"
|
||||||
#include "RegisterAliasing.h"
|
|
||||||
#include "MipsInstrInfo.h"
|
#include "MipsInstrInfo.h"
|
||||||
|
#include "RegisterAliasing.h"
|
||||||
|
#include "TestBase.h"
|
||||||
|
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
namespace exegesis {
|
namespace exegesis {
|
||||||
|
|
||||||
void InitializeMipsExegesisTarget();
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using testing::AnyOf;
|
using testing::AnyOf;
|
||||||
|
@ -29,21 +27,7 @@ using testing::SizeIs;
|
||||||
MATCHER(IsInvalid, "") { return !arg.isValid(); }
|
MATCHER(IsInvalid, "") { return !arg.isValid(); }
|
||||||
MATCHER(IsReg, "") { return arg.isReg(); }
|
MATCHER(IsReg, "") { return arg.isReg(); }
|
||||||
|
|
||||||
class MipsSnippetGeneratorTest : public ::testing::Test {
|
class MipsSnippetGeneratorTest : public MipsTestBase {};
|
||||||
protected:
|
|
||||||
MipsSnippetGeneratorTest() : State("mips-unknown-linux", "mips32"),
|
|
||||||
InstrInfo(State.getInstrInfo()) {}
|
|
||||||
|
|
||||||
static void SetUpTestCase() {
|
|
||||||
LLVMInitializeMipsTargetInfo();
|
|
||||||
LLVMInitializeMipsTarget();
|
|
||||||
LLVMInitializeMipsTargetMC();
|
|
||||||
InitializeMipsExegesisTarget();
|
|
||||||
}
|
|
||||||
|
|
||||||
LLVMState State;
|
|
||||||
const MCInstrInfo &InstrInfo;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <typename SnippetGeneratorT>
|
template <typename SnippetGeneratorT>
|
||||||
class SnippetGeneratorTest : public MipsSnippetGeneratorTest {
|
class SnippetGeneratorTest : public MipsSnippetGeneratorTest {
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include "MCTargetDesc/MipsMCTargetDesc.h"
|
#include "MCTargetDesc/MipsMCTargetDesc.h"
|
||||||
|
#include "TestBase.h"
|
||||||
#include "llvm/Support/TargetRegistry.h"
|
#include "llvm/Support/TargetRegistry.h"
|
||||||
#include "llvm/Support/TargetSelect.h"
|
#include "llvm/Support/TargetSelect.h"
|
||||||
#include "gmock/gmock.h"
|
#include "gmock/gmock.h"
|
||||||
|
@ -19,9 +20,6 @@
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
namespace exegesis {
|
namespace exegesis {
|
||||||
|
|
||||||
void InitializeMipsExegesisTarget();
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using testing::AllOf;
|
using testing::AllOf;
|
||||||
|
@ -62,25 +60,12 @@ Matcher<MCInst> IsShift(unsigned Reg, uint16_t Amount, bool IsGPR32) {
|
||||||
ElementsAre(IsReg(Reg), IsReg(Reg), IsImm(Amount)));
|
ElementsAre(IsReg(Reg), IsReg(Reg), IsImm(Amount)));
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr const char kTriple[] = "mips-unknown-linux";
|
class MipsTargetTest : public MipsTestBase {
|
||||||
|
|
||||||
class MipsTargetTest : public ::testing::Test {
|
|
||||||
protected:
|
protected:
|
||||||
MipsTargetTest() : State(kTriple, "mips32", "") {}
|
|
||||||
|
|
||||||
static void SetUpTestCase() {
|
|
||||||
LLVMInitializeMipsTargetInfo();
|
|
||||||
LLVMInitializeMipsTarget();
|
|
||||||
LLVMInitializeMipsTargetMC();
|
|
||||||
InitializeMipsExegesisTarget();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<MCInst> setRegTo(unsigned Reg, const APInt &Value) {
|
std::vector<MCInst> setRegTo(unsigned Reg, const APInt &Value) {
|
||||||
return State.getExegesisTarget().setRegTo(State.getSubtargetInfo(), Reg,
|
return State.getExegesisTarget().setRegTo(State.getSubtargetInfo(), Reg,
|
||||||
Value);
|
Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVMState State;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
TEST_F(MipsTargetTest, SetGPR32RegTo16BitValue) {
|
TEST_F(MipsTargetTest, SetGPR32RegTo16BitValue) {
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
//===-- TestBase.h ----------------------------------------------*- 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
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
// Test fixture common to all Mips tests.
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#ifndef LLVM_UNITTESTS_TOOLS_LLVMEXEGESIS_MIPS_TESTBASE_H
|
||||||
|
#define LLVM_UNITTESTS_TOOLS_LLVMEXEGESIS_MIPS_TESTBASE_H
|
||||||
|
|
||||||
|
#include "LlvmState.h"
|
||||||
|
#include "llvm/Support/TargetRegistry.h"
|
||||||
|
#include "llvm/Support/TargetSelect.h"
|
||||||
|
#include "gmock/gmock.h"
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
namespace llvm {
|
||||||
|
namespace exegesis {
|
||||||
|
|
||||||
|
void InitializeMipsExegesisTarget();
|
||||||
|
|
||||||
|
class MipsTestBase : public ::testing::Test {
|
||||||
|
protected:
|
||||||
|
MipsTestBase() : State("mips-unknown-linux", "mips32") {}
|
||||||
|
|
||||||
|
static void SetUpTestCase() {
|
||||||
|
LLVMInitializeMipsTargetInfo();
|
||||||
|
LLVMInitializeMipsTargetMC();
|
||||||
|
LLVMInitializeMipsTarget();
|
||||||
|
InitializeMipsExegesisTarget();
|
||||||
|
}
|
||||||
|
|
||||||
|
const LLVMState State;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace exegesis
|
||||||
|
} // namespace llvm
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue