Commit Graph
175 Commits
Author SHA1 Message Date
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