From: Vadim Girlin Date: Mon, 7 May 2012 13:38:01 +0000 (+0400) Subject: radeon/llvm: fix live-in handling for inputs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e3e7ae732c903235a57760e10de542f128c1fe62;p=mesa.git radeon/llvm: fix live-in handling for inputs Set the input registers as live-in for entry basic block. Signed-off-by: Vadim Girlin --- diff --git a/src/gallium/drivers/radeon/AMDGPUUtil.cpp b/src/gallium/drivers/radeon/AMDGPUUtil.cpp index 6fb01b687f3..663a77f2645 100644 --- a/src/gallium/drivers/radeon/AMDGPUUtil.cpp +++ b/src/gallium/drivers/radeon/AMDGPUUtil.cpp @@ -118,6 +118,7 @@ void AMDGPU::utilAddLiveIn(MachineFunction * MF, MachineRegisterInfo & MRI, { if (!MRI.isLiveIn(physReg)) { MRI.addLiveIn(physReg, virtReg); + MF->front().addLiveIn(physReg); BuildMI(MF->front(), MF->front().begin(), DebugLoc(), TII->get(TargetOpcode::COPY), virtReg) .addReg(physReg); diff --git a/src/gallium/drivers/radeon/R600LowerShaderInstructions.cpp b/src/gallium/drivers/radeon/R600LowerShaderInstructions.cpp index 394ee7006ce..742b50fb394 100644 --- a/src/gallium/drivers/radeon/R600LowerShaderInstructions.cpp +++ b/src/gallium/drivers/radeon/R600LowerShaderInstructions.cpp @@ -13,6 +13,7 @@ #include "AMDGPU.h" #include "AMDGPULowerShaderInstructions.h" +#include "AMDGPUUtil.h" #include "AMDIL.h" #include "AMDILInstrInfo.h" #include "llvm/CodeGen/MachineFunctionPass.h" @@ -117,8 +118,7 @@ void R600LowerShaderInstructionsPass::lowerLOAD_INPUT(MachineInstr &MI) unsigned newRegister = inputClass->getRegister(inputIndex); unsigned dstReg = dst.getReg(); - preloadRegister(MI.getParent()->getParent(), TM.getInstrInfo(), newRegister, - dstReg); + AMDGPU::utilAddLiveIn(MI.getParent()->getParent(), *MRI, TM.getInstrInfo(), newRegister, dstReg); } bool R600LowerShaderInstructionsPass::lowerSTORE_OUTPUT(MachineInstr &MI,