LLVM: lib/Target/AMDGPU/SIPeepholeSDWA.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "si-peephole-sdwa"
Functions
STATISTIC (NumSDWAPatternsFound, "Number of SDWA patterns found.")
STATISTIC (NumSDWAInstructionsPeepholed, "Number of instruction converted to SDWA.")
static raw_ostream & operator<< (raw_ostream &OS, SdwaSel Sel)
static raw_ostream & operator<< (raw_ostream &OS, const DstUnused &Un)
static void copyRegOperand (MachineOperand &To, const MachineOperand &From)
static bool isSameReg (const MachineOperand &LHS, const MachineOperand &RHS)
static MachineOperand * findSingleRegUse (const MachineOperand *Reg, const MachineRegisterInfo *MRI)
static MachineOperand * findSingleRegDef (const MachineOperand *Reg, const MachineRegisterInfo *MRI)
static std::optional< SdwaSel > combineSdwaSel (SdwaSel Sel, SdwaSel OperandSel)
Combine an SDWA instruction's existing SDWA selection Sel with the SDWA selection OperandSel of its operand.
static bool canCombineOpSel (const MachineInstr &MI, const SIInstrInfo *TII, AMDGPU::OpName SrcSelOpName, SdwaSel OpSel)
Verify that the SDWA selection operand SrcSelOpName of the SDWA instruction MI can be combined with the selection OpSel.
static bool canCombineOpSel (const MachineInstr &MI, const SIInstrInfo *TII, AMDGPU::OpName SrcOpName, AMDGPU::OpName SrcSelOpName, MachineOperand *Op, SdwaSel OpSel)
Verify that Op is the same register as the operand of the SDWA instruction MI named by SrcOpName and that the SDWA selection SrcSelOpName can be combined with the OpSel.
static raw_ostream & operator<< (raw_ostream &OS, const SDWAOperand &Operand)

DEBUG_TYPE

#define DEBUG_TYPE "si-peephole-sdwa"

canCombineOpSel() [1/2]

canCombineOpSel() [2/2]

combineSdwaSel()

Combine an SDWA instruction's existing SDWA selection Sel with the SDWA selection OperandSel of its operand.

If the selections are compatible, return the combined selection, otherwise return a nullopt. For example, if we have Sel = BYTE_0 Sel and OperandSel = WORD_1: BYTE_0 Sel (WORD_1 Sel (X)) -> BYTE_2 Sel (X)

Definition at line 311 of file SIPeepholeSDWA.cpp.

Referenced by canCombineOpSel().

copyRegOperand()

Definition at line 270 of file SIPeepholeSDWA.cpp.

References assert(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::isDead(), llvm::MachineOperand::isKill(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUndef(), llvm::MachineOperand::isUse(), llvm::MachineOperand::setIsDead(), llvm::MachineOperand::setIsKill(), llvm::MachineOperand::setIsUndef(), llvm::MachineOperand::setReg(), and llvm::MachineOperand::setSubReg().

findSingleRegDef()

findSingleRegUse()

isSameReg()

operator<<() [1/3]

operator<<() [2/3]

operator<<() [3/3]

STATISTIC() [1/2]

STATISTIC ( NumSDWAInstructionsPeepholed ,
"Number of instruction converted to SDWA." )

STATISTIC() [2/2]

STATISTIC ( NumSDWAPatternsFound ,
"Number of SDWA patterns found." )