Commit graph

354 commits

Author SHA1 Message Date
Fabian 69e8eafeba test mov reg, sreg manually 2022-11-26 14:11:19 -06:00
Fabian 6b91f91c45 test pushf manually 2022-11-26 14:11:19 -06:00
Fabian de2a1439aa jit: generate code for {66,}0f{c4,c5} (pinsrw, pextrw) 2022-11-26 14:11:19 -06:00
Fabian 625fdcd4a2 generate slightly better code for ud2 2022-11-26 14:11:19 -06:00
Fabian 753a6d1fb3 jit: handle fpu DA group 2022-11-15 10:14:28 +09:00
Fabian 16662ec979 jit: handle {66,}0f17 2022-11-15 10:14:28 +09:00
Fabian 1c8e1bbdfa jit: handle {66,}0f16 2022-11-15 10:14:28 +09:00
Fabian f1ebdb1c72 implement fbstp (close #708) 2022-08-02 21:40:57 +09:00
Fabian f9bcb08f78 use String.prototype.repeat 2022-02-17 17:37:14 +01:00
Fabian 36fcfe1b16 jit not8/neg8 2021-11-04 18:51:36 -05:00
Fabian e8975ec436 pusha/popa should be block boundary 2021-05-22 23:59:24 -05:00
Fabian 48464a18d7 jit movsb/movsw/movsd 2021-04-10 14:27:14 -05:00
Fabian 6049e0c46c jit stosb/stosw/stosd 2021-04-09 21:52:00 -05:00
Fabian 4de8584cff jit scasw/scasd/lodsw/lodsd 2021-04-09 21:15:25 -05:00
Fabian 7b66ae874d jit scasb 2021-04-09 20:37:55 -05:00
Fabian 2e25308f17 jit lodsb 2021-04-09 19:51:27 -05:00
Fabian b684342b2b Revert "jit 8E (mov sreg, reg)".
This optimisation was completely invalid, it's not possible call
switch_seg while in jit mode without saving registers.
2021-04-09 15:32:46 -05:00
Fabian bc1f239c2b jit {,66}0F{14,15} (unpcklps, unpcklpd, unpckhps, unpckhpd) 2021-04-05 01:58:42 -05:00
Fabian f4f3ec0ca1 jit {,66}0F{12,13} (movhlps, movlps, movlpd, movlps, movlpd) 2021-04-05 01:58:42 -05:00
Fabian bbeca7a13d jit {F2,F3}0FC2 (cmpsd, cmpss) 2021-04-04 23:36:54 -05:00
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 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 b43a5f4818 Mark fwait as block boundary again (fixes qnx hanging) 2020-12-31 19:14:33 -06:00
Fabian 699bf5a2ce Explain 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 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 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 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