LLVM  4.0.0
Public Member Functions | List of all members
llvm::ARMInstructionSelector Class Reference

#include <ARMInstructionSelector.h>

Inheritance diagram for llvm::ARMInstructionSelector:
[legend]
Collaboration diagram for llvm::ARMInstructionSelector:
[legend]

Public Member Functions

 ARMInstructionSelector (const ARMSubtarget &STI, const ARMRegisterBankInfo &RBI)
 
virtual bool select (MachineInstr &I) const override
 Select the (possibly generic) instruction I to only use target-specific opcodes. More...
 
- Public Member Functions inherited from llvm::InstructionSelector
virtual ~InstructionSelector ()
 

Additional Inherited Members

- Protected Member Functions inherited from llvm::InstructionSelector
 InstructionSelector ()
 
bool constrainSelectedInstRegOperands (MachineInstr &I, const TargetInstrInfo &TII, const TargetRegisterInfo &TRI, const RegisterBankInfo &RBI) const
 Mutate the newly-selected instruction I to constrain its (possibly generic) virtual register operands to the instruction's register class. More...
 

Detailed Description

Definition at line 25 of file ARMInstructionSelector.h.

Constructor & Destructor Documentation

ARMInstructionSelector::ARMInstructionSelector ( const ARMSubtarget STI,
const ARMRegisterBankInfo RBI 
)

Definition at line 29 of file ARMInstructionSelector.cpp.

Member Function Documentation

bool ARMInstructionSelector::select ( MachineInstr I) const
overridevirtual

Select the (possibly generic) instruction I to only use target-specific opcodes.

It is OK to insert multiple instructions, but they cannot be generic pre-isel instructions.

Returns
whether selection succeeded.
Precondition
I.getParent() && I.getParent()->getParent()
Postcondition
if returns true: for I in all mutated/inserted instructions: !isPreISelGenericOpcode(I.getOpcode())

Implements llvm::InstructionSelector.

Definition at line 71 of file ARMInstructionSelector.cpp.

References llvm::AddDefaultCC(), llvm::AddDefaultPred(), assert(), llvm::InstructionSelector::constrainSelectedInstRegOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::isCopy(), llvm::isPreISelGenericOpcode(), MBB, MRI, selectCopy(), llvm::MachineInstr::setDesc(), and TII.


The documentation for this class was generated from the following files: