diff --git a/src/vm_arm64.dasc b/src/vm_arm64.dasc index a6ce0507..4753df19 100644 --- a/src/vm_arm64.dasc +++ b/src/vm_arm64.dasc @@ -1658,22 +1658,14 @@ static void build_subroutines(BuildCtx *ctx) | |//-- Bit library -------------------------------------------------------- | - |// FP number to bit conversion for soft-float. Clobbers CARG1-CARG3 + |// FP number to bit conversion. Clobbers CARG1-CARG2, FARG1-FARG2. |->vm_tobit_fb: | bls ->fff_fallback - | add CARG2, CARG1, CARG1 - | mov CARG3, #1076 - | sub CARG3, CARG3, CARG2, lsr #53 - | cmp CARG3, #53 - | bhi >1 - | and CARG2, CARG2, #U64x(001fffff,ffffffff) - | orr CARG2, CARG2, #U64x(00200000,00000000) - | cmp CARG1, #0 - | lsr CARG2, CARG2, CARG3 - | cneg CARG1w, CARG2w, mi - | br lr - |1: - | mov CARG1w, #0 + | fmov FARG1, CARG1 + | movz CARG2, #0x4338, lsl #48 + | fmov FARG2, CARG2 + | fadd FARG1, FARG1, FARG2 + | fmov CARG1w, s0 | br lr | |.macro .ffunc_bit, name