diff options
author | Mike Pall <mike> | 2024-08-20 19:00:47 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2024-08-20 19:00:47 +0200 |
commit | 32a683d226a3b57adbfeabff17d1ae0f7676545d (patch) | |
tree | bb358d0a00c82376357cbefa70ded6fb2916ac55 /src | |
parent | ab39082fddfca0de268a106a3b6d736eef032328 (diff) | |
download | luajit-32a683d226a3b57adbfeabff17d1ae0f7676545d.tar.gz luajit-32a683d226a3b57adbfeabff17d1ae0f7676545d.tar.bz2 luajit-32a683d226a3b57adbfeabff17d1ae0f7676545d.zip |
ARM: Make hard-float tobit conversions match JIT backend behavior.
Reported by Peter Cawley. #1253
Diffstat (limited to 'src')
-rw-r--r-- | src/vm_arm.dasc | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc index 872de45a..d23e57c1 100644 --- a/src/vm_arm.dasc +++ b/src/vm_arm.dasc | |||
@@ -1863,9 +1863,19 @@ static void build_subroutines(BuildCtx *ctx) | |||
1863 | | | 1863 | | |
1864 | |//-- Bit library -------------------------------------------------------- | 1864 | |//-- Bit library -------------------------------------------------------- |
1865 | | | 1865 | | |
1866 | |// FP number to bit conversion for soft-float. Clobbers r0-r3. | ||
1867 | |->vm_tobit_fb: | 1866 | |->vm_tobit_fb: |
1868 | | bhi ->fff_fallback | 1867 | | bhi ->fff_fallback |
1868 | |.if FPU | ||
1869 | |// FP number to bit conversion for hard-float. Clobbers r0, d0-d1. | ||
1870 | | vldr d1, >9 | ||
1871 | | vmov d0, CARG1, CARG2 | ||
1872 | | vadd.f64 d0, d0, d1 | ||
1873 | | vmov CARG1, s0 | ||
1874 | | bx lr | ||
1875 | |9: | ||
1876 | | .long 0, 0x43380000 // (double)(2^52 + 2^51). | ||
1877 | |.else | ||
1878 | |// FP number to bit conversion for soft-float. Clobbers r0-r3. | ||
1869 | |->vm_tobit: | 1879 | |->vm_tobit: |
1870 | | lsl RB, CARG2, #1 | 1880 | | lsl RB, CARG2, #1 |
1871 | | adds RB, RB, #0x00200000 | 1881 | | adds RB, RB, #0x00200000 |
@@ -1890,6 +1900,7 @@ static void build_subroutines(BuildCtx *ctx) | |||
1890 | | orr CARG1, CARG4, CARG1, lsl RB | 1900 | | orr CARG1, CARG4, CARG1, lsl RB |
1891 | | rsblt CARG1, CARG1, #0 | 1901 | | rsblt CARG1, CARG1, #0 |
1892 | | bx lr | 1902 | | bx lr |
1903 | |.endif | ||
1893 | | | 1904 | | |
1894 | |.macro .ffunc_bit, name | 1905 | |.macro .ffunc_bit, name |
1895 | | .ffunc_1 bit_..name | 1906 | | .ffunc_1 bit_..name |