Update lrint/lrintf/lrintl for x32
authorH.J. Lu <hjl.tools@gmail.com>
Fri, 9 Oct 2015 18:33:30 +0000 (11:33 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 9 Oct 2015 18:42:10 +0000 (11:42 -0700)
commit4b71ce6c1a50c14c758f1dd7a2943f2ab9760e85
treef5b4c1583cd758301d678976a78071f829f5b6a9
parent0fcc93bce950c8d0c440eee3f968fbeec22db784
Update lrint/lrintf/lrintl for x32

The x86_64 versions of lrint/lrintf/ lrintl are aliases for the long
long versions which isn't correct for x32, where exceptions must respect
overflow for 32-bit long.  Separate versions of the long functions for
x32 that convert to 32-bit long and raise the right exceptions for that
conversion, while keeping the aliases in the non-x32 case.

Tested on x86_64 and x32.  There are no code changes in libm.so on
x86_64.

* sysdeps/x86_64/fpu/s_llrint.S (__lrint): Add alias only if
__ILP32__ isn't defined.
(lrint): Likewise.
* sysdeps/x86_64/fpu/s_llrintf.S (__lrintf): Likewise.
(lrintf): Likewise.
* sysdeps/x86_64/fpu/s_llrintl.S (__lrintl): Likewise.
(lrintl): Likewise.
* sysdeps/x86_64/x32/fpu/s_lrint.S: New file.
* sysdeps/x86_64/x32/fpu/s_lrintf.S: Likewise.
* sysdeps/x86_64/x32/fpu/s_lrintl.S: Likewise.
ChangeLog
sysdeps/x86_64/fpu/s_llrint.S
sysdeps/x86_64/fpu/s_llrintf.S
sysdeps/x86_64/fpu/s_llrintl.S
sysdeps/x86_64/x32/fpu/s_lrint.S [new file with mode: 0644]
sysdeps/x86_64/x32/fpu/s_lrintf.S [new file with mode: 0644]
sysdeps/x86_64/x32/fpu/s_lrintl.S [new file with mode: 0644]