6 #include "MCTargetDesc/AArch64MCTargetDesc.h"
7 #include "llvm/Support/TargetRegistry.h"
8 #include "llvm/Support/TargetSelect.h"
9 #include "gmock/gmock.h"
10 #include "gtest/gtest.h"
14 void InitializeAArch64ExegesisTarget();
21 using testing::IsEmpty
;
23 using testing::NotNull
;
25 constexpr const char kTriple
[] = "aarch64-unknown-linux";
26 constexpr const char kGenericCpu
[] = "generic";
27 constexpr const char kNoFeatures
[] = "";
29 class AArch64TargetTest
: public ::testing::Test
{
32 : ExegesisTarget_(ExegesisTarget::lookup(llvm::Triple(kTriple
))) {
33 EXPECT_THAT(ExegesisTarget_
, NotNull());
35 Target_
= llvm::TargetRegistry::lookupTarget(kTriple
, error
);
36 EXPECT_THAT(Target_
, NotNull());
38 Target_
->createMCSubtargetInfo(kTriple
, kGenericCpu
, kNoFeatures
));
41 static void SetUpTestCase() {
42 LLVMInitializeAArch64TargetInfo();
43 LLVMInitializeAArch64Target();
44 LLVMInitializeAArch64TargetMC();
45 InitializeAArch64ExegesisTarget();
48 std::vector
<MCInst
> setRegTo(unsigned Reg
, const APInt
&Value
) {
49 return ExegesisTarget_
->setRegTo(*STI_
, Reg
, Value
);
52 const llvm::Target
*Target_
;
53 const ExegesisTarget
*const ExegesisTarget_
;
54 std::unique_ptr
<llvm::MCSubtargetInfo
> STI_
;
57 TEST_F(AArch64TargetTest
, SetRegToConstant
) {
58 // The AArch64 target currently doesn't know how to set register values.
59 const auto Insts
= setRegTo(llvm::AArch64::X0
, llvm::APInt());
60 EXPECT_THAT(Insts
, Not(IsEmpty()));
64 } // namespace exegesis