LLVM: lib/Target/ARM/ARMInstructionSelector.cpp File Reference (original) (raw)

This file implements the targeting of the InstructionSelector class for ARM. More...

Go to the source code of this file.

Namespaces
namespace llvm
This is an optimization pass for GlobalISel generic memory operations.
Macros
#define DEBUG_TYPE "arm-isel"
#define GET_GLOBALISEL_PREDICATE_BITSET
#define GET_GLOBALISEL_PREDICATES_DECL
#define GET_GLOBALISEL_TEMPORARIES_DECL
#define GET_GLOBALISEL_IMPL
#define GET_GLOBALISEL_PREDICATES_INIT
#define GET_GLOBALISEL_TEMPORARIES_INIT
#define STORE_OPCODE(VAR, OPC)
Functions
InstructionSelector * llvm::createARMInstructionSelector (const ARMBaseTargetMachine &TM, const ARMSubtarget &STI, const ARMRegisterBankInfo &RBI)
static bool selectCopy (MachineInstr &I, const TargetInstrInfo &TII, MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI, const RegisterBankInfo &RBI)
static bool selectMergeValues (MachineInstrBuilder &MIB, const ARMBaseInstrInfo &TII, MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI, const RegisterBankInfo &RBI)
static bool selectUnmergeValues (MachineInstrBuilder &MIB, const ARMBaseInstrInfo &TII, MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI, const RegisterBankInfo &RBI)
static std::pair< ARMCC::CondCodes, ARMCC::CondCodes > getComparePreds (CmpInst::Predicate Pred)

This file implements the targeting of the InstructionSelector class for ARM.

Todo

This should be generated by TableGen.

Definition in file ARMInstructionSelector.cpp.

DEBUG_TYPE

#define DEBUG_TYPE "arm-isel"

GET_GLOBALISEL_IMPL

#define GET_GLOBALISEL_IMPL

GET_GLOBALISEL_PREDICATE_BITSET

#define GET_GLOBALISEL_PREDICATE_BITSET

GET_GLOBALISEL_PREDICATES_DECL

#define GET_GLOBALISEL_PREDICATES_DECL

GET_GLOBALISEL_PREDICATES_INIT

#define GET_GLOBALISEL_PREDICATES_INIT

GET_GLOBALISEL_TEMPORARIES_DECL

#define GET_GLOBALISEL_TEMPORARIES_DECL

GET_GLOBALISEL_TEMPORARIES_INIT

#define GET_GLOBALISEL_TEMPORARIES_INIT

STORE_OPCODE

#define STORE_OPCODE ( VAR,
OPC )

Value:

VAR = isThumb ? ARM::t2##OPC : ARM::OPC

static bool isThumb(const MCSubtargetInfo &STI)

getComparePreds()

Definition at line 394 of file ARMInstructionSelector.cpp.

References llvm::ARMCC::AL, assert(), llvm::ARMCC::EQ, llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UGE, llvm::CmpInst::FCMP_UGT, llvm::CmpInst::FCMP_ULE, llvm::CmpInst::FCMP_ULT, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, llvm::ARMCC::GE, llvm::ARMCC::GT, llvm::ARMCC::HI, llvm::ARMCC::HS, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, llvm::ARMCC::LE, llvm::ARMCC::LO, llvm::ARMCC::LS, llvm::ARMCC::LT, llvm::ARMCC::MI, llvm::ARMCC::NE, llvm::ARMCC::PL, llvm::ARMCC::VC, and llvm::ARMCC::VS.

selectCopy()

selectMergeValues()

Definition at line 233 of file ARMInstructionSelector.cpp.

References llvm::MachineInstrBuilder::add(), llvm::ARMCC::AL, assert(), llvm::RegisterBank::getID(), llvm::MachineInstrBuilder::getReg(), llvm::RegisterBankInfo::getRegBank(), MRI, llvm::predOps(), llvm::MachineInstr::setDesc(), TII, and TRI.

selectUnmergeValues()

Definition at line 264 of file ARMInstructionSelector.cpp.

References llvm::MachineInstrBuilder::add(), llvm::ARMCC::AL, assert(), llvm::RegisterBank::getID(), llvm::MachineInstrBuilder::getReg(), llvm::RegisterBankInfo::getRegBank(), MRI, llvm::predOps(), llvm::MachineInstr::setDesc(), TII, and TRI.