Jonathan Li
04a8efd8c3
pcsx2|common: Use _WIN32 for Windows preprocessor macro
...
It's predefined, unlike WIN32 and _WINDOWS (and other variants), which
are defined in the property sheets.
2016-01-27 22:41:45 +00:00
Jonathan Li
50c7775e47
utilities: Use C99+ size definitions on Windows
...
Also remove a LONG definition for Linux - it's unused.
2016-01-27 22:41:45 +00:00
Gregory Hainaut
9e773ff980
Merge pull request #1123 from PCSX2/emitter-Trex
...
Emitter trex
2016-01-21 22:32:37 +01:00
Gregory Hainaut
a2a23579bd
Merge pull request #1122 from PCSX2/emitter-64b
...
Emitter 64b
2016-01-21 22:31:01 +01:00
Gregory Hainaut
1a700145ec
x86emitter: remove unused FPU opcode
...
Future code would rely on SSE anyway
2016-01-20 10:23:23 +01:00
Jonathan Li
3c7e45ccc8
utilities: Remove ScopedArray implementation
...
It's now unused.
2016-01-17 22:54:22 +00:00
Jonathan Li
e8596f0430
pcsx2: Rearrange Console colour enum order
...
Preparation for next commit - The default isn't bold, so it's slightly
neater to have it at the start.
2016-01-17 22:06:32 +00:00
Gregory Hainaut
41a80fce20
x86emitter: finally support 64 bits instructions
...
Note: a couple of instructions don't support REX prefix. Some
exception ought to be implemented later
2016-01-17 17:02:38 +01:00
Gregory Hainaut
a9864a5619
x86emitter: create xOpAccWrite handy template for special accumulator opcode
2016-01-17 12:34:28 +01:00
Gregory Hainaut
d2436fa86d
x86emitter: remove unused function
2016-01-17 12:07:41 +01:00
Gregory Hainaut
f2ecfc99ad
x86emitter: align EmitRex interface on EmitSibMagic
2016-01-17 12:06:08 +01:00
Gregory Hainaut
e50e9a5e65
x86emitter: sed/32orLess/64orLess/
2016-01-17 00:29:19 +01:00
Gregory Hainaut
395d43fd9c
x86emitter: jump: use base type directly
...
which fix 16 bits call (no prefix)
2016-01-17 00:21:05 +01:00
Gregory Hainaut
968af6148e
x86emitter: extend SSE instruction type
2016-01-17 00:21:05 +01:00
Gregory Hainaut
4bc9cbc24f
x86emitter: extend lea/bswap
2016-01-17 00:21:05 +01:00
Gregory Hainaut
eb4db2152c
x86emitter: add x64 to push/pop
2016-01-17 00:21:05 +01:00
Gregory Hainaut
ef21a8dbd0
x86emitter: extend group8 type
2016-01-17 00:21:05 +01:00
Gregory Hainaut
39a6bda52d
x86emitter: extend test & bitscan type
...
Factorize the code to support any types
2016-01-17 00:21:05 +01:00
Gregory Hainaut
e285036455
x86emitter: shift: extend it to 64 bits type
2016-01-17 00:21:05 +01:00
Gregory Hainaut
fdaf0e9979
x86emitter:group: uses base type
...
Add 64 bits support for free ;)
Note: 64b still requires the REX prefix
2016-01-17 00:21:05 +01:00
Gregory Hainaut
e2602b3967
x86emitter:move: factorize type and extend it to 64 bits
...
It's still missing the REX prefix support
2016-01-17 00:21:05 +01:00
Gregory Hainaut
41f509873d
x86emitter: extend xIndirect32orLess to support 64 bits
...
It would be renamed later to avoid conflict with pending updates
2016-01-17 00:12:31 +01:00
Gregory Hainaut
39dc8368fa
x86emitter: add GetPrefix16 helper
2016-01-17 00:12:21 +01:00
Gregory Hainaut
be0b8cf2f5
x86emitter: implement some function to emit the REX prefix
...
Same fashion as EmitSibMagic
2016-01-17 00:10:21 +01:00
Gregory Hainaut
53b5ecf34a
x86emitter: add the new x86_64 registers set
2016-01-17 00:10:21 +01:00
Gregory Hainaut
366f793cf0
core: use xRegisterLong instead of xRegister32
...
Code needs to work with xAddressReg however the x32 inheritance doesn't
exits anymore on 64 bits.
Note: it might be possible to uses some kind of autoconversion with
xRegister32or64. Could be a future improvement.
2016-01-17 00:10:21 +01:00
Gregory Hainaut
1328865279
x86emitter: xAddressReg size will depend on the arch
...
Note: displacement are never 8B. The max is 4B which is sign extended to 8B.
So we can't store a pointer into it anymore.
Add xRegisterLong that will be x64 on 64 bits and x32 on 32 bits
2016-01-17 00:10:21 +01:00
Gregory Hainaut
a865ba8cf5
x86emitter: add various type for 64 bits
2016-01-17 00:10:21 +01:00
Gregory Hainaut
2fea78a6c4
x86emitter: remove not virtual inherited function
...
IsSIMD isn't virtual
2016-01-17 00:10:21 +01:00
Gregory Hainaut
6ec7d2c340
x86emitter: ease template stuff
2016-01-16 14:34:00 +01:00
Gregory Hainaut
a7a8c542f5
Merge pull request #1100 from PCSX2/recompiler-abi-wrapper
...
Recompiler abi wrapper
2016-01-14 19:21:27 +01:00
Gregory Hainaut
3c528f0fdd
common define _32kb and _4kb
2016-01-11 18:00:25 +01:00
Gregory Hainaut
6e66bea152
x86emitter: improve the various abi wrapper
...
V2:
* Add various option to handle the different frame
* Basic x86-64 port (untested so likely completely broken)
v3:
Create an templated xImpl_FastCall object
v4:
clang compilation fix
2016-01-11 09:21:32 +01:00
Gregory Hainaut
a6eb871b42
pcsx2: use a common general intrin include
...
Avoid issue with various compiler conversion
Fix build with GCC4.8
2016-01-11 09:13:52 +01:00
Gregory Hainaut
afdf5cdfe2
x86emitter: remove old unused macro
...
Add some notes for a GCC "bug"
2016-01-10 16:49:50 +01:00
Gregory Hainaut
92d7639267
profiler: add functions to plug linux Perf Event on JIT
...
Basically it creates a /tmp/perf-`pid`.map file which will contains
a mapping of the x86 code with the EE/IOP/VU code
* You need to enable the profiler with a define
* You can split the profiling by block (inside a recomp buffer)
v2: add new file to VS xml files
v3: remove useless include
2016-01-10 13:42:59 +01:00
Gregory Hainaut
50c7cb1717
x86emitter: implement some BMI instructions
...
Only a couple of one to do some memory profiling
2016-01-09 23:29:01 +01:00
Gregory Hainaut
9e13a7bdaa
x86emitter: add support for the VEX opcode
2016-01-09 22:59:31 +01:00
Gregory Hainaut
29b0b17f50
x86emitter: add BMI1 & BMI2 instruction detection
2016-01-09 22:59:31 +01:00
Gregory Hainaut
fd56195b2d
x86emitter: drop old register define
2016-01-09 21:28:10 +01:00
Gregory Hainaut
834cc3f2c5
core|x86emitter: port basic jump instruction
2016-01-09 21:26:25 +01:00
Gregory Hainaut
743e615224
core: overload _freeX86reg with xRegister32
2016-01-09 21:15:25 +01:00
Gregory Hainaut
60a9463e7a
x86emitter: remove unused legacy function
...
And mark the remaining one as deprecated
Clang only as it relies on C++14
2016-01-09 21:13:29 +01:00
Gregory Hainaut
de2b97c640
linux compilation fix
2016-01-08 22:35:55 +01:00
Gregory Hainaut
74db92bee4
Merge pull request #978 from juhalaukkanen/apple_osx_master_merge
...
OSX 32bit build
2016-01-08 20:09:37 +01:00
Gregory Hainaut
fb1a19f157
x86emitter: clean unused legacy type
...
Note: no need to check -1 on register allocation failure (a exception will be fired)
2015-12-02 19:09:43 +01:00
Gregory Hainaut
21445fe0d0
x86emitter: Add several architecture dependant wrapper
...
* A nice object to create the stack frame
* Various xStdCall/xFastCall to emulate standard & fast call
2015-12-02 19:06:52 +01:00
Juha Laukkanen
fc3ff48777
Darwin/OSX SysMessage stub & __POSIX__ define.
2015-11-30 12:18:44 +02:00
Jonathan Li
52be531b8e
utilities:windows: Use standard memset for memset_8
...
aka commit 2194685
for Windows
2015-11-29 11:46:59 +00:00
Jonathan Li
4d97089990
x86emitter: Fix Windows AVX2 detection
...
Technically it did work, but it was undefined behaviour. Use __cpuidex,
which allows setting ecx as well.
Also fix the _xgetbv intrinsic - I have no idea how PCSX2 even
compiled on Windows.
2015-11-29 10:57:51 +00:00