diff options
author | Tom Stellard <[email protected]> | 2012-06-02 07:57:54 -0400 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2012-06-06 13:46:03 -0400 |
commit | 8cc9b463deae8f6116963e1fea0c62930066b563 (patch) | |
tree | ba0fa586a779b7c442f2cc53e33a00724ea2a21e | |
parent | de7366701d21842787d65320c12e6b4ecaea3807 (diff) |
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.
-rw-r--r-- | src/gallium/drivers/radeon/SICodeEmitter.cpp | 4 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/SIInstrInfo.cpp | 1 |
2 files changed, 4 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeon/SICodeEmitter.cpp b/src/gallium/drivers/radeon/SICodeEmitter.cpp index d2ea1fb5dec..1d247061e41 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 40a1891b1a6..4c7a92075c6 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; } |