Commit Graph

7914 Commits

Author SHA1 Message Date
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
Jonathan Li 37deeb0d52 gsdx-ogl: Optimise overlap detection algorithm
Vectorise coordinate min/max sorting, and use the ordered runion
instead.
2016-01-16 19:21:56 +00:00
Jonathan Li 14dffa762b gsdx: Add runion_ordered to GSVector
Allows to save a few instructions cycles when xy and zw are already
sorted (min and max rectangle coords).
2016-01-16 19:21:55 +00:00
Jonathan Li 2fc3ef8124 gsdx-ogl: Add sprite overlap statistics to debug messages 2016-01-16 19:21:54 +00: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
Jonathan Li 74ace74d50 gsdx-ogl: Group non-overlapped accurate blend sprite draws
Reduces the number of draw calls and barriers when drawing sprites.
2016-01-13 08:07:53 +00:00
Jonathan Li f3b6829c74 gsdx-ogl: Restart collision detection algorithm for remaining sprites
It's useless on its own, but it prepares for the next commit.
2016-01-13 08:02:42 +00: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
remeh 28cfd50f08 gsdx: cmake: don't display "unused parameters" warnings on release build with clang. 2016-01-12 13:42:47 +01:00
dokman f06d055372 Now it's usable!
All done

ToDo:
Details of every setting
2016-01-12 10:44:36 +01:00
dokman 7fae220f18 Emulation Settings done 2016-01-12 10:26:10 +01:00
dokman 7b48923a2c Updating with newest templates.
Emulation Settings
EE/IOP done
VUs done
GS done
GS Window done
Speedhacks done
Game fixes ToDo

Plugin/BIOS Selector done
2016-01-12 10:05:34 +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
dokman 5f680141b4 Pushing base of translation with the newest template 2016-01-11 22:39:06 +01: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
Derek "Turtle" Roe a09b42e046 Revert title case 2016-01-10 19:55:30 -06:00
Derek "Turtle" Roe c85713850d Revert change 2016-01-10 19:53:43 -06:00