Stefanos Kornilios Mitsis Poiitidis
5ff2e0edf7
Merge pull request #507 from Sonicadvance1/resizable_frontend_buffer
...
Adds resizable frontend decoded buffer
2020-11-18 11:14:41 +02:00
Stefanos Kornilios Mitsis Poiitidis
d288602eeb
Merge pull request #505 from Sonicadvance1/fix_missing_pragma
...
Adds missing pragma in RA pass
2020-11-18 11:11:55 +02:00
Ryan Houdek
c122516077
Adds resizable frontend decoded buffer
...
Allows us to save memory in the frontend decoder by starting out with a
small buffer until we hit larger code blocks.
2020-11-17 12:43:26 -08:00
Ryan Houdek
a1dacf87ac
Adds missing pragma in RA pass
2020-11-17 12:29:28 -08:00
Ryan Houdek
d17530623b
Ensures pass validation goes through LogManager
...
Now that it supports large strings we can push these through here.
We really need to avoid touching stdout/stderr as an interpreter
2020-11-17 12:28:17 -08:00
Ryan Houdek
deaf879e78
Merge pull request #490 from FEX-Emu/skmp/extended-condjump-branching
...
CondJump: Add support for two operands to match Select
2020-11-17 01:19:21 -08:00
Stefanos Kornilios Mitsis Poiitidis
1ffc8c15e2
Backends: Add OP_INVALIDATEFLAGS as nop
2020-11-17 11:11:18 +02:00
Stefanos Kornilios Mitsis Poiitidis
11e12a9b36
Add --unsafe-no-pf
2020-11-17 11:11:13 +02:00
Stefanos Kornilios Mitsis Poiitidis
8fc6f73571
IR: InvalidateFlags + --abi-local-flags
...
- InvalidateFlags pseudo-op is a hint for the Dead Flags Elimination pass that flags are not needed past that point
- Adds a new option, --abi-local-flags, that invalidates the flags on CALLs or RETs. This might break code that doesn't follow the ABI rules.
2020-11-17 11:08:29 +02:00
Stefanos Kornilios Mitsis Poiitidis
908796be1a
Typofix: UnwarpNode -> UnwrapNode
2020-11-17 11:06:01 +02:00
Ryan Houdek
212ff41914
Merge pull request #482 from FEX-Emu/skmp/rclse-improvements
...
RCLSE improvements
2020-11-16 18:13:13 -08:00
Ryan Houdek
29c5e8cbbb
Merge pull request #479 from FEX-Emu/skmp/dead-gpr-store-elim
...
IR: Add DeadGPRStoreElimination
2020-11-16 18:11:26 -08:00
Ryan Houdek
1cd833e516
Merge pull request #499 from FEX-Emu/skmp/muliblock-ra-livespans
...
RA: Greedily extend live ranges when values are used out of defining block
2020-11-16 18:10:51 -08:00
Stefanos Kornilios Mitsis Poiitidis
075f3edcfe
RA: Greedily extend live ranges when values are used out of defining block
...
This fixes bogus RA when live ranges aren't contiguous, at the cost of
excessively increased register pressure.
This doesn't fix multi-block spilling, which requires fully working
PHI nodes among other things. As a workaround these ranges are marked
as unspillable.
2020-11-17 01:41:02 +02:00
Stefanos Kornilios Mitsis Poiitidis
2dad4718d6
IR: Add DumpIR option, --dump-ir command line
...
This dumps the IR before and after optimizations
--dump-ir can be
"no" -> Do not dump
"stderr" -> Dump to stderr
"stdout" -> Dump to stdout
"some/path" -> Dump to "some/path/$GuestRip-pre.ir" and "some/path/$GuestRip-post.ir"
2020-11-16 16:14:07 +02:00
Stefanos Kornilios Mitsis Poiitidis
31b333c40a
DeadGPRStoreElim: Review feedback
2020-11-10 19:13:37 +02:00
Stefanos Kornilios Mitsis Poiitidis
075958fa67
CondJump: Fix arm64 build
2020-11-06 10:54:52 +02:00
Stefanos Kornilios Mitsis Poiitidis
89dafc956e
CondJump: Only fold select if possible
2020-11-06 10:54:52 +02:00
Stefanos Kornilios Mitsis Poiitidis
a2ffbfedb3
CondJump: Add x86 and ipr backends
2020-11-06 10:54:52 +02:00
Stefanos Kornilios Mitsis Poiitidis
f9f80b77e5
CondJump/Arm64: Use cbnz/cbz if faster
2020-11-06 10:54:52 +02:00
Stefanos Kornilios Mitsis Poiitidis
709f5cd925
CondJump: Now with cmp/b.cc support
2020-11-06 10:54:52 +02:00
Stefanos Kornilios Mitsis Poiitidis
eafe853c75
CondJump: Switch to two arguments + Cond for flexible branching
2020-11-06 10:54:52 +02:00
Stefanos Kornilios Mitsis Poiitidis
009244c5e0
Merge pull request #488 from FEX-Emu/skmp/improved-select
...
Select: Add compare & Data sizes, cset/setcc specializations
2020-11-06 10:43:33 +02:00
Stefanos Kornilios Mitsis Poiitidis
2e6a3febfb
Merge pull request #491 from FEX-Emu/skmp/cc-refactor
...
OpDisp: jCC, setCC & cmovCC refactor
2020-11-06 09:11:02 +02:00
Stefanos Kornilios Mitsis Poiitidis
0f18548117
Merge pull request #493 from FEX-Emu/skmp/constprop-inline-consts
...
ConstProp: Do inline constants in a separate loop
2020-11-06 09:09:06 +02:00
Stefanos Kornilios Mitsis Poiitidis
547b00cbb4
Merge pull request #483 from FEX-Emu/skmp/mul-arm64-less-exts
...
MUL: remove zext/sexts from 32 bit form
2020-11-06 09:06:54 +02:00
Stefanos Kornilios Mitsis Poiitidis
1b4bc6562c
Merge pull request #484 from FEX-Emu/skmp/ir-writer-fixes
...
IR: Fix writer to handle more RA classes
2020-11-06 09:00:28 +02:00
Stefanos Kornilios Mitsis Poiitidis
aea18a3c03
Merge pull request #480 from FEX-Emu/skmp/fallthrough-branching
...
JIT: fallthrough branching
2020-11-06 08:59:41 +02:00
Stefanos Kornilios Mitsis Poiitidis
1b3683c065
MUL: remove zext/sexts from 32 bit form
2020-11-06 08:55:58 +02:00
Stefanos Kornilios Mitsis Poiitidis
4bb6d6bde6
Merge pull request #481 from FEX-Emu/skmp/dynamic-shift-flags
...
Dynamic Shifts: use Selects instead of branches for flags
2020-11-06 08:53:55 +02:00
Stefanos Kornilios Mitsis Poiitidis
9d4e498904
Merge pull request #464 from FEX-Emu/skmp/fix-dce
...
DCE: Needs reverse iteration to be effective
2020-11-06 08:52:06 +02:00
Stefanos Kornilios Mitsis Poiitidis
0a0ad78ee2
ConstProp: Do inline constants in a separate loop
2020-11-06 03:41:07 +02:00
Stefanos Kornilios Mitsis Poiitidis
790618cea9
RCLSE: Enable VMOV cases
2020-11-06 02:47:04 +02:00
Stefanos Kornilios Mitsis Poiitidis
de5ae1fe13
RCLSE: Handle more cases
2020-11-06 01:59:03 +02:00
Stefanos Kornilios Mitsis Poiitidis
81214ca556
RCLSE: Also optimize when Access is ACCESS_PARTIAL_READ
2020-11-06 01:59:03 +02:00
Stefanos Kornilios Mitsis Poiitidis
d6fa850b68
Fill/SpillRegister: Spill based on register class
2020-11-06 01:42:04 +02:00
Stefanos Kornilios Mitsis Poiitidis
49d3bafd9a
OpDisp: jCC, setCC & cmovCC refactor
2020-11-06 00:37:10 +02:00
Stefanos Kornilios Mitsis Poiitidis
5fa5e49c58
IR: Add DeadGPRStoreElimination
...
This is based on the Flag Elimination pass, and is not optimal - but does eliminate quite a few dead stores.
2020-11-05 23:57:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
2abfe71c42
Select: Add compare & Data sizes, cset/setcc specializations
...
- CompareSize can be 4 or 8
- DataSize can be 4 or 8
- Support for INLINE_CONSTANTS for `Select cmp1,cmp2,1,0` that specializes to cset / setcc
2020-11-05 19:46:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
3e84aaa43a
Fallthrough: Fixes, x86 impl
2020-11-05 13:30:15 +02:00
Stefanos Kornilios Mitsis Poiitidis
a5212fb4a8
IR: Fix writer to handle more RA classes
2020-11-05 12:41:44 +02:00
Stefanos Kornilios Mitsis Poiitidis
6c0552f145
Dynamic Shifts: use Selects instead of branches for flags
2020-10-30 18:26:40 +02:00
Stefanos Kornilios Mitsis Poiitidis
cc311554d2
Frontend: Sort blocks for better branching
2020-10-30 17:50:18 +02:00
Stefanos Kornilios Mitsis Poiitidis
400321bc53
Arm64: Avoid branches to next block of possible
2020-10-30 17:49:07 +02:00
Ryan Houdek
34625441cb
Fixes FCOMPP and FUCOMPP
...
These two instructions pop the x87 stack twice which we didn't support
Repurposes the dead pop template argument to be a "pop twice".
Everything else falls down the table flag information comparison
2020-10-27 23:09:17 -07:00
Ryan Houdek
d3d57d48a0
Fixes missing pop flag in x87 table
...
FCOMP didn't have POP set so it wans't popping the stack.
FFREEP also didn't have it, but it was handled explicitly in the
dispatcher
2020-10-27 23:08:17 -07:00
Ryan Houdek
b8b99e7f85
Merge pull request #475 from Sonicadvance1/fix_32bit_x87
...
Fixes 32bit x87 usage
2020-10-25 11:21:50 -07:00
Ryan Houdek
7f4836b982
Fixes 32bit x87 usage
...
All of the ops that were relying on a 64bit memory offset were being
downgraded to 32bit.
Abuses the XMM_FLAGS option a bit to indicate that it shouldn't
downgrade the 64bit size flag. Which isn't an issue since all these
operations can't encode a register since modrm_r is used for table
decoding
2020-10-25 11:17:00 -07:00
Stefanos Kornilios Mitsis Poiitidis
82d9b28563
Merge pull request #476 from Sonicadvance1/initial_sse4_1
...
Adds some initial SSE 4.1 ops
2020-10-25 06:44:58 +02:00
Stefanos Kornilios Mitsis Poiitidis
13dc69987c
Merge pull request #474 from Sonicadvance1/more_32bit_fixes_2
...
More 32bit related fixes
2020-10-25 06:40:27 +02:00