From: Sergey Bronnikov via Tarantool-patches <tarantool-patches@dev.tarantool.org>
To: Sergey Kaplun <skaplun@tarantool.org>,
Evgeniy Temirgaleev <e.temirgaleev@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH luajit 2/2] ARM: Make hard-float tobit conversions match JIT backend behavior.
Date: Fri, 24 Jul 2026 13:02:44 +0300 [thread overview]
Message-ID: <ebb0d5d9-b915-40f6-9792-b8b1a779f3a0@tarantool.org> (raw)
In-Reply-To: <103733d5267298d59381cca0401fee35100ac63b.1784642965.git.skaplun@tarantool.org>
[-- Attachment #1: Type: text/plain, Size: 2020 bytes --]
Hello,
thanks for the patch! LGTM with a minor comment
Sergey
On 7/21/26 17:53, Sergey Kaplun wrote:
> From: Mike Pall <mike>
>
> Reported by Peter Cawley.
>
> (cherry picked from commit 32a683d226a3b57adbfeabff17d1ae0f7676545d)
>
> On the arm architecture, the `tobit()` function incorrectly truncates
s/arm/ARM/
> instead of rounding to the nearest integer. This leads to inconsistency
> between various VMs (comparing to x86/x64, for example) and between the
> arm VM and JIT.
>
> This patch uses an addition of 2^52 + 2^51 constant to the given
> argument to convert it to the nearest integer value. After reading the
> lowest 32 bits of the register, we get the expected result.
>
> The test is the same as for the previous commit.
>
> Sergey Kaplun:
> * added the description for the problem
>
> Part of tarantool/tarantool#12880
> ---
> src/vm_arm.dasc | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc
> index 7ed555f8..139f7fed 100644
> --- a/src/vm_arm.dasc
> +++ b/src/vm_arm.dasc
> @@ -1829,9 +1829,19 @@ static void build_subroutines(BuildCtx *ctx)
> |
> |//-- Bit library --------------------------------------------------------
> |
> - |// FP number to bit conversion for soft-float. Clobbers r0-r3.
> |->vm_tobit_fb:
> | bhi ->fff_fallback
> + |.if FPU
> + |// FP number to bit conversion for hard-float. Clobbers r0, d0-d1.
> + | vldr d1, >9
> + | vmov d0, CARG1, CARG2
> + | vadd.f64 d0, d0, d1
> + | vmov CARG1, s0
> + | bx lr
> + |9:
> + | .long 0, 0x43380000 // (double)(2^52 + 2^51).
> + |.else
> + |// FP number to bit conversion for soft-float. Clobbers r0-r3.
> |->vm_tobit:
> | lsl RB, CARG2, #1
> | adds RB, RB, #0x00200000
> @@ -1856,6 +1866,7 @@ static void build_subroutines(BuildCtx *ctx)
> | orr CARG1, CARG4, CARG1, lsl RB
> | rsblt CARG1, CARG1, #0
> | bx lr
> + |.endif
> |
> |.macro .ffunc_bit, name
> | .ffunc_1 bit_..name
[-- Attachment #2: Type: text/html, Size: 2592 bytes --]
next prev parent reply other threads:[~2026-07-24 10:02 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-21 14:53 [Tarantool-patches] [PATCH luajit 0/2] Fix tobit conversion on arm architectures Sergey Kaplun via Tarantool-patches
2026-07-21 14:53 ` [Tarantool-patches] [PATCH luajit 1/2] ARM64: Make tobit conversions match JIT backend behavior Sergey Kaplun via Tarantool-patches
2026-07-24 10:00 ` Sergey Bronnikov via Tarantool-patches
2026-07-24 10:59 ` Sergey Kaplun via Tarantool-patches
2026-07-21 14:53 ` [Tarantool-patches] [PATCH luajit 2/2] ARM: Make hard-float " Sergey Kaplun via Tarantool-patches
2026-07-24 10:02 ` Sergey Bronnikov via Tarantool-patches [this message]
2026-07-24 11:03 ` Sergey Kaplun via Tarantool-patches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ebb0d5d9-b915-40f6-9792-b8b1a779f3a0@tarantool.org \
--to=tarantool-patches@dev.tarantool.org \
--cc=e.temirgaleev@tarantool.org \
--cc=sergeyb@tarantool.org \
--cc=skaplun@tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH luajit 2/2] ARM: Make hard-float tobit conversions match JIT backend behavior.' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox