brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 55a0e9f Raw
69 lines · cpp
1//===- llvm/unittests/Target/DirectX/RegisterCostTests.cpp ----------------===//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 "DirectXInstrInfo.h"10#include "DirectXTargetLowering.h"11#include "DirectXTargetMachine.h"12#include "TargetInfo/DirectXTargetInfo.h"13#include "llvm/IR/DerivedTypes.h"14#include "llvm/IR/Function.h"15#include "llvm/MC/MCTargetOptions.h"16#include "llvm/MC/TargetRegistry.h"17#include "llvm/Support/TargetSelect.h"18 19#include "gtest/gtest.h"20 21using namespace llvm;22using namespace llvm::dxil;23 24namespace {25class RegisterCostTests : public testing::Test {26protected:27  std::unique_ptr<DirectXInstrInfo> DXInstInfo;28  DirectXTargetLowering *DL;29 30  virtual void SetUp() {31    LLVMInitializeDirectXTargetMC();32    Target T = getTheDirectXTarget();33    RegisterTargetMachine<DirectXTargetMachine> X(T);34    Triple TT("dxil-pc-shadermodel6.3-library");35    StringRef CPU = "";36    StringRef FS = "";37    DirectXTargetMachine TM(T, TT, CPU, FS, TargetOptions(), Reloc::Static,38                            CodeModel::Small, CodeGenOptLevel::Default, false);39 40    LLVMContext Context;41    Function *F =42        Function::Create(FunctionType::get(Type::getVoidTy(Context), false),43                         Function::ExternalLinkage, 0);44    const DirectXSubtarget *DXSubtarget = TM.getSubtargetImpl(*F);45    DL = new DirectXTargetLowering(TM, *DXSubtarget);46    DXInstInfo = std::make_unique<DirectXInstrInfo>(*DXSubtarget);47 48    delete F;49  }50  virtual void TearDown() { delete DL; }51};52 53TEST_F(RegisterCostTests, TestRepRegClassForVTSet) {54  const TargetRegisterClass *RC = DL->getRepRegClassFor(MVT::i32);55  EXPECT_EQ(&dxil::DXILClassRegClass, RC);56}57 58TEST_F(RegisterCostTests, TestTrivialCopyCostGetter) {59  const DirectXRegisterInfo &TRI = DXInstInfo->getRegisterInfo();60  const TargetRegisterClass *RC = TRI.getRegClass(0);61  unsigned Cost = RC->getCopyCost();62  EXPECT_EQ(1u, Cost);63 64  RC = TRI.getRegClass(0);65  Cost = RC->getCopyCost();66  EXPECT_EQ(1u, Cost);67}68} // namespace69