blob: 0e34a15d5e32288d84a325f8fd70b4f19277f80e [file] [log] [blame]
Jinsong Ji5fd3e752018-11-08 16:51:42 +00001//===-- TargetTest.cpp ---------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "Target.h"
11
12#include <cassert>
13#include <memory>
14
15#include "MCTargetDesc/PPCMCTargetDesc.h"
16#include "llvm/Support/TargetRegistry.h"
17#include "llvm/Support/TargetSelect.h"
18#include "gmock/gmock.h"
19#include "gtest/gtest.h"
20
21namespace llvm{
22namespace exegesis {
23
24void InitializePowerPCExegesisTarget();
25
26namespace {
27
28using testing::NotNull;
29using testing::IsEmpty;
30using testing::Not;
31
32constexpr const char kTriple[] = "powerpc64le-unknown-linux";
33
34class PowerPCTargetTest : public ::testing::Test {
35protected:
36 PowerPCTargetTest()
37 : ExegesisTarget_(ExegesisTarget::lookup(llvm::Triple(kTriple))) {
38 EXPECT_THAT(ExegesisTarget_, NotNull());
39 std::string error;
40 Target_ = llvm::TargetRegistry::lookupTarget(kTriple, error);
41 EXPECT_THAT(Target_, NotNull());
42 }
43 static void SetUpTestCase() {
44 LLVMInitializePowerPCTargetInfo();
45 LLVMInitializePowerPCTarget();
46 LLVMInitializePowerPCTargetMC();
47 InitializePowerPCExegesisTarget();
48 }
49
50 const llvm::Target *Target_;
51 const ExegesisTarget *const ExegesisTarget_;
52};
53
54TEST_F(PowerPCTargetTest, SetRegToConstant) {
55 const std::unique_ptr<llvm::MCSubtargetInfo> STI(
56 Target_->createMCSubtargetInfo(kTriple, "generic", ""));
57 const auto Insts =
58 ExegesisTarget_->setRegTo(*STI, llvm::PPC::X0, llvm::APInt());
59 EXPECT_THAT(Insts, Not(IsEmpty()));
60}
61
Clement Courbeteee2e062018-11-09 13:15:32 +000062TEST_F(PowerPCTargetTest, DefaultPfmCounters) {
Clement Courbetdf78bf12018-11-09 14:08:29 +000063 const std::string Expected = "CYCLES";
64 EXPECT_EQ(ExegesisTarget_->getPfmCounters("").CycleCounter, Expected);
Clement Courbeteee2e062018-11-09 13:15:32 +000065 EXPECT_EQ(ExegesisTarget_->getPfmCounters("unknown_cpu").CycleCounter,
Clement Courbetdf78bf12018-11-09 14:08:29 +000066 Expected);
Clement Courbeteee2e062018-11-09 13:15:32 +000067}
68
Jinsong Ji5fd3e752018-11-08 16:51:42 +000069} // namespace
70} // namespace exegesis
71} // namespace llvm