mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
[NVPTX] Use ABI alignment for parameters when alignment is not specified.
Affects SM 2.0+. Fixes bug 13324. llvm-svn: 167646
This commit is contained in:
parent
3163eb097c
commit
be8faeed70
@ -1525,6 +1525,9 @@ void NVPTXAsmPrinter::emitFunctionParamList(const Function *F,
|
||||
// <a> = PAL.getparamalignment
|
||||
// size = typeallocsize of element type
|
||||
unsigned align = PAL.getParamAlignment(paramIndex+1);
|
||||
if (align == 0)
|
||||
align = TD->getABITypeAlignment(ETy);
|
||||
|
||||
unsigned sz = TD->getTypeAllocSize(ETy);
|
||||
O << "\t.param .align " << align
|
||||
<< " .b8 ";
|
||||
|
25
test/CodeGen/NVPTX/param-align.ll
Normal file
25
test/CodeGen/NVPTX/param-align.ll
Normal file
@ -0,0 +1,25 @@
|
||||
; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s
|
||||
|
||||
;;; Need 4-byte alignment on float* passed byval
|
||||
define ptx_device void @t1(float* byval %x) {
|
||||
; CHECK: .func t1
|
||||
; CHECK: .param .align 4 .b8 t1_param_0[4]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
;;; Need 8-byte alignment on double* passed byval
|
||||
define ptx_device void @t2(double* byval %x) {
|
||||
; CHECK: .func t2
|
||||
; CHECK: .param .align 8 .b8 t2_param_0[8]
|
||||
ret void
|
||||
}
|
||||
|
||||
|
||||
;;; Need 4-byte alignment on float2* passed byval
|
||||
%struct.float2 = type { float, float }
|
||||
define ptx_device void @t3(%struct.float2* byval %x) {
|
||||
; CHECK: .func t3
|
||||
; CHECK: .param .align 4 .b8 t3_param_0[8]
|
||||
ret void
|
||||
}
|
Loading…
Reference in New Issue
Block a user