[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.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200325 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Gautam Chakrabarti 2014-01-28 18:35:29 +00:00
parent 106b79744b
commit 3dcb2a2d92
2 changed files with 23 additions and 3 deletions

View File

@ -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);

View File

@ -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
}