R600/SI: fix ELSE pseudo op handling
authorChristian Konig <christian.koenig@amd.com>
Tue, 26 Mar 2013 14:03:44 +0000 (14:03 +0000)
committerChristian Konig <christian.koenig@amd.com>
Tue, 26 Mar 2013 14:03:44 +0000 (14:03 +0000)
Restore the EXEC mask early, otherwise a copy might end up not beeing executed.

Candidate for the mesa stable branch.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Tested-by: Michel Dänzer <michel.daenzer@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178018 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/R600/SILowerControlFlow.cpp

index 9a027e77eb67d07d4adf5604e6c15f617afffcb1..6b3f6261dfaa732ce86cac885678da4caa899d57 100644 (file)
@@ -197,7 +197,8 @@ void SILowerControlFlowPass::Else(MachineInstr &MI) {
   unsigned Dst = MI.getOperand(0).getReg();
   unsigned Src = MI.getOperand(1).getReg();
 
-  BuildMI(MBB, &MI, DL, TII->get(AMDGPU::S_OR_SAVEEXEC_B64), Dst)
+  BuildMI(MBB, MBB.getFirstNonPHI(), DL,
+          TII->get(AMDGPU::S_OR_SAVEEXEC_B64), Dst)
           .addReg(Src); // Saved EXEC
 
   BuildMI(MBB, &MI, DL, TII->get(AMDGPU::S_XOR_B64), AMDGPU::EXEC)