MerryMage
5f8eb7c51c
A32/location_descriptor: Add CPSR.IT to A32::LocationDescriptor
2020-04-22 21:04:22 +01:00
MerryMage
13f65f55eb
PSR: Use Common::ModifyBit{,s}
2020-04-22 21:04:22 +01:00
MerryMage
74633301c1
A32: Add ITState
2020-04-22 21:04:22 +01:00
MerryMage
6e2cd35e4f
a32_jitstate: Optimize runtime location descriptor calculation
...
Calculation is now one unaligned 64-bit load.
2020-04-22 21:04:22 +01:00
MerryMage
0de3993373
a32_jitstate: Remove fpsr_idc
...
We do not really have accurate FPSR state in any case.
2020-04-22 21:04:22 +01:00
MerryMage
6f49c0ef8e
{a32,a64}_jitstate: Rename CPSR_* to cpsr_*
2020-04-22 21:04:22 +01:00
MerryMage
8cd7837839
a32_jitstate: Remove old_FPSCR
2020-04-22 21:04:22 +01:00
MerryMage
b3bb544bca
a32_jitstate: Rename FPSCR_nzcv to fpsr_nzcv
2020-04-22 21:04:22 +01:00
MerryMage
76f986979d
a32_jitstate: Rename FPSCR_mode to fpcr_mode
2020-04-22 21:04:22 +01:00
MerryMage
49fca15f90
{a32,a64}_jitstate: Rename FPSCR_IDC to fpsr_idc
2020-04-22 21:04:21 +01:00
MerryMage
622c02f537
{a32,a64}_jitstate: Remove FPSCR_UFC
2020-04-22 21:04:21 +01:00
MerryMage
366d63f4b4
a32_jitstate: Enable SSE FTZ and DAZ
2020-04-22 21:04:21 +01:00
MerryMage
f178562ee7
a32_jitstate: Remove exception trap enables from FPSCR_MODE_MASK
...
We don't currently use this for anything (we do not currently trap
floating point exceptions).
This frees these bits up for other purposes.
2020-04-22 21:04:21 +01:00
Merry
fd6222f0a1
Merge pull request #500 from lioncash/cbz
...
A32: Implement Thumb-1's CBZ/CBNZ instructions
2020-04-22 21:04:21 +01:00
Merry
bab4e29075
Merge pull request #498 from lioncash/ahp
...
A32/location_descriptor: Add AHP bit to the FPSCR mask
2020-04-22 21:04:21 +01:00
Lioncash
2d695e3c7c
common/fp/info: Make formatting of FPInfo struct member functions consistent
...
Orgranizes the functions to all be consistent with the half-precision
specialization.
2020-04-22 21:04:21 +01:00
Lioncash
05b330906e
common/fp/util: Make ProcessNaN utility functions constexpr
...
Nothing in particular prevents these from being constexpr. Do so to make
them consistent with the bulk of other functions in this header that are
constexpr.
2020-04-22 21:04:21 +01:00
Lioncash
6b9a40bdc4
common/fp/op/FPNeg: Make FPNeg constexpr
...
Negation in (standard IEEE) floating-point is simply flipping the sign-bit, so this
operation will never be more complex than what is presented here, making
constexpr a reasonable allowance.
2020-04-22 21:04:21 +01:00
Lioncash
ef95e0fa7d
CMakeLists: Add FPNeg.h to the library target sources
...
Ensures that the header shows up in IDE generated projects.
2020-04-22 21:04:21 +01:00
Lioncash
87083af733
general: Remove trailing spaces
...
General code-related cleanup. Gets rid of trailing spaces in the
codebase.
2020-04-22 21:04:21 +01:00
Lioncash
fdbafbc1ae
x64/reg_alloc: Remove reference qualifier to variable in GetArgumentInfo()
...
The result of GetArg() is returned by value, so this is essentially
still a copy. While the previous code *is* valid, this communicates what
is actually happening a little more explicitly.
2020-04-22 21:04:20 +01:00
Lioncash
1f6878fb46
ir_opt/verification_pass: Add include for std::puts
...
Ensures that the header dependency is always satisfied directly, and not
through other project headers. While we're at it, we can qualify the
call with the std:: namespace.
2020-04-22 21:03:38 +01:00
Lioncash
fc9c59d056
ir_opt/verification_pass: Eliminate redundant GetArg()
...
Given the same argument is used inside the condition's body if it's
true, we can just utilize the local to cut out a GetArg() operation.
Avoids redundant internal assertion checking.
2020-04-22 21:03:35 +01:00
Lioncash
03e6899fd7
A32: Implement Thumb-1's CBZ/CBNZ instructions
...
Introduced in ARMv6T2, this allows for short forward branches.
2020-04-22 21:02:47 +01:00
Lioncash
d02a4e6fc9
A32/location_descriptor: Add AHP bit to the FPSCR mask
...
Ensures the alternate half-precision state is preserved within the
location descriptors, which will be necessary when implementing the
half-precision extensions for VFP and NEON.
2020-04-22 21:02:47 +01:00
Merry
f4990a5f6b
Merge pull request #499 from lioncash/movw
...
A32: Implement ARM-mode MOVW
2020-04-22 21:02:47 +01:00
Lioncash
bd755ae494
frontend/ir/ir_emitter: Add A32 equivalent to A64's SetCheckBit
...
This will be used in a subsequent change to implement ARMv6T2's CBZ/CBNZ
Thumb-1 instructions.
2020-04-22 21:02:47 +01:00
Lioncash
c6e1fd1416
a64_emit_x64: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2020-04-22 21:02:47 +01:00
Merry
f6f0b6da65
Merge pull request #497 from lioncash/boost
...
A32/coprocessor: Remove boost from public interface
2020-04-22 21:02:47 +01:00
Lioncash
106c8c2473
A32: Implement ARM-mode MOVW
...
Introduced to the ISA in ARMv6T2
2020-04-22 21:02:47 +01:00
Lioncash
fb437080be
a32_emit_x64: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2020-04-22 21:02:47 +01:00
Lioncash
9935f3aa28
A32: Implement Thumb-1 variant of SEVL
...
While we're at it, also add the Thumb-2 encoding to the encoding table
to make sure it isn't forgotten about in the future.
2020-04-22 21:02:47 +01:00
Lioncash
5f9ba970b9
emit_x64: Use const on locals where applicable
2020-04-22 21:02:47 +01:00
Lioncash
92daae9513
A32/coprocessor: Remove boost from public interface
...
Removes a boost header from the public includes in favor of using the
standard-provided std::variant.
The use of boost in public interfaces is often a dealbreaker for some
people. Given we use std::optional in the header already, we can
transition over to std::variant from boost::variant.
With this removal, this makes all of our dependencies internal to the
library itself.
2020-04-22 21:02:47 +01:00
Lioncash
9a097e307f
A32: Implement the ARM-mode variant of SEVL
2020-04-22 21:02:47 +01:00
Lioncash
a40b921cb5
emit_x64: Remove unnecessary typename in GetBasicBlock()
...
This can be deduced from the name alone.
2020-04-22 21:02:47 +01:00
Lioncash
e89ca42048
A32: Implement Thumb-1 variant of YIELD
2020-04-22 21:02:47 +01:00
Lioncash
675f67e41d
emit_x64_vector: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2020-04-22 21:02:47 +01:00
Lioncash
ebab7ede55
A32: Implement Thumb-1 variant of WFI
2020-04-22 21:02:47 +01:00
Lioncash
cccbc7fd0e
emit_x64_saturation: Use const on locals where applicable
...
Normalizes the use of const in the source file.
2020-04-22 21:02:47 +01:00
Lioncash
b4110af22a
A32: Implement Thumb-1 variant of WFE
2020-04-22 21:02:47 +01:00
Lioncash
7316fa47b3
emit_x64_packed: Use const on locals where applicable
...
Normalizes the use of const across the source file.
2020-04-22 21:02:47 +01:00
Lioncash
3a9c2f81d0
block_of_code: Use variable template variants of type traits
...
Now all type traits are using the variable template variants where
applicable.
2020-04-22 21:02:47 +01:00
Lioncash
57675fe592
A32: Implement Thumb-1 variant of SEV
2020-04-22 21:02:47 +01:00
Lioncash
9b783a5527
emit_x64_data_processing: Use const on locals where applicable
...
Normalizes the use of const across the source file.
2020-04-22 21:02:47 +01:00
Lioncash
07699b47ba
A32/translate_thumb: Add helper function for raising exceptions
...
Similar to the variant within the ARM-mode translator visitor. This will
be used in subsequent changes to implement the hint instructions
introduced in ARMv7.
2020-04-22 21:02:47 +01:00
Lioncash
f74762ae4e
frontend/decoder/decoder_detail: Replace std::is_same, with std::is_same_v
...
Same thing, same readability, less characters.
2020-04-22 21:02:47 +01:00
Lioncash
64879396f6
A32: Implement Thumb-1 variant of NOP
2020-04-22 21:02:47 +01:00
Merry
6a67da1225
Merge pull request #493 from lioncash/ir
...
frontend/ir/ir_emitter: Remove unnecessary logical shift overloads
2020-04-22 21:02:47 +01:00
Merry
81b908b077
Merge pull request #495 from lioncash/bkpt
...
A32: Implement Thumb-16's variant of BKPT
2020-04-22 21:02:47 +01:00