Commit graph

139 commits

Author SHA1 Message Date
Fabian 770f90feae Rename load_*_from_stack 2020-12-31 19:14:31 -06:00
Fabian a3dbd9ad5f Rename wasm functions loading from fixed address 2020-12-31 19:14:31 -06:00
Fabian bf661f0829 Add some helper functions 2020-12-31 19:14:31 -06:00
Fabian 9a40122075 Optimise code for div 2020-12-31 19:14:31 -06:00
Fabian dceaa723a2 jit div32 2020-12-31 19:14:31 -06:00
Fabian 8f94cc2716 jit DB/6 FCOMI 2020-12-31 19:14:31 -06:00
Fabian 240c4d0457 loop/loopz/loopnz: Move side-effects into function 2020-12-31 19:14:31 -06:00
Fabian 6e3bc388b5 Improve jitted version of DF/4 fstsw 2020-12-31 19:14:31 -06:00
Fabian 57b6421fae jit one more mmx instruction 2020-12-31 19:14:31 -06:00
Fabian 7ad30c7148 partially jit bsf/bsr 2020-12-31 19:14:31 -06:00
Fabian 8d39542271 Partially jit popcnt 2020-12-31 19:14:31 -06:00
Fabian 6e6762b293 jit some mmx instructions 2020-12-31 19:14:31 -06:00
Fabian 4860c6f461 jit 0F7E/0F7F mmx movd/movq 2020-12-31 19:14:31 -06:00
Fabian 44974370af jit 0F6E/0F6F mmx movd/movq 2020-12-31 19:14:31 -06:00
Fabian 9853bdb868 Merge 16-bit and 32-bit 0f tables (saves 200kB on v86.wasm) 2020-12-31 19:14:31 -06:00
Fabian 3711ed7f23 jit LAHF 2020-12-31 19:14:31 -06:00
Fabian 29e0ef8c4c jit MOVNTI 2020-12-31 19:14:31 -06:00
Fabian 3ae3e6fdf5 Heavily simplify string instructions (and fix 16-bit address size). Slow variant, will be improved in next commits. 2020-12-31 19:14:30 -06:00
Fabian c5eea8a8d1 Jit POPF 2020-12-31 19:14:30 -06:00
Fabian 03b88668ab Remove some unused #[no_mangle] 2020-12-31 19:14:30 -06:00
Fabian a26eb43719 Fix: Inhibit interrupts for one instruction after STI (fixes ReactOS) 2020-12-31 19:14:30 -06:00
Fabian 0edc821618 Jit DIV/IDIV 2020-12-31 19:14:30 -06:00
Fabian 3026e985fa Jit BT 2020-12-31 19:14:30 -06:00
Fabian fc43119406 Optimise returns and indirect jumps/calls into same page 2020-12-31 19:14:30 -06:00
Fabian ee542c5f84 Optimise lazy flag handling
- remove last_add_result and last_op2 from arithmetic instructions
- optimise getcf
2020-12-31 19:14:30 -06:00
Fabian 46671b5354 Jit inc16/dec16 2020-12-31 19:14:30 -06:00
Fabian ce0f34eff2 Jit cmp8/test8 2020-12-31 19:14:30 -06:00
Fabian 4723249259 Jit more cmp16/test16 2020-12-31 19:14:30 -06:00
Fabian 741d6005d2 Simplify 2020-12-31 19:14:30 -06:00
Fabian 3a41694efb Jit cmp16/test16 2020-12-31 19:14:30 -06:00
Fabian fe89acfc80 Jit xchg r, r/m 2020-12-31 19:14:30 -06:00
Fabian 8427a30d89 Simplify 2020-12-31 19:14:30 -06:00
Fabian 860833e80f Custom inc32 & dec32 2020-12-31 19:14:30 -06:00
Fabian 9da94d5438 Move wasm ops to WasmBuilder 2020-12-31 19:14:30 -06:00
Fabian 97205c67a2 Rename to wasm_builder 2020-12-31 19:14:30 -06:00
Fabian 23988f50f6 Restore xlat in jit mode 2020-12-31 19:14:30 -06:00
Fabian 3a473aad79 Remove prefix handling from jit and exceptions 2020-12-31 19:14:30 -06:00
Fabian 62010e64e8 Make string instructions partially custom 2020-12-31 19:14:30 -06:00
Fabian a73988a817 Make loop, loopz, loopnz and jcxz custom generated 2020-12-31 19:14:30 -06:00
Fabian 232d3763d9 Make maskmov* custom 2020-12-31 19:14:30 -06:00
Fabian 15a27746f6 Split fldenv, frstor, fsave and fstenv into 16 and 32 bit variants 2020-12-31 19:14:30 -06:00
Fabian ccd6244cfd Split D9 and DD instructions by operand size 2020-12-31 19:14:30 -06:00
Fabian 764879bad1 s/reg32s/reg32 2020-12-31 19:14:29 -06:00
Fabian 4bfd024366 Simplify gen_safe_read_write by removing fallback function 2020-12-31 19:14:29 -06:00
Fabian 5515c32e8d Correct codegen for some undefined fpu instructions 2020-12-31 19:14:29 -06:00
Fabian 48940e426a Fix fldm80/fstenv/fldenv: These instructions were generating and unconditional exit from jitted code but not updating eip. Changed to use the fallback mechanism for handling pagefaults 2020-12-31 19:14:29 -06:00
Fabian 5e73b6f21b Remove invalid assertion on sfence/mfence/lfence (low bits of modrm byte are ignored) 2020-12-31 19:14:29 -06:00
Fabian 1c474eabdb Fix mov [mem], sreg in 32-bit mode (should be 16-bit write) 2020-12-31 19:14:29 -06:00
Fabian c207400922 Fix Rust warnings 2020-12-31 19:14:29 -06:00
Fabian c97600f5cb Also prepare gen_safe_read{64,128} for later optimisations 2020-12-31 19:14:29 -06:00