Lioncash
66596c5176
Common/x64Emitter: Resolve TODO in OpArg's operator==
...
We now require C++17, so we can use std::tie here.
2019-05-30 10:27:28 -04:00
Techjar
ff972e3673
Reformat repo to clang-format 7.0 rules
2019-05-06 18:48:04 +00:00
MerryMage
da7608ff9f
x64Emitter: Add some single-precision instructions
2018-12-26 00:23:42 +00:00
Lioncash
81e11b2406
x64Emitter: Amend parameter ordering for WriteModRM()'s prototype
...
The definition of the function uses the ordering {mod, reg, rm}, which
is correct. Match the prototype to this, so that the parameter list
isn't misleading.
2018-05-30 09:30:24 -04:00
Lioncash
1c63a48fab
Common/CodeBlock: Namespace code under the Common namespace
...
Brings more common code under the Common namespace.
2018-05-17 15:57:29 -04:00
Lioncash
82b1518342
x64Emitter: Use an enum class to represent FixupBranch branch types
...
Gets rid of the use of magic values and replaces them with strongly
typed symbolic names.
2018-05-06 22:05:03 -04:00
JosJuice
8a146d5210
x64Emitter: Don't assume that std::tie is constexpr
...
Using constexpr tie broke building with older GCC versions according to
https://forums.dolphin-emu.org/Thread-build-error-on-linux-mint-18-3
2018-04-15 08:30:01 +02:00
Lioncash
e28d063539
x64Emitter: Make the Align* functions return a non-const data pointer
...
There's no real requirement to make this const, and this should also
be decided by the calling code, considering we had places that would
simply cast away the const and carry on.
2018-04-12 19:46:55 -04:00
Lioncash
476c71efc1
x64Emitter: Make eligible register and immediate functions constexpr
...
Pointer variants aren't eligible as expressions with reinterpret cast
within them cannot be constexpr.
2018-03-26 18:21:22 -04:00
Lioncash
8b072e1383
x64Emitter: Make remaining eligible functions in OpArg constexpr
2018-03-26 18:21:21 -04:00
Lioncash
964201f2d3
x64Emitter: Use std::tie in OpArg's operator==. Provide operator!= for symmetry
2018-03-26 18:21:21 -04:00
Lioncash
7f583b66cb
x64Emitter: Clean up constructors for OpArg
...
Default initializes members and moves initial assignments into the
initializer list.
2018-03-26 18:21:17 -04:00
Lioncash
2861e8f868
x64Emitter: Clean up constructor and destructors of XEmitter
...
In-class initializes members, defaults the default constructor and
virtual destructor, and puts members in the initializer list.
2018-03-25 16:50:02 -04:00
Lioncash
975ba4abf0
x64Emitter: Make FloatOp and NormalOp enum classes
...
Reduces the amount of identifiers placed in the Gen namespace internally.
2018-03-18 18:04:54 -04:00
Lioncash
c22a6f4551
x64Emitter: Move FloatOp and NormalOp enums to the cpp file
...
These are only used internally. This also allows us to eliminate some
symbols that get dumped into the exposed Gen namespace.
By extension this also hides the Write[X] functions from OpArg's public
interface. This is only used internally by XEmitter, so they shouldn't
be usable by anything else.
2018-03-18 18:04:48 -04:00
Lioncash
75f5fcdfee
Assert: Remove unused parameter from DEBUG_ASSERT
...
This brings the macro in line with the regular ASSERT macro, which only has one
macro parameter.
2018-03-16 13:01:11 -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
MerryMage
a95010bc72
x64Emitter: Allow code alignment to arbitrary power of 2
2017-04-12 08:41:51 +01:00
degasus
f31b25fe39
Jit64: Enable branch following.
2017-01-28 02:48:56 +01:00
degasus
21f3e97435
Jit64: Avoid pointer casts if possible.
2016-12-04 13:09:16 +01:00
Lioncash
13506d3c12
x64Emitter: Generify ABI_CallFunction variants
...
Gets rid of the need to cast to void* just to use the functions.
2016-08-31 22:54:47 -04:00
Matt Mastracci
1e08ad0d97
Add MOV optimization and MOV_sum
...
Replaces incarnations of the A=B+C pattern throughout the
code so we can apply optimizations consistently.
2016-06-27 15:43:52 -06:00
Matt Mastracci
b1296a7825
Refactor fastmem/trampoline code.
...
Simplication to avoid reading back the generated instructions, allowing
us to handle all possible cases.
2016-06-27 14:58:20 -06:00
Pierre Bourdon
3570c7f03a
Reformat all the things. Have fun with merge conflicts.
2016-06-24 10:43:46 +02:00
Lioncash
19ac565e0d
Common: Move asserts to their own header
2015-09-26 18:51:27 -04:00
Lioncash
7890b38c15
x64Emitter: Remove unimplemented function prototype in OpArg
2015-09-22 19:54:46 -04:00
Lioncash
6e5f60bab7
x64Emitter: Make single argument constructor explicit
2015-09-22 19:51:14 -04:00
Lioncash
f194ee6223
x64Emitter: Simplify/compress some conditionals
2015-09-06 13:28:36 -04:00
Shawn Hoffman
bea18eedc4
[windows] remove various workarounds which were required for vs2013
2015-09-03 04:39:05 -07:00
Tillmann Karras
ee4a12ffe2
Jit64: some byte-swapping changes
2015-08-26 05:41:18 +02:00
aroulin
0a0e012fab
x64Emitter: add RCPPS and RCPSS SSE instructions
2015-08-23 16:59:27 +02:00
Lioncash
a69755d9ee
x64Emitter: Remove pointer casts from Write{8,16,32,64} functions
...
This also silences quite a few ubsan asserts from firing when the emitter is being used.
2015-08-21 18:09:48 -04:00
Lioncash
a59f00a5e4
x64Emitter: Remove unused code
2015-08-20 23:05:20 -04:00
Lioncash
b903921b14
x64Emitter: Make WriteModRM and WriteSIB private
...
These shouldn't be public.
2015-08-20 19:29:40 -04:00
Tillmann Karras
439fb26b9b
x64Emitter: add MOVSLDUP/MOVSHDUP
2015-08-06 10:39:43 +02:00
Jeffrey Pfau
c9a25f9484
Common: CallLambdaTrampoline can return a value
...
As it is currently written, CallLambdaTrampoline does not return a
value. However, some of the functions that are being wrapped may
return a value that the JIT is expected to understand. A compiler
*cough cough clang* may opt to alter %rax after the wrapped lambda
returns, e.g. popping a previous value, which can clobber the
return value. If we actually have a return value, then the compiler
must not clobber it.
2015-07-04 00:57:41 -07:00
Matthew Parlane
f32cede086
Revert "x64: build a Position-Independent Executable (PIE)"
2015-06-14 16:06:26 +12:00
Tillmann Karras
5ddd2cef6c
zfreeze: cache vertex positions
...
Suggested by degasus.
2015-06-07 12:13:00 +02:00
flacs
d3e47dfcf5
Merge pull request #2496 from Tilka/fma4
...
Jit64: add FMA4 support to fmaddXX
2015-06-06 17:31:55 +02:00
Tillmann Karras
a0597f0d62
Jit64: turn 32 bit addresses into offsets
2015-06-03 21:44:31 +02:00
Tillmann Karras
8db6588bb9
XEmitter: add FMA4 instructions
2015-06-02 19:19:52 +02:00
Ryan Houdek
210d7c4d54
Merge pull request #2486 from Tilka/x86_32
...
Jit64: drop more x86_32 left-overs
2015-05-31 13:06:19 -04:00
Tillmann Karras
eb057d49a0
x64Emitter: drop duplicate enum & unused wrappers
...
Keep the more explicit version of the two SSECompare enums.
And the unused CMP* wrappers wouldn't exactly make the code more
readable anyway.
2015-05-31 08:32:31 +02:00
Tillmann Karras
a6004f8274
Jit64: drop more x86_32 left-overs
2015-05-31 05:28:40 +02:00
Lioncash
e3a6191f02
x64Emitter: Pass some OpArg parameters by const reference
...
Considering OpArg is a struct, passing by value creates unnecessary copies.
2015-05-29 01:13:29 -04:00
Lioncash
810a04db58
x64Emitter: Remove 'Gen::' namespace prefix from some parameters
...
The emitter is already within the Gen namespace, so this isn't necessary.
2015-05-29 01:05:09 -04:00
Lioncash
84ed196c14
x64Emitter: Adjust position of reference and pointer indicators
...
Matches the coding style.
2015-05-29 01:04:45 -04:00
Ryan Houdek
7c04c76a26
Merge pull request #2421 from Tilka/jit_stuff
...
Jit64: fixes + less code
2015-05-25 23:08:24 -04:00
Tillmann Karras
30ebb2459e
Set copyright year to when a file was created
2015-05-25 13:22:31 +02:00
Tillmann Karras
cefcb0ace9
Update license headers to GPLv2+
2015-05-25 13:22:31 +02:00