|
LLVM 23.0.0git
|
This file implements the targeting of the RegisterBankInfo class for AArch64. More...
#include "AArch64RegisterBankInfo.h"#include "AArch64RegisterInfo.h"#include "AArch64Subtarget.h"#include "MCTargetDesc/AArch64AddressingModes.h"#include "MCTargetDesc/AArch64MCTargetDesc.h"#include "llvm/ADT/APInt.h"#include "llvm/ADT/STLExtras.h"#include "llvm/ADT/SmallVector.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"#include "llvm/CodeGen/GlobalISel/Utils.h"#include "llvm/CodeGen/LowLevelTypeUtils.h"#include "llvm/CodeGen/MachineFunction.h"#include "llvm/CodeGen/MachineInstr.h"#include "llvm/CodeGen/MachineOperand.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/MachineSizeOpts.h"#include "llvm/CodeGen/RegisterBank.h"#include "llvm/CodeGen/RegisterBankInfo.h"#include "llvm/CodeGen/TargetOpcodes.h"#include "llvm/CodeGen/TargetRegisterInfo.h"#include "llvm/CodeGen/TargetSubtargetInfo.h"#include "llvm/IR/Constants.h"#include "llvm/IR/IntrinsicsAArch64.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/Threading.h"#include <cassert>#include "AArch64GenRegisterBank.inc"#include "AArch64GenRegisterBankInfo.def"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 | preferGPRForFPImm (const MachineInstr &MI, const MachineRegisterInfo &MRI, const AArch64Subtarget &STI) |
| static bool | foldTruncOfI32Constant (MachineInstr &MI, unsigned OpIdx, MachineRegisterInfo &MRI, const AArch64RegisterBankInfo &RBI) |
| static bool | isFPIntrinsic (const MachineRegisterInfo &MRI, const MachineInstr &MI) |
Variables | |
| static const unsigned | CustomMappingID = 1 |
This file implements the targeting of the RegisterBankInfo class for AArch64.
Definition in file AArch64RegisterBankInfo.cpp.
| #define CHECK_PARTIALMAP | ( | Idx, | |
| ValStartIdx, | |||
| ValLength, | |||
| RB ) |
Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().
| #define CHECK_VALUEMAP | ( | RBName, | |
| Size ) |
Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().
| #define CHECK_VALUEMAP_3OPS | ( | RBName, | |
| Size ) |
Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().
| #define CHECK_VALUEMAP_CROSSREGCPY | ( | RBNameDst, | |
| RBNameSrc, | |||
| Size ) |
Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().
| #define CHECK_VALUEMAP_FPEXT | ( | DstSize, | |
| SrcSize ) |
Referenced by llvm::AArch64RegisterBankInfo::AArch64RegisterBankInfo().
| #define CHECK_VALUEMAP_IMPL | ( | RBName, | |
| Size, | |||
| Offset ) |
| #define GET_TARGET_REGBANK_IMPL |
Definition at line 42 of file AArch64RegisterBankInfo.cpp.
|
static |
Definition at line 407 of file AArch64RegisterBankInfo.cpp.
References llvm::MachineInstr::eraseFromParent(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::RegisterBankInfo::getRegBank(), llvm::LLT::getSizeInBits(), llvm::LLT::isScalar(), MI, MRI, and OpIdx.
|
static |
Definition at line 592 of file AArch64RegisterBankInfo.cpp.
References llvm::cast(), getIntrinsicID(), MI, and MRI.
|
static |
Definition at line 365 of file AArch64RegisterBankInfo.cpp.
References assert(), llvm::EVT::getFloatingPointVT(), llvm::APInt::getSplat(), llvm::AArch64Subtarget::getTargetLowering(), llvm::APInt::getZExtValue(), llvm::AArch64_AM::isAdvSIMDModImmType4(), llvm::AArch64TargetLowering::isFPImmLegal(), llvm::AArch64TargetLowering::isFPImmLegalAsFMov(), MI, MRI, llvm::shouldOptimizeForSize(), and Size.
Referenced by llvm::AArch64RegisterBankInfo::getInstrMapping().
Definition at line 49 of file AArch64RegisterBankInfo.cpp.
Referenced by getGprbOrCustomMapping(), llvm::AArch64RegisterBankInfo::getInstrMapping(), and llvm::MipsRegisterBankInfo::getInstrMapping().