diff options
author | Joseph Myers <joseph@codesourcery.com> | 2014-10-09 15:00:37 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2014-10-09 15:00:37 +0000 |
commit | a736ec370a05e4b37e6101eb3168bf8dc4c5af13 (patch) | |
tree | 665968c60d407cb06565ee80c8c2dcc996f42807 /soft-fp/extended.h | |
parent | ff12c11f4515a9f83467471e8d4381eb3dbc06b5 (diff) | |
download | glibc-a736ec370a05e4b37e6101eb3168bf8dc4c5af13.tar.gz glibc-a736ec370a05e4b37e6101eb3168bf8dc4c5af13.tar.xz glibc-a736ec370a05e4b37e6101eb3168bf8dc4c5af13.zip |
soft-fp: Support rsigned == 2 in _FP_TO_INT.
Continuing the addition of soft-fp features in the Linux kernel version, this patch adds _FP_TO_INT support for rsigned == 2 (reduce overflowing results modulo 2^rsize to fit in the destination, used for alpha emulation). The kernel version is buggy; it can left shift by a negative amount when right shifting is required in an overflow case (the kernel version also has other bugs fixed long ago in glibc; at least, spurious exceptions converting to the most negative integer). This version avoids that by handling overflow (other than to 0) for rsigned == 2 along with the normal non-overflow case, which already properly determines the direction in which to shift. Tested for powerpc-nofpu. Some functions get slightly bigger and some get slightly smaller, no doubt as a result of the change to where in the macro "inexact" is raised, but I don't think those changes are significant. Also tested for powerpc-nofpu with the relevant __fix* functions changed to use rsigned == 2 (which is after all just as valid as rsigned == 1 in IEEE terms), including verifying the results and exceptions for various cases of conversions. With these seven patches, the one remaining feature to add for the soft-fp code to have all the features of the kernel version is _FP_TO_INT_ROUND. * soft-fp/op-common.h (_FP_TO_INT): Handle rsigned == 2.
Diffstat (limited to 'soft-fp/extended.h')
0 files changed, 0 insertions, 0 deletions