diff options
| author | Gautam Chakrabarti <gchakrabarti@nvidia.com> | 2014-01-28 18:35:29 +0000 |
|---|---|---|
| committer | Gautam Chakrabarti <gchakrabarti@nvidia.com> | 2014-01-28 18:35:29 +0000 |
| commit | 2c283400f9639e245816d3c5cc2b4e2bfb8e02b6 (patch) | |
| tree | 560a6df024630587f77d67d6c9c7f01b0752dc32 | |
| parent | 2ea61f17ad77956d0a2e969a2085b480424d665c (diff) | |
| download | bcm5719-llvm-2c283400f9639e245816d3c5cc2b4e2bfb8e02b6.tar.gz bcm5719-llvm-2c283400f9639e245816d3c5cc2b4e2bfb8e02b6.zip | |
[NVPTX] Fix emitting aggregate parameters
The code was missing the case for aggregate parameters and
hence was emitting them as .b0 type. Also fixed a couple
of comments.
llvm-svn: 200325
| -rw-r--r-- | llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp | 6 | ||||
| -rw-r--r-- | llvm/test/CodeGen/NVPTX/aggr-param.ll | 20 |
2 files changed, 23 insertions, 3 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp index 2c8e7e70f68..5fad27e47a9 100644 --- a/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp +++ b/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp @@ -1522,8 +1522,8 @@ void NVPTXAsmPrinter::emitFunctionParamList(const Function *F, raw_ostream &O) { } if (PAL.hasAttribute(paramIndex + 1, Attribute::ByVal) == false) { - if (Ty->isVectorTy()) { - // Just print .param .b8 .align <a> .param[size]; + if (Ty->isAggregateType() || Ty->isVectorTy()) { + // Just print .param .align <a> .b8 .param[size]; // <a> = PAL.getparamalignment // size = typeallocsize of element type unsigned align = PAL.getParamAlignment(paramIndex + 1); @@ -1603,7 +1603,7 @@ void NVPTXAsmPrinter::emitFunctionParamList(const Function *F, raw_ostream &O) { Type *ETy = PTy->getElementType(); if (isABI || isKernelFunc) { - // Just print .param .b8 .align <a> .param[size]; + // Just print .param .align <a> .b8 .param[size]; // <a> = PAL.getparamalignment // size = typeallocsize of element type unsigned align = PAL.getParamAlignment(paramIndex + 1); diff --git a/llvm/test/CodeGen/NVPTX/aggr-param.ll b/llvm/test/CodeGen/NVPTX/aggr-param.ll new file mode 100644 index 00000000000..21deb7ebce8 --- /dev/null +++ b/llvm/test/CodeGen/NVPTX/aggr-param.ll @@ -0,0 +1,20 @@ +; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s + +; Make sure aggregate param types get emitted properly. + +%struct.float4 = type { float, float, float, float } + +; CHECK: .visible .func bar +; CHECK: .param .align 4 .b8 bar_param_0[16] +define void @bar(%struct.float4 %f) { +entry: + ret void +} + +; CHECK: .visible .func foo +; CHECK: .param .align 4 .b8 foo_param_0[20] +define void @foo([5 x i32] %f) { +entry: + ret void +} + |

