aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2024-08-20 19:00:47 +0200
committerMike Pall <mike>2024-08-20 19:00:47 +0200
commit32a683d226a3b57adbfeabff17d1ae0f7676545d (patch)
treebb358d0a00c82376357cbefa70ded6fb2916ac55 /src
parentab39082fddfca0de268a106a3b6d736eef032328 (diff)
downloadluajit-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.dasc13
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