Fabian
2a22980cf7
jit {F2,F3}0F2A (cvtsi2ss, cvtsi2sd)
2021-04-04 23:32:06 -05:00
Fabian
2b2d22f6d3
jit {,66}0F2A (cvtpi2ps, cvtsi2ss, cvtpi2pd, cvtsi2sd)
2021-04-04 22:56:50 -05:00
Fabian
9e63bab294
jit {,66}0F{2E,2F} (ucomiss, ucomisd, comiss, comisd)
2021-04-04 22:32:36 -05:00
Fabian
a0c4c32352
jit {,66,F2,F3}0F{5A,5B} (cvtps2pd, cvtpd2ps, cvtss2sd, cvtsd2ss, cvtdq2ps, cvtps2dq, cvttps2dq)
2021-04-04 20:58:40 -05:00
Fabian
c5ca3ca09e
jit 0F{74,75,76} (pcmpeqb, pcmpeqw, pcmpeqd)
2021-04-04 16:27:26 -05:00
Fabian
44c606f5a6
jit 660F{75,76} (pcmpeqw, pcmpeqd)
2021-04-04 16:23:37 -05:00
Fabian
73aa610f72
jit 8E (mov sreg, reg)
2021-04-04 16:02:22 -05:00
Fabian
28369ed790
jit {,66,F2,F3}0F{58,59,5C,5D,5E,5F} ({add,mul,sub,min,div,max}{ps,ss,pd,sd})
2021-04-04 15:41:54 -05:00
Fabian
12ec5d753d
jit {,66}0F{54,55,56,57} ({and,andn,or,xor}{ps,pd})
2021-04-04 15:35:21 -05:00
Fabian
03566c2067
jit {,F3}0F53 (rcp{ps,ss})
2021-04-04 15:35:21 -05:00
Fabian
38c484629d
jit {,F3}0F52 (rsqrt{ps,ss})
2021-04-04 15:35:21 -05:00
Fabian
297d649836
jit {,66,F2,F3}0F51
2021-04-04 15:20:51 -05:00
Fabian
e2ec0c9442
Move code into sse_read64_xmm_{mem,xmm}
2021-04-04 15:07:36 -05:00
Fabian
c18cf46022
jit sbb32
2021-04-03 22:53:51 -05:00
Fabian
bf92188faf
jit adc32
2021-04-03 22:53:44 -05:00
Fabian
bc11d7089e
jit 0fc2/cmpps 660fc2/cmppd
2020-12-31 19:14:34 -06:00
Fabian
2b7b562a56
jit 0fc6/shufps
2020-12-31 19:14:34 -06:00
Fabian
1dfdc9d19a
jit 660fc6/shufpd
2020-12-31 19:14:34 -06:00
Fabian
3a8102811d
jit f30f11/movss
2020-12-31 19:14:34 -06:00
Fabian
cf4af74d95
jit f30f10/movss
2020-12-31 19:14:34 -06:00
Fabian
a238684de6
Store instruction counter in local, use it for loop limits
2020-12-31 19:14:33 -06:00
Fabian
b355571f0c
Optimise away some eip updates
2020-12-31 19:14:33 -06:00
Fabian
15e520e462
Use exit label to save some space
2020-12-31 19:14:33 -06:00
Fabian
a1f35beb8c
Generate better condition functions for zf/sf/be/l/le immediately after cmp/sub/add/inc/dec/test/or/xor/and
2020-12-31 19:14:33 -06:00
Fabian
530aaba1ea
Optimise some common instructions (lea nop; cmp x, 0; test x, x; xor x, x)
2020-12-31 19:14:33 -06:00
Fabian
37c3d1f83c
Generate direct control flow, using wasm blocks and loops
2020-12-31 19:14:33 -06:00
Fabian
705b22ee14
jit imul32
2020-12-31 19:14:33 -06:00
Fabian
0c4e8a7e09
partially jit some sse conversion instructions
2020-12-31 19:14:33 -06:00
Fabian
b859ce5085
jit fcomip df_6
2020-12-31 19:14:33 -06:00
Fabian
81e1b7e5d2
jit movsd f20f11
2020-12-31 19:14:33 -06:00
Fabian
307aed5fbc
jit movsd f20f10
2020-12-31 19:14:33 -06:00
Fabian
f43b6a97c6
minor optimisation in jitted version of shl32
2020-12-31 19:14:33 -06:00
Fabian
cbafb411f0
jit bswap
2020-12-31 19:14:33 -06:00
Fabian
9da02b46f1
jit bts/btr/btc
2020-12-31 19:14:33 -06:00
Fabian
c67dd35999
jit sar32
2020-12-31 19:14:33 -06:00
Fabian
d3082cff3b
jit shr32
2020-12-31 19:14:33 -06:00
Fabian
01fec51705
jit shl32
2020-12-31 19:14:33 -06:00
Fabian
499e2e8111
Fix typo
2020-12-31 19:14:33 -06:00
Fabian
51b62253ab
Prepare jitting shl/shr/sar
2020-12-31 19:14:33 -06:00
Fabian
166ef4eb6d
Remove some unnecessary exports
2020-12-31 19:14:33 -06:00
Fabian
8ba65bffe3
Replace depth by labels for br/br_if instructions
2020-12-31 19:14:33 -06:00
Fabian
b96f984963
Use softfloat f80 for x87 fpu
...
This fixes several long-standing issues with x87 float emulation, in particular:
- 80 bit precision floats, fixing Haiku after its switch to musl libc (hrev53728)
- the precision bit in the x87 control word
- fucom and fucomi (unordered comparisons)
- aliasing of x87 and mmx registers
- rounding during conversion to integers
Operations that are not implemented in softfloat were implemented by
converting to f64 (sine, pow, ln, etc.) and thus operate with lower
precision.
Softfloat has been combined into a single file using a script [0] and checked into the repository.
[0] 57df21e2eb/contrib/single_file_libs/combine.sh
2020-12-31 19:14:32 -06:00
Fabian
6a18618e76
jit cmpxchg8b
2020-12-31 19:14:32 -06:00
Fabian
51b09ade51
jit clc/stc (F8/F9)
2020-12-31 19:14:32 -06:00
Fabian
5081529b56
jit inc8/dec8
2020-12-31 19:14:32 -06:00
Fabian
dc7108ee00
jit sse shift instructions (660F71/660F72/660F73)
2020-12-31 19:14:32 -06:00
Fabian
6e68839365
jit mmx shift instructions (0F71/0F72/0F73)
2020-12-31 19:14:32 -06:00
Fabian
7dc24ba180
jit pshufw (0F70)
2020-12-31 19:14:32 -06:00
Fabian
835396386e
jit more mmx instructions (0F6*)
2020-12-31 19:14:32 -06:00
Fabian
03d0c02a56
jit more sse instructions (660F6*)
2020-12-31 19:14:32 -06:00