LLVM 22.0.0git
AArch64RegisterBankInfo.cpp File Reference

This file implements the targeting of the RegisterBankInfo class for AArch64. More...

Go to the source code of this file.

Macros

#define GET_TARGET_REGBANK_IMPL
#define CHECK_PARTIALMAP(Idx, ValStartIdx, ValLength, RB)
#define CHECK_VALUEMAP_IMPL(RBName, Size, Offset)
#define CHECK_VALUEMAP(RBName, Size)
#define CHECK_VALUEMAP_3OPS(RBName, Size)
#define CHECK_VALUEMAP_CROSSREGCPY(RBNameDst, RBNameSrc, Size)
#define CHECK_VALUEMAP_FPEXT(DstSize, SrcSize)

Functions

static bool isFPIntrinsic (const MachineRegisterInfo &MRI, const MachineInstr &MI)

Variables

static const unsigned CustomMappingID = 1

Detailed Description

This file implements the targeting of the RegisterBankInfo class for AArch64.

Todo
This should be generated by TableGen.

Definition in file AArch64RegisterBankInfo.cpp.

Macro Definition Documentation

◆ CHECK_PARTIALMAP

#define CHECK_PARTIALMAP ( Idx,
ValStartIdx,
ValLength,
RB )
Value:
do { \
assert( \
checkPartialMap(PartialMappingIdx::Idx, ValStartIdx, ValLength, RB) && \
#Idx " is incorrectly initialized"); \
} while (false)

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().

◆ CHECK_VALUEMAP

#define CHECK_VALUEMAP ( RBName,
Size )
Value:
#define CHECK_VALUEMAP_IMPL(RBName, Size, Offset)

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().

◆ CHECK_VALUEMAP_3OPS

#define CHECK_VALUEMAP_3OPS ( RBName,
Size )
Value:
do { \
CHECK_VALUEMAP_IMPL(RBName, Size, 0); \
CHECK_VALUEMAP_IMPL(RBName, Size, 1); \
CHECK_VALUEMAP_IMPL(RBName, Size, 2); \
} while (false)

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().

◆ CHECK_VALUEMAP_CROSSREGCPY

#define CHECK_VALUEMAP_CROSSREGCPY ( RBNameDst,
RBNameSrc,
Size )
Value:
do { \
unsigned PartialMapDstIdx = PMI_##RBNameDst##Size - PMI_Min; \
unsigned PartialMapSrcIdx = PMI_##RBNameSrc##Size - PMI_Min; \
(void)PartialMapDstIdx; \
(void)PartialMapSrcIdx; \
const ValueMapping *Map = getCopyMapping(AArch64::RBNameDst##RegBankID, \
AArch64::RBNameSrc##RegBankID, \
(void)Map; \
assert(Map[0].BreakDown == \
Map[0].NumBreakDowns == 1 && \
#RBNameDst #Size " Dst is incorrectly initialized"); \
assert(Map[1].BreakDown == \
Map[1].NumBreakDowns == 1 && \
#RBNameSrc #Size " Src is incorrectly initialized"); \
\
} while (false)
static const RegisterBankInfo::PartialMapping PartMappings[]
static constexpr TypeSize getFixed(ScalarTy ExactSize)
Definition TypeSize.h:343

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().

◆ CHECK_VALUEMAP_FPEXT

#define CHECK_VALUEMAP_FPEXT ( DstSize,
SrcSize )
Value:
do { \
unsigned PartialMapDstIdx = PMI_FPR##DstSize - PMI_Min; \
unsigned PartialMapSrcIdx = PMI_FPR##SrcSize - PMI_Min; \
(void)PartialMapDstIdx; \
(void)PartialMapSrcIdx; \
const ValueMapping *Map = getFPExtMapping(DstSize, SrcSize); \
(void)Map; \
assert(Map[0].BreakDown == \
Map[0].NumBreakDowns == 1 && "FPR" #DstSize \
" Dst is incorrectly initialized"); \
assert(Map[1].BreakDown == \
Map[1].NumBreakDowns == 1 && "FPR" #SrcSize \
" Src is incorrectly initialized"); \
\
} while (false)

Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().

◆ CHECK_VALUEMAP_IMPL

#define CHECK_VALUEMAP_IMPL ( RBName,
Size,
Offset )
Value:
do { \
assert(checkValueMapImpl(PartialMappingIdx::PMI_##RBName##Size, \
PartialMappingIdx::PMI_First##RBName, Size, \
Offset) && \
#RBName #Size " " #Offset " is incorrectly initialized"); \
} while (false)
@ Offset
Definition DWP.cpp:477

◆ GET_TARGET_REGBANK_IMPL

#define GET_TARGET_REGBANK_IMPL

Definition at line 38 of file AArch64RegisterBankInfo.cpp.

Function Documentation

◆ isFPIntrinsic()

bool isFPIntrinsic ( const MachineRegisterInfo & MRI,
const MachineInstr & MI )
static
Returns
true if a given intrinsic only uses and defines FPRs.

Definition at line 452 of file AArch64RegisterBankInfo.cpp.

References llvm::cast(), getIntrinsicID(), MI, and MRI.

Variable Documentation

◆ CustomMappingID