#include "MCTargetDesc/AArch64AddressingModes.h"
#include "MCTargetDesc/AArch64FixupKinds.h"
#include "MCTargetDesc/AArch64MCExpr.h"
#include "MCTargetDesc/AArch64MCTargetDesc.h"
#include "Utils/AArch64BaseInfo.h"
#include "bolt/Core/MCPlusBuilder.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCFixupKindInfo.h"
#include "llvm/MC/MCInstBuilder.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#define DEBUG_TYPE …
usingnamespacellvm;
usingnamespacebolt;
namespace {
static void getSystemFlag(MCInst &Inst, MCPhysReg RegName) { … }
static void setSystemFlag(MCInst &Inst, MCPhysReg RegName) { … }
static void createPushRegisters(MCInst &Inst, MCPhysReg Reg1, MCPhysReg Reg2) { … }
static void createPopRegisters(MCInst &Inst, MCPhysReg Reg1, MCPhysReg Reg2) { … }
static void loadReg(MCInst &Inst, MCPhysReg To, MCPhysReg From) { … }
static void storeReg(MCInst &Inst, MCPhysReg From, MCPhysReg To) { … }
static void atomicAdd(MCInst &Inst, MCPhysReg RegTo, MCPhysReg RegCnt) { … }
static void createMovz(MCInst &Inst, MCPhysReg Reg, uint64_t Imm) { … }
static InstructionListType createIncMemory(MCPhysReg RegTo, MCPhysReg RegTmp) { … }
class AArch64MCPlusBuilder : public MCPlusBuilder { … };
}
namespace llvm {
namespace bolt {
MCPlusBuilder *createAArch64MCPlusBuilder(const MCInstrAnalysis *Analysis,
const MCInstrInfo *Info,
const MCRegisterInfo *RegInfo,
const MCSubtargetInfo *STI) { … }
}
}