|
LLVM 24.0.0git
|
This file implements the targeting of the Machinelegalizer class for AMDGPU. More...
#include "AMDGPULegalizerInfo.h"#include "AMDGPU.h"#include "AMDGPUGlobalISelUtils.h"#include "AMDGPUInstrInfo.h"#include "AMDGPUMemoryUtils.h"#include "AMDGPUTargetMachine.h"#include "SIInstrInfo.h"#include "SIMachineFunctionInfo.h"#include "SIRegisterInfo.h"#include "Utils/AMDGPUBaseInfo.h"#include "llvm/ADT/ScopeExit.h"#include "llvm/CodeGen/GlobalISel/GenericMachineInstrs.h"#include "llvm/CodeGen/GlobalISel/LegalizerHelper.h"#include "llvm/CodeGen/GlobalISel/LegalizerInfo.h"#include "llvm/CodeGen/GlobalISel/MIPatternMatch.h"#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"#include "llvm/CodeGen/GlobalISel/Utils.h"#include "llvm/CodeGen/MachineFrameInfo.h"#include "llvm/CodeGen/PseudoSourceValueManager.h"#include "llvm/CodeGen/TargetOpcodes.h"#include "llvm/IR/DiagnosticInfo.h"#include "llvm/IR/IntrinsicsAMDGPU.h"#include "llvm/IR/IntrinsicsR600.h"#include "llvm/Support/AMDGPUAddrSpace.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "amdgpu-legalinfo" |
Variables | |
| static constexpr unsigned | MaxRegisterSize = 1024 |
| constexpr LLT | F16 = LLT::float16() |
| constexpr LLT | BF16 = LLT::bfloat16() |
| constexpr LLT | F32 = LLT::float32() |
| constexpr LLT | F64 = LLT::float64() |
| constexpr LLT | V2F16 = LLT::fixed_vector(2, F16) |
| constexpr LLT | V2BF16 = LLT::fixed_vector(2, BF16) |
| constexpr LLT | V2F32 = LLT::fixed_vector(2, F32) |
| constexpr LLT | V2F64 = LLT::fixed_vector(2, F64) |
| constexpr LLT | S1 = LLT::scalar(1) |
| constexpr LLT | S8 = LLT::scalar(8) |
| constexpr LLT | S16 = LLT::scalar(16) |
| constexpr LLT | S32 = LLT::scalar(32) |
| constexpr LLT | S64 = LLT::scalar(64) |
| constexpr LLT | S96 = LLT::scalar(96) |
| constexpr LLT | S128 = LLT::scalar(128) |
| constexpr LLT | S160 = LLT::scalar(160) |
| constexpr LLT | S192 = LLT::scalar(192) |
| constexpr LLT | S224 = LLT::scalar(224) |
| constexpr LLT | S256 = LLT::scalar(256) |
| constexpr LLT | S512 = LLT::scalar(512) |
| constexpr LLT | S1024 = LLT::scalar(1024) |
| constexpr LLT | MaxScalar = LLT::scalar(MaxRegisterSize) |
| constexpr LLT | V2S8 = LLT::fixed_vector(2, 8) |
| constexpr LLT | V2S16 = LLT::fixed_vector(2, 16) |
| constexpr LLT | V4S16 = LLT::fixed_vector(4, 16) |
| constexpr LLT | V6S16 = LLT::fixed_vector(6, 16) |
| constexpr LLT | V8S16 = LLT::fixed_vector(8, 16) |
| constexpr LLT | V10S16 = LLT::fixed_vector(10, 16) |
| constexpr LLT | V12S16 = LLT::fixed_vector(12, 16) |
| constexpr LLT | V16S16 = LLT::fixed_vector(16, 16) |
| constexpr LLT | V2S32 = LLT::fixed_vector(2, 32) |
| constexpr LLT | V3S32 = LLT::fixed_vector(3, 32) |
| constexpr LLT | V4S32 = LLT::fixed_vector(4, 32) |
| constexpr LLT | V5S32 = LLT::fixed_vector(5, 32) |
| constexpr LLT | V6S32 = LLT::fixed_vector(6, 32) |
| constexpr LLT | V7S32 = LLT::fixed_vector(7, 32) |
| constexpr LLT | V8S32 = LLT::fixed_vector(8, 32) |
| constexpr LLT | V9S32 = LLT::fixed_vector(9, 32) |
| constexpr LLT | V10S32 = LLT::fixed_vector(10, 32) |
| constexpr LLT | V11S32 = LLT::fixed_vector(11, 32) |
| constexpr LLT | V12S32 = LLT::fixed_vector(12, 32) |
| constexpr LLT | V16S32 = LLT::fixed_vector(16, 32) |
| constexpr LLT | V32S32 = LLT::fixed_vector(32, 32) |
| constexpr LLT | V2S64 = LLT::fixed_vector(2, 64) |
| constexpr LLT | V3S64 = LLT::fixed_vector(3, 64) |
| constexpr LLT | V4S64 = LLT::fixed_vector(4, 64) |
| constexpr LLT | V5S64 = LLT::fixed_vector(5, 64) |
| constexpr LLT | V6S64 = LLT::fixed_vector(6, 64) |
| constexpr LLT | V7S64 = LLT::fixed_vector(7, 64) |
| constexpr LLT | V8S64 = LLT::fixed_vector(8, 64) |
| constexpr LLT | V16S64 = LLT::fixed_vector(16, 64) |
| constexpr LLT | V2S128 = LLT::fixed_vector(2, 128) |
| constexpr LLT | V4S128 = LLT::fixed_vector(4, 128) |
| constexpr std::initializer_list< LLT > | AllScalarTypes |
| constexpr std::initializer_list< LLT > | AllS16Vectors |
| constexpr std::initializer_list< LLT > | AllS32Vectors |
| constexpr std::initializer_list< LLT > | AllS64Vectors |
| constexpr std::initializer_list< LLT > | AllVectors |
| static constexpr unsigned | SPDenormModeBitField |
| static constexpr unsigned | FPEnvModeBitField |
| static constexpr unsigned | FPEnvTrapBitField |
This file implements the targeting of the Machinelegalizer class for AMDGPU.
Definition in file AMDGPULegalizerInfo.cpp.
| #define DEBUG_TYPE "amdgpu-legalinfo" |
Definition at line 40 of file AMDGPULegalizerInfo.cpp.
|
static |
Definition at line 3705 of file AMDGPULegalizerInfo.cpp.
References llvm::MachineInstr::FmAfn.
Referenced by llvm::AMDGPULegalizerInfo::legalizeFExp(), llvm::AMDGPULegalizerInfo::legalizeFPow(), and llvm::AMDGPULegalizerInfo::legalizeFSQRTF32().
|
static |
Definition at line 191 of file AMDGPULegalizerInfo.cpp.
References getBitcastRegisterType().
|
static |
Definition at line 198 of file AMDGPULegalizerInfo.cpp.
References assert(), llvm::ElementCount::getFixed(), llvm::LLT::integer(), llvm::LLT::scalarOrVector(), and llvm::Size.
|
static |
Definition at line 6853 of file AMDGPULegalizerInfo.cpp.
Referenced by buildTFEBufferLoad(), and llvm::AMDGPULegalizerInfo::legalizeBufferLoad().
|
static |
Definition at line 4000 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::legalizeFExp10Unsafe(), llvm::AMDGPULegalizerInfo::legalizeFExpUnsafeImpl(), and llvm::AMDGPULegalizerInfo::legalizeFPow().
|
static |
Definition at line 6874 of file AMDGPULegalizerInfo.cpp.
References B(), buildBufferLoad(), llvm::LLT::fixed_vector(), llvm::LLT::integer(), Opc, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::ArrayRef< T >::size().
Referenced by llvm::AMDGPULegalizerInfo::legalizeBufferLoad().
|
static |
Definition at line 678 of file AMDGPULegalizerInfo.cpp.
References B(), castBufferRsrcToV4I32(), llvm::MachineOperand::getReg(), hasBufferRsrcWorkaround(), MI, and llvm::MachineOperand::setReg().
Referenced by llvm::AMDGPULegalizerInfo::legalizeBufferAtomic(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeBufferStore(), llvm::AMDGPULegalizerInfo::legalizeSBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeSBufferPrefetch(), and llvm::AMDGPULegalizerInfo::legalizeStore().
|
static |
Mutates IR (typicaly a load instruction) to use a <4 x s32> as the initial type of the operand idx and then to transform it to a p8 via bitcasts and inttoptr.
In addition, handle vectors of p8. Returns the new type.
Definition at line 618 of file AMDGPULegalizerInfo.cpp.
References B(), getBufferRsrcRegisterType(), getBufferRsrcScalarType(), llvm::MachineOperand::getReg(), hasBufferRsrcWorkaround(), I, llvm::LLT::integer(), MI, MRI, NumParts, Scalar, and llvm::MachineOperand::setReg().
Referenced by llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeLoad(), and llvm::AMDGPULegalizerInfo::legalizeSBufferLoad().
|
static |
Cast a buffer resource (an address space 8 pointer) into a 4xi32, which is the form in which the value must be in order to be passed to the low-level representations used for MUBUF/MTBUF intrinsics.
This is a hack, which is needed in order to account for the fact that we can't define a register class for s128 without breaking SelectionDAG.
Definition at line 659 of file AMDGPULegalizerInfo.cpp.
References B(), getBufferRsrcRegisterType(), getBufferRsrcScalarType(), I, llvm::LLT::integer(), MRI, NumParts, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Scalar.
Referenced by castBufferRsrcArgToV4I32(), and llvm::AMDGPULegalizerInfo::fixStoreSourceType().
|
static |
Convert from separate vaddr components to a single vector address register, and replace the remaining operands with $noreg.
Definition at line 7334 of file AMDGPULegalizerInfo.cpp.
References assert(), B(), llvm::LLT::fixed_vector(), llvm::SrcOp::getReg(), I, llvm::LLT::integer(), MI, llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic().
|
static |
Definition at line 279 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getElementType(), llvm::LLT::getSizeInBits(), llvm::LLT::isVector(), and llvm::LLT::scalar().
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
static |
Definition at line 5360 of file AMDGPULegalizerInfo.cpp.
References B(), llvm::bit_cast(), F32, and llvm::LLT::integer().
Referenced by llvm::AMDGPULegalizerInfo::legalizeUnsignedDIV_REM64Impl().
|
static |
Definition at line 2839 of file AMDGPULegalizerInfo.cpp.
References B(), llvm::Hi, and llvm::LLT::integer().
|
static |
Definition at line 105 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getElementType(), llvm::ElementCount::getFixed(), llvm::LLT::scalarOrVector(), and llvm::Size.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
Definition at line 179 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::fixed_vector(), llvm::LLT::integer(), and llvm::Size.
Referenced by bitcastToRegisterType(), llvm::AMDGPULegalizerInfo::fixStoreSourceType(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), and llvm::AMDGPULegalizerInfo::legalizeSBufferLoad().
|
static |
Definition at line 7108 of file AMDGPULegalizerInfo.cpp.
References llvm_unreachable.
Referenced by llvm::AMDGPULegalizerInfo::legalizeBufferAtomic().
Definition at line 172 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::fixed_vector(), and llvm::LLT::integer().
Referenced by castBufferRsrcFromV4I32(), and castBufferRsrcToV4I32().
Definition at line 165 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::scalar(), and llvm::LLT::vector().
Referenced by castBufferRsrcFromV4I32(), and castBufferRsrcToV4I32().
|
static |
Definition at line 3785 of file AMDGPULegalizerInfo.cpp.
References B(), llvm::FMul, X, and Y.
Definition at line 58 of file AMDGPULegalizerInfo.cpp.
References llvm::Log2_32_Ceil(), and llvm::LLT::scalar().
Referenced by llvm::AMDGPULegalizerInfo::legalizeSBufferLoad().
Definition at line 51 of file AMDGPULegalizerInfo.cpp.
References llvm::ElementCount::getFixed(), llvm::LLT::getNumElements(), and llvm::Log2_32_Ceil().
Referenced by llvm::AMDGPULegalizerInfo::legalizeSBufferLoad().
|
static |
Definition at line 136 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::integer().
Definition at line 511 of file AMDGPULegalizerInfo.cpp.
References llvm::AMDGPUAS::BUFFER_RESOURCE, and hasBufferRsrcWorkaround().
Referenced by castBufferRsrcArgToV4I32(), castBufferRsrcFromV4I32(), llvm::AMDGPULegalizerInfo::fixStoreSourceType(), hasBufferRsrcWorkaround(), isLoadStoreLegal(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeLoad(), llvm::AMDGPULegalizerInfo::legalizeSBufferLoad(), llvm::AMDGPULegalizerInfo::legalizeStore(), and loadStoreBitcastWorkaround().
|
static |
Definition at line 270 of file AMDGPULegalizerInfo.cpp.
References llvm::SIRegisterInfo::getSGPRClassForBitWidth(), and isRegisterType().
|
static |
Return true if the value is a known valid address, such that a null check is not necessary.
Definition at line 2573 of file AMDGPULegalizerInfo.cpp.
References llvm::AMDGPU::getNullPointerValue(), llvm::ConstantInt::getSExtValue(), and MRI.
Referenced by llvm::AMDGPULegalizerInfo::legalizeAddrSpaceCast().
|
static |
Definition at line 544 of file AMDGPULegalizerInfo.cpp.
References hasBufferRsrcWorkaround(), isLoadStoreSizeLegal(), isRegisterType(), loadStoreBitcastWorkaround(), and llvm::LegalityQuery::Types.
|
static |
Definition at line 435 of file AMDGPULegalizerInfo.cpp.
References assert(), llvm::AMDGPUAS::CONSTANT_ADDRESS_32BIT, maxSizeForAddrSpace(), llvm::LegalityQuery::MMODescrs, llvm::NotAtomic, llvm::LegalityQuery::Opcode, RegSize, llvm::Size, TLI, llvm::LegalityQuery::Types, and uint64_t.
Referenced by isLoadStoreLegal().
|
static |
Definition at line 4903 of file AMDGPULegalizerInfo.cpp.
References llvm::getIConstantVRegSExtVal(), MI, and MRI.
Referenced by llvm::MCAsmParser::parseAtSpecifier(), llvm::MCAsmParserExtension::parseDirectiveCGProfile(), and verifyCFIntrinsic().
|
static |
Definition at line 368 of file AMDGPULegalizerInfo.cpp.
References AllS16Vectors, AllS32Vectors, AllS64Vectors, AllScalarTypes, llvm::is_contained(), S16, and llvm::LLT::scalar().
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and isRegisterClassType().
|
static |
Definition at line 378 of file AMDGPULegalizerInfo.cpp.
References isRegisterClassType().
|
static |
Definition at line 230 of file AMDGPULegalizerInfo.cpp.
References MaxRegisterSize, and llvm::Size.
Referenced by isRegisterType(), and shouldBitcastLoadStoreType().
|
static |
Definition at line 248 of file AMDGPULegalizerInfo.cpp.
References isRegisterSize(), and isRegisterVectorType().
Referenced by isIllegalRegisterType(), isLoadStoreLegal(), isRegisterType(), llvm::AMDGPULegalizerInfo::legalizeLoad(), llvm::PPCLegalizerInfo::PPCLegalizerInfo(), and shouldBitcastLoadStoreType().
|
static |
Definition at line 260 of file AMDGPULegalizerInfo.cpp.
References isRegisterType().
Definition at line 235 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getSizeInBits().
Referenced by shouldBitcastLoadStoreType().
Definition at line 240 of file AMDGPULegalizerInfo.cpp.
Referenced by isRegisterType().
|
static |
Definition at line 67 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getElementType(), and llvm::LLT::getSizeInBits().
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
static |
Definition at line 397 of file AMDGPULegalizerInfo.cpp.
References llvm::isPowerOf2_64(), and isWideScalarExtLoadTruncStore().
|
static |
Definition at line 387 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::isVector().
Referenced by isTruncStoreToSizePowerOf2().
|
static |
Definition at line 88 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getScalarType(), and llvm::LLT::getSizeInBits().
|
static |
Definition at line 525 of file AMDGPULegalizerInfo.cpp.
References hasBufferRsrcWorkaround(), and llvm::Size.
Referenced by isLoadStoreLegal(), and shouldBitcastLoadStoreType().
|
static |
Definition at line 408 of file AMDGPULegalizerInfo.cpp.
References llvm::AMDGPUAS::BUFFER_RESOURCE, llvm::AMDGPUAS::CONSTANT_ADDRESS, llvm::AMDGPUAS::CONSTANT_ADDRESS_32BIT, llvm::AMDGPUAS::GLOBAL_ADDRESS, llvm::AMDGPUAS::LOCAL_ADDRESS, and llvm::AMDGPUAS::PRIVATE_ADDRESS.
Referenced by isLoadStoreSizeLegal(), and shouldWidenLoad().
|
static |
Definition at line 144 of file AMDGPULegalizerInfo.cpp.
References assert(), llvm::LLT::fixed_vector(), llvm::LLT::getNumElements(), llvm::SIRegisterInfo::getSGPRClassForBitWidth(), and MaxRegisterSize.
|
static |
Definition at line 119 of file AMDGPULegalizerInfo.cpp.
References assert(), llvm::LLT::fixed_vector(), llvm::LLT::getElementType(), llvm::LLT::getSizeInBits(), and llvm::Size.
|
static |
Definition at line 3709 of file AMDGPULegalizerInfo.cpp.
References llvm::MachineFunction::getDenormalMode(), llvm::MachineFunction::getRegInfo(), llvm::APFloatBase::IEEEsingle(), llvm::DenormalMode::Input, llvm::DenormalMode::PreserveSign, and valueIsKnownNeverF32Denorm().
Referenced by llvm::AMDGPULegalizerInfo::getScaledLogInput(), llvm::AMDGPULegalizerInfo::legalizeFExp10Unsafe(), llvm::AMDGPULegalizerInfo::legalizeFExp2(), llvm::AMDGPULegalizerInfo::legalizeFExpUnsafe(), and llvm::AMDGPULegalizerInfo::legalizeFSQRTF32().
|
static |
Definition at line 223 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getNumElements(), and llvm::LLT::isVector().
|
static |
Definition at line 96 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::fixed_vector(), and llvm::LLT::getElementType().
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
static |
Turn a set of f16 typed registers in AddrRegs into a dword sized vector with f16 typed elements.
Definition at line 7272 of file AMDGPULegalizerInfo.cpp.
References assert(), B(), llvm::AMDGPU::ImageDimIntrinsicInfo::BiasIndex, llvm::AMDGPU::ImageDimIntrinsicInfo::CoordStart, F16, llvm::LLT::fixed_vector(), llvm::SrcOp::getReg(), llvm::AMDGPU::ImageDimIntrinsicInfo::GradientStart, I, MI, llvm::AMDGPU::ImageDimIntrinsicInfo::NumBiasArgs, llvm::AMDGPU::ImageDimIntrinsicInfo::NumGradients, llvm::SmallVectorTemplateBase< T, bool >::push_back(), V2F16, llvm::AMDGPU::ImageDimIntrinsicInfo::VAddrEnd, and llvm::AMDGPU::ImageDimIntrinsicInfo::VAddrStart.
Referenced by llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic().
|
static |
Definition at line 5198 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::legalizeWorkitemIDIntrinsic().
Return true if a load or store of the type should be lowered with a bitcast to a different type.
Definition at line 552 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getSizeInBits(), isRegisterSize(), isRegisterType(), isRegisterVectorElementType(), llvm::LLT::isVector(), loadStoreBitcastWorkaround(), and llvm::Size.
Referenced by llvm::AMDGPULegalizerInfo::fixStoreSourceType(), llvm::AMDGPULegalizerInfo::legalizeBufferLoad(), and llvm::AMDGPULegalizerInfo::legalizeSBufferLoad().
|
static |
Definition at line 605 of file AMDGPULegalizerInfo.cpp.
References llvm::LegalityQuery::MMODescrs, llvm::NotAtomic, shouldWidenLoad(), and llvm::LegalityQuery::Types.
|
static |
Return true if we should legalize a load by widening an odd sized memory access up to the alignment.
Note this case when the memory access itself changes, not the size of the result register.
Definition at line 571 of file AMDGPULegalizerInfo.cpp.
References llvm::Fast, llvm::LLT::getSizeInBits(), llvm::isPowerOf2_32(), maxSizeForAddrSpace(), llvm::MachineMemOperand::MOLoad, llvm::NextPowerOf2(), TLI, and uint64_t.
Referenced by llvm::AMDGPULegalizerInfo::legalizeLoad(), and shouldWidenLoad().
|
static |
Definition at line 81 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getSizeInBits().
|
static |
Definition at line 4426 of file AMDGPULegalizerInfo.cpp.
References llvm::getOpcodeDef(), and MRI.
Referenced by llvm::AMDGPULegalizerInfo::legalizeFFloor().
|
static |
Definition at line 5788 of file AMDGPULegalizerInfo.cpp.
References B(), Enable, FP_DENORM_FLUSH_NONE, Mode, and SPDenormModeBitField.
Referenced by llvm::AMDGPULegalizerInfo::legalizeFDIV32().
|
static |
Return true if it's known that Src can never be an f32 denormal value.
Definition at line 3670 of file AMDGPULegalizerInfo.cpp.
References llvm::cast(), DefMI, F16, getIntrinsicID(), and MRI.
|
static |
Definition at line 209 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getSizeInBits(), llvm::LLT::isVector(), and llvm::Size.
|
static |
Definition at line 216 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::getSizeInBits(), llvm::LLT::isVector(), and llvm::Size.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
static |
Definition at line 4912 of file AMDGPULegalizerInfo.cpp.
References llvm::MachineBasicBlock::end(), llvm::MachineFunction::end(), llvm::eraseInstr(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineOperand::getMBB(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), isNot(), MI, MRI, llvm::Next, and UseMI.
Referenced by llvm::AMDGPULegalizerInfo::legalizeIntrinsic().
Definition at line 3504 of file AMDGPULegalizerInfo.cpp.
References llvm::LLT::changeElementCount(), llvm::LLT::changeElementSize(), llvm::ElementCount::getFixed(), and llvm::PowerOf2Ceil().
Referenced by llvm::AMDGPULegalizerInfo::legalizeLoad().
|
constexpr |
Definition at line 351 of file AMDGPULegalizerInfo.cpp.
Referenced by isRegisterClassType().
|
constexpr |
Definition at line 354 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and isRegisterClassType().
|
constexpr |
Definition at line 358 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and isRegisterClassType().
|
constexpr |
Definition at line 348 of file AMDGPULegalizerInfo.cpp.
Referenced by isRegisterClassType().
|
constexpr |
|
constexpr |
Definition at line 290 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 289 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::AMDGPULegalizerInfo::legalizeFastUnsafeFDIV(), llvm::AMDGPULegalizerInfo::legalizeFDIV(), llvm::AMDGPULegalizerInfo::legalizeFDIV16(), llvm::AMDGPULegalizerInfo::legalizeFExp(), llvm::AMDGPULegalizerInfo::legalizeFExp2(), llvm::AMDGPULegalizerInfo::legalizeFFREXP(), llvm::AMDGPULegalizerInfo::legalizeFlog2(), llvm::AMDGPULegalizerInfo::legalizeFlogCommon(), llvm::AMDGPULegalizerInfo::legalizeFlogUnsafe(), llvm::AMDGPULegalizerInfo::legalizeFMad(), llvm::AMDGPULegalizerInfo::legalizeFSQRT(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), packImage16bitOpsToDwords(), and valueIsKnownNeverF32Denorm().
|
constexpr |
Definition at line 291 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), buildExp(), emitReciprocalU64(), llvm::yaml::ScalarEnumerationTraits< WasmYAML::ValueType >::enumeration(), llvm::TargetLowering::expandFP_ROUND(), llvm::AMDGPULegalizerInfo::getScaledLogInput(), getTcgen05LdRedID(), llvm::AMDGPULegalizerInfo::legalizeFDIV(), llvm::AMDGPULegalizerInfo::legalizeFDIV16(), llvm::AMDGPULegalizerInfo::legalizeFDIV32(), llvm::AMDGPULegalizerInfo::legalizeFDIVFastIntrin(), llvm::AMDGPULegalizerInfo::legalizeFExp(), llvm::AMDGPULegalizerInfo::legalizeFExp10Unsafe(), llvm::AMDGPULegalizerInfo::legalizeFExp2(), llvm::AMDGPULegalizerInfo::legalizeFExpUnsafe(), llvm::AMDGPULegalizerInfo::legalizeFlog2(), llvm::AMDGPULegalizerInfo::legalizeFlogCommon(), llvm::AMDGPULegalizerInfo::legalizeFlogUnsafe(), llvm::AMDGPULegalizerInfo::legalizeFMad(), llvm::AMDGPULegalizerInfo::legalizeFPow(), llvm::AMDGPULegalizerInfo::legalizeFPTOI(), llvm::AMDGPULegalizerInfo::legalizeFSQRT(), llvm::AMDGPULegalizerInfo::legalizeFSQRTF16(), llvm::AMDGPULegalizerInfo::legalizeFSQRTF32(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::AMDGPULegalizerInfo::legalizeITOFP(), llvm::AMDGPULegalizerInfo::legalizeRsqClampIntrinsic(), and llvm::AMDGPULegalizerInfo::legalizeUnsignedDIV_REM32Impl().
|
constexpr |
Definition at line 292 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), combineBitcast(), llvm::yaml::ScalarEnumerationTraits< WasmYAML::ValueType >::enumeration(), llvm::AMDGPULegalizerInfo::legalizeFceil(), llvm::AMDGPULegalizerInfo::legalizeFDIV(), llvm::AMDGPULegalizerInfo::legalizeFDIV64(), llvm::AMDGPULegalizerInfo::legalizeFExp(), llvm::AMDGPULegalizerInfo::legalizeFExp2(), llvm::AMDGPULegalizerInfo::legalizeFEXPF64(), llvm::AMDGPULegalizerInfo::legalizeFFloor(), llvm::AMDGPULegalizerInfo::legalizeFPTOI(), llvm::AMDGPULegalizerInfo::legalizeFSQRT(), llvm::AMDGPULegalizerInfo::legalizeFSQRTF64(), llvm::AMDGPULegalizerInfo::legalizeIntrinsicTrunc(), llvm::AMDGPULegalizerInfo::legalizeITOFP(), llvm::AMDGPULegalizerInfo::legalizeRsqClampIntrinsic(), and PerformExtractEltToVMOVRRD().
|
staticconstexpr |
Definition at line 8307 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::legalizeGetFPEnv(), and llvm::AMDGPULegalizerInfo::legalizeSetFPEnv().
|
staticconstexpr |
Definition at line 8310 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::legalizeGetFPEnv(), and llvm::AMDGPULegalizerInfo::legalizeSetFPEnv().
|
staticconstexpr |
Definition at line 48 of file AMDGPULegalizerInfo.cpp.
Referenced by isRegisterSize(), and moreElementsToNextExistingRegClass().
|
constexpr |
Definition at line 311 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 298 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::AMDGPURegisterBankInfo::applyMappingMAD_64_32(), llvm::BinaryOperator::BinaryOperator(), llvm::AMDGPULegalizerInfo::buildMultiply(), llvm::BinaryOperator::Create(), llvm::CmpInst::Create(), llvm::SelectInst::Create(), llvm::sandboxir::CmpInst::create(), CreateAdd(), CreateMul(), CreateNeg(), llvm::CmpInst::CreateWithCopiedFlags(), llvm::sandboxir::CmpInst::createWithCopiedFlags(), llvm::BinaryOperator::DECLARE_TRANSPARENT_OPERAND_ACCESSORS(), llvm::PMDataManager::dumpPassInfo(), llvm::AMDGPURegisterBankInfo::executeInWaterfallLoop(), foldShuffleOfUnaryOps(), getAnySgprS1(), getNearestMatchingScope(), getPRMTSelector(), llvm::SelectionDAG::getStrcmp(), llvm::SelectionDAG::getStrstr(), gsiRecordCmp(), llvm::ScalarEvolution::haveSameSign(), INITIALIZE_PASS(), llvm::isEqual(), llvm::Mips::isGpOff(), isMemOPCandidate(), llvm::AMDGPULegalizerInfo::legalizeFceil(), llvm::AMDGPULegalizerInfo::legalizeFDIV32(), llvm::AMDGPULegalizerInfo::legalizeFDIV64(), llvm::AMDGPULegalizerInfo::legalizeFDIVFastIntrin(), llvm::AMDGPULegalizerInfo::legalizeFEXPF64(), llvm::AMDGPULegalizerInfo::legalizeFFloor(), llvm::AMDGPULegalizerInfo::legalizeFPow(), llvm::AMDGPULegalizerInfo::legalizeIntrinsicTrunc(), llvm::AMDGPULegalizerInfo::legalizeUnsignedDIV_REM32Impl(), llvm::AMDGPULegalizerInfo::legalizeUnsignedDIV_REM64Impl(), llvm::LegalizerHelper::lowerFPTOSI(), llvm::LegalizerHelper::lowerFPTOUI(), llvm::LegalizerHelper::lowerFPTRUNC_F64_TO_F16(), llvm::LegalizerHelper::lowerU64ToF32WithSITOFP(), matchBinaryPermuteShuffle(), matchUniformityAndLLT(), llvm::ARMTargetLowering::PerformMVETruncCombine(), performVectorExtCombine(), llvm::PPCLegalizerInfo::PPCLegalizerInfo(), runImpl(), llvm::set_difference(), llvm::set_intersect(), llvm::set_intersection(), llvm::set_intersection_impl(), llvm::set_intersects(), llvm::detail::set_intersects_impl(), llvm::set_is_subset(), llvm::set_subtract(), llvm::set_subtract(), llvm::set_union(), simplifyLoopInst(), llvm::GISelCSEInfo::verify(), and visitORCommutative().
|
constexpr |
Definition at line 310 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 304 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and matchUniformityAndLLT().
|
constexpr |
Definition at line 300 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::AMDGPURegisterBankInfo::handleD16VData(), llvm::HexagonAsmPrinter::HexagonProcessInstruction(), isRegisterClassType(), LLTToId(), matchUniformityAndLLT(), and llvm::PPCLegalizerInfo::PPCLegalizerInfo().
|
constexpr |
Definition at line 305 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 306 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 307 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 308 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 301 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::AMDGPURegisterBankInfo::applyMappingBFE(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), llvm::AMDGPURegisterBankInfo::applyMappingLoad(), llvm::AMDGPURegisterBankInfo::applyMappingMAD_64_32(), llvm::AMDGPURegisterBankInfo::applyMappingSBufferLoad(), llvm::AMDGPURegisterBankInfo::buildReadFirstLane(), llvm::AMDGPULegalizerInfo::getSegmentAperture(), llvm::AMDGPURegisterBankInfo::handleD16VData(), LLTToId(), llvm::LegalizerHelper::lowerFPTOSI(), llvm::LegalizerHelper::lowerFPTOUI(), llvm::LegalizerHelper::lowerU64ToF32WithSITOFP(), llvm::LegalizerHelper::lowerU64ToF64BitFloatOps(), matchUniformityAndLLT(), llvm::PPCLegalizerInfo::PPCLegalizerInfo(), reinsertVectorIndexAdd(), llvm::AMDGPURegisterBankInfo::setBufferOffsets(), llvm::AMDGPURegisterBankInfo::splitBufferOffsets(), and unpackV2S16ToS32().
|
constexpr |
Definition at line 309 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 302 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::AMDGPURegisterBankInfo::applyMappingBFE(), llvm::AMDGPURegisterBankInfo::applyMappingImpl(), LLTToId(), llvm::LegalizerHelper::lowerFPTOSI(), llvm::LegalizerHelper::lowerFPTOUI(), llvm::LegalizerHelper::lowerU64ToF32WithSITOFP(), llvm::LegalizerHelper::lowerU64ToF64BitFloatOps(), matchUniformityAndLLT(), and llvm::PPCLegalizerInfo::PPCLegalizerInfo().
|
constexpr |
Definition at line 299 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and llvm::PPCLegalizerInfo::PPCLegalizerInfo().
|
constexpr |
Definition at line 303 of file AMDGPULegalizerInfo.cpp.
|
staticconstexpr |
Definition at line 5783 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::legalizeFDIV32(), and toggleSPDenormMode().
|
constexpr |
Definition at line 318 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 330 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 331 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 319 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 332 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 320 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 333 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 343 of file AMDGPULegalizerInfo.cpp.
Definition at line 294 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
Definition at line 293 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), and packImage16bitOpsToDwords().
Definition at line 295 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and convertToIRType().
Definition at line 296 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and convertToIRType().
|
constexpr |
Definition at line 345 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 314 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), LLTToId(), and matchUniformityAndLLT().
|
constexpr |
Definition at line 322 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), LLTToId(), and matchUniformityAndLLT().
|
constexpr |
Definition at line 336 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo(), and llvm::PPCLegalizerInfo::PPCLegalizerInfo().
|
constexpr |
Definition at line 313 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 334 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 323 of file AMDGPULegalizerInfo.cpp.
Referenced by LLTToId(), and matchUniformityAndLLT().
|
constexpr |
Definition at line 337 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 346 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 315 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::AMDGPULegalizerInfo::AMDGPULegalizerInfo().
|
constexpr |
Definition at line 324 of file AMDGPULegalizerInfo.cpp.
Referenced by LLTToId(), matchUniformityAndLLT(), and llvm::PPCLegalizerInfo::PPCLegalizerInfo().
|
constexpr |
Definition at line 338 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 325 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 339 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 316 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 326 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 340 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 327 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 341 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 317 of file AMDGPULegalizerInfo.cpp.
Referenced by llvm::PPCLegalizerInfo::PPCLegalizerInfo().
|
constexpr |
Definition at line 328 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 342 of file AMDGPULegalizerInfo.cpp.
|
constexpr |
Definition at line 329 of file AMDGPULegalizerInfo.cpp.