Ryan Houdek
fd6d33d197
Merge pull request #996 from FEX-Emu/skmp/aotirgen
...
AOTIR: Offline Generation
2021-05-03 15:58:57 -07:00
Ryan Houdek
4961604807
Implements support for CLFLUSH
...
JRE requires this to run
2021-05-02 12:18:35 -07:00
Ryan Houdek
5143100a73
Switches more usages of memory allocation routines over to FEX internal
2021-05-01 07:39:14 -07:00
Stefanos Kornilios Mitsis Poiitidis
331549c64a
RLSE: Use Constant, not inline constant, let ConstProp generate all inline consts
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
528b01ad7a
Merge pull request #988 from Sonicadvance1/memory_layout_optimizations
...
Memory layout optimizations
2021-04-28 12:31:53 +03:00
Ryan Houdek
bab5927931
Merge pull request #981 from Sonicadvance1/optimize_long_divide
...
Adds Long Divide removal pass
2021-04-26 23:48:50 -07:00
Ryan Houdek
6255eba524
Memory layout optimizations
...
Some of these memory layouts weren't optimal for ARM loading.
This is now significantly improved
2021-04-26 23:48:22 -07:00
Ryan Houdek
04e0baadc6
Changes LogMan assert to defines
...
C++ no-op functions can't optimize out the predicate arguments in all cases.
This was causing a problem where zero cost assertions weren't actually zero cost.
The only way to resolve this is to actually use macros sadly enough.
This will give a fairly hefty performance uplift with anything operating on IR.
2021-04-26 13:49:35 -07:00
Stefanos Kornilios Mitsis Poiitidis
b45b7c3441
IR: Remove Entry from OP_HEADER, pass as parameter to CompileCode
2021-04-25 13:15:23 +03:00
Ryan Houdek
520dfd7edf
Adds Long Divide removal pass
...
If the long divides don't have anything in the upper bits then they can be optimized away.
Teeworlds, SuperTuxKart, and RRootage were between 50%-55% getting removed
2021-04-24 23:10:59 -07:00
Ryan Houdek
3020e39428
Remove DestSize from Print IR Op
2021-04-04 22:07:03 -07:00
Stefanos Kornilios Mitsis Poiitidis
315b8e9c1e
Merge pull request #917 from FEX-Emu/skmp/lightweight-docs-3
...
Docs: Add tags, unittest Readme.md, generated SourceOutline.md
2021-03-30 12:52:18 +03:00
Stefanos Kornilios Mitsis Poiitidis
942b8549c6
Docs: Add tags to the source code
2021-03-30 12:21:18 +03:00
Lioncache
434a74a88a
CMakeLists: Flag unannotated implicit fallthrough as an error
...
Prevents a class of sneaky logic bugs from slipping through into the
codebase.
This also resolves a case of such a bug within the Decorder's ReadData()
where all 3 byte reads would be performed as if they were a 4 byte read.
2021-03-30 04:56:12 -04:00
Ryan Houdek
15dd70487f
Removes legacy difference between FEX config env variable and enum names
2021-03-29 00:26:11 -07:00
Ryan Houdek
43ddba4e82
Adds support for CPUID leafs
...
Leafs come from ECX but only some CPUID functions support this.
This adds the initial infrastructure but doesn't yet add support for the CPUID functions to consume the leaf.
2021-03-23 18:13:14 -07:00
Stefanos Kornilios Mitsis Poiitidis
971740991b
RCLSE: Invalidate around OP_SYSCALLs, Syscalls might read the context and need the latest version of it
...
Fixes steam w/ all optimization passes enabled
2021-03-17 02:42:32 +02:00
Ryan Houdek
79e9477b14
Removes warnings from RAPass
2021-03-14 13:27:40 -07:00
Ryan Houdek
0b8f29000e
Removes warnings from ConstProp
2021-03-14 13:27:39 -07:00
Ryan Houdek
e530e3676f
Removes warnings from IRDumper
2021-03-14 13:27:39 -07:00
Ryan Houdek
10fbf60259
Converts the printf usages in FEXCore to LogManager
...
Now that we can safely handle long strings these will now work
2021-03-10 16:38:46 -08:00
Scott Mansell
b36378369a
Merge pull request #822 from FEX-Emu/skmp/fix-scm-bug
...
ConstProp: Restrict imm code motion around selects to matching sizes, fixes dav1d
2021-03-09 22:12:50 +13:00
Stefanos Kornilios Mitsis Poiitidis
cbf4c9a687
ConstProp: Restrict imm code motion around selects to matching sizes, fixes dav1d
2021-03-09 11:06:16 +02:00
Scott Mansell
35c01038ba
Seperate per-thread and per-frame state
2021-03-09 20:27:44 +13:00
Ryan Houdek
a3ba1ae199
Deduplicates some configuration data
...
Configuration mapping was duplicated between three different tables.
Additionally default configuration values were strewn about. Making it confusing as to what the default value would end up being
Adds a new ConfigValues.inl header that defines a few things right next to each other.
Defines the enum name as usual.
Defines the JSON config option name.
Defines the Environment config option name
Defines the default value that the configuration should be
2021-03-08 22:53:41 -08:00
Stefanos Kornilios Mitsis Poiitidis
6d0d3eaf04
AOTIR: Review feedback
2021-02-23 12:23:56 +02:00
Stefanos Kornilios Mitsis Poiitidis
8e06966ddc
AOTIR: Make OP_REMOVECODEENTRY relocatable
2021-02-23 12:08:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
56d10dcbbb
IR: Make OP_THUNK use an inline sha256 hash of the thunk name, update thunk scripts
2021-02-23 12:08:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
63507f5ece
IR: Fix int64_t parsing
2021-02-23 12:08:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
681deca4eb
IR: Make entrypoint implicit, Add InlineEntrypointOffset, make ValidateCode Entrypoint-relative
2021-02-23 12:08:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
47d4481a75
AOTIR: Support relocations via new ir op
2021-02-23 12:08:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
816c4656df
IR: Add AOT Cache
2021-02-23 12:08:57 +02:00
Stefanos Kornilios Mitsis Poiitidis
6615d5972f
x87: Support for FCW, rounding, truncation, precision control
2021-02-17 05:16:53 +02:00
Stefanos Kornilios Mitsis Poiitidis
9f2d49026e
Merge pull request #768 from FEX-Emu/skmp/fix-csgo
...
Fixes for Counter Strike Global Offensive
2021-02-15 03:47:14 +02:00
Stefanos Kornilios Mitsis Poiitidis
07bd2244c7
IR: Remove ShouldInterpret & related logic
2021-02-12 14:21:47 +02:00
Stefanos Kornilios Mitsis Poiitidis
4e31c1d1ce
RA: Remove erratic assert
2021-02-11 14:31:53 +02:00
Scott Mansell
5b0ade0bd8
Fix power of 2 OP_MUL optimisation
...
The new left-shift that replaced the multiply takes
it's size from arg[0]. If arg[0] was 64bit and the original
OP_MUL was 32bit, then the original code would truncate
upper bits, and the replacement code wouldn't.
This bug broke the SSL cert checking code in geekbench,
causing it to fail to upload results.
Fixes #647
2021-02-07 18:49:47 +13:00
Scott Mansell
93d5cdde1f
Fix missing libc++ includes
...
gnu's libc++ is lenient and allows you to miss includes at times.
Android's binoic is more strict and needs these fixes to build.
2021-02-01 21:08:45 +13:00
Scott Mansell
ebb05b56e4
Merge pull request #739 from Sonicadvance1/remove_warnings_10
...
Removes warning from Static Register Allocation Pass
2021-02-01 17:31:39 +13:00
Scott Mansell
f5dd0fea5d
Merge pull request #742 from Sonicadvance1/remove_warnings_8
...
Removes warning from IRCompaction
2021-02-01 17:31:28 +13:00
Scott Mansell
9c81fbb2fd
Merge pull request #736 from Sonicadvance1/remove_warnings_6
...
Removes warning from IRDumper
2021-02-01 16:42:52 +13:00
Scott Mansell
a156210064
Merge pull request #738 from Sonicadvance1/remove_warnings_9
...
Removes warnings from Register Allocation Pass
2021-02-01 16:32:05 +13:00
Ryan Houdek
d1161de4e4
Removes warning from Static Register Allocation Pass
2021-01-31 08:00:58 -08:00
Ryan Houdek
0c3ddd3016
Removes warnings from Register Allocation Pass
2021-01-31 08:00:28 -08:00
Ryan Houdek
5c9848650c
Removes warning from IRCompaction
2021-01-31 07:59:59 -08:00
Ryan Houdek
a90e2268f9
Removes warning from DeadStoreElimination
2021-01-31 07:59:26 -08:00
Ryan Houdek
175078b739
Removes warning from IRDumper
2021-01-31 07:58:58 -08:00
Stefanos Kornilios Mitsis Poiitidis
972219043d
Core: Refactor compilation driver, lifetime of objects
2021-01-29 10:42:55 +02:00
Stefanos Kornilios Mitsis Poiitidis
0e00d3dc15
RA: Optimize RAData
2021-01-29 10:42:48 +02:00
Stefanos Kornilios Mitsis Poiitidis
a45c2c34e9
RA: Use RAData directly
2021-01-29 10:42:40 +02:00