; Test parameter passing and return values ;RUN: llc --march=cellspu %s -o - | FileCheck %s ; this fits into registers r3-r74 %paramstruct = type { i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32, i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32, i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32, i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32, i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32, i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32,i32} define ccc i32 @test_regs( %paramstruct %prm ) { ;CHECK: lr $3, $74 ;CHECK: bi $lr %1 = extractvalue %paramstruct %prm, 71 ret i32 %1 } define ccc i32 @test_regs_and_stack( %paramstruct %prm, i32 %stackprm ) { ;CHECK-NOT: a $3, $74, $75 %1 = extractvalue %paramstruct %prm, 71 %2 = add i32 %1, %stackprm ret i32 %2 } define ccc %paramstruct @test_return( i32 %param, %paramstruct %prm ) { ;CHECK: lqd {{\$[0-9]+}}, 80($sp) ;CHECK-NOT: ori {{\$[0-9]+, \$[0-9]+, 0}} ;CHECK: lr $3, $4 ret %paramstruct %prm }