blob: 7410b724d6fc4533bdb8ffeab1b2b95a510b32ec [file] [log] [blame]
Kalle Raiskila44ff5f52010-08-18 09:50:30 +00001; Test parameter passing and return values
2;RUN: llc --march=cellspu %s -o - | FileCheck %s
3
4; this fits into registers r3-r74
5%paramstruct = type { i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
6 i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
7 i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
8 i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
9 i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,
10 i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32}
11define ccc i32 @test_regs( %paramstruct %prm )
12{
13;CHECK: lr $3, $74
14;CHECK: bi $lr
15 %1 = extractvalue %paramstruct %prm, 71
16 ret i32 %1
17}
18
19define ccc i32 @test_regs_and_stack( %paramstruct %prm, i32 %stackprm )
20{
21;CHECK-NOT: a $3, $74, $75
22 %1 = extractvalue %paramstruct %prm, 71
23 %2 = add i32 %1, %stackprm
24 ret i32 %2
25}
26
27define ccc %paramstruct @test_return( i32 %param, %paramstruct %prm )
28{
Kalle Raiskila7ea1ab52010-11-12 10:14:03 +000029;CHECK: lqd {{\$[0-9]+}}, 80($sp)
Kalle Raiskila82581352010-10-01 09:20:01 +000030;CHECK-NOT: ori {{\$[0-9]+, \$[0-9]+, 0}}
Kalle Raiskila44ff5f52010-08-18 09:50:30 +000031;CHECK: lr $3, $4
32 ret %paramstruct %prm
33}
34