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
38c548854e
Merge branch 'uptr-addr'
2016-01-16 18:34:27 +01:00
ramapcsx2
20c8b89bb7
cdvd: return 0xff instead of 0 on unknown 8 bit reads. improves compatibility with popstarter a bit.
...
Unfortunately, it then fails to load pops with "loadmodule: fname rom0:UDNL args 5 arg crap:"
2016-01-16 14:36:09 +01:00
Gregory Hainaut
35568f6425
gsdx: disable simd in 64 bits
...
Let's concentrate first on SSE2
This commit fuses a couple of ifdef
2016-01-16 14:34:00 +01:00
Gregory Hainaut
76230c1305
MTGS: s/u32 pointer/uptr/
2016-01-16 14:34:00 +01:00
Gregory Hainaut
e23ba2340c
core: s/u32 pointer/uptr/
2016-01-16 14:34:00 +01:00
Gregory Hainaut
022cd9cd64
gsdx: s/u32 pointer/uptr/
2016-01-16 14:34:00 +01:00
Gregory Hainaut
6ec7d2c340
x86emitter: ease template stuff
2016-01-16 14:34:00 +01:00
Gregory Hainaut
8c3798e96b
core: pointers are 8B on 64 bytes
2016-01-16 14:34:00 +01:00
Gregory Hainaut
d623453451
build.sh: automatically configure wx-config on debian system
...
It is easier to alternate between 32/64 bits build
2016-01-16 14:33:49 +01:00
ramapcsx2
aafa333355
added the profiler to the visual studio solution. also added preliminary cop1 (fpu) tables, ready for implementation
2016-01-15 00:26:52 +01:00
Gregory Hainaut
9bcd9f0a73
cmake: onepad require gtk
2016-01-14 19:26:55 +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
c73d626757
build.sh: separate release/dev/dbg into separated directory
...
Avoid useless recompilation
2016-01-13 08:58:50 +01:00
Gregory Hainaut
4ac17428ac
Merge branch 'EmperorArthur-build_with_spaces'
2016-01-13 08:15:06 +01:00
Gregory Hainaut
c8da280a19
Merge branch 'build_with_spaces' of git://github.com/EmperorArthur/pcsx2 into EmperorArthur-build_with_spaces
...
Conflicts:
build.sh
2016-01-13 08:14:46 +01:00
Gregory Hainaut
d4b30620a7
pcsx2: avoid a segmentation fault due to previous hack
2016-01-12 19:35:23 +01:00
Gregory Hainaut
46a2f6ed24
interpreter: fix a subtle bug in a QFSRV
...
Math is correct but a shift of 64 bits is illegal in x86 because the cl register is masked
From the x86 spec:
The destination operand can be a register or a memory location. The count operand can be an immediate value or
the CL register. The count is masked to 5 bits (or 6 bits if in 64-bit mode and REX.W is used). The count range is
limited to 0 to 31 (or 63 if 64-bit mode and REX.W is used). A special opcode encoding is provided for a count of 1.
2016-01-12 19:29:10 +01:00
refractionpcsx2
22de865582
Gamefix: Add Scarface - The World is Yours Gamefix, might help other games that do constant VU recompilation.
2016-01-11 23:32:33 +00:00
Gregory Hainaut
3c528f0fdd
common define _32kb and _4kb
2016-01-11 18:00:25 +01:00
Gregory Hainaut
812a2e4850
recVtlb: Align dispatcher to 32B boundary
...
Better for cache coherency
2016-01-11 18:00:19 +01:00
Gregory Hainaut
e3d5eb5a4e
core: convert xCALL to xFastCall
...
SuperVU wasn't converted (unlikely to be ported to 64 bits)
A couple of calls weren't converted because they require extra work
but there are not mandatory (debug/MTVU/...)
2016-01-11 09:21:45 +01:00
Gregory Hainaut
859d62d2a7
ee|iop: use xScopedStackFrame to handle dynarec frame
...
* Rework a bit MVU to support xScopedStackFrame. Potentially
stack frame can be optimized (save 5 instructions)
* I removed the recompiler stack check. Address sanitizer is more efficient anyway
2016-01-11 09:21:45 +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
52b4604d3b
iop: remove unused iPsxMem.cpp file
2016-01-10 18:41:18 +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
41d13dc2c6
vtlb: remove SetBaseAddr
...
Base address is given in the constructor
2016-01-10 14:31:49 +01:00
Gregory Hainaut
9bcd34349f
Merge branch 'recompiler-prof'
2016-01-10 14:15:42 +01:00
Gregory Hainaut
1c4b430984
profiler: plug recompiler with new perf infra
...
Only EE/IOP support by block profiling
v2: cast wxString with ToUTF8 (windows)
2016-01-10 13:43:08 +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
Jonathan Li
8977673fdf
ci: reduce AppVeyor workload
...
Don't compile with VS2013 if VS2015 compilation fails.
Build only SSE2 and AVX2 GSdx variants.
2016-01-10 12:11:49 +00:00
Gregory Hainaut
e75d3f759f
ee:profiler: add instructions counters
2016-01-09 23:29:03 +01:00
Gregory Hainaut
5b08bda5b8
ee:profiler: count EE memory access
2016-01-09 23:29:03 +01:00
Gregory Hainaut
0e1188565e
ee:profiler: count EE instruction execution
...
Based on microVU_Profiler.h
It remains to emit all the opcode to use it properly
2016-01-09 23:29:03 +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
d57466608e
linux: pretty print dump
...
allow to replace 0xBADA55 address with nice name such as v0_b0
2016-01-09 22:59:31 +01:00
Gregory Hainaut
c80037bb2f
debug: add a new function to dump EE block
...
Give both EE and x86 code.
Don't rely on global variable. The dump still dump the content of the register.
Of course value will be wrong if you don't dump it at the start of the block.
It help to detect register/memory access
the cpu struct address is also printed to easily postprocess the x86 memory pointer
(see next commit)
2016-01-09 22:59:31 +01:00
Gregory Hainaut
dd097fe361
cmake: clang, please compile my code quietly
2016-01-09 22:57:43 +01:00
Gregory Hainaut
fd56195b2d
x86emitter: drop old register define
2016-01-09 21:28:10 +01:00
Gregory Hainaut
5c0c9a60e9
core: use ecx directly
2016-01-09 21:26:25 +01:00
Gregory Hainaut
834cc3f2c5
core|x86emitter: port basic jump instruction
2016-01-09 21:26:25 +01:00
Gregory Hainaut
b09295fc7c
core: use xRegister32 for _allocX86reg
2016-01-09 21:26:25 +01:00
Gregory Hainaut
4ddc4778e4
ee: use xRegister32 for 1st argument of _psxMoveGPRtoR
2016-01-09 21:26:25 +01:00
Gregory Hainaut
3570467838
core: inline LogicalOp* functions
2016-01-09 21:26:25 +01:00
Gregory Hainaut
9b7b9bc407
fix compilation issue due to bad renaming
...
:(
2016-01-09 21:26:25 +01:00