|
LLVM 24.0.0git
|
#include "SIPeepholeSDWA.h"#include "AMDGPU.h"#include "GCNSubtarget.h"#include "llvm/ADT/Statistic.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include <optional>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) |
| #define DEBUG_TYPE "si-peephole-sdwa" |
Definition at line 31 of file SIPeepholeSDWA.cpp.
|
static |
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.
Definition at line 521 of file SIPeepholeSDWA.cpp.
References assert(), canCombineOpSel(), isSameReg(), MI, and TII.
|
static |
Verify that the SDWA selection operand SrcSelOpName of the SDWA instruction MI can be combined with the selection OpSel.
Definition at line 508 of file SIPeepholeSDWA.cpp.
References assert(), combineSdwaSel(), llvm::MachineOperand::getImm(), MI, and TII.
Referenced by canCombineOpSel().
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 314 of file SIPeepholeSDWA.cpp.
Referenced by canCombineOpSel().
|
static |
Definition at line 273 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().
|
static |
Definition at line 300 of file SIPeepholeSDWA.cpp.
References llvm::MachineRegisterInfo::getOneDef(), and Reg.
|
static |
Definition at line 292 of file SIPeepholeSDWA.cpp.
References llvm::MachineRegisterInfo::getOneNonDBGUse(), and Reg.
|
static |
Definition at line 285 of file SIPeepholeSDWA.cpp.
Referenced by canCombineOpSel().
|
static |
Definition at line 240 of file SIPeepholeSDWA.cpp.
References llvm::AMDGPU::SDWA::UNUSED_PAD, llvm::AMDGPU::SDWA::UNUSED_PRESERVE, and llvm::AMDGPU::SDWA::UNUSED_SEXT.
|
static |
Definition at line 988 of file SIPeepholeSDWA.cpp.
|
static |
Definition at line 227 of file SIPeepholeSDWA.cpp.
References llvm::AMDGPU::SDWA::BYTE_0, llvm::AMDGPU::SDWA::BYTE_1, llvm::AMDGPU::SDWA::BYTE_2, llvm::AMDGPU::SDWA::BYTE_3, llvm::AMDGPU::SDWA::DWORD, llvm::AMDGPU::SDWA::WORD_0, and llvm::AMDGPU::SDWA::WORD_1.
| STATISTIC | ( | NumSDWAInstructionsPeepholed | , |
| "Number of instruction converted to SDWA." | ) |
| STATISTIC | ( | NumSDWAPatternsFound | , |
| "Number of SDWA patterns found." | ) |