LLVM 20.0.0git
Functions
X86AsmPrinter.cpp File Reference
#include "X86AsmPrinter.h"
#include "MCTargetDesc/X86ATTInstPrinter.h"
#include "MCTargetDesc/X86BaseInfo.h"
#include "MCTargetDesc/X86MCTargetDesc.h"
#include "MCTargetDesc/X86TargetStreamer.h"
#include "TargetInfo/X86TargetInfo.h"
#include "X86InstrInfo.h"
#include "X86MachineFunctionInfo.h"
#include "X86Subtarget.h"
#include "llvm/BinaryFormat/COFF.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/CodeGen/MachineConstantPool.h"
#include "llvm/CodeGen/MachineModuleInfoImpls.h"
#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h"
#include "llvm/CodeGenTypes/MachineValueType.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/IR/InstIterator.h"
#include "llvm/IR/Mangler.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCCodeEmitter.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstBuilder.h"
#include "llvm/MC/MCSectionCOFF.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/MC/MCSectionMachO.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetMachine.h"

Go to the source code of this file.

Functions

static bool isSimpleReturn (const MachineInstr &MI)
 
static bool isIndirectBranchOrTailCall (const MachineInstr &MI)
 
static bool printAsmMRegister (const X86AsmPrinter &P, const MachineOperand &MO, char Mode, raw_ostream &O)
 
static bool printAsmVRegister (const MachineOperand &MO, char Mode, raw_ostream &O)
 
static void emitNonLazySymbolPointer (MCStreamer &OutStreamer, MCSymbol *StubLabel, MachineModuleInfoImpl::StubValueTy &MCSym)
 
static void emitNonLazyStubs (MachineModuleInfo *MMI, MCStreamer &OutStreamer)
 
static bool usesMSVCFloatingPoint (const Triple &TT, const Module &M)
 True if this module is being built for windows/msvc, and uses floating point.
 
LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86AsmPrinter ()
 

Function Documentation

◆ emitNonLazyStubs()

static void emitNonLazyStubs ( MachineModuleInfo MMI,
MCStreamer OutStreamer 
)
static

◆ emitNonLazySymbolPointer()

static void emitNonLazySymbolPointer ( MCStreamer OutStreamer,
MCSymbol StubLabel,
MachineModuleInfoImpl::StubValueTy MCSym 
)
static

◆ isIndirectBranchOrTailCall()

static bool isIndirectBranchOrTailCall ( const MachineInstr MI)
static

Definition at line 432 of file X86AsmPrinter.cpp.

References MI.

Referenced by llvm::X86AsmPrinter::emitBasicBlockEnd().

◆ isSimpleReturn()

static bool isSimpleReturn ( const MachineInstr MI)
static

Definition at line 427 of file X86AsmPrinter.cpp.

References MI.

Referenced by llvm::X86AsmPrinter::emitBasicBlockEnd().

◆ LLVMInitializeX86AsmPrinter()

LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86AsmPrinter ( )

Definition at line 1070 of file X86AsmPrinter.cpp.

References llvm::getTheX86_32Target(), llvm::getTheX86_64Target(), X, and Y.

◆ printAsmMRegister()

static bool printAsmMRegister ( const X86AsmPrinter P,
const MachineOperand MO,
char  Mode,
raw_ostream O 
)
static

◆ printAsmVRegister()

static bool printAsmVRegister ( const MachineOperand MO,
char  Mode,
raw_ostream O 
)
static

◆ usesMSVCFloatingPoint()

static bool usesMSVCFloatingPoint ( const Triple TT,
const Module M 
)
static

True if this module is being built for windows/msvc, and uses floating point.

This is used to emit an undefined reference to _fltused. This is needed in Windows kernel or driver contexts to find and prevent code from modifying non-GPR registers.

TODO: It would be better if this was computed from MIR by looking for selected floating-point instructions.

Definition at line 986 of file X86AsmPrinter.cpp.

References F, I, and instructions.

Referenced by llvm::X86AsmPrinter::emitEndOfAsmFile().