LLVM API Documentation

Public Member Functions
llvm::MSP430TargetLowering Class Reference

#include <MSP430ISelLowering.h>

Inheritance diagram for llvm::MSP430TargetLowering:
Inheritance graph
[legend]
Collaboration diagram for llvm::MSP430TargetLowering:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 MSP430TargetLowering (MSP430TargetMachine &TM)
virtual MVT getScalarShiftAmountTy (EVT LHSTy) const
virtual SDValue LowerOperation (SDValue Op, SelectionDAG &DAG) const
 LowerOperation - Provide custom lowering hooks for some operations.
virtual const char * getTargetNodeName (unsigned Opcode) const
SDValue LowerShifts (SDValue Op, SelectionDAG &DAG) const
SDValue LowerGlobalAddress (SDValue Op, SelectionDAG &DAG) const
SDValue LowerBlockAddress (SDValue Op, SelectionDAG &DAG) const
SDValue LowerExternalSymbol (SDValue Op, SelectionDAG &DAG) const
SDValue LowerBR_CC (SDValue Op, SelectionDAG &DAG) const
SDValue LowerSETCC (SDValue Op, SelectionDAG &DAG) const
SDValue LowerSELECT_CC (SDValue Op, SelectionDAG &DAG) const
SDValue LowerSIGN_EXTEND (SDValue Op, SelectionDAG &DAG) const
SDValue LowerRETURNADDR (SDValue Op, SelectionDAG &DAG) const
SDValue LowerFRAMEADDR (SDValue Op, SelectionDAG &DAG) const
SDValue LowerVASTART (SDValue Op, SelectionDAG &DAG) const
SDValue getReturnAddressFrameIndex (SelectionDAG &DAG) const
TargetLowering::ConstraintType getConstraintType (const std::string &Constraint) const
std::pair< unsigned, const
TargetRegisterClass * > 
getRegForInlineAsmConstraint (const std::string &Constraint, EVT VT) const
virtual bool isTruncateFree (Type *Ty1, Type *Ty2) const
virtual bool isTruncateFree (EVT VT1, EVT VT2) const
virtual bool isZExtFree (Type *Ty1, Type *Ty2) const
virtual bool isZExtFree (EVT VT1, EVT VT2) const
virtual bool isZExtFree (SDValue Val, EVT VT2) const
MachineBasicBlockEmitInstrWithCustomInserter (MachineInstr *MI, MachineBasicBlock *BB) const
MachineBasicBlockEmitShiftInstr (MachineInstr *MI, MachineBasicBlock *BB) const

Detailed Description

Definition at line 72 of file MSP430ISelLowering.h.


Constructor & Destructor Documentation

MSP430TargetLowering::MSP430TargetLowering ( MSP430TargetMachine TM) [explicit]

Definition at line 60 of file MSP430ISelLowering.cpp.

References llvm::TargetLoweringBase::addRegisterClass(), llvm::ISD::BlockAddress, llvm::ISD::BR_CC, llvm::ISD::BR_JT, llvm::ISD::BRCOND, llvm::TargetLoweringBase::computeRegisterProperties(), llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, llvm::ISD::CTPOP, llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, llvm::TargetLoweringBase::Custom, llvm::ISD::DYNAMIC_STACKALLOC, llvm::TargetLoweringBase::Expand, llvm::ISD::ExternalSymbol, llvm::ISD::EXTLOAD, llvm::TargetLoweringBase::getDataLayout(), llvm::ISD::GlobalAddress, HWMultIntr, HWMultMode, HWMultNoIntr, llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i8, llvm::TargetLoweringBase::Legal, llvm::ISD::MUL, llvm::RTLIB::MUL_I16, llvm::RTLIB::MUL_I8, llvm::ISD::MULHS, llvm::ISD::MULHU, llvm::MVT::Other, llvm::ISD::POST_INC, llvm::TargetLoweringBase::Promote, llvm::ISD::ROTL, llvm::ISD::ROTR, llvm::ISD::SDIV, llvm::ISD::SDIVREM, llvm::ISD::SELECT, llvm::ISD::SELECT_CC, llvm::TargetLoweringBase::setBooleanContents(), llvm::TargetLoweringBase::setBooleanVectorContents(), llvm::ISD::SETCC, llvm::TargetLoweringBase::setIndexedLoadAction(), llvm::TargetLoweringBase::setIntDivIsCheap(), llvm::TargetLoweringBase::setLibcallName(), llvm::TargetLoweringBase::setLoadExtAction(), llvm::TargetLoweringBase::setMinFunctionAlignment(), llvm::TargetLoweringBase::setOperationAction(), llvm::TargetLoweringBase::setPrefFunctionAlignment(), llvm::TargetLoweringBase::setStackPointerRegisterToSaveRestore(), llvm::TargetLoweringBase::setTruncStoreAction(), llvm::ISD::SEXTLOAD, llvm::ISD::SHL, llvm::ISD::SHL_PARTS, llvm::ISD::SIGN_EXTEND, llvm::ISD::SIGN_EXTEND_INREG, llvm::ISD::SMUL_LOHI, llvm::ISD::SRA, llvm::ISD::SRA_PARTS, llvm::ISD::SREM, llvm::ISD::SRL, llvm::ISD::SRL_PARTS, llvm::ISD::UDIV, llvm::ISD::UDIVREM, llvm::ISD::UMUL_LOHI, llvm::ISD::UREM, llvm::ISD::VAARG, llvm::ISD::VACOPY, llvm::ISD::VAEND, llvm::ISD::VASTART, llvm::TargetLoweringBase::ZeroOrOneBooleanContent, and llvm::ISD::ZEXTLOAD.


