Stefanos Kornilios Mitsis Poiitidis
7799cd43a4
Merge pull request #199 from Sonicadvance1/ir_has_sideeffects
...
Implements HasSideEffects IR option
2020-05-26 09:36:02 +03:00
Stefanos Kornilios Mitsis Poiitidis
7a9a95583c
Merge pull request #190 from Sonicadvance1/fix_128bit_div
...
Fixes 128bit divisions on AArch64
2020-05-26 09:34:32 +03:00
Stefanos Kornilios Mitsis Poiitidis
6c2b66894b
Merge pull request #196 from Sonicadvance1/fix_32bit_gdt_classification_dse
...
Fixes RCLSE CPUState classification
2020-05-26 09:32:59 +03:00
Ryan Houdek
f41700cd58
Lets DCE pass use the new HasSideEffects IR attribute
...
This will be less prone to breaking since you should have the sideeffect
described in the IR
2020-05-25 17:55:26 -07:00
Ryan Houdek
98d6feabae
Marks IR ops that have side effects in the IR file
2020-05-25 17:53:57 -07:00
Ryan Houdek
277d0c6e22
Adds JSON IR option HasSideEffects
...
This will be useful for making sure our DCE pass isn't so fragile
2020-05-25 17:50:07 -07:00
Stefanos Kornilios Mitsis Poiitidis
f5d69722d7
Merge pull request #195 from Sonicadvance1/implement_get_rusage
...
Implements get_rusage syscall
2020-05-25 18:11:36 +03:00
Stefanos Kornilios Mitsis Poiitidis
ec8eac2836
Merge pull request #197 from Sonicadvance1/remove_xop
...
Removes XOP frontend handling
2020-05-25 17:16:44 +03:00
Stefanos Kornilios Mitsis Poiitidis
cd4e29f83f
Merge pull request #194 from Sonicadvance1/fix_getcwd
...
Changes getcwd to use the syscall directly.
2020-05-25 17:10:28 +03:00
Stefanos Kornilios Mitsis Poiitidis
a69a821773
Merge pull request #192 from Sonicadvance1/fix_aarch64_llvm9
...
Fixes LLVM on AArch64
2020-05-25 17:06:28 +03:00
Ryan Houdek
45bf39ca0f
Removes XOP frontend handling
...
This keeps the XOP instruction tables around but removes the decoding
assert.
This lets us implement the POP instruction that overlapped the XOP
prefix without having to deal with XOP at all.
I don't believe we have any real need to support XOP, but if it is a
thing later then it'll be easy to add back
2020-05-25 00:53:14 -07:00
Ryan Houdek
6cdbab9846
Fixes RCLSE CPUState classification
...
We were missing the newly added GDT classifications.
Wouldn't have caused any issues in any 64bit applications, but threw an
assert in debug builds
2020-05-25 00:34:19 -07:00
Ryan Houdek
136a2e4291
Implements get_rusage syscall
2020-05-24 00:22:40 -07:00
Ryan Houdek
a95d43fa37
Changes getcwd to use the syscall directly.
...
The glibc implementation and syscall implementation differ quite
significantly.
Just use the kernel interface one for now.
2020-05-24 00:21:51 -07:00
Ryan Houdek
7c98f5a3ac
Fixes LLVM on AArch64
...
LLVM-9 doesn have the include, while LLVM-10 does
2020-05-24 00:19:54 -07:00
Ryan Houdek
61c0fde8fe
Fixes ASHR on AArch64
...
Smaller than 8byte wasn't sexting to the full register so it was causing issues
2020-05-24 00:18:51 -07:00
Ryan Houdek
600ad7f597
Fixes 128bit divisions on AArch64
...
These were only doing 64bit divisions.
Function calls are a bit ugly but once the new RA lands we can clean them up
2020-05-23 23:45:52 -07:00
Ryan Houdek
10087f7757
Implements initial 32bit syscall support
...
This adds the initial 32bit syscalls for testing. No where near complete
2020-05-15 03:23:15 -07:00
Ryan Houdek
64556e3eac
Ensures passmanager gets the syscall handler during core init
2020-05-14 01:04:04 -07:00
Ryan Houdek
d2cf07a4fd
Passes the running mode through from FEX to FEXCore
2020-05-14 00:56:31 -07:00
Ryan Houdek
c171fbb71e
Add 64bit config option
...
Not currently wired up to anything
2020-05-14 00:55:52 -07:00
Stefanos Kornilios Mitsis Poiitidis
c555577d07
Merge pull request #184 from Sonicadvance1/RA_Fix
...
Works around a spill bug in the RA
2020-05-12 23:44:48 +03:00
Stefanos Kornilios Mitsis Poiitidis
a65bb87fa8
Merge pull request #183 from Sonicadvance1/fix_frontend_imm
...
Fixes a bug in the frontend regarding constants
2020-05-12 19:52:43 +03:00
Ryan Houdek
0a1a52860d
Works around a spill bug in the RA
...
Spilling is a mess in this version of the RA and there was a significant
bug that effectively made spilling either infinite loop or crash.
This adds a bunch of new comments about the logic of the spilling and
ipmroves it so it shouldn't break as easily.
There are still some edge cases that can be hit that break spilling but
a lot of this code is going to be scrapped for the new RA coming up
anyway.
This is temporary until the new RA merges in.
2020-05-11 16:19:08 -07:00
Ryan Houdek
0b88984005
Fixes a bug in the frontend regarding constants
...
Optimization passes found a bug in the frontend regarding constants.
Specifically in the case of instructions that have a 32bit constant that
are sign extended to 64bit was being incorrectly set to have a size of
32bits (the size of the constant).
So an optimization pass would rematerialize constants of the expected
size, thus ~0ULL would turn in to ~0U and generate invalid code.
Now watch the destination size and set the constant to that size, which
matches what its size will be.
2020-05-11 16:10:50 -07:00
Ryan Houdek
e6e4634651
Ensures LLVM JIT doesn't crash if DebugInfo isn't provided
...
IR doesn't have DebugInfo, all the other backends already handle this
2020-05-09 12:21:54 -07:00
Ryan Houdek
718b3e6b4c
Refactors PassManager to ingest IREmitter class instead of OpDispatcher
...
The Passmanager passes need very little or zero x86 knowledge to do
their work. They don't need the x86 OpDispatcher handling code at all.
Convert this entirely over to using the IREmitter class so it can
actually optimize IR code from the IRLoader frontend
2020-05-09 12:14:59 -07:00
Ryan Houdek
dc87134af3
Switches the OpcodeDispatcher over to using the new IREmitter class
2020-05-08 19:08:14 -07:00
Ryan Houdek
1b720479c4
Adds a self contained IREmitter class
...
This class does IR emitting and some basic handling of IR specific
tasks.
This is going to be used to split the x86 OpDispatcher from the IR
emission so the IR emitter can be passed around without caring about x86
dependencies.
2020-05-08 19:03:22 -07:00
Ryan Houdek
bb7e58b3f1
Adds more IR documentation
2020-05-08 18:40:21 -07:00
Ryan Houdek
4269cef98f
Adds the ability for the IR printer to dump TypeDefinition
...
No IR uses this currently directly but it could definitely happen.
2020-05-07 17:40:29 -07:00
Ryan Houdek
54ee9cbe86
Adds predefined TypeDefinition types for common sizes
2020-05-07 17:40:29 -07:00
Ryan Houdek
c25f2845d3
Adds the ability for the frontend codeloader to load IR
...
This will be used by the IR unit test loader.
Will give the backend IR so it doesn't even parse any x86 code
2020-05-07 17:40:29 -07:00
Ryan Houdek
00028d41db
Updates IR dumping to be easier to parse
...
This will allow us to lex the text
2020-05-07 17:25:44 -07:00
Ryan Houdek
0e4bd4e7b7
Significantly improves IR documentation in the JSON file
...
Doesn't cover 100% of the IR ops but it hits about half
2020-05-07 17:24:44 -07:00
Ryan Houdek
66dc5ebc54
Merge pull request #179 from FEX-Emu/skmp/fix-exit-code
...
Propagate guest exit code
2020-05-01 16:58:07 -07:00
Stefanos Kornilios Mitsis Poiitidis
d58961ef1e
Propagate guest exit code
2020-05-02 02:34:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
3c9be4625c
Add silent log
2020-05-02 01:45:22 +03:00
Ryan Houdek
0d89de2799
Merge pull request #175 from Sonicadvance1/xmm_to_mmx
...
Implements three XMM <-> MMX conversion instructions
2020-05-01 00:52:46 -07:00
Scott Mansell
22a557b2db
Remove stray debug code
2020-05-01 19:12:00 +12:00
Ryan Houdek
deb5bd8fe8
Implements three XMM <-> MMX conversion instructions
...
CVTPI2PS does MMX->XMM integer to float conversion with lower 64bit
insert
CVTPS2PI/CVTTPS2PI does an XMM->XMM float to integer conversion
2020-04-29 19:03:48 -07:00
Ryan Houdek
9848f7eac8
Implements the XLAT instruction
...
This is a fairly straightforward instruction, it's just <segment>:[rBX + AL]
Needs the previous changes since we weren't handling GS correctly
2020-04-29 18:26:03 -07:00
Ryan Houdek
6a98e93666
Implements the segment reading and writing instructions
2020-04-29 18:25:46 -07:00
Ryan Houdek
a0f412d85a
Update the new register segment reading and writing table flags
...
These are instructions that can executed at any CPL level
2020-04-29 18:25:46 -07:00
Ryan Houdek
53798f194e
Fix the Frontend's handling of the GS prefix
...
We were accidently treating it as FS each time it was encountered
2020-04-29 18:25:46 -07:00
Ryan Houdek
e49a66f740
Implements support for the three loop instructions
...
loop, loope, loopne
2020-04-29 17:20:09 -07:00
Ryan Houdek
0d83454366
Merge pull request #170 from dmiller423/procfs_auxv
...
Added dup3 syscall, EmulatedFiles : /proc/{self,$PID}/auxv, modified …
2020-04-29 16:06:30 -07:00
Ryan Houdek
8f2f046fc8
Merge pull request #157 from Sonicadvance1/rcp
...
Implements support for rcpps/rcpss
2020-04-29 16:03:38 -07:00
David Miller
09f119a3ce
removed front end header / class from EmulatedFiles.cpp
2020-04-29 16:39:40 -04:00
David Miller
f916294772
Include unistd.h in EmulatedFiles.cpp as CI doesn't build
2020-04-29 16:04:39 -04:00