LLVM 20.0.0git
|
#include "SIFoldOperands.h"
#include "AMDGPU.h"
#include "GCNSubtarget.h"
#include "MCTargetDesc/AMDGPUMCTargetDesc.h"
#include "SIMachineFunctionInfo.h"
#include "llvm/ADT/DepthFirstIterator.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineOperand.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "si-fold-operands" |
Functions | |
static const TargetRegisterClass * | getRegOpRC (const MachineRegisterInfo &MRI, const TargetRegisterInfo &TRI, const MachineOperand &MO) |
static unsigned | macToMad (unsigned Opc) |
static bool | isUseMIInFoldList (ArrayRef< FoldCandidate > FoldList, const MachineInstr *MI) |
static void | appendFoldCandidate (SmallVectorImpl< FoldCandidate > &FoldList, MachineInstr *MI, unsigned OpNo, MachineOperand *FoldOp, bool Commuted=false, int ShrinkOp=-1) |
static bool | evalBinaryInstruction (unsigned Opcode, int32_t &Result, uint32_t LHS, uint32_t RHS) |
static unsigned | getMovOpc (bool IsScalar) |
static void | mutateCopyOp (MachineInstr &MI, const MCInstrDesc &NewDesc) |
static int | getOModValue (unsigned Opc, int64_t Val) |
static bool | isAGPRCopy (const SIRegisterInfo &TRI, const MachineRegisterInfo &MRI, const MachineInstr &Copy, Register &OutReg, unsigned &OutSubReg) |
Checks whether Copy is a AGPR -> VGPR copy. | |
#define DEBUG_TYPE "si-fold-operands" |
Definition at line 20 of file SIFoldOperands.cpp.
|
static |
Definition at line 576 of file SIFoldOperands.cpp.
References llvm::dbgs(), llvm::SmallVectorImpl< T >::emplace_back(), LLVM_DEBUG, and MI.
|
static |
Definition at line 1225 of file SIFoldOperands.cpp.
Definition at line 1291 of file SIFoldOperands.cpp.
|
static |
Definition at line 1741 of file SIFoldOperands.cpp.
References llvm::SIOutMods::DIV2, llvm_unreachable, llvm::SIOutMods::MUL2, llvm::SIOutMods::MUL4, and llvm::SIOutMods::NONE.
|
static |
Definition at line 180 of file SIFoldOperands.cpp.
|
static |
Checks whether Copy
is a AGPR -> VGPR copy.
Returns true
on success and stores the AGPR register in OutReg
and the subreg in OutSubReg
Definition at line 1991 of file SIFoldOperands.cpp.
References assert(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getSubReg(), llvm::MachineInstr::isCopy(), llvm::Register::isVirtual(), MRI, and TRI.
|
static |
Definition at line 571 of file SIFoldOperands.cpp.
References llvm::any_of(), llvm::CallingConv::C, and MI.
Definition at line 191 of file SIFoldOperands.cpp.
|
static |
Definition at line 1295 of file SIFoldOperands.cpp.