Stefanos Kornilios Mitsis Poiitidis
b044413952
OpDisp, IR, Backends: Add Float compares to Select, CondJump, COND_F*
2020-12-04 15:30:55 +02:00
Stefanos Kornilios Mitsis Poiitidis
3bc13581a8
Merge pull request #557 from FEX-Emu/skmp/memops-imm-pooling
...
ConstProp: LoadMem/StoreMem imm pooling
2020-12-04 08:54:13 +02:00
Stefanos Kornilios Mitsis Poiitidis
9b6f0df657
Merge pull request #545 from FEX-Emu/skmp/add-dfprse
...
IR: Add a rather ineffective DeadFPRStoreElim Pass
2020-12-04 08:52:47 +02:00
Stefanos Kornilios Mitsis Poiitidis
8e62a6891b
Merge pull request #544 from FEX-Emu/skmp/lse-remove-partial-writes
...
LSE: Also optimize away partial writes
2020-12-04 08:52:21 +02:00
Stefanos Kornilios Mitsis Poiitidis
003991e495
Merge pull request #503 from Sonicadvance1/remove_duplicate_compaction
...
Remove duplicated compaction pass
2020-12-04 08:44:21 +02:00
Stefanos Kornilios Mitsis Poiitidis
c29f890d7a
IR: Add a rather ineffective DeadFPRStoreElim Pass
2020-12-04 08:08:23 +02:00
Stefanos Kornilios Mitsis Poiitidis
2f12fd6ee4
ConstProp: LoadMem/StoreMem imm pooling
...
If imms used in memops are close enough, generate them with address gen instead
of allocating a new const
2020-12-04 08:04:44 +02:00
Stefanos Kornilios Mitsis Poiitidis
d622e7b557
LSE: Also optimize away partial writes
2020-12-04 07:53:33 +02:00
Ryan Houdek
bce3d3be8d
Merge pull request #556 from FEX-Emu/skmp/fcmp-optimization
...
ConstProp: FCMP Optimization
2020-12-03 20:21:35 -08:00
Ryan Houdek
a0149dff07
Merge pull request #554 from FEX-Emu/skmp/cmt-around-select
...
CMT: Move unary ops before selects
2020-12-03 20:20:45 -08:00
Ryan Houdek
439d49b802
Merge pull request #550 from FEX-Emu/skmp/improve-dead-flags
...
DFSE: Fix dead clag calculation, Extend InvalidateFlags
2020-12-03 20:18:43 -08:00
Ryan Houdek
91ee753cae
Merge pull request #553 from FEX-Emu/skmp/mul-to-lshl
...
ConstProp: Mul x,#powof2 -> Lshl x,ctz(#powof2)
2020-12-03 20:10:13 -08:00
Ryan Houdek
eb57f5f489
Merge pull request #547 from FEX-Emu/skmp/optimize-flag-access
...
IR: Move BFEs to SetFlag, remove from OP_STOREFLAG
2020-12-03 20:07:53 -08:00
Ryan Houdek
17402aa02d
Remove duplicated compaction pass
...
RA Pass and passmanager compaction pass don't need to be independent.
This saves some memory.
In the future we should allow passes to fetch passes by name, that will
be part of the PassManager improvement in the future
2020-12-03 19:58:47 -08:00
Ryan Houdek
d3201ff498
Merge pull request #546 from FEX-Emu/skmp/sfbe-sext-switcheroo
...
IR: Replace Sext with Sbfe
2020-12-03 15:03:19 -08:00
Stefanos Kornilios Mitsis Poiitidis
0024b7bd46
RA: Fix global value range expansion
2020-12-03 20:19:00 +02:00
Stefanos Kornilios Mitsis Poiitidis
b2d862a8c7
IR: Replace Sext with Sbfe
2020-12-03 20:08:08 +02:00
Stefanos Kornilios Mitsis Poiitidis
2e314400bc
ConstProp: FCMP Optimization
...
Removes unused flags from OP_FCMPs
2020-12-03 19:34:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
c802b82450
CMT: Move unary ops before selects, if both True & False values are consts
2020-12-03 19:11:25 +02:00
Stefanos Kornilios Mitsis Poiitidis
46fb0503f0
ConstProp: Mul x,#powof2 -> Lshl x,clz(#powof2)
2020-12-03 19:06:14 +02:00
Stefanos Kornilios Mitsis Poiitidis
d7316fe2d0
OpDisp, IR: Extend InvalidateFlags to invalidate a bitfield, invalidate PF when not emulated
2020-12-03 18:38:16 +02:00
Stefanos Kornilios Mitsis Poiitidis
4a9718c8e8
DFSE: Use uint64_t for flag bitmask, we use up to bit 47 w/ x87 flags
2020-12-03 18:38:08 +02:00
Stefanos Kornilios Mitsis Poiitidis
55f8e64068
IR: Move BFEs to SetFlag, remove from OP_STOREFLAG
2020-12-03 18:05:53 +02:00
Ryan Houdek
a28df9f5c1
Moves SonicUtils in to FEXCore
...
Removes the extraneous and dead VM CPU backend
2020-11-29 00:30:28 -08:00
Scott Mansell
ee98cbfe3f
IR: Remove Rol as it's not native to ARM
2020-11-26 14:00:24 +13:00
Scott Mansell
5b1d4eadd4
IR: Make BFI sizes explicit
...
Otherwise they can be quite hard to get right.
2020-11-26 12:40:37 +13:00
Ryan Houdek
4503f41957
Merge pull request #473 from FEX-Emu/skmp/memops-addressgen
...
Complex address generation for Load/StoreMem
2020-11-19 23:57:20 -08: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
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
Stefanos Kornilios Mitsis Poiitidis
4ec41088e3
Typofix: UnwarpNode -> UnwrapNode
2020-11-17 16:25:00 +02:00
Stefanos Kornilios Mitsis Poiitidis
f38179913a
IR: Swith MemoryOffsetType to a type from uint8_t
2020-11-17 16:23:50 +02:00
Stefanos Kornilios Mitsis Poiitidis
0e329f4e05
Load/StoreMem: Cleanup Complex address gen
2020-11-17 16:23:50 +02:00
Stefanos Kornilios Mitsis Poiitidis
b82c8b9e92
ConstProp: Fix inline consts for load/storemem
2020-11-17 16:23:50 +02:00
Stefanos Kornilios Mitsis Poiitidis
703a025a38
IR/Arm64: Inline Constants for MemoryOps
2020-11-17 16:23:50 +02:00
Stefanos Kornilios Mitsis Poiitidis
9fdd2a5b10
LoadMem/StoreMem: Add OffsetType, OffsetScale
2020-11-17 16:23:50 +02:00
Stefanos Kornilios Mitsis Poiitidis
2ff55a0420
Add arm64 backend, disable for TSO
2020-11-17 16:23:50 +02:00
Stefanos Kornilios Mitsis Poiitidis
74254a1a9c
IR: Load/Store mem with two args
2020-11-17 16:23:48 +02: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
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
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
31b333c40a
DeadGPRStoreElim: Review feedback
2020-11-10 19:13:37 +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
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
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