powerpc/85xx: Fix SPE float to integer conversion failure
authorShan Hai <shan.hai@windriver.com>
Wed, 17 Nov 2010 02:28:53 +0000 (10:28 +0800)
committerKumar Gala <galak@kernel.crashing.org>
Tue, 15 Mar 2011 18:48:15 +0000 (13:48 -0500)
commitafc0a07d4a283599ac3a6a31d7454e9baaeccca0
tree0cc07560a34c697f1f67841ee637170f4e38e416
parentcf773702b912544fdb8573c5f4299513d66bb0bf
powerpc/85xx: Fix SPE float to integer conversion failure

Conversion from float to integer should based on both the instruction
encoding and the sign of the operand.

A simple testcase to show the issue:

static float fm;
static signed int si_min = (-2147483647 - 1);
static unsigned int ui;
int main()
{
       fm = (float) si_min; ;
       ui = (unsigned int)fm;
       printf("ui=%d, should be %d\n", ui, si_min);

       return 0;
}
Result: ui=-1, should be -2147483648

Signed-off-by: Shan Hai <shan.hai@windriver.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
arch/powerpc/math-emu/math_efp.c