1 ; 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} 11 define 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 19 define 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 27 define ccc %paramstruct @test_return( i32 %param, %paramstruct %prm ) 28 { 29 ;CHECK: lqd {{\$[0-9]+}}, 80($sp) 30 ;CHECK-NOT: ori {{\$[0-9]+, \$[0-9]+, 0}} 31 ;CHECK: lr $3, $4 32 ret %paramstruct %prm 33 } 34 35