LLVM
15.0.0git
|
#include "AMDGPU.h"
#include "GCNSubtarget.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "si-fold-operands" |
#define DEBUG_TYPE "si-fold-operands" |
Definition at line 18 of file SIFoldOperands.cpp.
|
static |
Definition at line 318 of file SIFoldOperands.cpp.
References llvm::dbgs(), LLVM_DEBUG, and MI.
Referenced by tryAddToFoldList(), and tryToFoldACImm().
|
static |
Definition at line 946 of file SIFoldOperands.cpp.
Referenced by tryConstantFoldOp().
|
static |
Definition at line 151 of file SIFoldOperands.cpp.
References llvm::AMDGPU::getNamedOperandIdx(), llvm::MachineOperand::isFI(), TII, and UseMI.
|
static |
Definition at line 1034 of file SIFoldOperands.cpp.
References llvm::tgtok::Def, llvm::MachineRegisterInfo::getVRegDef(), llvm::MachineOperand::isImm(), and MRI.
Referenced by tryConstantFoldOp().
|
static |
Definition at line 1012 of file SIFoldOperands.cpp.
Referenced by tryConstantFoldOp().
|
static |
Definition at line 1367 of file SIFoldOperands.cpp.
References llvm::SIOutMods::DIV2, llvm_unreachable, llvm::SIOutMods::MUL2, llvm::SIOutMods::MUL4, and llvm::SIOutMods::NONE.
|
static |
Definition at line 484 of file SIFoldOperands.cpp.
References assert(), llvm::tgtok::Def, E, llvm::MachineOperand::getReg(), llvm::MachineOperand::getSubReg(), llvm::MachineRegisterInfo::getVRegDef(), I, llvm::MachineOperand::isReg(), llvm::Register::isVirtual(), MRI, TII, and UseReg().
Referenced by tryToFoldACImm().
|
static |
Definition at line 309 of file SIFoldOperands.cpp.
References MI.
Referenced by tryAddToFoldList(), and tryToFoldACImm().
|
static |
Definition at line 461 of file SIFoldOperands.cpp.
References llvm::MachineOperand::isUndef(), llvm::M0(), MI, and TII.
|
static |
Definition at line 131 of file SIFoldOperands.cpp.
Referenced by tryAddToFoldList().
|
static |
Definition at line 1029 of file SIFoldOperands.cpp.
References MI, and stripExtraCopyOperands().
Referenced by tryConstantFoldOp().
|
static |
Remove any leftover implicit operands from mutating the instruction.
e.g. if we replace an s_and_b32 with a copy, we don't need the implicit scc def anymore.
Definition at line 1019 of file SIFoldOperands.cpp.
References llvm::MCInstrDesc::getNumImplicitDefs(), llvm::MCInstrDesc::getNumImplicitUses(), llvm::MCInstrDesc::getNumOperands(), I, and MI.
Referenced by mutateCopyOp(), and tryConstantFoldOp().
|
static |
Definition at line 331 of file SIFoldOperands.cpp.
References appendFoldCandidate(), assert(), llvm::TargetInstrInfo::CommuteAnyOperandIndex, llvm::numbers::e, llvm::MCInstrDesc::getNumOperands(), llvm::MachineOperand::getReg(), llvm::AMDGPU::getVOPe32(), i, llvm::MachineOperand::isFI(), llvm::MachineOperand::isGlobal(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), isUseMIInFoldList(), macToMad(), MI, MRI, llvm::SIRegisterInfo::opCanUseInlineConstant(), llvm::MCOperandInfo::OperandType, llvm::MCInstrDesc::OpInfo, and TII.
|
static |
Definition at line 1055 of file SIFoldOperands.cpp.
References evalBinaryInstruction(), llvm::MachineOperand::getImm(), getImmOrMaterializedImm(), getMovOpc(), llvm::AMDGPU::getNamedOperandIdx(), llvm::MachineOperand::isImm(), MI, MRI, mutateCopyOp(), stripExtraCopyOperands(), std::swap(), TII, and TRI.
|
static |
Definition at line 517 of file SIFoldOperands.cpp.
References appendFoldCandidate(), llvm::MachineOperand::ChangeToImmediate(), llvm::tgtok::Def, E, llvm::MachineInstr::getDesc(), llvm::MachineOperand::getImm(), llvm::MCInstrDesc::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), getRegSeqInit(), llvm::MachineOperand::getSubReg(), llvm::MachineRegisterInfo::getVRegDef(), I, llvm::RISCVMatInt::Imm, llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), isUseMIInFoldList(), llvm::Register::isVirtual(), MRI, llvm::AMDGPU::OPERAND_REG_INLINE_AC_FIRST, llvm::AMDGPU::OPERAND_REG_INLINE_AC_LAST, llvm::AMDGPU::OPERAND_REG_INLINE_C_FIRST, llvm::AMDGPU::OPERAND_REG_INLINE_C_LAST, llvm::MCOperandInfo::OperandType, llvm::MCInstrDesc::OpInfo, TII, UseMI, and UseReg().
|
static |
Definition at line 178 of file SIFoldOperands.cpp.
References llvm::MachineInstrBuilder::addReg(), assert(), llvm::BuildMI(), llvm::MachineOperand::ChangeToFrameIndex(), llvm::MachineOperand::ChangeToGA(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineBasicBlock::computeRegisterLiveness(), llvm::MachineRegisterInfo::createVirtualRegister(), llvm::dbgs(), llvm::AMDGPU::getMFMAEarlyClobberOp(), llvm::AMDGPU::getNamedOperandIdx(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineFunction::getRegInfo(), I, llvm::MachineOperand::isDef(), llvm::SIInstrFlags::IsDOT, llvm::AMDGPU::isFoldableLiteralV216(), llvm::SIInstrFlags::IsMAI, llvm::SIInstrFlags::IsPacked, llvm::MachineOperand::isReg(), llvm::MachineOperand::isTied(), llvm::isUInt< 16 >(), llvm::RegState::Kill, LLVM_DEBUG, llvm::MachineBasicBlock::LQR_Dead, MBB, MI, Mod, MRI, llvm::SISrcMods::OP_SEL_0, llvm::SISrcMods::OP_SEL_1, llvm::AMDGPU::OPERAND_REG_IMM_V2FP16, llvm::AMDGPU::OPERAND_REG_IMM_V2INT16, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2FP16, llvm::AMDGPU::OPERAND_REG_INLINE_C_V2INT16, llvm::MachineOperand::setIsUndef(), llvm::MachineOperand::setReg(), llvm::ARM_MB::ST, llvm::MachineOperand::substVirtReg(), TII, TRI, and llvm::MachineRegisterInfo::use_nodbg_empty().