Commit graph

214 commits

Author SHA1 Message Date
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