Lioncash
a5c5645bed
DSPIntMultiplier: Place translation unit local functions in an anonymous namespace
...
Unlike inline, this makes the functions internally linked.
2017-03-26 16:42:35 -04:00
Markus Wick
b7f605e88e
Merge pull request #5097 from MerryMage/pic
...
PIE support for the DSP JIT
2017-03-17 22:24:03 +01:00
MerryMage
5e7d01dea4
DSPJitRegCache: Remove ebp_store
...
Restoring RBP before function calls is a no-op.
2017-03-17 17:10:25 +00:00
MerryMage
14739c55c3
DSP/Jit: PIE support
2017-03-17 17:10:24 +00:00
MerryMage
1020a3cb8e
DSP/Jit: Explicitly specify scratch register for Update_SR_Register
...
There were cases when the value register was RDX and thus was being
clobbered as RDX was implictly used as a scratch register.
2017-03-14 19:18:56 +00:00
Markus Wick
7b19475911
Merge pull request #4548 from stenzek/gcc-sse
...
Support SSSE3 texture decoders and CRC32 hashing on non-native builds (gcc)
2017-03-13 14:28:01 +01:00
Lioncash
ade7718636
DSPInterpreter: Remove unnecessary const specifiers from function declaration parameters
2017-03-12 17:38:04 -04:00
Lioncash
a33cd805f9
DSPEmitter: Remove unnecessary const specifiers from function declaration parameters
...
These only matter for types being passed by value within the definition,
not the declaration.
2017-03-12 17:37:07 -04:00
Lioncash
26e9c54886
DSPEmitter: Make helper functions private
...
Given none of these are used outside of the DSPEmitter class (nor does
it really make sense to allow them to be used outside of the class),
these should all be made private.
2017-03-11 20:33:07 -05:00
MerryMage
dc1a8c46e9
DSP/Jit: Load address of m_cycles_left into register
...
On some platforms, the address of m_cycles_left exceeds the maximal 32-bit
offset from RIP.
2017-03-11 22:51:41 +00:00
Lioncash
552c0d8404
Common: Move byte swapping utilities into their own header
...
This moves all the byte swapping utilities into a header named Swap.h.
A dedicated header is much more preferable here due to the size of the
code itself. In general usage throughout the codebase, CommonFuncs.h was
generally only included for these functions anyway. These being in their
own header avoids dumping the lesser used utilities into scope. As well
as providing a localized area for more utilities related to byte
swapping in the future (should they be needed). This also makes it nicer
to identify which files depend on the byte swapping utilities in
particular.
Since this is a completely new header, moving the code uncovered a few
indirect includes, as well as making some other inclusions unnecessary.
2017-03-03 17:18:18 -05:00
Anthony
8dc96fce4d
Merge pull request #4776 from lioncash/dspemitter
...
DSPEmitter: Convert a C array to a std::array
2017-03-01 08:11:26 -08:00
Lioncash
4260afc848
DSPCore: Make g_cycles_left a regular member variable of DSPEmitter
...
Gets rid of a global within the DSP core.
2017-02-07 21:56:57 -05:00
Lioncash
063e4df5a1
DSPCore: Convert the DSPCoreState enum into an enum class
2017-02-06 11:47:19 -05:00
Markus Wick
2ad62bf5df
Merge pull request #4777 from lioncash/dspstack
...
DSPCore: Convert DSP stack register enum into an enum class
2017-02-04 08:27:11 +01:00
Lioncash
a9db9fd217
DSPDisassembler: Make constructor explicit
2017-01-30 18:17:48 -05:00
Lioncash
546cd5d4be
DSPAssembler: Make constructor explicit
2017-01-30 18:16:59 -05:00
Lioncash
10d73988e7
DSPCore: Convert DSP stack register enum into an enum class
...
Makes it more self-documenting which stack is being loaded or stored to,
as C, D, and magic numbers are extremely vague. It also enforces a
strongly-typed API instead of accepting arbitrary integral values.
It also adds the two other missing stack register names -- loop address
and loop counter.
2017-01-28 09:17:27 -05:00
Lioncash
4846f26916
DSPEmitter: Convert a C array to a std::array
2017-01-28 07:39:22 -05:00
Lioncash
7959f900ed
DSPEmitter: Remove unused class member variable
2017-01-28 06:36:54 -05:00
Markus Wick
04c3db8bfa
Merge pull request #4771 from lioncash/dspemitter
...
DSPCore: Move emitter cycle code into DSPEmitter itself
2017-01-28 12:25:34 +01:00
Lioncash
be3f9f7431
DSPEmitter: Fix -Wreorder warnings
2017-01-28 06:07:25 -05:00
Lioncash
f5fe387a20
DSPEmitter: Make emitter dispatcher pointers private
2017-01-28 03:55:56 -05:00
Lioncash
0d42cbc923
DSPCore: Move JIT cycle code to DSPEmitter
...
Moves x86-specific emitter code out of DSPCore.
2017-01-28 03:55:40 -05:00
Lioncash
4003360bcb
DSPCore: Move CompileCurrent to the DSPEmitter
...
This is only ever used here.
2017-01-27 01:36:29 -05:00
Matthew Parlane
06728ad687
Merge pull request #4757 from lioncash/dsptables
...
DSPTables: Hide remaining opcode tables
2017-01-27 18:17:36 +13:00
Lioncash
be52fcf651
DSPEmitter: Make most public variables private
...
Dispatchers and m_unresolved_jumps is utilized in code outside of the
emitter, so these are left as is for the time being.
2017-01-26 20:32:57 -05:00
Lioncash
970d969f63
DSPEmitter: Make conditional JIT functions in DSPJitBranch part of the emitter
...
These quite clearly have a dependency on the emitter itself, so these
should be a part of the emitter itself.
The template function can be modified to just simply take functions as a
parameter.
2017-01-26 20:32:34 -05:00
Lioncash
16aac00b8a
DSPEmitter: Move private variables below function declarations
2017-01-26 19:25:49 -05:00
Lioncash
ef52451954
DSPJitRegCache: Convert DSPJitSignExtend into an enum class
...
Prevents general names like SIGN, ZERO, and NONE from polluting the
surrounding namespace.
2017-01-26 18:33:50 -05:00
Lioncash
bdd7034fcb
DSPJitRegCache: Move allocation order array to the cpp file
...
As it's a private static implementation detail that doesn't rely on any
other internals of DSPJitRegCache, it can be hidden.
2017-01-26 17:12:55 -05:00
Lioncash
8f5ce50a25
DSPAssembler: Migrate VerifyParams over to an OpcodeType param instead of bool
2017-01-26 05:17:05 -05:00
Lioncash
6cb6707a4e
DSPTables: Hide remaining exposed opcode tables
...
All opcode tables are now internal.
2017-01-26 05:17:01 -05:00
Markus Wick
0a07df13d2
Merge pull request #4753 from lioncash/dspjit
...
DSPEmitter: Amend member variable naming
2017-01-26 10:33:03 +01:00
Lioncash
f4415dd99c
DSPEmitter: Amend member variable naming
...
Amends the variable names to follow our coding style.
2017-01-25 19:26:57 -05:00
Lioncash
c2e3bd8d2f
DSPAssembler: Amend printf specifiers in ShowError
...
code_line is a u32.
2017-01-25 17:20:25 -05:00
Lioncash
992b7f7ac0
DSPAssembler: Replace char buffer + sprintf with StringFromFormat
2017-01-25 17:20:21 -05:00
Markus Wick
3c184dcf8d
Merge pull request #4742 from lioncash/dspasm
...
DSPAssembler: Replace malloced output buffer with std::vector
2017-01-25 14:49:36 +01:00
Lioncash
3734d6f16c
DSPJitRegCache: Make GetReg return by value
...
Using out-references for this sort of thing is a C++03-ism.
2017-01-24 23:10:34 -05:00
Stenzek
214aea1aea
DSPHWInterface: Use SSSE3 function targeting
2017-01-24 20:04:55 +10:00
Lioncash
ed627a8cff
DSPAssembler: Replace malloced output buffer with std::vector
...
Same thing, less manual memory management.
2017-01-23 22:03:40 -05:00
Lioncash
d6bdbfe90e
DSPAssembler: Use std::string instead of malloced char buffers in AssembleFile
2017-01-22 01:15:36 -05:00
Lioncash
cbe1ec51df
DSPAssembler: Make AssembleFile take a std::string
...
File paths passed to it would have been implicitly converted to std::strings
prior to this function being reached, so it gets rid of some string churn.
It also makes it safer since nullptr can't be passed in.
2017-01-22 01:15:31 -05:00
Lioncash
c73f4bd226
DSPTables: Hide main opcode tables
...
Hides the opcode tables that the interpreter and JIT interface with to
execute instructions.
This does not, however, hide the read-only tables that the assembler and
disassembler use.
2017-01-19 17:46:07 -05:00
Lioncash
2b5b21f2a4
DSPAssembler: Rename FindOpcode parameters
...
Having opcod and opcode as parameter names is kind of silly.
2017-01-19 17:46:01 -05:00
Lioncash
14f0e66809
DSPTables: Use std::array instead of C arrays
2017-01-19 17:07:31 -05:00
Lioncash
35cc4a4202
DSPInterpreter: Get rid of a #define constant
...
This constant isn't particularly helpful, mainly because it's not
applicable to all DSP instructions. Some instructions don't have encoding
space for registers, and not all instructions that do encode registers
have one at the first five bits.
This change also has the benefit of removing all includes to the
interpreter within the JIT code, which keeps them fully separate from one
another. Changes to the interpreter header won't require some of the JIT
code to be rebuilt.
2017-01-12 20:36:52 -05:00
Markus Wick
c33c9532a7
Merge pull request #4594 from lioncash/regcache
...
DSPJitRegCache: Make single argument constructor explicit
2017-01-06 13:01:40 +01:00
BhaaL
23d99f2f2c
specify custom brace style to fix unions
...
BreakBeforeBraces: Allman apparently includes all styles,
except for AfterUnion (which is false) when using clang-format -dump-config
2017-01-05 12:55:13 +01:00
Lioncash
2cfc0dc8b6
DSPDisassembler: directly initialize AssemblerSettings struct members
...
Same thing, less code.
2017-01-04 12:53:22 -05:00