brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 5bc489b Raw
79 lines · cpp
1//===-- TargetTest.cpp ------------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "Target.h"10 11#include <cassert>12#include <memory>13 14#include "MCTargetDesc/AArch64MCTargetDesc.h"15#include "llvm/MC/TargetRegistry.h"16#include "llvm/Support/TargetSelect.h"17#include "gmock/gmock.h"18#include "gtest/gtest.h"19 20namespace llvm {21namespace exegesis {22 23void InitializeAArch64ExegesisTarget();24 25namespace {26 27using testing::IsEmpty;28using testing::Not;29using testing::NotNull;30 31constexpr char kTriple[] = "aarch64-unknown-linux";32 33class AArch64TargetTest : public ::testing::Test {34protected:35  const Triple TT;36 37  AArch64TargetTest()38      : TT(kTriple), ExegesisTarget_(ExegesisTarget::lookup(TT)) {39    EXPECT_THAT(ExegesisTarget_, NotNull());40    std::string error;41    Target_ = TargetRegistry::lookupTarget(TT, error);42    EXPECT_THAT(Target_, NotNull());43    STI_.reset(44        Target_->createMCSubtargetInfo(TT, "generic", /*no features*/ ""));45  }46 47  static void SetUpTestCase() {48    LLVMInitializeAArch64TargetInfo();49    LLVMInitializeAArch64Target();50    LLVMInitializeAArch64TargetMC();51    InitializeAArch64ExegesisTarget();52  }53 54  std::vector<MCInst> setRegTo(unsigned Reg, const APInt &Value) {55    return ExegesisTarget_->setRegTo(*STI_, Reg, Value);56  }57 58  const Target *Target_;59  const ExegesisTarget *const ExegesisTarget_;60  std::unique_ptr<MCSubtargetInfo> STI_;61};62 63TEST_F(AArch64TargetTest, SetRegToConstant) {64  // The AArch64 target currently doesn't know how to set register values.65  const auto Insts = setRegTo(AArch64::X0, APInt());66  EXPECT_THAT(Insts, Not(IsEmpty()));67}68 69TEST_F(AArch64TargetTest, DefaultPfmCounters) {70  const std::string Expected = "CYCLES";71  EXPECT_EQ(ExegesisTarget_->getPfmCounters("").CycleCounter, Expected);72  EXPECT_EQ(ExegesisTarget_->getPfmCounters("unknown_cpu").CycleCounter,73            Expected);74}75 76} // namespace77} // namespace exegesis78} // namespace llvm79