From: Tom Stellard Date: Sat, 2 Jun 2012 11:57:54 +0000 (-0400) Subject: radeon/llvm: Don't lower RETURN to S_ENDPGM on SI X-Git-Tag: mesa-9.0~1683 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8cc9b463deae8f6116963e1fea0c62930066b563;p=platform%2Fupstream%2Fmesa.git radeon/llvm: Don't lower RETURN to S_ENDPGM on SI Instead create an S_ENDPGM instruction in the CodeEmitter and emit it after all the other instructions. --- diff --git a/src/gallium/drivers/radeon/SICodeEmitter.cpp b/src/gallium/drivers/radeon/SICodeEmitter.cpp index d2ea1fb..1d24706 100644 --- a/src/gallium/drivers/radeon/SICodeEmitter.cpp +++ b/src/gallium/drivers/radeon/SICodeEmitter.cpp @@ -172,6 +172,10 @@ bool SICodeEmitter::runOnMachineFunction(MachineFunction &MF) } } } + // Emit S_END_PGM + MachineInstr * End = BuildMI(MF, DebugLoc(), + TM->getInstrInfo()->get(AMDIL::S_ENDPGM)); + emitInstr(*End); return false; } diff --git a/src/gallium/drivers/radeon/SIInstrInfo.cpp b/src/gallium/drivers/radeon/SIInstrInfo.cpp index 40a1891..4c7a920 100644 --- a/src/gallium/drivers/radeon/SIInstrInfo.cpp +++ b/src/gallium/drivers/radeon/SIInstrInfo.cpp @@ -100,7 +100,6 @@ unsigned SIInstrInfo::getISAOpcode(unsigned AMDILopcode) const { switch (AMDILopcode) { //XXX We need a better way of detecting end of program - case AMDIL::RETURN: return AMDIL::S_ENDPGM; case AMDIL::MOVE_f32: return AMDIL::V_MOV_B32_e32; default: return AMDILopcode; }