fix x86_64 lrintl asm, again
authorRich Felker <dalias@aerifal.cx>
Fri, 13 Sep 2013 05:22:13 +0000 (01:22 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 13 Sep 2013 05:22:13 +0000 (01:22 -0400)
the underlying problem was not incorrect sign extension (fixed in the
previous commit to this file by nsz) but that code that treats "long"
as 32-bit was copied blindly from i386 to x86_64.

now lrintl is identical to llrintl on x86_64, as it should be.

src/math/x86_64/lrintl.s

index 0e2c771240f83bc4082a664843d4b5fe707ee685..d587b12b5aba0aafdabb6285b77fb34451b32304 100644 (file)
@@ -2,6 +2,6 @@
 .type lrintl,@function
 lrintl:
        fldt 8(%rsp)
-       fistpl 8(%rsp)
-       movslq 8(%rsp),%rax
+       fistpll 8(%rsp)
+       mov 8(%rsp),%rax
        ret