diff options
author | Mike Pall <mike> | 2022-07-08 15:12:43 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2022-07-08 15:12:43 +0200 |
commit | e3bae12fc0461cfa7e4bef3dfed2dad372e5da8d (patch) | |
tree | 0172732629c000567a6f68178b5132a1a551ec07 | |
parent | 4c2441c16ce3c4e312aaefecc6d40c4fe21de97c (diff) | |
parent | 674afcd4e21d0cf64de3219d347557a0aed8ecc7 (diff) | |
download | luajit2-e3bae12fc0461cfa7e4bef3dfed2dad372e5da8d.tar.gz |
Merge branch 'master' into v2.1
-rw-r--r-- | src/vm_x64.dasc | 13 | ||||
-rw-r--r-- | src/vm_x86.dasc | 13 |
2 files changed, 12 insertions, 14 deletions
diff --git a/src/vm_x64.dasc b/src/vm_x64.dasc index 8dd48b84..03d96557 100644 --- a/src/vm_x64.dasc +++ b/src/vm_x64.dasc @@ -359,9 +359,6 @@ |.macro sseconst_1, reg, tmp // Synthesize 1.0. | sseconst_hi reg, tmp, 3ff00000 |.endmacro -|.macro sseconst_m1, reg, tmp // Synthesize -1.0. -| sseconst_hi reg, tmp, bff00000 -|.endmacro |.macro sseconst_2p52, reg, tmp // Synthesize 2^52. | sseconst_hi reg, tmp, 43300000 |.endmacro @@ -2530,15 +2527,17 @@ static void build_subroutines(BuildCtx *ctx) | addsd xmm1, xmm3 // (|x| + 2^52) - 2^52 | subsd xmm1, xmm3 | orpd xmm1, xmm2 // Merge sign bit back in. + | sseconst_1 xmm3, RD | .if mode == 1 // ceil(x)? - | sseconst_m1 xmm2, RD // Must subtract -1 to preserve -0. | cmpsd xmm0, xmm1, 6 // x > result? + | andpd xmm0, xmm3 + | addsd xmm1, xmm0 // If yes, add 1. + | orpd xmm1, xmm2 // Merge sign bit back in (again). | .else // floor(x)? - | sseconst_1 xmm2, RD | cmpsd xmm0, xmm1, 1 // x < result? + | andpd xmm0, xmm3 + | subsd xmm1, xmm0 // If yes, subtract 1. | .endif - | andpd xmm0, xmm2 - | subsd xmm1, xmm0 // If yes, subtract +-1. |.endif | movaps xmm0, xmm1 |1: diff --git a/src/vm_x86.dasc b/src/vm_x86.dasc index de12ac64..18ca87b5 100644 --- a/src/vm_x86.dasc +++ b/src/vm_x86.dasc @@ -464,9 +464,6 @@ |.macro sseconst_1, reg, tmp // Synthesize 1.0. | sseconst_hi reg, tmp, 3ff00000 |.endmacro -|.macro sseconst_m1, reg, tmp // Synthesize -1.0. -| sseconst_hi reg, tmp, bff00000 -|.endmacro |.macro sseconst_2p52, reg, tmp // Synthesize 2^52. | sseconst_hi reg, tmp, 43300000 |.endmacro @@ -2989,15 +2986,17 @@ static void build_subroutines(BuildCtx *ctx) | addsd xmm1, xmm3 // (|x| + 2^52) - 2^52 | subsd xmm1, xmm3 | orpd xmm1, xmm2 // Merge sign bit back in. + | sseconst_1 xmm3, RDa | .if mode == 1 // ceil(x)? - | sseconst_m1 xmm2, RDa // Must subtract -1 to preserve -0. | cmpsd xmm0, xmm1, 6 // x > result? + | andpd xmm0, xmm3 + | addsd xmm1, xmm0 // If yes, add 1. + | orpd xmm1, xmm2 // Merge sign bit back in (again). | .else // floor(x)? - | sseconst_1 xmm2, RDa | cmpsd xmm0, xmm1, 1 // x < result? + | andpd xmm0, xmm3 + | subsd xmm1, xmm0 // If yes, subtract 1. | .endif - | andpd xmm0, xmm2 - | subsd xmm1, xmm0 // If yes, subtract +-1. |.endif | movaps xmm0, xmm1 |1: |