32 std::unique_ptr<MCStreamer> &&Streamer) {
37 std::unique_ptr<MCStreamer> Streamer)
41 return "R600 Assembly Printer";
46 bool killPixel =
false;
53 if (
MI.getOpcode() == R600::KILLGT)
55 unsigned numOperands =
MI.getNumOperands();
56 for (
unsigned op_idx = 0; op_idx < numOperands; op_idx++) {
60 unsigned HWReg = RI->getHWRegIndex(MO.
getReg());
65 MaxGPR = std::max(MaxGPR, HWReg);
74 default: [[fallthrough]];
83 default: [[fallthrough]];
116 EmitProgramInfoR600(
MF);
R600 Assembly printer class.
#define R_0288E8_SQ_LDS_ALLOC
#define S_02880C_KILL_ENABLE(x)
#define R_028868_SQ_PGM_RESOURCES_VS
#define R_028878_SQ_PGM_RESOURCES_GS
#define R_02880C_DB_SHADER_CONTROL
#define R_028860_SQ_PGM_RESOURCES_VS
#define R_0288D4_SQ_PGM_RESOURCES_LS
#define R_028850_SQ_PGM_RESOURCES_PS
#define R_028844_SQ_PGM_RESOURCES_PS
Provides R600 specific target descriptions.
AMDGPU R600 specific subclass of TargetSubtarget.
uint32_t getLDSSize() const
This class is intended to be used as a driving class for all asm writers.
const TargetLoweringObjectFile & getObjFileLowering() const
Return information about object file lowering.
MachineFunction * MF
The current machine function.
virtual void SetupMachineFunction(MachineFunction &MF)
This should be called when a new MachineFunction is being processed from runOnMachineFunction.
void emitFunctionBody()
This method emits the body and trailer for a function.
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
bool isVerbose() const
Return true if assembly output should contain comments.
CallingConv::ID getCallingConv() const
getCallingConv()/setCallingConv(CC) - These method get and set the calling convention of this functio...
Context object for machine code objects.
MCSectionELF * getELFSection(const Twine &Section, unsigned Type, unsigned Flags)
MCContext & getContext() const
This represents a section on linux, lots of unix variants and some bare metal systems.
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
void ensureAlignment(Align A)
ensureAlignment - Make sure the function is at least A bytes aligned.
Function & getFunction()
Return the LLVM function that this machine code represents.
Ty * getInfo()
getInfo - Keep track of various per-function pieces of information for backends that would like to do...
Representation of each machine instruction.
MachineOperand class - Representation of each machine instruction operand.
bool isReg() const
isReg - Tests if this is a MO_Register operand.
Register getReg() const
getReg - Returns the register number.
bool runOnMachineFunction(MachineFunction &MF) override
Emit the specified function out to the OutStreamer.
StringRef getPassName() const override
getPassName - Return a nice clean name for a pass.
R600AsmPrinter(TargetMachine &TM, std::unique_ptr< MCStreamer > Streamer)
const R600RegisterInfo * getRegisterInfo() const override
Generation getGeneration() const
StringRef - Represent a constant reference to a string, i.e.
Primary interface to the complete machine description for the target machine.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
bool isCompute(CallingConv::ID cc)
@ AMDGPU_CS
Used for Mesa/AMDPAL compute shaders.
@ AMDGPU_VS
Used for Mesa vertex shaders, or AMDPAL last shader stage before rasterization (vertex shader if tess...
@ AMDGPU_GS
Used for Mesa/AMDPAL geometry shaders.
@ AMDGPU_PS
Used for Mesa/AMDPAL pixel shaders.
This is an optimization pass for GlobalISel generic memory operations.
AsmPrinter * createR600AsmPrinterPass(TargetMachine &TM, std::unique_ptr< MCStreamer > &&Streamer)
uint64_t alignTo(uint64_t Size, Align A)
Returns a multiple of A needed to store Size bytes.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.
This struct is a compact representation of a valid (non-zero power of two) alignment.