LLVM: lib/CodeGen/GlobalISel/InlineAsmLowering.cpp File Reference (original) (raw)

This file implements the lowering from LLVM IR inline asm to MIR INLINEASM. More...

Go to the source code of this file.

Functions
static void getRegistersForValue (MachineFunction &MF, MachineIRBuilder &MIRBuilder, GISelAsmOperandInfo &OpInfo, GISelAsmOperandInfo &RefOpInfo)
Assign virtual/physical registers for the specified register operand.
static void computeConstraintToUse (const TargetLowering *TLI, TargetLowering::AsmOperandInfo &OpInfo)
static unsigned getNumOpRegs (const MachineInstr &I, unsigned OpIdx)
static bool buildAnyextOrCopy (Register Dst, Register Src, MachineIRBuilder &MIRBuilder)

Detailed Description

This file implements the lowering from LLVM IR inline asm to MIR INLINEASM.

Definition in file InlineAsmLowering.cpp.

Macro Definition Documentation

DEBUG_TYPE

#define DEBUG_TYPE "inline-asm-lowering"

Function Documentation

buildAnyextOrCopy()

Definition at line 182 of file InlineAsmLowering.cpp.

References llvm::MachineIRBuilder::buildAnyExt(), llvm::MachineIRBuilder::buildCopy(), llvm::dbgs(), llvm::MachineIRBuilder::getMF(), llvm::MachineIRBuilder::getMRI(), llvm::MachineInstrBuilder::getReg(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), LLVM_DEBUG, MRI, llvm::LLT::scalar(), and TRI.

Referenced by llvm::InlineAsmLowering::lowerInlineAsm().

computeConstraintToUse()

Definition at line 136 of file InlineAsmLowering.cpp.

References assert(), llvm::TargetLowering::C_Immediate, llvm::TargetLowering::C_Other, llvm::TargetLowering::AsmOperandInfo::CallOperandVal, llvm::InlineAsm::ConstraintInfo::Codes, llvm::TargetLowering::AsmOperandInfo::ConstraintCode, llvm::TargetLowering::AsmOperandInfo::ConstraintType, llvm::TargetLowering::AsmOperandInfo::ConstraintVT, G, llvm::TargetLowering::getConstraintPreferences(), llvm::TargetLowering::getConstraintType(), and llvm::TargetLowering::LowerXConstraint().

Referenced by llvm::InlineAsmLowering::lowerInlineAsm().

getNumOpRegs()

getRegistersForValue()

static void getRegistersForValue ( MachineFunction & MF, MachineIRBuilder & MIRBuilder, GISelAsmOperandInfo & OpInfo, GISelAsmOperandInfo & RefOpInfo ) static

Assign virtual/physical registers for the specified register operand.

Definition at line 80 of file InlineAsmLowering.cpp.

References assert(), llvm::TargetRegisterClass::begin(), llvm::TargetLowering::C_Memory, llvm::TargetRegisterClass::end(), llvm::Function::getContext(), llvm::MachineFunction::getFunction(), llvm::TargetLoweringBase::getNumRegisters(), llvm::TargetLowering::getRegForInlineAsmConstraint(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), I, and TRI.

Referenced by llvm::InlineAsmLowering::lowerInlineAsm().