Jonathan Li
171e7f016d
common: Work around GCC8 _xgetbv bug
...
clang and earlier GCC versions do not provide the _xgetbv intrinsic.
GCC8 does, but unfortunately it's broken.
(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85684 ).
Re-use our _xgetbv implementation to avoid the bug, but rename it to
avoid compilation errors as well.
2018-05-12 12:05:20 +01:00
Jonathan Li
15efe69e46
common: Fix multiple _xgetbv() error on GCC 8
...
GCC 8 now provides _xgetbv, so avoid using our own definition in that
case.
2018-05-06 00:52:47 +01:00
KousukeItsagame
11aebe465f
common: Replace __threadlocal with C++11 thread_local
2017-04-13 19:59:00 +02:00
Clang Format
1fba5cb580
reformat main common directory
...
Disable some reformat around emitter registers declaration and a massive cases.
2016-11-12 16:52:49 +01:00
Gregory Hainaut
bf0e5dc5bd
Merge pull request #1516 from PCSX2/emitter-manual-void-cast
...
pcsx2: manually cast function pointer to void*
2016-08-17 18:56:55 +02:00
Gregory Hainaut
cc68776069
pcsx2: manually cast function pointer to void*
...
Templace is nicer but give a hard time to compiler.
New version compile in both gcc&clang without hack
v2: add an uptr cast too for VS2013 sigh...
v3: use an ugly function pointer cast to please VS2013
2016-08-17 09:53:30 +02:00
Gregory Hainaut
e8e66ec4b5
x86emitter: use memcpy to avoid aliasing issue
...
Code is only called once anyway.
2016-08-14 20:48:45 +02:00
Gregory Hainaut
5cf2688c0c
common: remove useless x86_intrin.h
...
Yeah one less licence in the project :)
2016-07-22 18:47:51 +02:00
Lena
5a17b95901
x86_intrin.h: fix build using GCC ( #1468 )
...
__GNUG__ is not defined while compiling this file,
this causes the build to fail.
Replacing this with __GNUC__ fixes this.
2016-07-19 23:13:24 +01:00
Gregory Hainaut
6e306ee44f
common: move _xgetbv with cpuid intrin
...
Besides, code comes from Gabest and not reactOS
2016-07-17 10:25:00 +02:00
Gregory Hainaut
c56ca4a0fa
common: include cpuid.h on unix
...
I tested both clang and gcc.
2016-07-17 10:24:29 +02:00
Gregory Hainaut
8ee9295f39
x86emitter: increase size of union capabilities
2016-04-04 21:04:41 +02:00
Gregory Hainaut
37de84d55f
x86emitter: initialize scalar field
...
CID:147038
2016-03-30 19:50:41 +02:00
Gregory Hainaut
5611333c29
PCSX2: remove reporting of mmx/3dnow
2016-02-08 09:16:52 +01:00
Gregory Hainaut
5140a2e107
x86emitter: remove MMX support
2016-02-08 09:13:24 +01:00
Gregory Hainaut
d59e4ca4d1
intrinsic: add rotate support for clang....
2016-02-01 18:46:10 +01: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
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
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
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