#include "X86MCTargetDesc.h"
#include "TargetInfo/X86TargetInfo.h"
#include "X86ATTInstPrinter.h"
#include "X86BaseInfo.h"
#include "X86IntelInstPrinter.h"
#include "X86MCAsmInfo.h"
#include "X86TargetStreamer.h"
#include "llvm/ADT/APInt.h"
#include "llvm/DebugInfo/CodeView/CodeView.h"
#include "llvm/MC/MCDwarf.h"
#include "llvm/MC/MCInstrAnalysis.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MachineLocation.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/Triple.h"
usingnamespacellvm;
#define GET_REGINFO_MC_DESC
#include "X86GenRegisterInfo.inc"
#define GET_INSTRINFO_MC_DESC
#define GET_INSTRINFO_MC_HELPERS
#define ENABLE_INSTR_PREDICATE_VERIFIER
#include "X86GenInstrInfo.inc"
#define GET_SUBTARGETINFO_MC_DESC
#include "X86GenSubtargetInfo.inc"
std::string X86_MC::ParseX86Triple(const Triple &TT) { … }
unsigned X86_MC::getDwarfRegFlavour(const Triple &TT, bool isEH) { … }
bool X86_MC::hasLockPrefix(const MCInst &MI) { … }
static bool isMemOperand(const MCInst &MI, unsigned Op, unsigned RegClassID) { … }
bool X86_MC::is16BitMemOperand(const MCInst &MI, unsigned Op,
const MCSubtargetInfo &STI) { … }
bool X86_MC::is32BitMemOperand(const MCInst &MI, unsigned Op) { … }
#ifndef NDEBUG
bool X86_MC::is64BitMemOperand(const MCInst &MI, unsigned Op) {
return isMemOperand(MI, Op, X86::GR64RegClassID);
}
#endif
bool X86_MC::needsAddressSizeOverride(const MCInst &MI,
const MCSubtargetInfo &STI,
int MemoryOperand, uint64_t TSFlags) { … }
void X86_MC::initLLVMToSEHAndCVRegMapping(MCRegisterInfo *MRI) { … }
MCSubtargetInfo *X86_MC::createX86MCSubtargetInfo(const Triple &TT,
StringRef CPU, StringRef FS) { … }
static MCInstrInfo *createX86MCInstrInfo() { … }
static MCRegisterInfo *createX86MCRegisterInfo(const Triple &TT) { … }
static MCAsmInfo *createX86MCAsmInfo(const MCRegisterInfo &MRI,
const Triple &TheTriple,
const MCTargetOptions &Options) { … }
static MCInstPrinter *createX86MCInstPrinter(const Triple &T,
unsigned SyntaxVariant,
const MCAsmInfo &MAI,
const MCInstrInfo &MII,
const MCRegisterInfo &MRI) { … }
static MCRelocationInfo *createX86MCRelocationInfo(const Triple &TheTriple,
MCContext &Ctx) { … }
namespace llvm {
namespace X86_MC {
class X86MCInstrAnalysis : public MCInstrAnalysis { … };
#define GET_STIPREDICATE_DEFS_FOR_MC_ANALYSIS
#include "X86GenSubtargetInfo.inc"
bool X86MCInstrAnalysis::clearsSuperRegisters(const MCRegisterInfo &MRI,
const MCInst &Inst,
APInt &Mask) const { … }
static std::vector<std::pair<uint64_t, uint64_t>>
findX86PltEntries(uint64_t PltSectionVA, ArrayRef<uint8_t> PltContents) { … }
static std::vector<std::pair<uint64_t, uint64_t>>
findX86_64PltEntries(uint64_t PltSectionVA, ArrayRef<uint8_t> PltContents) { … }
std::vector<std::pair<uint64_t, uint64_t>>
X86MCInstrAnalysis::findPltEntries(uint64_t PltSectionVA,
ArrayRef<uint8_t> PltContents,
const Triple &TargetTriple) const { … }
bool X86MCInstrAnalysis::evaluateBranch(const MCInst &Inst, uint64_t Addr,
uint64_t Size, uint64_t &Target) const { … }
std::optional<uint64_t> X86MCInstrAnalysis::evaluateMemoryOperandAddress(
const MCInst &Inst, const MCSubtargetInfo *STI, uint64_t Addr,
uint64_t Size) const { … }
std::optional<uint64_t>
X86MCInstrAnalysis::getMemoryOperandRelocationOffset(const MCInst &Inst,
uint64_t Size) const { … }
}
}
static MCInstrAnalysis *createX86MCInstrAnalysis(const MCInstrInfo *Info) { … }
extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86TargetMC() { … }
MCRegister llvm::getX86SubSuperRegister(MCRegister Reg, unsigned Size,
bool High) { … }