mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 01:55:08 +00:00
[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
This commit is contained in:
parent
2ea61f17ad
commit
2c283400f9
@ -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);
|
||||
|
20
llvm/test/CodeGen/NVPTX/aggr-param.ll
Normal file
20
llvm/test/CodeGen/NVPTX/aggr-param.ll
Normal 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
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user