CVSROOT: /cvs
Module name: src
Changes by: [EMAIL PROTECTED] 2008/10/07 16:06:29
Modified files:
sys/arch/alpha/alpha: fp_complete.c
sys/lib/libkern: softfloat.c softfloat.h
Log message:
unbreak ieeefp emulation code wrt converting double to unsigned
long ints for alpha. we've got only one instruction (cvttq) to
convert double-t to quadword, and float64_to_int64 did not take
into account the unsigned conversions
therefore, overflow always occured, and half of the unsigned range
(LONG_MAX .. ULONG_MAX) was broken
introduce roundAndPackInt64NoOverflow and float64_to_int64_no_overflow
for softfloat, that works with unsigned integers as well. note
that this will return zero for nan/inf/oflow/uflow, raising exception
flag
perl is happy now
looked over by miod@
tested by naddy@, and by me on nick@'s alpha