From: Tom Stellard Date: Fri, 3 Jun 2016 09:50:09 +0000 (+0000) Subject: Merging r260588: X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ab4b667eea9f1d708b577bde4ca4f70409de1de5;p=llvm Merging r260588: ------------------------------------------------------------------------ r260588 | thomas.stellard | 2016-02-11 13:14:34 -0800 (Thu, 11 Feb 2016) | 20 lines AMDGPU/SI: When splitting SMRD instructions, add its users to VALU worklist Summary: When we split SMRD instructions into two MUBUFs we were adding the users of the newly created MUBUFs to the VALU worklist. However, the only users these instructions had was the REG_SEQUENCE that was inserted by splitSMRD when the original SMRD instruction was split. We need to make sure to add the users of the original SMRD to the VALU worklist before it is split. I have a test case, but it requires one other bug fix, so it will be added in a later commt. Reviewers: mareko, arsenm Subscribers: arsenm, llvm-commits Differential Revision: http://reviews.llvm.org/D17101 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_38@271641 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/AMDGPU/SIInstrInfo.cpp b/lib/Target/AMDGPU/SIInstrInfo.cpp index 493b66b4ac3..96b2cd9d726 100644 --- a/lib/Target/AMDGPU/SIInstrInfo.cpp +++ b/lib/Target/AMDGPU/SIInstrInfo.cpp @@ -2430,6 +2430,7 @@ void SIInstrInfo::moveSMRDToVALU(MachineInstr *MI, } case 32: { MachineInstr *Lo, *Hi; + addUsersToMoveToVALUWorklist(MI->getOperand(0).getReg(), MRI, Worklist); splitSMRD(MI, &AMDGPU::SReg_128RegClass, AMDGPU::S_LOAD_DWORDX4_IMM, AMDGPU::S_LOAD_DWORDX4_SGPR, Lo, Hi); MI->eraseFromParent(); @@ -2440,6 +2441,7 @@ void SIInstrInfo::moveSMRDToVALU(MachineInstr *MI, case 64: { MachineInstr *Lo, *Hi; + addUsersToMoveToVALUWorklist(MI->getOperand(0).getReg(), MRI, Worklist); splitSMRD(MI, &AMDGPU::SReg_256RegClass, AMDGPU::S_LOAD_DWORDX8_IMM, AMDGPU::S_LOAD_DWORDX8_SGPR, Lo, Hi); MI->eraseFromParent();