mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 05:24:01 +00:00
R600/SI: Add intrinsic for S_SENDMSG instruction
Reviewed-by: Tom Stellard <thomas.stellard@amd.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200195 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -316,6 +316,37 @@ void AMDGPUInstPrinter::printKCache(const MCInst *MI, unsigned OpNo,
|
||||
}
|
||||
}
|
||||
|
||||
void AMDGPUInstPrinter::printSendMsg(const MCInst *MI, unsigned OpNo,
|
||||
raw_ostream &O) {
|
||||
unsigned SImm16 = MI->getOperand(OpNo).getImm();
|
||||
unsigned Msg = SImm16 & 0xF;
|
||||
if (Msg == 2 || Msg == 3) {
|
||||
unsigned Op = (SImm16 >> 4) & 0xF;
|
||||
if (Msg == 3)
|
||||
O << "Gs_done(";
|
||||
else
|
||||
O << "Gs(";
|
||||
if (Op == 0) {
|
||||
O << "nop";
|
||||
} else {
|
||||
unsigned Stream = (SImm16 >> 8) & 0x3;
|
||||
if (Op == 1)
|
||||
O << "cut";
|
||||
else if (Op == 2)
|
||||
O << "emit";
|
||||
else if (Op == 3)
|
||||
O << "emit-cut";
|
||||
O << " stream " << Stream;
|
||||
}
|
||||
O << "), [m0] ";
|
||||
} else if (Msg == 1)
|
||||
O << "interrupt ";
|
||||
else if (Msg == 15)
|
||||
O << "system ";
|
||||
else
|
||||
O << "unknown(" << Msg << ") ";
|
||||
}
|
||||
|
||||
void AMDGPUInstPrinter::printWaitFlag(const MCInst *MI, unsigned OpNo,
|
||||
raw_ostream &O) {
|
||||
// Note: Mask values are taken from SIInsertWaits.cpp and not from ISA docs
|
||||
|
Reference in New Issue
Block a user