1 #include "gtest/gtest.h"
5 #include "llvm/MC/MCCodeEmitter.h"
6 #include "llvm/MC/MCContext.h"
7 #include "llvm/Support/raw_ostream.h"
8 #include "llvm/Support/TargetRegistry.h"
9 #include "llvm/Support/TargetSelect.h"
11 #include "MCTargetDesc/HexagonMCInst.h"
12 #include "MCTargetDesc/HexagonMCTargetDesc.h"
17 TestEmitter() : Triple("hexagon-unknown-elf") {
18 LLVMInitializeHexagonTargetInfo();
19 LLVMInitializeHexagonTarget();
20 LLVMInitializeHexagonTargetMC();
22 Target = llvm::TargetRegistry::lookupTarget("hexagon", error);
23 assert(Target != nullptr && "Expected to find target");
24 assert(error.empty() && "Error should be empty if we have a target");
25 RegisterInfo = Target->createMCRegInfo(Triple);
26 assert(RegisterInfo != nullptr && "Expecting to find register info");
27 AsmInfo = Target->createMCAsmInfo(*RegisterInfo, Triple);
28 assert(AsmInfo != nullptr && "Expecting to find asm info");
29 Context = new llvm::MCContext(AsmInfo, RegisterInfo, nullptr);
30 assert(Context != nullptr && "Expecting to create a context");
31 Subtarget = Target->createMCSubtargetInfo(Triple, "hexagonv4", "");
32 assert(Subtarget != nullptr && "Expecting to find a subtarget");
33 InstrInfo = Target->createMCInstrInfo();
34 assert(InstrInfo != nullptr && "Expecting to find instr info");
35 Emitter = Target->createMCCodeEmitter(*InstrInfo, *RegisterInfo, *Subtarget,
37 assert(Emitter != nullptr);
40 llvm::Target const *Target;
41 llvm::MCRegisterInfo *RegisterInfo;
42 llvm::MCAsmInfo *AsmInfo;
43 llvm::MCContext *Context;
44 llvm::MCSubtargetInfo *Subtarget;
45 llvm::MCInstrInfo *InstrInfo;
46 llvm::MCCodeEmitter *Emitter;
51 TEST(HexagonMCCodeEmitter, emitter_creation) {
52 ASSERT_NE(nullptr, Emitter.Emitter);