Commit Graph

285 Commits

Author SHA1 Message Date
Lioncash 6e9329455c DSP/LabelMap: std::move std::string instances where applicable
We can std::move the std::string parameter in Label's constructor,
allowing the constructor to be moved into in calling code.

We can cascade this outwards in the interface as well.
2019-06-07 17:42:10 -04:00
Lioncash 32427af79e DSP/LabelMap: Make label_t's definition hidden
Given this is a private struct and it's used in a container that
supports incomplete types, we can forward-declare it and move it into
the cpp file. While we're at it, we can change the name to Label to
follow our formatting guidelines.
2019-06-07 17:37:48 -04:00
Lioncash a3ed4ceec5 DSP/LabelMap: Use std::optional with GetLabelValue()
Rather than use a bool and out parameter, we can collapse them into one
by using a std::optional.
2019-06-07 17:26:24 -04:00
Lioncash 747128b093 DSP/LabelMap: Collapse DeleteLabel loop into std::find_if
Same thing, no explicit loops.
2019-06-07 17:13:10 -04:00
Lioncash 98ec2ab2ac DSP/LabelMap: Default constructor and destructor
We also move the destructor definition into the cpp file, as that will
allow us to make the entire label_t type hidden from external view in a
following change.
2019-06-07 17:07:06 -04:00
Lioncash 0a1249ea40 DSP/LabelMap: Amend class formatting
Places the most important stuff, the public interface first.
2019-06-07 17:05:25 -04:00
Lioncash 60d10d2813 Core/DSP/DSPTables: Make FindOpInfoByName/FindExtOpInfoByName use std::string_view
These functions only ever compare against another string, so these can
have their parameters turned into std::string_view to make them more
flexible.
2019-06-06 12:22:02 -04:00
Lioncash a9663669dc Common/CommonFuncs: Remove now-unneccessary ArraySize function
Since C++17, non-member std::size() is present in the standard library
which also operates on regular C arrays. Given that, we can just replace
usages of ArraySize with that where applicable.

In many cases, we can just change the actual C array ArraySize() was
called on into a std::array and just use its .size() member function
instead.

In some other cases, we can collapse the loops they were used in, into a
ranged-for loop, eliminating the need for en explicit bounds query.
2019-06-01 10:07:57 -04:00
Lioncash eb475025b8 Common/FileUtil: Make WriteStringToFile consistent with ReadFileToString
Makes the parameter ordering consistent and less error-prone.
2019-05-29 07:06:53 -04:00
Techjar ff972e3673 Reformat repo to clang-format 7.0 rules 2019-05-06 18:48:04 +00:00
Léo Lam ab9ece9bca Replace MathUtil::Clamp with std::clamp 2019-05-04 23:12:17 +02:00
Sintendo ef94fca504 DSPJit: various micro-optimizations 2018-09-29 09:52:30 +02:00
Pierre Bourdon 307d705654
Merge pull request #7152 from lioncash/dsp-interp
DSPIntExtOps: Minor cleanups
2018-06-25 01:42:42 +02:00
Léo Lam e16cadf982
Merge pull request #7153 from lioncash/deduplicate
DSPTables: Deduplicate FindByOpcode() implementations in DSP opcode tables
2018-06-22 22:49:16 +02:00
Lioncash 8d9f74b762 DSPEmitter: Make member functions, aliases and constants private where applicable
Given we now use a base class for the interface, we can make all member
functions, types and constants that aren't directly related to
instructions private.
2018-06-21 17:29:33 -04:00
Lioncash fd1ad02c5c DSPTables: Deduplicate FindByOpcode() implementations in DSP opcode tables
This function was duplicated across all the opcode tables: the main info
tables, the interpreter tables, and the x86-64 JIT tables. However, we
can just make the type of the std::array parameter a template type and
get rid of this duplication.
2018-06-21 13:35:06 -04:00
Lioncash fdf057efce DSPIntExtOps: Remove unnecessary const from function prototypes
const on a parameter being passed by value in a prototype doesn't actually signify
anything, these are only applicable in the definition, where they make
the opcode parameter immutable.
2018-06-21 13:00:08 -04:00
Lioncash 42846e6ef1 DSPIntExtOps: Correct casing of functions
Corrects several functions to conform to our coding style.
2018-06-21 12:53:22 -04:00
Lioncash 4367e3aeda DSPIntExtOps: Make IsSameMemArea internally linked
inline has external linkage, which doesn't really make sense here, given
the function is only used within this translation unit. So we can
replace inline with static.

