diff options
author | Justin Holewinski <jholewinski@nvidia.com> | 2013-07-01 13:00:14 +0000 |
---|---|---|
committer | Justin Holewinski <jholewinski@nvidia.com> | 2013-07-01 13:00:14 +0000 |
commit | 728af3d574895dd9e4bb5c418c7398297c4f39fe (patch) | |
tree | e28b8c8ed46fa212965fcc3f01dd6b906dd002d3 | |
parent | 1fd09172bba8539e198db0360ac66f4694b4a3e0 (diff) | |
download | llvm-728af3d574895dd9e4bb5c418c7398297c4f39fe.tar.gz llvm-728af3d574895dd9e4bb5c418c7398297c4f39fe.tar.bz2 llvm-728af3d574895dd9e4bb5c418c7398297c4f39fe.tar.xz |
[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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185336 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 10 | ||||
-rw-r--r-- | test/CodeGen/NVPTX/module-inline-asm.ll | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/lib/Target/NVPTX/NVPTXAsmPrinter.cpp index 9662f4c3e2..93ba8d5ade 100644 --- a/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ b/lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -1043,6 +1043,16 @@ bool NVPTXAsmPrinter::doInitialization(Module &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); diff --git a/test/CodeGen/NVPTX/module-inline-asm.ll b/test/CodeGen/NVPTX/module-inline-asm.ll new file mode 100644 index 0000000000..cdbcf2013c --- /dev/null +++ b/test/CodeGen/NVPTX/module-inline-asm.ll @@ -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 +} |