From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 94F6C6F177; Tue, 21 Jul 2026 17:54:24 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 94F6C6F177 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1784645664; bh=xkcuhc2ADYScl0vPklSu1h8L8KP5DQeTgv8gHAJOGb4=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=e0QbmWQj06D1v+izookvvslsxeTjOHJNMY50BzjqvB3se32YLczMmZ8YvHE1/cKYL g5Rg8HJW3YTX2v/4cjgllyXwYh9aTVlZ1hhHP4WhFVvS0lEwiEFamSOJ2jzEYHMb8A E25unW7JpkMAYYYYNnJNqCcl+DbcJkOhlP+THwuI= Received: from send60.i.mail.ru (send60.i.mail.ru [89.221.237.155]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id B0B8D6F177 for ; Tue, 21 Jul 2026 17:53:25 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org B0B8D6F177 Received: by exim-smtp-86556fd747-9jc69 with esmtpa (envelope-from ) id 1wmBqW-00000000N2N-3TnZ; Tue, 21 Jul 2026 17:53:25 +0300 To: Sergey Bronnikov , Evgeniy Temirgaleev Date: Tue, 21 Jul 2026 17:53:09 +0300 Message-ID: <103733d5267298d59381cca0401fee35100ac63b.1784642965.git.skaplun@tarantool.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-4EC0790: 10 X-7564579A: B8F34718100C35BD X-77F55803: 4F1203BC0FB41BD93ED3C6BF6FFA701F47C7C3D94A5A406FA166F666E566FC74182A05F538085040F8F26FB513A870533DE06ABAFEAF67055E46545CE0DFF4249FCF280F550F9B9B408B34B1CBA95A7D X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7C4A7E4C0BFE8628DEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F7900637AC83A81C8FD4AD23D82A6BABE6F325AC2E85FA5F3EDFCBAA7353EFBB5533756628E6EC474EC885271E7085C0FFA027FADFEE1B84FC467072EC3E6A7F91928BE8389733CBF5DBD5E913377AFFFEAFD269176DF2183F8FC7C0B27420F9988F54058941B15DA834481FCF19DD082D7633A0EF3E4896CB9E6436389733CBF5DBD5E9D5E8D9A59859A8B6A70DDFFB3186CBC5CC7F00164DA146DA6F5DAA56C3B73B237318B6A418E8EAB86D1867E19FE14079C09775C1D3CA48CF3D321E7403792E342EB15956EA79C166A417C69337E82CC275ECD9A6C639B01B78DA827A17800CE7AD122C37AACC1F02731C566533BA786AA5CC5B56E945C8DA X-C1DE0DAB: 0D63561A33F958A54530CCE9C57522435002B1117B3ED69684DBB4B0A5FBD2325D145BB8EF0DE66B823CB91A9FED034534781492E4B8EEAD9CFA8CFAC159CE19C79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34CAB70F9BE574AE9C625B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D6590D3FA8A1BB53E7D76EBE1887AFE8E3E441CAA53D777A04B33FABA268676AEC27E7748B066F871798B8341EE9D5BE9A0A21B963E9DC8852EB0E038AA1B07CC2684E1E3B39D7337063C7CEAA0681F5848F4C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVWmxowtcrDwUNvqggk3fNBQ= X-DA7885C5: 96A9E6583FD7A90FF255D290C0D534F931052CBB2D97CCBD88E95450175ED19B0392177F9FE5ADE35B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393520AF17B8A65FDE2CCAFE27E61A3FB2809039E9E6861AF235BD26CAAB3D305C3E49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH luajit 2/2] ARM: Make hard-float tobit conversions match JIT backend behavior. X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" From: Mike Pall Reported by Peter Cawley. (cherry picked from commit 32a683d226a3b57adbfeabff17d1ae0f7676545d) On the arm architecture, the `tobit()` function incorrectly truncates 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 -- 2.55.0