While we're at it, the code within the function can also be compressed
to a single return statement.
2018-06-21 12:46:01 -04:00
Lioncash b7301bee29 DSP: Replace x64 JIT pointer with a pointer to an architecture-agnostic base
This adds a base class that is used to replace the concrete instance of
the x64 JIT pointer within DSPCore. This fully removes the direct use
(read: non-ifdefed) usage of x86-64-specifics within the main DSP code.

Said base can also be used for creating JITs for other architectures,
such as AArch64, etc.
2018-06-21 05:20:22 -04:00
Markus Wick 5f7dc31a9f
Merge pull request #7138 from lioncash/dsp-table
DSPTables: Separate interpreter and JIT functions from main info table
2018-06-21 10:23:03 +02:00
Lioncash 474c1bb4f7 DSPTables: Separate interpreter and JIT functions from main info table
This is one of the last things that needed to be done in order to
finally separate the x86-64-specific code from the rest of the common
DSP code. This splits the tables up similar to how it's currently done
for the PowerPC CPU tables.

Now, the tables are split up and within their own relevant source files,
so the main table within the common DSP code acts as the "info" table
that provides specifics about a particular instruction, while the other
tables contain the actual instruction.

With this out of the way, all that's left is to make a general base for
the emitters and we can then replace the x64 JIT pointer in DSPCore with
it, getting all x64 out of the common code once and for all.

While shuffling all the code around, the removal of the DSPEmitter
includes in some places uncovered indirect inclusions, so this also
fixes those as well.
2018-06-21 04:21:44 -04:00
Lioncash 9c3c92329e DSPAssembler: Remove commented out code
This is just dead line noise sitting around, so we can get rid of it.
2018-06-18 16:24:38 -04:00
Lioncash b36cdbdda5 DSPAssembler: Convert typedef into a using alias 2018-06-18 15:45:59 -04:00
Lioncash af41a8efba DSPAssembler: Make member variable naming consistent
Previously the class was intermixing m_ prefixed variables and
non-prefixed ones, which can be misleading. Instead, we make the
prefixing consistent across the board.
2018-06-18 15:44:13 -04:00
Lioncash 1389bf35bd DSPAssembler: In-class initialize members where applicable
Avoids repeating ourself in the initializer list and makes the class
have a predictable initial state.
2018-06-18 15:35:58 -04:00
Lioncash eb76dc9600 DSPCore: Make ExceptionType an enum class
Makes the values strongly typed and avoids polluting the DSP namespace.
2018-06-17 17:42:54 -04:00
Lioncash 8459d2bc5d DSPCore: Make DSPCore_SetException() take an enum type instead of a u8
Makes it more immediately indicative which values are intended to be
passed to this function.
2018-06-17 16:02:56 -04:00
Lioncash 161dffe2f9 DSPCore: Rename JIT core type to JIT64
This changes the identifier to represent the x86-64 DSP emitter. If any
other JITs for the DSP are added in the future, they all can't use the
same generic identifier.
2018-06-15 07:59:05 -04:00
Lioncash 98af5e4c10 DSPCore: Convert core type enum into an enum class
Prevents pollution of the surrounding scope and makes the values
strongly-typed.
2018-06-15 07:55:31 -04:00
Lioncash 61ff11c266 DSPDisassembler: Remove unnecessary includes
Gets rid of an inclusion dependency with the DSP interpreter, as well as
a header-based dependency on the DSP opcode tables. This also uncovered
an indirect inclusion on the logger within DSPSymbols.cpp
2018-06-08 18:55:57 -04:00
Léo Lam 8fe7f8d80d
Merge pull request #7072 from lioncash/emitter
DSPEmitter: Make m_unresolved_jumps private
2018-06-04 22:26:24 +02:00
Lioncash bbd2fd080e DSPEmitter: Make m_unresolved_jumps private
By making the jitted function a private static function of DSPEmitter,
we can allow access to data members within the context of the function
without making them public overall.

