Commit graph

182 commits

Author SHA1 Message Date
Fabian 651d0d83f9 fix push sreg only touches 16 bits of the stack dword 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 1588687e2a optimise flag generation after adc/sbb 2022-11-26 14:11:19 -06:00
Fabian 6524bbc569 Use local for condition generation after shifts 2022-11-26 14:11:19 -06:00
Fabian eea5cb67b0 include CS in flat_segments 2022-11-15 10:14:28 +09:00
Fabian 8bf7a6aac0 generate better conditions after shl/shr/sar with constant shift count 2022-11-15 10:14:28 +09:00
Fabian cdaf8dca3d inline function that is only called once 2022-11-15 10:14:28 +09:00
Fabian 6989ba001a log the remaining unoptimised conditionals 2022-11-15 10:14:28 +09:00
Fabian e9a3fc5b00 consider add/inc/dec; jbe optimised in its current form 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 625ad2802c optimise add; jo 2022-11-15 10:14:28 +09:00
Fabian f8cbf3b2bd optimise add; jc 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 92313f582c optimise sub; jle 2022-11-15 10:14:28 +09:00
Fabian 228934d616 optimise sub; jl 2022-11-15 10:14:28 +09:00
Fabian 949081837b optimise sub; jbe 2022-11-15 10:14:28 +09:00
Fabian bb0f37bbce optimise sub; jc 2022-11-15 10:14:28 +09:00
Fabian 8f15b554ee optimise cmp8/16 x, imm; jc 2022-11-15 10:14:28 +09:00
Fabian d629984627 optimise cmp reg, reg/imm; jz 2022-11-15 10:14:28 +09:00
Fabian 19b2771c40 optimise getsf 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 0ea7c7cd81 optimise getof 2022-11-15 10:14:28 +09:00
Fabian 6fcbe7b3d0 optimise cmp x, 0; jz 2022-11-15 10:14:28 +09:00
Fabian 1d55116779 optimise get_last_op1 (for cmp32) 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 0a359a2495 Allow flags optimisation to be used for setcc/cmovcc instructions 2022-09-06 00:26:39 +09:00
Fabian 21c7a88d16 Add assertion for immediate values in test_be 2022-09-06 00:26:39 +09:00
Fabian 31b2582d13 Avoid generating memory read for profiling info in release mode 2021-11-10 22:52:05 -05:00
Fabian abe5b972e0 Optimise negated condition if reordered 2021-11-08 23:25:41 -05:00
Fabian 23d4f862e6 Avoid local when modrm address is single register without offset 2021-11-04 18:51:36 -05:00
Fabian c5dbd55d53 Fix macros used as expression 2021-10-29 01:18:21 +02:00
Fabian 199b1ceb49 Fix 32-bit wrap-around for profiler and opstats 2021-05-22 23:58:23 -05:00
Fabian d47be4342d set_reg16 unmasked 2021-05-22 23:58:23 -05:00
viorelcanja 757d95b6be
Mem fast path optimization (#469)
Remove one addition from the memory access fast path
2021-05-23 06:03:34 +02:00
Fabian d929f4d7fd jit some 8-bit arithmetic 2021-04-09 15:35:22 -05:00
Fabian a238684de6 Store instruction counter in local, use it for loop limits 2020-12-31 19:14:33 -06:00
Fabian ed12bfa8a6 Simplify code generated for 32-bit relative jumps 2020-12-31 19:14:33 -06:00
Fabian b355571f0c Optimise away some eip updates 2020-12-31 19:14:33 -06:00
Fabian 7ab4ee3a43 Generate slightly better code for negated comparisons 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 700b5995c5 Simplify some code, use br_if 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 849b9d184f Minor optimisation (mov reg, reg) 2020-12-31 19:14:33 -06:00
Fabian 5da4e192ec Use exit-with-fault block for all faults (#gp, #de, etc.) 2020-12-31 19:14:33 -06:00
Fabian 948fcc1c55 Use exit label over return (reduces generated code size by ~10%) 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 d67a0ced96 Use custom type for WasmTableIndex 2020-12-31 19:14:32 -06:00