[llvm] r185336 - [NVPTX] Add support for module-scope inline asm
Justin Holewinski
jholewinski at nvidia.com
Mon Jul 1 06:00:14 PDT 2013
Author: jholewinski
Date: Mon Jul 1 08:00:14 2013
New Revision: 185336
URL: http://llvm.org/viewvc/llvm-project?rev=185336&view=rev
Log:
[NVPTX] Add support for module-scope inline asm
Since we were explicitly not calling AsmPrinter::doInitialization,
any module-scope inline asm was not being printed.
Added:
llvm/trunk/test/CodeGen/NVPTX/module-inline-asm.ll
Modified:
llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
Modified: llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp?rev=185336&r1=185335&r2=185336&view=diff
==============================================================================
--- llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/NVPTX/NVPTXAsmPrinter.cpp Mon Jul 1 08:00:14 2013
@@ -1043,6 +1043,16 @@ bool NVPTXAsmPrinter::doInitialization(M
// Already commented out
//bool Result = AsmPrinter::doInitialization(M);
+ // Emit module-level inline asm if it exists.
+ if (!M.getModuleInlineAsm().empty()) {
+ OutStreamer.AddComment("Start of file scope inline assembly");
+ OutStreamer.AddBlankLine();
+ OutStreamer.EmitRawText(StringRef(M.getModuleInlineAsm()));
+ OutStreamer.AddBlankLine();
+ OutStreamer.AddComment("End of file scope inline assembly");
+ OutStreamer.AddBlankLine();
+ }
+
if (nvptxSubtarget.getDrvInterface() == NVPTX::CUDA)
recordAndEmitFilenames(M);
Added: llvm/trunk/test/CodeGen/NVPTX/module-inline-asm.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/NVPTX/module-inline-asm.ll?rev=185336&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/NVPTX/module-inline-asm.ll (added)
+++ llvm/trunk/test/CodeGen/NVPTX/module-inline-asm.ll Mon Jul 1 08:00:14 2013
@@ -0,0 +1,10 @@
+; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v16:16:16-v32:32:32-v64:64:64-v128:128:128-n16:32:64"
+
+; CHECK: .global .b32 val;
+module asm ".global .b32 val;"
+
+define void @foo() {
+ ret void
+}
More information about the llvm-commits
mailing list