]> granicus.if.org Git - llvm/commitdiff
AMDGPU: Fix not adding ImplicitBufferPtr as a live-in
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 31 May 2019 22:47:36 +0000 (22:47 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 31 May 2019 22:47:36 +0000 (22:47 +0000)
Fixes missing test from r293000.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362275 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AMDGPU/SIFrameLowering.cpp
test/CodeGen/AMDGPU/mesa3d.ll [new file with mode: 0644]

index e333154f83bfd641b1eb9e108e00658297b71129..4b2124b14c0541ca8a785973b952219fdc6886bb 100644 (file)
@@ -419,7 +419,7 @@ void SIFrameLowering::emitEntryFunctionScratchSetup(const GCNSubtarget &ST,
       }
     }
     MF.getRegInfo().addLiveIn(GitPtrLo);
-    MF.front().addLiveIn(GitPtrLo);
+    MBB.addLiveIn(GitPtrLo);
     BuildMI(MBB, I, DL, SMovB32, RsrcLo)
       .addReg(GitPtrLo)
       .addReg(ScratchRsrcReg, RegState::ImplicitDefine);
@@ -487,6 +487,9 @@ void SIFrameLowering::emitEntryFunctionScratchSetup(const GCNSubtarget &ST,
           .addImm(0) // dlc
           .addMemOperand(MMO)
           .addReg(ScratchRsrcReg, RegState::ImplicitDefine);
+
+        MF.getRegInfo().addLiveIn(MFI->getImplicitBufferPtrUserSGPR());
+        MBB.addLiveIn(MFI->getImplicitBufferPtrUserSGPR());
       }
     } else {
       unsigned Rsrc0 = TRI->getSubReg(ScratchRsrcReg, AMDGPU::sub0);
diff --git a/test/CodeGen/AMDGPU/mesa3d.ll b/test/CodeGen/AMDGPU/mesa3d.ll
new file mode 100644 (file)
index 0000000..4f09b3f
--- /dev/null
@@ -0,0 +1,14 @@
+; RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -enable-var-scope -check-prefix=GCN %s
+
+; GCN-LABEL: {{^}}scratch_ps:
+; GCN: s_load_dwordx2 s[4:5], s[0:1], 0x0{{$}}
+; GCN-DAG: s_mov_b32 s6, -1{{$}}
+; GCN-DAG: s_mov_b32 s7, 0xe8f000
+; GCN-DAG: v_mov_b32_e32 [[V:v[0-9]+]], 2
+; GCN: buffer_store_dword [[V]], off, s[4:7], s2 offset:4
+define amdgpu_ps void @scratch_ps(i32 addrspace(1)* %out, i32 %in) {
+entry:
+  %alloca = alloca i32, addrspace(5)
+  store volatile i32 2, i32 addrspace(5)* %alloca
+  ret void
+}