Thanks to visit codestin.com
Credit goes to llvm.org

LLVM 22.0.0git
MSP430ISelLowering.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "msp430-lower"

Functions

template<typename ArgT>
static void ParseFunctionArgs (const SmallVectorImpl< ArgT > &Args, SmallVectorImpl< unsigned > &Out)
 For each argument in a function store the number of pieces it is composed of.
static void AnalyzeVarArgs (CCState &State, const SmallVectorImpl< ISD::OutputArg > &Outs)
static void AnalyzeVarArgs (CCState &State, const SmallVectorImpl< ISD::InputArg > &Ins)
template<typename ArgT>
static void AnalyzeArguments (CCState &State, SmallVectorImpl< CCValAssign > &ArgLocs, const SmallVectorImpl< ArgT > &Args)
 Analyze incoming and outgoing function arguments.
static void AnalyzeRetResult (CCState &State, const SmallVectorImpl< ISD::InputArg > &Ins)
static void AnalyzeRetResult (CCState &State, const SmallVectorImpl< ISD::OutputArg > &Outs)
template<typename ArgT>
static void AnalyzeReturnValues (CCState &State, SmallVectorImpl< CCValAssign > &RVLocs, const SmallVectorImpl< ArgT > &Args)
static SDValue EmitCMP (SDValue &LHS, SDValue &RHS, SDValue &TargetCC, ISD::CondCode CC, const SDLoc &dl, SelectionDAG &DAG)

Variables

static cl::opt< boolMSP430NoLegalImmediate ("msp430-no-legal-immediate", cl::Hidden, cl::desc("Enable non legal immediates (for testing purposes only)"), cl::init(false))

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "msp430-lower"

Definition at line 36 of file MSP430ISelLowering.cpp.

Function Documentation

◆ AnalyzeArguments()

template<typename ArgT>
void AnalyzeArguments ( CCState & State,
SmallVectorImpl< CCValAssign > & ArgLocs,
const SmallVectorImpl< ArgT > & Args )
static

Analyze incoming and outgoing function arguments.

We need custom C++ code to handle special constraints in the ABI like reversing the order of the pieces of splitted arguments. In addition, all pieces of a certain argument have to be passed either using registers or the stack but never mixing both.

Definition at line 335 of file MSP430ISelLowering.cpp.

References llvm::CCValAssign::AExt, AnalyzeVarArgs(), assert(), llvm::CCValAssign::Full, llvm::CCValAssign::getReg(), llvm::ISD::ArgFlagsTy::isByVal(), llvm::ISD::ArgFlagsTy::isSExt(), llvm::ISD::ArgFlagsTy::isZExt(), llvm::CallingConv::MSP430_BUILTIN, ParseFunctionArgs(), Reg, llvm::CCValAssign::SExt, llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::CCValAssign::ZExt.

◆ AnalyzeRetResult() [1/2]

void AnalyzeRetResult ( CCState & State,
const SmallVectorImpl< ISD::InputArg > & Ins )
static

Definition at line 432 of file MSP430ISelLowering.cpp.

Referenced by AnalyzeReturnValues().

◆ AnalyzeRetResult() [2/2]

void AnalyzeRetResult ( CCState & State,
const SmallVectorImpl< ISD::OutputArg > & Outs )
static

Definition at line 437 of file MSP430ISelLowering.cpp.

◆ AnalyzeReturnValues()

template<typename ArgT>
void AnalyzeReturnValues ( CCState & State,
SmallVectorImpl< CCValAssign > & RVLocs,
const SmallVectorImpl< ArgT > & Args )
static

Definition at line 443 of file MSP430ISelLowering.cpp.

References AnalyzeRetResult().

◆ AnalyzeVarArgs() [1/2]

void AnalyzeVarArgs ( CCState & State,
const SmallVectorImpl< ISD::InputArg > & Ins )
static

Definition at line 325 of file MSP430ISelLowering.cpp.

◆ AnalyzeVarArgs() [2/2]

void AnalyzeVarArgs ( CCState & State,
const SmallVectorImpl< ISD::OutputArg > & Outs )
static

Definition at line 320 of file MSP430ISelLowering.cpp.

Referenced by AnalyzeArguments().

◆ EmitCMP()

◆ ParseFunctionArgs()

template<typename ArgT>
void ParseFunctionArgs ( const SmallVectorImpl< ArgT > & Args,
SmallVectorImpl< unsigned > & Out )
static

For each argument in a function store the number of pieces it is composed of.

Definition at line 300 of file MSP430ISelLowering.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::back(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by AnalyzeArguments().

Variable Documentation

◆ MSP430NoLegalImmediate

cl::opt< bool > MSP430NoLegalImmediate("msp430-no-legal-immediate", cl::Hidden, cl::desc("Enable non legal immediates (for testing purposes only)"), cl::init(false)) ( "msp430-no-legal-immediate" ,
cl::Hidden ,
cl::desc("Enable non legal immediates (for testing purposes only)") ,
cl::init(false)  )
static