ARM64: Make tobit conversions match JIT backend behavior.

Thanks to Peter Cawley. #1253
This commit is contained in:
Mike Pall 2024-08-20 19:01:51 +02:00
parent f4fa5646a8
commit cdc2db3aea

View File

@ -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