Commit Graph
899 Commits
Author SHA1 Message Date
Stefanos Kornilios Mitsis Poiitidis 3ebc080bd4 Merge pull request #566 from Sonicadvance1/overlay_config
Switches over to having a correctly layered configuration system
2020-12-08 11:14:16 +02:00
Ryan Houdek f14cd54791 Switches over to having a correctly layered configuration system
Instead of having the configuration being loaded and stored in to a
frontend system. First moves the backing store of the configuration in
to FEXCore.

Each layer that is constructed then loads its particular configuration.
After the layers are loaded, then a meta layer is constructed that
merges the layers flat.

This means we will no longer hit the problem where a configuration is
stored in the "main" configuration file, then environment and arguments
passed manage to overwrite it.

The order of the layers going from inner most layer to outer most, with
outermost overwriting previous layer configurations is as follows:

Main < Global application < Local application < Arguments < Environment

One step that needs to be changed in the future is that FEXCore can then
just load its configuration from the layers directly since the data is
in FEXCore now. This will be reserved for a future change so we are less
disruptive.
2020-12-07 11:15:48 -08:00
Ryan Houdek f091878100 More 32bit syscall fixes
fstatfs64 and statfs64 was wrong, the syscall doesn't quite match the
glibc definition

Fixes recvmsg. Specifically the aux data was failing, thus SCM_RIGHTS
wasn't getting passed correctly.

Fixes a couple of time syscalls where their arguments are optional.
2020-12-04 09:30:33 -08:00
Ryan Houdek 30dc9128ca Removes the last usage of 8bit and 16bit multiply
This was causing issues in 32bit xeyes.
A couple of the multiply ops were still using 8bit and 16bit multiply
while the other one was already sexting or zexting the source.
2020-12-04 08:59:52 -08:00
Stefanos Kornilios Mitsis Poiitidis b2b0d9318a arm64: Fix OP_SELECT & OP_CONDJUMP gpr/fpr detection 2020-12-04 16:04:27 +02:00
Stefanos Kornilios Mitsis Poiitidis 1363be8239 x64: Add support for floats in OP_SELECT & OP_CONDJUMP 2020-12-04 15:30:55 +02:00
Stefanos Kornilios Mitsis Poiitidis b32ed1db8c x64: Refactor CC logic, add float compares 2020-12-04 15:30:55 +02:00
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 cfdf6ebf6b IR: Change FCMP to return x86-style flags 2020-12-04 08:55:19 +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 b9f1bfe362 Merge pull request #540 from Sonicadvance1/32bit_fixes_rebase
A wackload of new 32bit syscall support
2020-12-04 08:51:47 +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 c116a20e13 Merge pull request #542 from FEX-Emu/skmp/frontend-improve-reps
OpDisp: Read DF outside REP loops as it won't change
2020-12-03 20:23:40 -08: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 c7c2e56ae5 Merge pull request #552 from FEX-Emu/skmp/perblock-debug-data
JITSYMS: Per-block symbol information
2020-12-03 20:13:34 -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 4187123b49 Merge pull request #551 from FEX-Emu/skmp/arm64-backend-opts
arm64: Backend Opts
2020-12-03 20:08:53 -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 12237abf67 Merge pull request #543 from FEX-Emu/skmp/frontend-improve-ss-sd
frontend: Improve IR for some *SS/*SD opcodes
2020-12-03 20:06:47 -08:00
Ryan Houdek 310252b97d A wackload of new 32bit syscall support
This implements a bunch of new 32bit syscalls which almost gets FEX to
be able to run Steam.

The main missing syscalls are mremap, shmat, and ioctl for supporting
Steam execution.
2020-12-03 20:03:15 -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 62a5bc457d OpDisp: Read DF outside REP loops as it won't change 2020-12-03 20:19:00 +02: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 bc5b235b7c CompileService: Fix DebugData 2020-12-03 18:58:58 +02:00
Stefanos Kornilios Mitsis Poiitidis 28bff432e5 DebugData: Add Subblock list, populate it from arm64 backend 2020-12-03 18:43:38 +02:00
Stefanos Kornilios Mitsis Poiitidis 12fcd5c2c7 arm64: Avoid needless movs in OP_VMOV 2020-12-03 18:41:51 +02:00
Stefanos Kornilios Mitsis Poiitidis 27e2c4fbfd arm64: Optimize VIns* to only use temp reg if it must 2020-12-03 18:41:44 +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
Stefanos Kornilios Mitsis Poiitidis de6eee510e x86tables: Mark some SD sse opcodes as 64-bit to reduce overhead 2020-12-03 17:31:58 +02:00
Stefanos Kornilios Mitsis Poiitidis f0e2d9364f OpDisp: Avoid some pointless vinserts 2020-12-03 17:31:51 +02:00
Stefanos Kornilios Mitsis Poiitidis d481bd4ffc Merge pull request #541 from Sonicadvance1/remove_sonicutils
Moves SonicUtils in to FEXCore
2020-12-03 16:54:56 +02:00
Stefanos Kornilios Mitsis Poiitidis 7c40083106 Merge pull request #539 from Sonicadvance1/more_64bit_syscall_movement
Moves 64bit sigaltstack and execve to 64bit files
2020-12-03 16:51:38 +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
Ryan Houdek 638201254a Moves 64bit sigaltstack and execve to 64bit files
These need specific 32bit handling
2020-11-27 20:33:23 -08:00
Ryan Houdek 94b034db6c Moves shmat to 64bit memory specific file
This removes the bad attempt to keep shm regions in our 64GB shm region

This will need to be handled specially on the 32bit side through its
memory management once we have that wired up
2020-11-27 00:32:25 -08:00
Ryan Houdek e23ae78795 Merge pull request #537 from Sonicadvance1/move_memory_x64
Moves some memory op implementations to x64 file
2020-11-27 00:20:10 -08:00