|
LLVM 23.0.0git
|
This file implements some simple delegations needed for call lowering. More...
#include "llvm/CodeGen/GlobalISel/CallLowering.h"#include "llvm/CodeGen/Analysis.h"#include "llvm/CodeGen/CallingConvLower.h"#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"#include "llvm/CodeGen/GlobalISel/Utils.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/MachineOperand.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/TargetLowering.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/Module.h"#include "llvm/Target/TargetMachine.h"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. | |
This file implements some simple delegations needed for call lowering.
Definition in file CallLowering.cpp.
| #define DEBUG_TYPE "call-lowering" |
Definition at line 28 of file CallLowering.cpp.
|
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().
|
static |
Definition at line 692 of file CallLowering.cpp.
Referenced by llvm::CallLowering::handleAssignments(), and llvm::WebAssemblyCallLowering::lowerReturn().
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().
|
static |
Pack values SrcRegs to cover the vector type result DstRegs.
Definition at line 327 of file CallLowering.cpp.
References assert(), B(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::LLT::changeElementType(), llvm::copy(), llvm::MachineRegisterInfo::createGenericVirtualRegister(), E(), llvm::getCoverTy(), llvm::LLT::getScalarType(), llvm::LLT::getSizeInBits(), llvm::MachineRegisterInfo::getType(), I, llvm::ArrayRef< T >::size(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::CallLowering::buildCopyFromRegs().