|
LLVM 24.0.0git
|
#include "MCTargetDesc/X86BaseInfo.h"#include "MCTargetDesc/X86EncodingOptimization.h"#include "MCTargetDesc/X86FixupKinds.h"#include "MCTargetDesc/X86MCAsmInfo.h"#include "llvm/ADT/StringSwitch.h"#include "llvm/BinaryFormat/ELF.h"#include "llvm/BinaryFormat/MachO.h"#include "llvm/MC/MCAsmBackend.h"#include "llvm/MC/MCAssembler.h"#include "llvm/MC/MCCodeEmitter.h"#include "llvm/MC/MCContext.h"#include "llvm/MC/MCDwarf.h"#include "llvm/MC/MCELFObjectWriter.h"#include "llvm/MC/MCELFStreamer.h"#include "llvm/MC/MCExpr.h"#include "llvm/MC/MCInst.h"#include "llvm/MC/MCInstrInfo.h"#include "llvm/MC/MCObjectStreamer.h"#include "llvm/MC/MCObjectWriter.h"#include "llvm/MC/MCRegisterInfo.h"#include "llvm/MC/MCSection.h"#include "llvm/MC/MCSubtargetInfo.h"#include "llvm/MC/MCTargetOptions.h"#include "llvm/MC/MCValue.h"#include "llvm/MC/TargetRegistry.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/raw_ostream.h"#include "llvm/BinaryFormat/ELFRelocs/x86_64.def"#include "llvm/BinaryFormat/ELFRelocs/i386.def"Go to the source code of this file.
Namespaces | |
| namespace | CU |
Macros | |
| #define | ELF_RELOC(X, Y) |
| #define | ELF_RELOC(X, Y) |
Functions | |
| static bool | isRelaxableBranch (unsigned Opcode) |
| static unsigned | getRelaxedOpcodeBranch (unsigned Opcode, bool Is16BitMode=false) |
| static unsigned | getRelaxedOpcode (const MCInst &MI, bool Is16BitMode) |
| static X86::CondCode | getCondFromBranch (const MCInst &MI, const MCInstrInfo &MCII) |
| static X86::SecondMacroFusionInstKind | classifySecondInstInMacroFusion (const MCInst &MI, const MCInstrInfo &MCII) |
| static bool | isRIPRelative (const MCInst &MI, const MCInstrInfo &MCII) |
| Check if the instruction uses RIP relative addressing. | |
| static bool | isPrefix (unsigned Opcode, const MCInstrInfo &MCII) |
| Check if the instruction is a prefix. | |
| static bool | isFirstMacroFusibleInst (const MCInst &Inst, const MCInstrInfo &MCII) |
| Check if the instruction is valid as the first instruction in macro fusion. | |
| static bool | hasVariantSymbol (const MCInst &MI) |
| Check if the instruction has a variant symbol operand. | |
| static bool | mayHaveInterruptDelaySlot (unsigned InstOpcode) |
| X86 has certain instructions which enable interrupts exactly one instruction after the instruction which stores to SS. | |
| static unsigned | getFixupKindSize (unsigned Kind) |
Variables | |
| constexpr char | GotSymName [] = "_GLOBAL_OFFSET_TABLE_" |
|
static |
Definition at line 252 of file X86AsmBackend.cpp.
References getCondFromBranch(), and MI.
|
static |
Definition at line 237 of file X86AsmBackend.cpp.
References llvm::X86::COND_INVALID, llvm::MCInstrInfo::get(), and MI.
Referenced by classifySecondInstInMacroFusion().
Definition at line 630 of file X86AsmBackend.cpp.
References llvm::FK_Data_1, llvm::FK_Data_2, llvm::FK_Data_4, llvm::FK_Data_8, llvm::FK_NONE, llvm::FK_SecRel_1, llvm::FK_SecRel_2, llvm::FK_SecRel_4, llvm::FK_SecRel_8, llvm_unreachable, llvm::X86::reloc_branch_4byte_pcrel, llvm::X86::reloc_global_offset_table, llvm::X86::reloc_riprel_4byte, llvm::X86::reloc_riprel_4byte_movq_load, llvm::X86::reloc_riprel_4byte_movq_load_rex2, llvm::X86::reloc_riprel_4byte_relax, llvm::X86::reloc_riprel_4byte_relax_evex, llvm::X86::reloc_riprel_4byte_relax_rex, llvm::X86::reloc_riprel_4byte_relax_rex2, llvm::X86::reloc_signed_4byte, and llvm::X86::reloc_signed_4byte_relax.
Definition at line 231 of file X86AsmBackend.cpp.
References llvm::X86::getOpcodeForLongImmediateForm(), getRelaxedOpcodeBranch(), isRelaxableBranch(), and MI.
Definition at line 219 of file X86AsmBackend.cpp.
References llvm_unreachable.
Referenced by getRelaxedOpcode().
Check if the instruction has a variant symbol operand.
Definition at line 365 of file X86AsmBackend.cpp.
References llvm::cast(), llvm::MCExpr::getKind(), MI, and llvm::MCExpr::SymbolRef.
|
static |
Check if the instruction is valid as the first instruction in macro fusion.
Definition at line 277 of file X86AsmBackend.cpp.
References llvm::X86::classifyFirstOpcodeInMacroFusion(), llvm::MCInst::getOpcode(), llvm::X86::Invalid, and isRIPRelative().
|
static |
Check if the instruction is a prefix.
Definition at line 272 of file X86AsmBackend.cpp.
References llvm::MCInstrInfo::get(), llvm::X86II::isPrefix(), and llvm::MCInstrDesc::TSFlags.
Referenced by readPrefixes().
Definition at line 215 of file X86AsmBackend.cpp.
Referenced by getRelaxedOpcode().
|
static |
Check if the instruction uses RIP relative addressing.
Definition at line 258 of file X86AsmBackend.cpp.
References llvm::X86::AddrBaseReg, llvm::MCInstrInfo::get(), llvm::X86II::getMemoryOperandNo(), llvm::X86II::getOperandBias(), and MI.
Referenced by isFirstMacroFusibleInst().
X86 has certain instructions which enable interrupts exactly one instruction after the instruction which stores to SS.
Return true if the given instruction may have such an interrupt delay slot.
Definition at line 380 of file X86AsmBackend.cpp.
|
constexpr |
Definition at line 662 of file X86AsmBackend.cpp.