Merry
2eaf922f8b
Merge pull request #423 from lioncash/catch
...
externals: Update catch to v2.5.0
2020-04-22 20:57:38 +01:00
Merry
07759af694
Merge pull request #422 from lioncash/truncate
...
a32_unicorn: Silence a truncation warning within UnmappedMemoryHook()
2020-04-22 20:57:38 +01:00
Lioncash
630a54638c
externals: Update catch to v2.5.0
...
Keeps the unit testing library up to date.
2020-04-22 20:57:38 +01:00
Merry
00277739f4
Merge pull request #421 from lioncash/comma
...
tests/.../vfp_helper: Amend use of the comma operator
2020-04-22 20:57:38 +01:00
Lioncash
eadc07e269
a32_unicorn: Silence a truncation warning within UnmappedMemoryHook()
...
MemoryRead8() takes a u32, but we were passing the result of a
u32 + size_t operation, which is 64-bit on 64-bit platforms. This
results in a truncation warning
2020-04-22 20:57:38 +01:00
Mat M
a1663d08ed
Merge pull request #424 from meme/readme
...
Correct README (`jit` to `cpu`)
2020-04-22 20:57:38 +01:00
Lioncash
586dffb356
tests/.../vfp_helper: Amend use of the comma operator
...
Makes the lines of code slightly nicer to read
2020-04-22 20:57:38 +01:00
meme
81fb688eef
Correct README (jit
to cpu
)
2020-04-22 20:57:38 +01:00
Merry
dfdca2082f
Merge pull request #419 from lioncash/fold-op
...
constant_propagation_pass: Fold byte reversal opcodes where applicable
2020-04-22 20:57:37 +01:00
Merry
2c53f354ab
Merge pull request #418 from lioncash/fold-op
...
constant_propagation_pass: Handle folding for Least/MostSignificant{Bit, Byte, Half, Word} opcodes
2020-04-22 20:57:37 +01:00
Lioncash
575ae852a9
constant_propagation_pass: Fold byte reversal opcodes where applicable
...
These are reasonably trivial to fold away when applicable. We just
perform the swap and replace the instruction with the constant value.
2020-04-22 20:57:37 +01:00
Merry
ad14a33672
Merge pull request #417 from lioncash/swap
...
common: Move byte swapping functions to bit_utils.h
2020-04-22 20:57:37 +01:00
Lioncash
d302d9bd0c
constant_propagation_pass: Handle folding for Least/MostSignificant{Bit, Byte, Half, Word} opcodes
...
These are quite trivial to fold.
2020-04-22 20:57:37 +01:00
Merry
a3d640b0c1
Merge pull request #416 from lioncash/space
...
dynarmic_tests: Remove inconsistent spacing
2020-04-22 20:57:37 +01:00
Lioncash
7139942976
common: Move byte swapping functions to bit_utils.h
...
These are quite general functions, so they can just be moved into common
instead of recreating a namespace here.
2020-04-22 20:57:37 +01:00
MerryMage
7c8fcaef26
emit_x64_vector_floating_point: AVX && DN implementation of EmitFPVectorMulX
2020-04-22 20:57:37 +01:00
Merry
c06fd20b5a
Merge pull request #415 from lioncash/alloc
...
a64_emit_x64: Convert std::vector instances in GenFastmemFallbacks() to std::array
2020-04-22 20:57:37 +01:00
Lioncash
2ce7e579d2
dynarmic_tests: Remove inconsistent spacing
...
Makes the changed code more consistent with the surrounding code.
2020-04-22 20:57:37 +01:00
MerryMage
e3898e628e
A64: Implement FMULX (by element), single and double precision variants
2020-04-22 20:57:37 +01:00
Merry
e1a9b17366
Merge pull request #414 from lioncash/retval
...
fuzz_util: Simplify result return in InstructionGenerator's Generate() function
2020-04-22 20:57:37 +01:00
Lioncash
93351c7efb
a64_emit_x64: Make constness of loop elements explicit within GenFastmemFallbacks()
2020-04-22 20:57:37 +01:00
MerryMage
c106d8cedf
A64: Implement FMULX, vector single-precision and double-precision variant
2020-04-22 20:57:37 +01:00
Lioncash
2e62cfc89d
fuzz_util: Simplify result return in InstructionGenerator's Generate() function
...
This can just be a simple direct return without a separated declaration
and assignment.
2020-04-22 20:57:37 +01:00
Lioncash
7752ffc50c
a64_emit_x64: Convert std::vector instances in GenFastmemFallbacks() to std::array
...
Given these are quite small, we can avoid the need to heap allocate
here.
2020-04-22 20:57:37 +01:00
MerryMage
fa8925c4df
IR: Implement FPVectorMulX
2020-04-22 20:57:37 +01:00
Michał Janiszewski
bbd8abaa25
Provide justification for always-true condition ( #412 )
2020-04-22 20:57:37 +01:00
Michał Janiszewski
3359572e5d
Enable ninja and ccache on travis ( #413 )
...
* Use ninja, the fast build system
Make is known to be rather slow, but it's possible to generate other
build system files with CMake, so use a faster one.
* Use ccache on Travis
* Dummy commit to test ccache
2020-04-22 20:57:37 +01:00
Merry
ff7947a769
Merge pull request #411 from janisozaur/include-guards
...
Add missing include guards
2020-04-22 20:57:37 +01:00
Merry
8d47e7a4bc
Merge pull request #409 from VPeruS/switch-optional
...
Switch boost::optional to std::optional
2020-04-22 20:57:37 +01:00
Michał Janiszewski
7d0e918b51
Add missing include guards
2020-04-22 20:57:37 +01:00
Merry
ffd4fe282f
Merge pull request #410 from lioncash/catch
...
externals: Update catch to v2.4.1
2020-04-22 20:57:37 +01:00
V.Kalyuzhny
764a93bf5a
Switch boost::optional to std::optional
2020-04-22 20:57:37 +01:00
Merry
85bc96a61c
Merge pull request #408 from lioncash/shift
...
constant_propagation_pass: Add 64-bit variants of shifts to the pass
2020-04-22 20:57:37 +01:00
Lioncash
058ec4eea2
externals: Update catch to v2.4.1
...
Keeps the unit testing library up to date.
2020-04-22 20:57:37 +01:00
Merry
8bfaa9aac0
Merge pull request #407 from lioncash/div
...
constant_propagation_pass: Fold division operations where applicable
2020-04-22 20:57:37 +01:00
Lioncash
07c197e8d0
constant_propagation_pass: Add 64-bit variants of shifts to the pass
...
These optimizations can also apply to the 64-bit variants of the shift
opcodes; we just need to check if the instruction has an associated
pseudo-op before performing the 32-bit variant's specifics.
While we're at it, we can also relocate the code to its own function
like the rest of the cases to keep organization consistent.
2020-04-22 20:57:37 +01:00
Merry
d83eae2004
Merge pull request #406 from lioncash/mul
...
constant_propagation_pass: Fold Mul32 and Mul64 cases where applicable
2020-04-22 20:57:37 +01:00
Lioncash
8248999c5d
constant_propagation_pass: Fold division operations where applicable
...
We can fold division operations if:
1. The divisor is zero, then we can replace the result with zero (as this is how
ARM platforms expect it).
2. Both values are known, in which case we can just do the operation and
store the result
3. The divisor is 1, in which case just return the other operand.
2020-04-22 20:57:37 +01:00
Merry
73d9393300
Merge pull request #405 from lioncash/inst
...
a64: Add ARMv8.4+ instructions encodings to the encoding table
2020-04-22 20:57:37 +01:00
Lioncash
7ad6981437
constant_propagation_pass: deduplicate common 32/64 bit checking for results in folding functions
...
It's common for an folding operation to apply to both the 32-bit and
64-bit variant of the same opcode, which leads to checking which kind of
result we need to store the value as. This moves it to its own function,
so that we don't need to duplicate it in various functions.
2020-04-22 20:57:37 +01:00
Merry
546cfbc0ee
Merge pull request #404 from lioncash/fold
...
constant_propagation_pass: Extend folding of sign-extension/zero-extension opcodes
2020-04-22 20:57:37 +01:00
Lioncash
f1a66c37ba
a64: Add ARMv8.4+ instructions encodings to the encoding table
...
Keeps the table up to date with the ARM specification.
2020-04-22 20:57:37 +01:00
Lioncash
72daf37208
constant_propagation_pass: Fold Mul32 and Mul64 cases where applicable
...
Multiplication operations can currently be folded if:
1. Both arguments are known constant values
2. Either operand is zero (in which case the result is also zero)
3. Either operand is one (in which case the result is the non-one
operand).
2020-04-22 20:57:37 +01:00
Merry
4c6a9535ca
Merge pull request #403 from lioncash/zero
...
Add several convenience functions to the Value class
2020-04-22 20:57:37 +01:00
Lioncash
43b2eb4688
constant_propagation_pass: Fold SignExtend{Type}ToLong opcodes if possible
2020-04-22 20:57:37 +01:00
Lioncash
0583d401e3
ir/value: Add IsSignedImmediate() and IsUnsignedImmediate() functions to Value's interface
...
This allows testing against arbitrary values while also simultaneously
eliminating the need to check IsImmediate() all the time in expressions.
2020-04-22 20:57:37 +01:00
Lioncash
2da2cf9058
constant_propagation_pass: Fold SignExtend{Type}ToWord opcodes if possible
2020-04-22 20:57:37 +01:00
Lioncash
e3258e8525
ir/value: Add a GetImmediateAsS64() function
...
Provides a signed analogue to GetImmediateAsU64() for consistency with
both integral classes when it comes to signed/unsigned..
2020-04-22 20:57:37 +01:00
Lioncash
c42f6ea184
constant_propagation_pass: Fold ZeroExtend{Type}ToLong opcodes if possible
...
These are equivalent to the ZeroExtendXToWord variants, so we can
trivially do this as well.
2020-04-22 20:57:37 +01:00
Lioncash
4a3c064b15
ir/value: Add an IsZero() member function to Value's interface
...
By far, one of the most common things to check for is whether or not a
value is zero, as it typically allows folding away unnecesary
operations (other close contenders that can help with eliding operations are 1 and -1).
So instead of requiring a check for an immediate and then actually
retrieving the integral value and checking it, we can wrap it within a
function to make it more convenient.
2020-04-22 20:57:37 +01:00