LLVM 17.0.0git
|
Classes | |
struct | CvtF32UByteMatchInfo |
struct | FMinFMaxLegacyInfo |
Public Member Functions | |
AMDGPUPostLegalizerCombinerHelper (MachineIRBuilder &B, AMDGPUCombinerHelper &Helper) | |
bool | matchFMinFMaxLegacy (MachineInstr &MI, FMinFMaxLegacyInfo &Info) |
void | applySelectFCmpToFMinToFMaxLegacy (MachineInstr &MI, const FMinFMaxLegacyInfo &Info) |
bool | matchUCharToFloat (MachineInstr &MI) |
void | applyUCharToFloat (MachineInstr &MI) |
bool | matchRcpSqrtToRsq (MachineInstr &MI, std::function< void(MachineIRBuilder &)> &MatchInfo) |
bool | matchCvtF32UByteN (MachineInstr &MI, CvtF32UByteMatchInfo &MatchInfo) |
void | applyCvtF32UByteN (MachineInstr &MI, const CvtF32UByteMatchInfo &MatchInfo) |
bool | matchRemoveFcanonicalize (MachineInstr &MI, Register &Reg) |
bool | matchCombineSignExtendInReg (MachineInstr &MI, MachineInstr *&MatchInfo) |
void | applyCombineSignExtendInReg (MachineInstr &MI, MachineInstr *&MatchInfo) |
Protected Attributes | |
MachineIRBuilder & | B |
MachineFunction & | MF |
MachineRegisterInfo & | MRI |
const GCNSubtarget & | Subtarget |
const SIInstrInfo & | TII |
AMDGPUCombinerHelper & | Helper |
Definition at line 34 of file AMDGPUPostLegalizerCombiner.cpp.
|
inline |
Definition at line 44 of file AMDGPUPostLegalizerCombiner.cpp.
void AMDGPUPostLegalizerCombinerHelper::applyCombineSignExtendInReg | ( | MachineInstr & | MI, |
MachineInstr *& | MatchInfo | ||
) |
Definition at line 336 of file AMDGPUPostLegalizerCombiner.cpp.
References llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), MI, llvm::MachineInstr::setDesc(), llvm::MachineOperand::setReg(), and TII.
void AMDGPUPostLegalizerCombinerHelper::applyCvtF32UByteN | ( | MachineInstr & | MI, |
const CvtF32UByteMatchInfo & | MatchInfo | ||
) |
Definition at line 288 of file AMDGPUPostLegalizerCombiner.cpp.
References assert(), B, llvm::MachineIRBuilder::buildAnyExt(), llvm::MachineIRBuilder::buildInstr(), AMDGPUPostLegalizerCombinerHelper::CvtF32UByteMatchInfo::CvtVal, llvm::MachineInstrBuilder::getReg(), llvm::LLT::getSizeInBits(), llvm::MachineRegisterInfo::getType(), llvm::LLT::isScalar(), MI, MRI, llvm::LLT::scalar(), llvm::MachineIRBuilder::setInstrAndDebugLoc(), and AMDGPUPostLegalizerCombinerHelper::CvtF32UByteMatchInfo::ShiftOffset.
void AMDGPUPostLegalizerCombinerHelper::applySelectFCmpToFMinToFMaxLegacy | ( | MachineInstr & | MI, |
const FMinFMaxLegacyInfo & | Info | ||
) |
Definition at line 124 of file AMDGPUPostLegalizerCombiner.cpp.
References B, llvm::MachineIRBuilder::buildInstr(), llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_UGE, llvm::CmpInst::FCMP_UGT, llvm::CmpInst::FCMP_ULE, llvm::CmpInst::FCMP_ULT, Info, llvm_unreachable, MI, llvm::MachineIRBuilder::setInstrAndDebugLoc(), X, and Y.
void AMDGPUPostLegalizerCombinerHelper::applyUCharToFloat | ( | MachineInstr & | MI | ) |
Definition at line 192 of file AMDGPUPostLegalizerCombiner.cpp.
References B, llvm::MachineIRBuilder::buildAnyExtOrTrunc(), llvm::MachineIRBuilder::buildFPTrunc(), llvm::MachineIRBuilder::buildInstr(), llvm::MachineInstrBuilder::getReg(), llvm::MachineRegisterInfo::getType(), MI, MRI, llvm::LLT::scalar(), and llvm::MachineIRBuilder::setInstrAndDebugLoc().
bool AMDGPUPostLegalizerCombinerHelper::matchCombineSignExtendInReg | ( | MachineInstr & | MI, |
MachineInstr *& | MatchInfo | ||
) |
Definition at line 320 of file AMDGPUPostLegalizerCombiner.cpp.
References llvm::MachineInstr::getOpcode(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineRegisterInfo::hasOneNonDBGUse(), MI, and MRI.
bool AMDGPUPostLegalizerCombinerHelper::matchCvtF32UByteN | ( | MachineInstr & | MI, |
CvtF32UByteMatchInfo & | MatchInfo | ||
) |
Definition at line 260 of file AMDGPUPostLegalizerCombiner.cpp.
References AMDGPUPostLegalizerCombinerHelper::CvtF32UByteMatchInfo::CvtVal, llvm::MIPatternMatch::m_GLShr(), llvm::MIPatternMatch::m_GShl(), llvm::MIPatternMatch::m_GZExt(), llvm::MIPatternMatch::m_ICst(), llvm::MIPatternMatch::m_Reg(), MI, llvm::MIPatternMatch::mi_match(), MRI, llvm::Offset, and AMDGPUPostLegalizerCombinerHelper::CvtF32UByteMatchInfo::ShiftOffset.
bool AMDGPUPostLegalizerCombinerHelper::matchFMinFMaxLegacy | ( | MachineInstr & | MI, |
FMinFMaxLegacyInfo & | Info | ||
) |
Definition at line 88 of file AMDGPUPostLegalizerCombiner.cpp.
References Cond, llvm::CmpInst::FCMP_FALSE, llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_TRUE, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, llvm::MachineRegisterInfo::getType(), llvm::MachineRegisterInfo::hasOneNonDBGUse(), Info, llvm::MIPatternMatch::m_GFCmp(), llvm::MIPatternMatch::m_Pred(), llvm::MIPatternMatch::m_Reg(), MI, llvm::MIPatternMatch::mi_match(), MRI, and llvm::LLT::scalar().
bool AMDGPUPostLegalizerCombinerHelper::matchRcpSqrtToRsq | ( | MachineInstr & | MI, |
std::function< void(MachineIRBuilder &)> & | MatchInfo | ||
) |
Definition at line 216 of file AMDGPUPostLegalizerCombiner.cpp.
References B, llvm::MachineIRBuilder::buildIntrinsic(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getVRegDef(), llvm::MIPatternMatch::m_GFSqrt(), llvm::MIPatternMatch::m_MInstr(), llvm::Match, MI, llvm::MIPatternMatch::mi_match(), and MRI.
bool AMDGPUPostLegalizerCombinerHelper::matchRemoveFcanonicalize | ( | MachineInstr & | MI, |
Register & | Reg | ||
) |
Definition at line 306 of file AMDGPUPostLegalizerCombiner.cpp.
References llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::SITargetLowering::isCanonicalized(), MF, and MI.
bool AMDGPUPostLegalizerCombinerHelper::matchUCharToFloat | ( | MachineInstr & | MI | ) |
Definition at line 173 of file AMDGPUPostLegalizerCombiner.cpp.
References assert(), llvm::APInt::getHighBitsSet(), llvm::CombinerHelper::getKnownBits(), llvm::LLT::getSizeInBits(), llvm::MachineRegisterInfo::getType(), Helper, llvm::GISelKnownBits::maskedValueIsZero(), MI, MRI, and llvm::LLT::scalar().
|
protected |
Definition at line 36 of file AMDGPUPostLegalizerCombiner.cpp.
Referenced by applyCvtF32UByteN(), applySelectFCmpToFMinToFMaxLegacy(), applyUCharToFloat(), and matchRcpSqrtToRsq().
|
protected |
Definition at line 41 of file AMDGPUPostLegalizerCombiner.cpp.
Referenced by matchUCharToFloat().
|
protected |
Definition at line 37 of file AMDGPUPostLegalizerCombiner.cpp.
Referenced by matchRemoveFcanonicalize().
|
protected |
Definition at line 38 of file AMDGPUPostLegalizerCombiner.cpp.
Referenced by applyCvtF32UByteN(), applyUCharToFloat(), matchCombineSignExtendInReg(), matchCvtF32UByteN(), matchFMinFMaxLegacy(), matchRcpSqrtToRsq(), and matchUCharToFloat().
|
protected |
Definition at line 39 of file AMDGPUPostLegalizerCombiner.cpp.
|
protected |
Definition at line 40 of file AMDGPUPostLegalizerCombiner.cpp.
Referenced by applyCombineSignExtendInReg().