LLVM 22.0.0git
|
This is the parent TargetLowering class for hardware code gen targets. More...
#include "AMDGPUISelLowering.h"
#include "AMDGPU.h"
#include "AMDGPUInstrInfo.h"
#include "AMDGPUMachineFunction.h"
#include "AMDGPUMemoryUtils.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/CodeGen/Analysis.h"
#include "llvm/CodeGen/GlobalISel/GISelValueTracking.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/IntrinsicsAMDGPU.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/KnownBits.h"
#include "llvm/Target/TargetMachine.h"
#include "AMDGPUGenCallingConv.inc"
Go to the source code of this file.
Macros | |
#define | NODE_NAME_CASE(node) |
Variables | |
static cl::opt< bool > | AMDGPUBypassSlowDiv ("amdgpu-bypass-slow-div", cl::desc("Skip 64-bit divide for dynamic 32-bit values"), cl::init(true)) |
This is the parent TargetLowering class for hardware code gen targets.
Definition in file AMDGPUISelLowering.cpp.
#define NODE_NAME_CASE | ( | node | ) |
Definition at line 5681 of file AMDGPUISelLowering.cpp.
Referenced by llvm::AMDGPUTargetLowering::getTargetNodeName(), llvm::LoongArchTargetLowering::getTargetNodeName(), and llvm::X86TargetLowering::getTargetNodeName().
|
static |
Definition at line 3831 of file AMDGPUISelLowering.cpp.
References DL, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getSignedConstant(), and llvm::Offset.
Referenced by llvm::AMDGPUTargetLowering::PerformDAGCombine().
|
static |
Definition at line 4760 of file AMDGPUISelLowering.cpp.
References llvm::TargetLowering::DAGCombinerInfo::AddToWorklist(), Cond, llvm::TargetLowering::DAGCombinerInfo::DAG, llvm::SDValue::getNode(), llvm::SelectionDAG::getNode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueType(), and llvm::ISD::SELECT.
Referenced by llvm::AMDGPUTargetLowering::foldFreeOpFromSelect().
|
static |
Definition at line 2463 of file AMDGPUISelLowering.cpp.
References llvm::AMDGPUISD::BFE_U32, llvm::SelectionDAG::getConstant(), llvm::SelectionDAG::getNode(), llvm::Hi, and llvm::ISD::SUB.
Referenced by llvm::AMDGPULegalizerInfo::legalizeIntrinsicTrunc(), and llvm::AMDGPUTargetLowering::LowerFTRUNC().
Definition at line 700 of file AMDGPUISelLowering.cpp.
References llvm::ISD::BUILD_VECTOR, fnegFoldsIntoOpcode(), llvm::SDValue::getNumOperands(), llvm::SDValue::getOpcode(), llvm::SDValue::getOperand(), llvm::SDValue::getValueSizeInBits(), llvm::SDValue::getValueType(), N, Opc, and llvm::ISD::SELECT.
Referenced by llvm::AMDGPUTargetLowering::foldFreeOpFromSelect(), llvm::AMDGPUTargetLowering::performFNegCombine(), and llvm::AMDGPUTargetLowering::shouldFoldFNegIntoSrc().
|
static |
Definition at line 661 of file AMDGPUISelLowering.cpp.
References llvm::ISD::FADD, llvm::ISD::FCANONICALIZE, llvm::ISD::FMA, llvm::ISD::FMAD, llvm::AMDGPUISD::FMAX_LEGACY, llvm::AMDGPUISD::FMED3, llvm::AMDGPUISD::FMIN_LEGACY, llvm::ISD::FMUL, llvm::AMDGPUISD::FMUL_LEGACY, llvm::ISD::FSUB, llvm_unreachable, Opc, llvm::AMDGPUISD::RCP, llvm::AMDGPUISD::RCP_IFLAG, llvm::AMDGPUISD::RCP_LEGACY, llvm::ISD::SELECT, and llvm::AMDGPUISD::SIN_HW.
Referenced by fnegFoldsIntoOp().
If V
is an add of a constant 1, returns the other operand.
Otherwise return SDValue().
Definition at line 4492 of file AMDGPUISelLowering.cpp.
References llvm::ISD::ADD, llvm::isOneConstant(), and SDValue().
Referenced by llvm::AMDGPUTargetLowering::performMulCombine().
|
static |
Definition at line 2755 of file AMDGPUISelLowering.cpp.
References llvm::CallingConv::C, llvm::ISD::FADD, llvm::ISD::FMUL, llvm::SelectionDAG::getNode(), Mul, X, and Y.
Referenced by llvm::AMDGPULegalizerInfo::legalizeFExp(), llvm::AMDGPULegalizerInfo::legalizeFlogCommon(), llvm::AMDGPUTargetLowering::lowerFEXP(), and llvm::AMDGPUTargetLowering::LowerFLOGCommon().
|
static |
Definition at line 4474 of file AMDGPUISelLowering.cpp.
References llvm::ISD::BUILD_PAIR, llvm::SelectionDAG::getNode(), llvm::AMDGPUISD::MUL_I24, llvm::AMDGPUISD::MUL_U24, llvm::AMDGPUISD::MULHI_I24, llvm::AMDGPUISD::MULHI_U24, Signed, and Size.
Referenced by llvm::AMDGPUTargetLowering::performMulCombine().
|
static |
Definition at line 5588 of file AMDGPUISelLowering.cpp.
References assert(), llvm::MachineFrameInfo::CreateFixedObject(), llvm::MachineFrameInfo::getObjectIndexBegin(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineFrameInfo::getObjectSize(), I, llvm::Offset, and Size.
Referenced by llvm::AMDGPUTargetLowering::loadStackInputValue().
|
static |
Definition at line 737 of file AMDGPUISelLowering.cpp.
References llvm::ISD::CopyToReg, llvm::AMDGPUISD::DIV_SCALE, llvm::ISD::FDIV, llvm::ISD::FREM, llvm::ISD::INTRINSIC_W_CHAIN, llvm::ISD::INTRINSIC_WO_CHAIN, llvm::isa(), N, llvm::ISD::SELECT, and selectSupportsSourceMods().
Definition at line 3846 of file AMDGPUISelLowering.cpp.
References llvm::dyn_cast(), and llvm::SDNode::users().
Referenced by llvm::AMDGPUTargetLowering::performLoadCombine().
Definition at line 4941 of file AMDGPUISelLowering.cpp.
References llvm::AMDGPUISD::FMAX_LEGACY, llvm::AMDGPUISD::FMIN_LEGACY, llvm_unreachable, and Opc.
Definition at line 3179 of file AMDGPUISelLowering.cpp.
References llvm::ISD::CTLZ, llvm::ISD::CTLZ_ZERO_UNDEF, and Opc.
Referenced by llvm::AMDGPUTargetLowering::LowerCTLZ_CTTZ(), llvm::AMDGPUTargetLowering::lowerCTLZResults(), and llvm::AMDGPUTargetLowering::performCtlz_CttzCombine().
Definition at line 3183 of file AMDGPUISelLowering.cpp.
References llvm::ISD::CTTZ, llvm::ISD::CTTZ_ZERO_UNDEF, and Opc.
Referenced by llvm::AMDGPUTargetLowering::LowerCTLZ_CTTZ(), and llvm::AMDGPUTargetLowering::performCtlz_CttzCombine().
|
static |
Definition at line 3772 of file AMDGPUISelLowering.cpp.
References llvm::EVT::getSizeInBits(), and llvm::AMDGPUTargetLowering::numBitsSigned().
Referenced by llvm::AMDGPUTargetLowering::performMulCombine(), llvm::AMDGPUTargetLowering::performMulhsCombine(), and llvm::AMDGPUTargetLowering::performMulLoHiCombine().
Definition at line 4906 of file AMDGPUISelLowering.cpp.
References llvm::APFloat::bitwiseIsEqual(), llvm::APFloatBase::IEEEdouble(), llvm::APFloatBase::IEEEhalf(), and llvm::APFloatBase::IEEEsingle().
|
static |
Definition at line 3768 of file AMDGPUISelLowering.cpp.
References llvm::AMDGPUTargetLowering::numBitsUnsigned().
Referenced by llvm::AMDGPUTargetLowering::performMulCombine(), llvm::AMDGPUTargetLowering::performMulhuCombine(), and llvm::AMDGPUTargetLowering::performMulLoHiCombine().
|
static |
returns
true if the operation will definitely need to use a 64-bit encoding, and thus will use a VOP3 encoding regardless of the source modifiers.
Definition at line 721 of file AMDGPUISelLowering.cpp.
References N, and llvm::ISD::SELECT.
Definition at line 1647 of file AMDGPUISelLowering.cpp.
References llvm::SDValue::getOpcode(), and llvm::SDValue::getOperand().
Referenced by llvm::AMDGPUTargetLowering::combineFMinMaxLegacy().
Definition at line 1654 of file AMDGPUISelLowering.cpp.
References llvm::ISD::FCOPYSIGN, llvm::SDValue::getOpcode(), and llvm::SDValue::getOperand().
Referenced by llvm::AMDGPUTargetLowering::performIntrinsicWOChainCombine().
|
static |
Return true if v_cndmask_b32 will support fabs/fneg source modifiers for the type for ISD::SELECT.
Definition at line 729 of file AMDGPUISelLowering.cpp.
References N.
Referenced by llvm::AMDGPUTargetLowering::foldFreeOpFromSelect(), and hasSourceMods().
|
static |
Definition at line 3779 of file AMDGPUISelLowering.cpp.
References llvm::TargetLowering::DAGCombinerInfo::DAG, llvm::SDNode::getConstantOperandVal(), llvm::APInt::getLowBitsSet(), llvm::SelectionDAG::getNode(), llvm::SDNode::getOpcode(), llvm::SDNode::getOperand(), llvm::SelectionDAG::getTargetLoweringInfo(), llvm::SDNode::getVTList(), llvm::ISD::INTRINSIC_WO_CHAIN, LHS, llvm_unreachable, llvm::AMDGPUISD::MUL_I24, llvm::AMDGPUISD::MUL_U24, llvm::AMDGPUISD::MULHI_I24, llvm::AMDGPUISD::MULHI_U24, RHS, SDValue(), llvm::TargetLowering::SimplifyDemandedBits(), and llvm::TargetLowering::SimplifyMultipleUseDemandedBits().
Referenced by llvm::AMDGPUTargetLowering::PerformDAGCombine(), and llvm::AMDGPUTargetLowering::performIntrinsicWOChainCombine().
Return true if it's known that Src
can never be an f32 denormal value.
Definition at line 2625 of file AMDGPUISelLowering.cpp.
References llvm::ISD::INTRINSIC_WO_CHAIN, and llvm_unreachable.
Referenced by llvm::AMDGPUTargetLowering::needsDenormHandlingF32(), and needsDenormHandlingF32().
Definition at line 5883 of file AMDGPUISelLowering.cpp.
References llvm_unreachable.
Referenced by llvm::AMDGPUTargetLowering::computeKnownBitsForTargetNode().
|
static |
Referenced by llvm::AMDGPUTargetLowering::AMDGPUTargetLowering().