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 (const TargetMachine &TM)
MVT getScalarShiftAmountTy (EVT LHSTy) const override
SDValue LowerOperation (SDValue Op, SelectionDAG &DAG) const override
 LowerOperation - Provide custom lowering hooks for some operations.
const char * getTargetNodeName (unsigned Opcode) const override
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 LowerJumpTable (SDValue Op, SelectionDAG &DAG) const
SDValue getReturnAddressFrameIndex (SelectionDAG &DAG) const
TargetLowering::ConstraintType getConstraintType (const std::string &Constraint) const override
std::pair< unsigned, const
TargetRegisterClass * > 
getRegForInlineAsmConstraint (const std::string &Constraint, MVT VT) const override
bool isTruncateFree (Type *Ty1, Type *Ty2) const override
bool isTruncateFree (EVT VT1, EVT VT2) const override
bool isZExtFree (Type *Ty1, Type *Ty2) const override
bool isZExtFree (EVT VT1, EVT VT2) const override
bool isZExtFree (SDValue Val, EVT VT2) const override
MachineBasicBlockEmitInstrWithCustomInserter (MachineInstr *MI, MachineBasicBlock *BB) const override
MachineBasicBlockEmitShiftInstr (MachineInstr *MI, MachineBasicBlock *BB) const

Detailed Description

Definition at line 69 of file MSP430ISelLowering.h.


Constructor & Destructor Documentation

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::ISD::GlobalAddress, HWMultIntr, HWMultMode, HWMultNoIntr, llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i8, llvm::ISD::JumpTable, 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

TargetLowering::ConstraintType MSP430TargetLowering::getConstraintType ( const std::string &  Constraint) const [override, virtual]

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

Reimplemented from llvm::TargetLowering.

Definition at line 213 of file MSP430ISelLowering.cpp.

References llvm::TargetLowering::C_RegisterClass.

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

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 227 of file MSP430ISelLowering.cpp.

References llvm::MVT::i8.

MVT llvm::MSP430TargetLowering::getScalarShiftAmountTy ( EVT  LHSTy) const [inline, override, virtual]

Reimplemented from llvm::TargetLoweringBase.

Definition at line 73 of file MSP430ISelLowering.h.

References llvm::MVT::i8.

const char * MSP430TargetLowering::getTargetNodeName ( unsigned  Opcode) const [override, virtual]
bool MSP430TargetLowering::isTruncateFree ( Type Ty1,
Type Ty2 
) const [override, 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 1163 of file MSP430ISelLowering.cpp.

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

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

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1171 of file MSP430ISelLowering.cpp.

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

bool MSP430TargetLowering::isZExtFree ( Type Ty1,
Type Ty2 
) const [override, 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 1178 of file MSP430ISelLowering.cpp.

References llvm::Type::isIntegerTy().

Referenced by isZExtFree().

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

Reimplemented from llvm::TargetLoweringBase.

Definition at line 1183 of file MSP430ISelLowering.cpp.

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

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

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 1188 of file MSP430ISelLowering.cpp.

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

SDValue MSP430TargetLowering::LowerOperation ( SDValue  Op,
SelectionDAG DAG 
) const [override, virtual]

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