LLVM 23.0.0git
CallLowering.cpp File Reference

This file implements some simple delegations needed for call lowering. More...

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "call-lowering"

Functions

static void addFlagsFromAttrSet (ISD::ArgFlagsTy &Flags, AttributeSet Attrs)
 Helper function which updates Flags based on the contents of Attrs.
static MachineInstrBuilder mergeVectorRegsToResultRegs (MachineIRBuilder &B, ArrayRef< Register > DstRegs, ArrayRef< Register > SrcRegs)
 Pack values SrcRegs to cover the vector type result DstRegs.
static unsigned extendOpFromFlags (llvm::ISD::ArgFlagsTy Flags)
static bool isCopyCompatibleType (LLT SrcTy, LLT DstTy)
 Check if we can use a basic COPY instruction between the two types.

Detailed Description

This file implements some simple delegations needed for call lowering.

Definition in file CallLowering.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "call-lowering"

Definition at line 28 of file CallLowering.cpp.

Function Documentation

◆ addFlagsFromAttrSet()

void addFlagsFromAttrSet ( ISD::ArgFlagsTy & Flags,
AttributeSet Attrs )
static

Helper function which updates Flags based on the contents of Attrs.

Definition at line 35 of file CallLowering.cpp.

Referenced by llvm::CallLowering::addArgFlagsFromAttributes(), llvm::CallLowering::getAttributesForArgIdx(), and llvm::CallLowering::getAttributesForReturn().

◆ extendOpFromFlags()

unsigned extendOpFromFlags ( llvm::ISD::ArgFlagsTy Flags)
static

◆ isCopyCompatibleType()

bool isCopyCompatibleType ( LLT SrcTy,
LLT DstTy )
static

Check if we can use a basic COPY instruction between the two types.

We're currently building on top of the infrastructure using MVT, which loses pointer information in the CCValAssign. We accept copies from physical registers that have been reported as integers if it's to an equivalent sized pointer LLT.

Definition at line 1400 of file CallLowering.cpp.

References llvm::LLT::getScalarType(), llvm::LLT::getSizeInBits(), llvm::LLT::isPointer(), and llvm::LLT::isScalar().

Referenced by llvm::CallLowering::IncomingValueHandler::assignValueToReg().

◆ mergeVectorRegsToResultRegs()