diff options
author | Mike Pall <mike> | 2024-08-20 19:01:51 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2024-08-20 19:01:51 +0200 |
commit | cdc2db3aeac442e139c3b1fda715fdfa78da8791 (patch) | |
tree | 7c8a812aafa593b2cd3ceb45ed5e1920ffade961 /src | |
parent | f4fa5646a8149ee0298e14d40cf078ec609a4354 (diff) | |
download | luajit-cdc2db3aeac442e139c3b1fda715fdfa78da8791.tar.gz luajit-cdc2db3aeac442e139c3b1fda715fdfa78da8791.tar.bz2 luajit-cdc2db3aeac442e139c3b1fda715fdfa78da8791.zip |
ARM64: Make tobit conversions match JIT backend behavior.
Thanks to Peter Cawley. #1253
Diffstat (limited to 'src')
-rw-r--r-- | src/vm_arm64.dasc | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/vm_arm64.dasc b/src/vm_arm64.dasc index a6ce0507..4753df19 100644 --- a/src/vm_arm64.dasc +++ b/src/vm_arm64.dasc | |||
@@ -1658,22 +1658,14 @@ static void build_subroutines(BuildCtx *ctx) | |||
1658 | | | 1658 | | |
1659 | |//-- Bit library -------------------------------------------------------- | 1659 | |//-- Bit library -------------------------------------------------------- |
1660 | | | 1660 | | |
1661 | |// FP number to bit conversion for soft-float. Clobbers CARG1-CARG3 | 1661 | |// FP number to bit conversion. Clobbers CARG1-CARG2, FARG1-FARG2. |
1662 | |->vm_tobit_fb: | 1662 | |->vm_tobit_fb: |
1663 | | bls ->fff_fallback | 1663 | | bls ->fff_fallback |
1664 | | add CARG2, CARG1, CARG1 | 1664 | | fmov FARG1, CARG1 |
1665 | | mov CARG3, #1076 | 1665 | | movz CARG2, #0x4338, lsl #48 |
1666 | | sub CARG3, CARG3, CARG2, lsr #53 | 1666 | | fmov FARG2, CARG2 |
1667 | | cmp CARG3, #53 | 1667 | | fadd FARG1, FARG1, FARG2 |
1668 | | bhi >1 | 1668 | | fmov CARG1w, s0 |
1669 | | and CARG2, CARG2, #U64x(001fffff,ffffffff) | ||
1670 | | orr CARG2, CARG2, #U64x(00200000,00000000) | ||
1671 | | cmp CARG1, #0 | ||
1672 | | lsr CARG2, CARG2, CARG3 | ||
1673 | | cneg CARG1w, CARG2w, mi | ||
1674 | | br lr | ||
1675 | |1: | ||
1676 | | mov CARG1w, #0 | ||
1677 | | br lr | 1669 | | br lr |
1678 | | | 1670 | | |
1679 | |.macro .ffunc_bit, name | 1671 | |.macro .ffunc_bit, name |