LLVM 17.0.0git
|
Classes | |
struct | Med3MatchInfo |
struct | MinMaxMedOpc |
Public Member Functions | |
AMDGPURegBankCombinerHelper (MachineIRBuilder &B, CombinerHelper &Helper) | |
bool | isVgprRegBank (Register Reg) |
Register | getAsVgpr (Register Reg) |
MinMaxMedOpc | getMinMaxPair (unsigned Opc) |
template<class m_Cst , typename CstTy > | |
bool | matchMed (MachineInstr &MI, MachineRegisterInfo &MRI, MinMaxMedOpc MMMOpc, Register &Val, CstTy &K0, CstTy &K1) |
bool | matchIntMinMaxToMed3 (MachineInstr &MI, Med3MatchInfo &MatchInfo) |
bool | matchFPMinMaxToMed3 (MachineInstr &MI, Med3MatchInfo &MatchInfo) |
bool | matchFPMinMaxToClamp (MachineInstr &MI, Register &Reg) |
bool | matchFPMed3ToClamp (MachineInstr &MI, Register &Reg) |
void | applyMed3 (MachineInstr &MI, Med3MatchInfo &MatchInfo) |
void | applyClamp (MachineInstr &MI, Register &Reg) |
Protected Attributes | |
MachineIRBuilder & | B |
MachineFunction & | MF |
MachineRegisterInfo & | MRI |
const GCNSubtarget & | Subtarget |
const RegisterBankInfo & | RBI |
const TargetRegisterInfo & | TRI |
const SIInstrInfo & | TII |
CombinerHelper & | Helper |
Definition at line 34 of file AMDGPURegBankCombiner.cpp.
|
inline |
Definition at line 46 of file AMDGPURegBankCombiner.cpp.
void AMDGPURegBankCombinerHelper::applyClamp | ( | MachineInstr & | MI, |
Register & | Reg | ||
) |
Definition at line 314 of file AMDGPURegBankCombiner.cpp.
References B, llvm::MachineIRBuilder::buildInstr(), MI, and llvm::MachineIRBuilder::setInstrAndDebugLoc().
void AMDGPURegBankCombinerHelper::applyMed3 | ( | MachineInstr & | MI, |
Med3MatchInfo & | MatchInfo | ||
) |
Definition at line 321 of file AMDGPURegBankCombiner.cpp.
References B, llvm::MachineIRBuilder::buildInstr(), MI, AMDGPURegBankCombinerHelper::Med3MatchInfo::Opc, and llvm::MachineIRBuilder::setInstrAndDebugLoc().
Definition at line 90 of file AMDGPURegBankCombiner.cpp.
References B, llvm::MachineIRBuilder::buildCopy(), llvm::MachineInstrBuilder::getReg(), llvm::RegisterBankInfo::getRegBank(), llvm::MachineRegisterInfo::getType(), isVgprRegBank(), MRI, RBI, llvm::MachineRegisterInfo::setRegBank(), and llvm::MachineRegisterInfo::use_instructions().
AMDGPURegBankCombinerHelper::MinMaxMedOpc AMDGPURegBankCombinerHelper::getMinMaxPair | ( | unsigned | Opc | ) |
Definition at line 108 of file AMDGPURegBankCombiner.cpp.
References llvm_unreachable.
Referenced by matchFPMinMaxToClamp(), matchFPMinMaxToMed3(), and matchIntMinMaxToMed3().
Definition at line 86 of file AMDGPURegBankCombiner.cpp.
References llvm::RegisterBank::getID(), llvm::RegisterBankInfo::getRegBank(), MRI, RBI, and TRI.
Referenced by getAsVgpr(), and matchIntMinMaxToMed3().
bool AMDGPURegBankCombinerHelper::matchFPMed3ToClamp | ( | MachineInstr & | MI, |
Register & | Reg | ||
) |
Definition at line 272 of file AMDGPURegBankCombiner.cpp.
References llvm::getDefIgnoringCopies(), llvm::MachineOperand::getFPImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::ConstantFP::isExactlyValue(), llvm::isKnownNeverNaN(), llvm::isKnownNeverSNaN(), MI, MRI, and std::swap().
bool AMDGPURegBankCombinerHelper::matchFPMinMaxToClamp | ( | MachineInstr & | MI, |
Register & | Reg | ||
) |
Definition at line 236 of file AMDGPURegBankCombiner.cpp.
References getMinMaxPair(), llvm::isKnownNeverNaN(), llvm::isKnownNeverSNaN(), MI, and MRI.
bool AMDGPURegBankCombinerHelper::matchFPMinMaxToMed3 | ( | MachineInstr & | MI, |
Med3MatchInfo & | MatchInfo | ||
) |
Definition at line 196 of file AMDGPURegBankCombiner.cpp.
References getMinMaxPair(), llvm::MachineRegisterInfo::getType(), llvm::GCNSubtarget::hasMed3_16(), llvm::MachineRegisterInfo::hasOneNonDBGUse(), llvm::SIInstrInfo::isInlineConstant(), llvm::isKnownNeverNaN(), MI, MRI, llvm::LLT::scalar(), Subtarget, and TII.
bool AMDGPURegBankCombinerHelper::matchIntMinMaxToMed3 | ( | MachineInstr & | MI, |
Med3MatchInfo & | MatchInfo | ||
) |
Definition at line 150 of file AMDGPURegBankCombiner.cpp.
References getMinMaxPair(), llvm::MachineRegisterInfo::getType(), llvm::GCNSubtarget::hasMed3_16(), isVgprRegBank(), AMDGPURegBankCombinerHelper::MinMaxMedOpc::Med, MI, MRI, llvm::LLT::scalar(), and Subtarget.
bool AMDGPURegBankCombinerHelper::matchMed | ( | MachineInstr & | MI, |
MachineRegisterInfo & | MRI, | ||
MinMaxMedOpc | MMMOpc, | ||
Register & | Val, | ||
CstTy & | K0, | ||
CstTy & | K1 | ||
) |
Definition at line 129 of file AMDGPURegBankCombiner.cpp.
References llvm::MIPatternMatch::m_any_of(), llvm::MIPatternMatch::m_CommutativeBinOp(), llvm::MIPatternMatch::m_Reg(), AMDGPURegBankCombinerHelper::MinMaxMedOpc::Max, MI, llvm::MIPatternMatch::mi_match(), AMDGPURegBankCombinerHelper::MinMaxMedOpc::Min, and MRI.
|
protected |
Definition at line 36 of file AMDGPURegBankCombiner.cpp.
Referenced by applyClamp(), applyMed3(), and getAsVgpr().
|
protected |
Definition at line 43 of file AMDGPURegBankCombiner.cpp.
|
protected |
Definition at line 37 of file AMDGPURegBankCombiner.cpp.
|
protected |
Definition at line 38 of file AMDGPURegBankCombiner.cpp.
Referenced by getAsVgpr(), isVgprRegBank(), matchFPMed3ToClamp(), matchFPMinMaxToClamp(), matchFPMinMaxToMed3(), matchIntMinMaxToMed3(), and matchMed().
|
protected |
Definition at line 40 of file AMDGPURegBankCombiner.cpp.
Referenced by getAsVgpr(), and isVgprRegBank().
|
protected |
Definition at line 39 of file AMDGPURegBankCombiner.cpp.
Referenced by matchFPMinMaxToMed3(), and matchIntMinMaxToMed3().
|
protected |
Definition at line 42 of file AMDGPURegBankCombiner.cpp.
Referenced by matchFPMinMaxToMed3().
|
protected |
Definition at line 41 of file AMDGPURegBankCombiner.cpp.
Referenced by isVgprRegBank().