teach cellspu how to return i8 and i16 from calls,

patch by Kalle Raiskila!

llvm-svn: 101875
This commit is contained in:
Chris Lattner 2010-04-20 05:36:09 +00:00
parent 66e809acc0
commit 38c1a1a247
2 changed files with 10 additions and 12 deletions

View File

@ -1330,22 +1330,12 @@ SPUTargetLowering::LowerCall(SDValue Chain, SDValue Callee,
InVals.push_back(Chain.getValue(0));
}
break;
case MVT::i8:
case MVT::i16:
case MVT::i64:
Chain = DAG.getCopyFromReg(Chain, dl, SPU::R3, MVT::i64,
InFlag).getValue(1);
InVals.push_back(Chain.getValue(0));
break;
case MVT::i128:
Chain = DAG.getCopyFromReg(Chain, dl, SPU::R3, MVT::i128,
InFlag).getValue(1);
InVals.push_back(Chain.getValue(0));
break;
case MVT::f32:
case MVT::f64:
Chain = DAG.getCopyFromReg(Chain, dl, SPU::R3, Ins[0].VT,
InFlag).getValue(1);
InVals.push_back(Chain.getValue(0));
break;
case MVT::v2f64:
case MVT::v2i64:
case MVT::v4f32:

View File

@ -0,0 +1,8 @@
; RUN: llc %s -march=cellspu -o -
declare i8 @return_i8()
declare i16 @return_i16()
define void @testfunc() {
%rv1 = call i8 @return_i8()
%rv2 = call i16 @return_i16()
ret void
}