This finally makes all data members for the x64 DSP emitter private.
2018-06-04 15:46:08 -04:00
Lioncash 1e3e11d0f5 DSPAccelerator: const qualify pointer parameter for Read()
The data pointed to is only ever read, so make this explicit.
2018-06-04 14:50:42 -04:00
Lioncash 97c5a840db PcapFile: Namespace code under the Common namespace
Brings more common code under the Common namespace.
2018-05-29 17:56:15 -04:00
Lioncash 011ee110bc Common/Hash: Namespace code under the Common namespace
Brings more common code under the Common namespace.
2018-05-16 15:39:23 -04:00
spycrab 40bb9974f2 Reformat all the things! 2018-04-12 21:28:39 +02:00
JosJuice 621e1758fb
Merge pull request #6581 from lioncash/const
DSPJitRegCache: Make FindFreeReg() a const member function
2018-04-01 22:05:48 +02:00
Lioncash 6cfa9fda6b DSPJitRegCache: Make FindFreeReg() a const member function
This member function doesn't modify class state.
2018-04-01 16:01:25 -04:00
Lioncash fe9d989765 DSPJitRegCache: Remove unnecessary casts in FlushRegs()
We can just use the proper printf specifiers instead.
2018-04-01 15:49:21 -04:00
Léo Lam c82da2b978 Remove dead code
Unused, old code that is intended to be removed should not be left in
comments -- that is what version control is for.
2018-03-31 14:56:27 +02:00
Markus Wick 9b5726fc23
Merge pull request #6534 from lioncash/dspjit
DSPEmitter: Remove uses of the DSP JIT global in CompileCurrent()
2018-03-26 21:12:46 +02:00
Léo Lam eb489c0a5e
Merge pull request #6529 from lioncash/utils
DSPCodeUtil: Don't return data via an out parameter
2018-03-26 12:46:16 +02:00
Léo Lam ccfdea696a
Merge pull request #6527 from lioncash/typedef
DSPTables: Remove opc_t typedef
2018-03-26 12:39:27 +02:00
Lioncash 1519e4dbb3 DSPEmitter: Remove uses of the DSP JIT global in CompileCurrent()
With this, the DSPEmitter itself no longer makes use of the DSP JIT global
2018-03-26 01:14:17 -04:00
Lioncash 0f25627614 DSPCodeUtil: Don't return data via an out parameter
We can just return directly in these cases.
2018-03-25 18:55:08 -04:00
Lioncash e42db3594b DSPAssembler: Make error code enum an enum class
Prevents the error codes from littering the surrounding scope.
2018-03-25 18:19:08 -04:00
Lioncash 8c421ffbb7 DSPTables: Remove opc_t typedef
This was only ever used by the DSP assembler, and even then it was
sparsely used. Get rid of it to be consistent with types in other
sections of the DSP code.
2018-03-25 17:53:23 -04:00
Sepalani 4ed06da2b4 DSP: Fix typos in DSP LoadStore doc 2018-03-22 09:24:58 +04:00
Lioncash 50a476c371 Assert: Uppercase assertion macros
Macros should be all upper-cased. This is also kind of a wart that's
been sticking out for quite a while now (we avoid prefixing
underscores).
2018-03-14 22:03:12 -04:00