SarahW
083ca3d4a2
Slight optimisation when DS/SS are 'flat' (base=0, limit=4G).
2017-05-24 21:50:37 +01:00
SarahW
2b892d2a7a
Fixed compiler warnings for Windows builds.
...
Added -Werror to Windows makefiles.
2017-04-11 19:34:41 +01:00
SarahW
9167b3a71f
Fixed x86-32 recompiler MMX entry code
...
Fixed FPU tag resetting in EMMS instruction
Clear MMX state in FINIT
Reset FPU state in FSAVE/FNSAVE
Fixes issues with MMX when more than one MMX program is running
2017-01-13 21:31:42 +00:00
SarahW
3a72cc9593
Fixed issue with recompiled FCOMPP where the incorrect number of registers could be popped.
2016-12-10 18:44:45 +00:00
SarahW
d729fc8297
Added recompiled versions of MOV seg, POP seg, PUSH FS/GS, LDS,LES,LFS,LGS,LSS.
2016-12-10 12:23:06 +00:00
SarahW
437a9560f2
Added code generation for FCHS, FCOMPP, and FLD constant forms.
2016-12-07 20:52:02 +00:00
SarahW
747f8994ca
Added code generation for RMW versions of SHL/SHR/SAR
2016-11-17 20:01:28 +00:00
SarahW
0985952317
Added code generation for RMW versions of ADD/SUB/OR/XOR/AND
2016-11-13 14:30:39 +00:00
SarahW
dd2a608707
x86-32 recompiler performs float->integer rounding by loading FPU control word instead of calling helper function - speedup on some stuff.
2016-09-18 14:57:10 +01:00
SarahW
aab2c3e7cf
Don't inline memory read/write code in x86-32 recompiled blocks - speedup (up to 20% seen)
2016-09-15 21:06:28 +01:00
SarahW
75f9316c11
x86-32 recompiler compiles FPU instructions using direct access to register stack when top-of-stack is static. Minor speedup.
2016-09-11 15:38:05 +01:00
SarahW
26b8bdddb6
Fixed branch offset in x86 recompiler JNLE instruction - MS-DOS 6.22 installer works again
2016-08-30 20:32:11 +01:00
SarahW
6aef53e854
Remove remaining references to 32-bit addresses in x86-64 recompiler.
2016-08-28 15:58:30 +01:00
SarahW
5a02b518b8
Moved FPU register stack into cpu_state structure.
...
Fixed a couple of FPU bugs in x86-64 recompiler that were introduced in rev 543, fixes lightmap issues in Half-Life.
2016-08-25 21:09:02 +01:00
SarahW
eb126fd822
Moved more variables into cpu_state structure.
2016-08-21 21:28:23 +01:00
SarahW
c664682758
Move some more variables into cpu_state structure. Minor speedup (~2%).
2016-08-17 21:28:16 +01:00
SarahW
535604b760
Pack decoded ModR/M data into a single word - minor recompiler speedup.
2016-08-14 16:29:54 +01:00
SarahW
c81a91fd72
Moved integer registers, PC and flags_* variables into new cpu_state structure. Reduces recompiled code size slightly, small speedup (1-3%).
2016-04-20 21:39:41 +01:00
TomW
4011a246ff
Added code generation for MMX instructions
2016-02-24 20:55:48 +00:00
TomW
e9bea8ab7e
Added recompiled versions of PUSH [mem], PUSH seg, NOP, CLD, STD, JMP indirect, CALL indirect.
2015-11-17 20:52:51 +00:00
TomW
a2046fe37f
Fixed stupid typos in FPU rounding - Unreal software mode works again.
2015-10-19 20:34:58 +01:00
TomW
33685c3318
More changes to FPU nearest rounding, Unreal works again.
2015-09-28 20:33:36 +01:00
TomW
299f6c8dfb
Nearest FPU rounding mode now handles negative numbers correctly. Fixes Retro City Rampage 486.
2015-09-26 17:54:25 +01:00
TomW
986476b9db
FPU rounding modes now have effect in FADD double precision. Fixes rendering in Interstate '76.
2015-09-21 21:54:43 +01:00
TomW
a2bef57491
Minor optimisation to x86 recompiler versions of JL/JNL/JLE/JNLE/JBE/JNBE.
2015-08-19 21:31:13 +01:00
TomW
f75a24f539
Rewrote recompiler implementation of NEG.
2015-08-08 16:05:05 +01:00
TomW
0bf08d9e74
x86-64 recompiler now at parity with x86-32
2015-08-04 18:36:27 +01:00
TomW
c84cf05dc2
Minor optimisations to recompiler memory functions.
2015-07-10 20:58:41 +01:00
TomW
51489d031c
Reduced number of segment/selector checks in recompiler - minor speedup.
2015-07-08 20:40:37 +01:00
TomW
f3607c2308
Added code generation for :
...
- FCOM/FUCOM
- FSUBR/FSUBRP/FDIVR/FDIVRP
- FLDCW/FSTCW
- FILD/FIST/FISTP (16-bit, 32-bit and 64-bit variants)
- FLD/FST/FSTP double precision
- Integer and double precision variants of FADD/FSUB/FMUL/FDIV
Also added 64-bit readmemq/writememq functions.
2015-06-13 16:14:35 +01:00
TomW
9061c5d2fc
Added code generation for :
...
- TEST immediate
- register versions of NOT and NEG
- fixed shift versions of SHL, SHR and SAR
- MOVZX and MOVSX
- LEA
- CMP with memory destination
- JL, JNL, JLE, JNLE, JBE, JNBE
2015-05-30 17:08:54 +01:00
TomW
52a27a9256
FPU copy should now work.
2015-05-18 20:33:33 +01:00
TomW
8f1f7e01c0
Fixed stupid bug in FPU rounding mode in recompiler, fixed particle explosions in Quake.
2015-04-22 19:26:52 +01:00
TomW
50b74dcb2a
Illegal instruction interrupt caused by disabled FPU has correct return address - Turok works again.
2015-04-21 17:39:04 +01:00
TomW
15bca849c8
Added code generation for first batch of FPU instructions; instructions added are most common instructions used in Quake.
2015-04-19 08:42:04 +01:00
TomW
bbf0011e95
Added code generation for JCXZ, LOOP, JE, JNE, JS, JNS, JB, JNB, JO, JNO, JP and JNP.
2015-04-14 20:40:40 +01:00
TomW
6caeca2c7c
Tweaks to generated code, should reduce size slightly.
2015-04-11 16:06:50 +01:00
TomW
a97e89e857
Added code generation for register and immediate PUSH/POP, RET, relative CALL and JMP instructions.
2015-03-30 20:42:33 +01:00
TomW
ba715706b6
Added code generation for memory versions of MOV, and memory source versions of ADD, SUB, AND, OR, XOR and CMP.
2015-02-08 17:17:14 +00:00
TomW
ea5e96569d
Lazy flags code now handles carry flag.
2015-02-02 19:54:01 +00:00
TomW
630592125c
Added code generation for immediate->register and register versions of MOV, XCHG, ADD, SUB, AND, OR, XOR, TEST, CMP, INC and DEC.
2015-01-16 21:22:14 +00:00