PTX: Fix some lingering issues with stack allocation
authorJustin Holewinski <justin.holewinski@gmail.com>
Mon, 26 Sep 2011 16:20:34 +0000 (16:20 +0000)
committerJustin Holewinski <justin.holewinski@gmail.com>
Mon, 26 Sep 2011 16:20:34 +0000 (16:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140535 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PTX/PTXAsmPrinter.cpp
test/CodeGen/PTX/stack-object.ll [new file with mode: 0644]

index d1b6653373ed94de79488612dd27136a3faaaa87..260ed231b1dc98cc80db75b62cc455804a5025c8 100644 (file)
@@ -297,7 +297,9 @@ void PTXAsmPrinter::EmitFunctionBodyStart() {
   for (unsigned i = 0, e = FrameInfo->getNumObjects(); i != e; ++i) {
     DEBUG(dbgs() << "Size of object: " << FrameInfo->getObjectSize(i) << "\n");
     if (FrameInfo->getObjectSize(i) > 0) {
-      std::string def = "\t.local .b";
+      std::string def = "\t.local .align ";
+      def += utostr(FrameInfo->getObjectAlignment(i));
+      def += " .b";
       def += utostr(FrameInfo->getObjectSize(i)*8); // Convert to bits
       def += " __local";
       def += utostr(i);
diff --git a/test/CodeGen/PTX/stack-object.ll b/test/CodeGen/PTX/stack-object.ll
new file mode 100644 (file)
index 0000000..07cc0ab
--- /dev/null
@@ -0,0 +1,10 @@
+; RUN: llc < %s -march=ptx32 -mattr=sm20 | FileCheck %s
+
+define ptx_device float @stack1(float %a) {
+  ; CHECK: .local .b32 __local0;
+  %a.2 = alloca float
+  ; CHECK: st.local.f32 [__local0], %f0
+  store float %a, float* %a.2
+  %a.3 = load float* %a.2
+  ret float %a.3
+}