]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - unittests/tools/llvm-exegesis/PowerPC/TargetTest.cpp
Vendor import of llvm trunk r351319 (just before the release_80 branch
[FreeBSD/FreeBSD.git] / unittests / tools / llvm-exegesis / PowerPC / TargetTest.cpp
1 //===-- 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
21 namespace llvm{
22 namespace exegesis {
23
24 void InitializePowerPCExegesisTarget();
25
26 namespace {
27
28 using testing::NotNull;
29 using testing::IsEmpty;
30 using testing::Not;
31
32 constexpr const char kTriple[] = "powerpc64le-unknown-linux";
33
34 class PowerPCTargetTest : public ::testing::Test {
35 protected:
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
54 TEST_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
62 TEST_F(PowerPCTargetTest, DefaultPfmCounters) {
63   const std::string Expected = "CYCLES";
64   EXPECT_EQ(ExegesisTarget_->getPfmCounters("").CycleCounter, Expected);
65   EXPECT_EQ(ExegesisTarget_->getPfmCounters("unknown_cpu").CycleCounter,
66             Expected);
67 }
68
69 } // namespace
70 } // namespace exegesis
71 } // namespace llvm