Commit graph

256 commits

Author SHA1 Message Date
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 37841eb0c9 optimise and/or/xor/test; jc/jo/jbe/jl/jle 2022-11-15 10:14:28 +09:00
Fabian da1c713252 optimise inc/dec; jcc 2022-11-15 10:14:28 +09:00
Fabian 60b555107f identify add for the purpose of optimising conditions 2022-11-15 10:14:28 +09:00
Fabian 7d6a3c67e4 optimise sub8; jo/jb 2022-11-15 10:14:28 +09:00
Fabian bb0f37bbce optimise sub; jc 2022-11-15 10:14:28 +09:00
Fabian db65dd352d optimise test x, x followed by jz/js 2022-11-15 10:14:28 +09:00
Fabian 5a7c946e83 optimise get_last_result 2022-11-15 10:14:28 +09:00
Fabian a11eb20326 type safety 2022-11-15 10:14:28 +09:00
Fabian 58f9902057 merge updates to last_op_size and flags_changed 2022-11-15 10:14:28 +09:00
Fabian 53cea2e7b1 Use optimised getcf for inc/dec/adc/sbb 2022-11-15 10:14:28 +09:00
Fabian be08d812db move code around (local_to_instruction_operand/LocalOrImmediate.to_instruction_operand) 2022-11-15 10:14:28 +09:00
Fabian 89e5173712 Use regs::EAX over 0 2022-09-08 16:22:49 +09:00
Fabian 2cbe54cf38 Refactor some sse instructions into sse_read128_xmm_xmm_imm/sse_read128_xmm_mem_imm 2022-09-06 01:05:39 +09:00
Fabian 1135122f8a Fix jitted cmpss/cmppd/shufps/shufpd with the same source and destination register 2022-09-06 01:05:39 +09:00
Fabian 0a359a2495 Allow flags optimisation to be used for setcc/cmovcc instructions 2022-09-06 00:26:39 +09:00
Fabian e50d4fa5a8 Fix flags in cmpxchg in jit 2022-09-06 00:26:39 +09:00
Fabian a464c77ec0 Also mask other 16-bit arithmetic (not strictly necessary, but more robust for future changes) 2022-09-06 00:26:39 +09:00
Fabian 6e0ab79d4f Fix mask sign-extended 8-bit immediate to 16-bit for cmp (fixes #726) 2022-09-06 00:26:39 +09:00
Fabian f1ebdb1c72 implement fbstp (close #708) 2022-08-02 21:40:57 +09:00
Fabian 9cffa38ca0 Use gen_set_reg16_unmasked for mov r16, imm 2021-11-08 23:25:10 -05:00
Fabian 36fcfe1b16 jit not8/neg8 2021-11-04 18:51:36 -05:00
Fabian 23d4f862e6 Avoid local when modrm address is single register without offset 2021-11-04 18:51:36 -05:00
Fabian b4936b32d4 Dead 2021-05-22 23:59:24 -05:00
Fabian 1b06e7bd34 Improve code for some sign/zero-extending moves 2021-05-22 23:58:23 -05:00
Fabian d47be4342d set_reg16 unmasked 2021-05-22 23:58:23 -05:00
Fabian c430c1141c Minor optimisation for bt{,s,r,c} with zero offset 2021-05-22 23:58:23 -05:00
Fabian fd1626cd87 Fix movs jit 2021-05-22 23:20:47 -05:00
Fabian 3137bf4171 Fix movsw jit 2021-04-12 15:17:43 -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 b48166280b gen_pushf_popf_check 2021-04-09 18:54:54 -05:00
Fabian d929f4d7fd jit some 8-bit arithmetic 2021-04-09 15:35:22 -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