From af2cb0254217c2959da19cdfa382601b22eb3297 Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 19 Aug 2012 22:37:43 +0200 Subject: [PATCH] ARM: Fix hard-float lj_vm_trunc() (used by compiled math.modf). --- src/vm_arm.dasc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vm_arm.dasc b/src/vm_arm.dasc index 355a53e6..b9193213 100644 --- a/src/vm_arm.dasc +++ b/src/vm_arm.dasc @@ -2210,13 +2210,13 @@ static void build_subroutines(BuildCtx *ctx) | vcmp.f64 d1, d2 // |x| >= 2^52 or NaN? | vmrs |.if "func" == "trunc" - | vadd.f64 d0, d1, d2 | bxpl lr // Return argument unchanged. + | vadd.f64 d0, d1, d2 | vsub.f64 d0, d0, d2 // (|x| + 2^52) - 2^52 | vldr d2, <9 // +1.0 | vcmp.f64 d1, d0 // |x| < result: subtract +1.0 | vmrs - | vsubmi.f64 d0, d1, d2 + | vsubmi.f64 d0, d0, d2 | cmp CARG2, #0 | vnegmi.f64 d0, d0 // Merge sign bit back in. |.else