1187 Commits

Author SHA1 Message Date
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
4fad9a8c0b Assert on unreachable 2021-02-02 17:12:43 +13:00
Scott Mansell
9fa108ff33 Move -lnuma to correct place 2021-02-02 16:47:55 +13:00
Scott Mansell
622c437829 undef PAGE_SIZE if it's defined
The android NDK defines this.
2021-02-02 16:47:55 +13:00
Scott Mansell
c3ab5bca5e Fix <elf.h> incompatibilities
ELF32_ST_VISIBILITY is a pretty simple macro, just reimplement it.
2021-02-02 16:47:44 +13:00
Scott Mansell
ef043f10ed Remove std::unexpected
It's deprecated in c++17, and android's bionic has removed it
2021-02-01 21:08:45 +13:00
Scott Mansell
0ff39ccad2 Remove dependance on system sigset_t
Android's sigset_t is the wrong size. Just define our own one.
2021-02-01 21:08:45 +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
2e5f59cdc1
Merge pull request #734 from Sonicadvance1/remove_warnings_4
Removes warnings from OpcodeDispatcher
2021-02-01 16:45:37 +13:00
Scott Mansell
767813eb97
Merge pull request #735 from Sonicadvance1/remove_warnings_5
Removes warning from X86Tables
2021-02-01 16:44:24 +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
5f624bec05
Merge pull request #733 from Sonicadvance1/remove_warnings_3
Removes warnings from x86-64 JIT.cpp
2021-02-01 16:42:10 +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
Scott Mansell
d4fbca3cbf
Merge pull request #732 from Sonicadvance1/remove_warnings_2
Removes warnings from Frontend
2021-02-01 16:23:29 +13:00
Scott Mansell
c14dfb9d52
Merge pull request #737 from Sonicadvance1/remove_warnings_7
Removes warning from DeadStoreElimination
2021-02-01 16:15:12 +13:00
Scott Mansell
27adabef83
Merge pull request #740 from Sonicadvance1/remove_warnings_11
Removes warnings from ELFLoader
2021-02-01 16:14:43 +13:00
Ryan Houdek
436e6e96ce Removes warnings from ELFLoader 2021-01-31 08:01:25 -08: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
Ryan Houdek
9e55f1b177 Removes warning from X86Tables 2021-01-31 07:58:08 -08:00
Ryan Houdek
6012fcfee6 Removes warnings from OpcodeDispatcher 2021-01-31 07:57:28 -08:00
Ryan Houdek
c2f4ea4646 Removes warnings from x86-64 JIT.cpp 2021-01-31 07:56:19 -08:00
Ryan Houdek
1f6017c37c Removes warnings from Frontend 2021-01-31 07:55:26 -08:00
Ryan Houdek
47a6b49f7f Removes warnings from SoftFloat-3e 2021-01-31 07:54:47 -08:00
Stefanos Kornilios Mitsis Poiitidis
1f7d815f3a LookupCache: Fix crash on L2 insertion 2021-01-29 22:00:07 +02:00
Stefanos Kornilios Mitsis Poiitidis
9ecde7a0b8 Interpreter: Move execution to IntepreterOps::ExecuteIR, single core refactor 2021-01-29 15:17:37 +02: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
Stefanos Kornilios Mitsis Poiitidis
513112919b RA: Move allocation data to RAData 2021-01-29 10:42:40 +02:00
Stefanos Kornilios Mitsis Poiitidis
791aa4c32c LookupCache: Add a third level cache that will always resolve all known blocks 2021-01-29 01:53:12 +02:00
Stefanos Kornilios Mitsis Poiitidis
0c9e05ed8f Rename BlockCache to LookupCache 2021-01-29 01:31:48 +02:00
Ryan Houdek
2d8b70bbd5
Merge pull request #710 from Sonicadvance1/brk_improvements
More improvements to BRK handling
2021-01-27 10:49:07 -08:00
Stefanos Kornilios Mitsis Poiitidis
f872e178ac
Merge pull request #718 from Sonicadvance1/32bit_sigret_handler
Forces SIGRET handler to the lower 32bits VA on 32bit processes
2021-01-27 20:16:51 +02:00
Ryan Houdek
a5d9e62cc6 More improvements to BRK handling
Base size is now only one page in size. We will then increment that BRK
size by 8MB alignments. 256MB for 32bit applications was causing some
applications on the edge to run out of virtual memory
I was hitting some 32bit applications that were being fairly mean with
BRK. They were allocating all of BRK space then running out of virtual
memory space with its mmap handler fallback after freeing BRK space.

This means we now munmap BRK pages on release for the guest, similar to
behaviour that Linux does.

Additionally I had an application that was getting very upset that BRK
wasn't actually at the end of program space. So allocate at the end of
program space like expected.

brk test now passes from gvisor
2021-01-27 10:12:25 -08:00
Stefanos Kornilios Mitsis Poiitidis
ec31dc0872
Merge pull request #716 from Sonicadvance1/describe_tag
Puts the FEX describe tag in CPUID
2021-01-27 20:10:46 +02:00
Ryan Houdek
2437b89c7b Forces SIGRET handler to the lower 32bits VA on 32bit processes
This is visible to the guest process so for 32bit it needs to be in the
lower 32bits.
2021-01-27 07:54:30 -08:00
Ryan Houdek
5673a0e213 Puts the FEX describe tag in CPUID
This is what shows up in /proc/cpuinfo

example on tagged release:   'model name      : FEX-2101'
example on untagged release: 'model name      : FEX-2101-64-g536be23f'

Fixes #661
2021-01-27 07:20:14 -08:00
Ryan Houdek
3df344a78d Fixes some asserts from vixl and a bug in ExitSpillSRA
Assembler by default doesn't allow you to use the assembler. Needs a
CodeBufferCheckScope.

Labels with binds and not links will throw an assert.
ExitSpillSRA was using b instead of bind incorrectly.
Thus branching to a invalid location
2021-01-27 00:53:27 -08:00
Ryan Houdek
536be23f68
Merge pull request #704 from FEX-Emu/skmp/add-gcc-target-tests
Add gcc target tests
2021-01-26 15:45:12 -08:00
Ryan Houdek
6bca290611 Implements VBSL on AArch64
This isn't quite optimal without RA constraints
2021-01-26 03:01:48 -08:00
Ryan Houdek
513cb27825 Add TSX names to decode tables so we know what they are
Rather than just stating UND

We can't support this until we have an ARM CPU that supports TME and
more robust multiblock.
2021-01-26 02:03:42 -08:00
Stefanos Kornilios Mitsis Poiitidis
29a8fd0a4a Tests: Add gcc-target-tests for 32 and 64 bit 2021-01-26 12:00:45 +02:00
Stefanos Kornilios Mitsis Poiitidis
b0365871b6 OpDisp: Address most 32-bit rip size issues 2021-01-25 15:04:12 +02:00
Ryan Houdek
d4ffea5c31
Merge pull request #670 from FEX-Emu/skmp/faster-ra
IR: Optimize runtime of optimization passes
2021-01-22 04:54:08 -08:00