Member Function Documentation

MachineBasicBlock * MSP430TargetLowering::EmitInstrWithCustomInserter ( MachineInstr MI,
MachineBasicBlock BB 
) const [virtual]
MachineBasicBlock * MSP430TargetLowering::EmitShiftInstr ( MachineInstr MI,
MachineBasicBlock BB 
) const
TargetLowering::ConstraintType MSP430TargetLowering::getConstraintType ( const std::string &  Constraint) const [virtual]

getConstraintType - Given a constraint letter, return the type of constraint it is for this target.

Reimplemented from llvm::TargetLowering.

Definition at line 214 of file MSP430ISelLowering.cpp.

References llvm::TargetLowering::C_RegisterClass.

std::pair< unsigned, const TargetRegisterClass * > MSP430TargetLowering::getRegForInlineAsmConstraint ( const std::string &  Constraint,
EVT  VT 
) const [virtual]

getRegForInlineAsmConstraint - Given a physical register constraint (e.g. {edx}), return the register number and the register class for the register.

Given a register class constraint, like 'r', if this corresponds directly to an LLVM register class, return a register of 0 and the register class pointer.

This should only be used for C_Register constraints. On error, this returns a register number of 0 and a null register class pointer..

Reimplemented from llvm::TargetLowering.

Definition at line 228 of file MSP430ISelLowering.cpp.

References llvm::MVT::i8.

SDValue MSP430TargetLowering::getReturnAddressFrameIndex ( SelectionDAG DAG) const
virtual MVT llvm::MSP430TargetLowering::getScalarShiftAmountTy ( EVT  LHSTy) const [inline, virtual]

Reimplemented from llvm::TargetLoweringBase.

Definition at line 76 of file MSP430ISelLowering.h.

References llvm::MVT::i8.

const char * MSP430TargetLowering::getTargetNodeName ( unsigned  Opcode) const [virtual]
bool MSP430TargetLowering::isTruncateFree ( Type Ty1,
Type Ty2 
) const [virtual]

isTruncateFree - Return true if it's free to truncate a value of type Ty1 to type Ty2. e.g. On msp430 it's free to truncate a i16 value in register R15W to i8 by referencing its sub-register R15B.

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1037 of file MSP430ISelLowering.cpp.

References llvm::Type::getPrimitiveSizeInBits(), and llvm::Type::isIntegerTy().

bool MSP430TargetLowering::isTruncateFree ( EVT  VT1,
EVT  VT2 
) const [virtual]

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1045 of file MSP430ISelLowering.cpp.

References llvm::EVT::getSizeInBits(), and llvm::EVT::isInteger().

bool MSP430TargetLowering::isZExtFree ( Type Ty1,
Type Ty2 
) const [virtual]

isZExtFree - Return true if any actual instruction that defines a value of type Ty1 implicit zero-extends the value to Ty2 in the result register. This does not necessarily include registers defined in unknown ways, such as incoming arguments, or copies from unknown virtual registers. Also, if isTruncateFree(Ty2, Ty1) is true, this does not necessarily apply to truncate instructions. e.g. on msp430, all instructions that define 8-bit values implicit zero-extend the result out to 16 bits.

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1052 of file MSP430ISelLowering.cpp.

References llvm::Type::isIntegerTy().

Referenced by isZExtFree().

bool MSP430TargetLowering::isZExtFree ( EVT  VT1,
EVT  VT2 
) const [virtual]

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1057 of file MSP430ISelLowering.cpp.

References llvm::MVT::i16, and llvm::MVT::i8.

bool MSP430TargetLowering::isZExtFree ( SDValue  Val,
EVT  VT2 
) const [virtual]

isZExtFree - Return true if zero-extending the specific node Val to type VT2 is free (either because it's implicitly zero-extended such as ARM ldrb / ldrh or because it's folded such as X86 zero-extending loads).

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1062 of file MSP430ISelLowering.cpp.

References llvm::SDValue::getValueType(), and isZExtFree().

SDValue MSP430TargetLowering::LowerBlockAddress ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerBR_CC ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerExternalSymbol ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerFRAMEADDR ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerGlobalAddress ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerOperation ( SDValue  Op,
SelectionDAG DAG 
) const [virtual]
SDValue MSP430TargetLowering::LowerRETURNADDR ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerSELECT_CC ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerSETCC ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerShifts ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerSIGN_EXTEND ( SDValue  Op,
SelectionDAG DAG 
) const
SDValue MSP430TargetLowering::LowerVASTART ( SDValue  Op,
SelectionDAG DAG 
) const

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