MerryMage
68f46c8334
backend_x64: Use a reference to BlockOfCode instead of a pointer
2020-04-22 20:46:13 +01:00
Lioncash
b9ce660113
reg_alloc: std::move RegAlloc's function argument
2020-04-22 20:46:12 +01:00
Lioncash
67443efb62
General: Convert multiple namespace specifiers to nested namespace specifiers where applicable
...
Makes namespacing a little less noisy
2020-04-22 20:44:38 +01:00
MerryMage
fff8e019dc
reg_alloc: Consider bitwidth of data and registers when emitting instructions
2020-04-22 20:42:46 +01:00
MerryMage
6395f09f94
IR: Implement Conditional Select
2020-04-22 20:42:45 +01:00
MerryMage
e4615a4562
emit_x64: bug: OP m/r64, imm32 form instructions sign-extend their immediate on x64
2020-04-22 20:42:45 +01:00
MerryMage
5a1d88c5dc
A64: Implement pcrel
2020-04-22 20:42:45 +01:00
MerryMage
9d15e0a8e1
Final A32 refactor
2020-04-22 20:39:27 +01:00
MerryMage
6b122751fe
reg_alloc: Remove reliance on IR::Inst::DecrementRemainingUses
2020-04-22 20:26:12 +01:00
MerryMage
135346eb2e
reg_alloc: Move implementations out of header
2017-02-26 23:30:39 +00:00
MerryMage
51fc9fec05
reg_alloc: Reorganize
2017-02-26 23:30:37 +00:00
MerryMage
cf93ab3d31
reg_alloc: Remove old register allocator interface
2017-02-26 23:12:26 +00:00
MerryMage
08a467bf9a
emit_x64: Port to new register allocator interface
2017-02-26 23:12:25 +00:00
MerryMage
f883bad2cc
reg_alloc: New register allocation interface
2017-02-26 21:37:35 +00:00
MerryMage
13ac0c234e
reg_alloc: Differentiate between ReadLock and WriteLock
2017-02-26 21:37:34 +00:00
MerryMage
6c3df057fa
reg_alloc: Remove unused functions
2017-02-26 21:37:33 +00:00
MerryMage
640faab8a7
reg_alloc: UseHostLoc is no longer necessary
2017-02-26 21:37:30 +00:00
MerryMage
9518bbe06e
reg_alloc: Reimplement UseScratchHostLocReg
2017-02-26 21:37:29 +00:00
MerryMage
2b078152e7
reg_alloc: Reimplement UseHostLocReg
2017-02-26 21:37:26 +00:00
MerryMage
aefe550428
reg_alloc: Remove the Def concept from register allocator internals
2017-02-26 21:37:25 +00:00
MerryMage
65cccf070e
reg_alloc: Properly encapsulate HostLocInfo
2017-02-26 21:37:24 +00:00
MerryMage
1ff60bc69f
reg_alloc: Move OpArg into own header
2017-02-21 23:38:36 +00:00
Mat M
de1f831d79
microinstruction: Make use_count private ( #53 )
...
Makes the operation a part of the direct interface.
2016-11-30 21:51:06 +00:00
MerryMage
3621a925b2
reg_alloc: Register allocator related constraints belong with the rest of the register allocator
...
HostLocToReg64 contained two DEBUG_ASSERTs invloving constraints that
really belonged to the register allocator.
The register allocator prevents allocation of RSP and R15 because those
are reserved for the stack pointer and the state pointer respectively.
2016-11-30 19:42:41 +00:00
Mat M
6a2174ebfa
Add missing explicit specifiers ( #27 )
2016-09-07 12:08:48 +01:00
Mat M
7f9a0c3c38
Remove unnecessary explicit includes ( #16 )
2016-09-03 21:48:03 +01:00
Mat M
26db11cd71
reg_alloc: Use a strongly-typed enum for representing OpArg type ( #15 )
2016-09-03 18:30:03 +01:00
Mat M
1e781d911a
reg_alloc: const correctness ( #8 )
2016-09-02 17:30:01 +01:00
MerryMage
ba31f43672
reg_alloc: UseDefOpArgXmm: default value for argument desired_location should be any_xmm, not any_gpr
2016-08-26 18:50:08 +01:00
MerryMage
59a8e14d1c
reg_alloc: Correct OpArg::setBit for Reg
2016-08-26 15:23:38 +01:00
MerryMage
e32812cd00
Port x64 backend to xbyak
2016-08-25 16:18:17 +01:00
Lioncash
36a0ad5bc2
reg_alloc: const correctness for ValueLocation()
2016-08-19 19:33:57 +01:00
Lioncash
841098a0bc
ir: separate components out a little more
2016-08-17 20:46:21 +01:00
Lioncash
439619c827
reg_alloc: Make GetRegLoc return by const reference
...
Considering a HostLocInfo instance houses a std::vector, every time this
function is called can cause a potential heap allocation.
This can be somewhat unnecessary because this function is only used to query
for information we already have.
Considering this is used by several other internal query functions such as
IsRegisterOccupied, IsRegisterAllocated, and IsLastUse, this will result
in better codegen (returning an address is just 3 instructions excluding
the ret instruction for returning, meanwhile heap alloc can be 60+).
This also renames the function to have the same name as its non-const
counterpart, since overloading will just select the correct function
instead of putting that onus on the developer.
2016-08-17 10:08:08 +01:00
MerryMage
975f011fc0
BackendX64/RegAlloc: Do not allocate RSP for guest use
2016-08-08 16:01:07 +01:00
MerryMage
aba705f6b9
BackendX64: Merge Routines into BlockOfCode
2016-08-07 18:08:48 +01:00
MerryMage
92bd5f214b
BackendX64/RegAlloc: Add RegisterAddDef, UseDefOpArg, UseOpArg
2016-08-05 14:10:39 +01:00
MerryMage
1252bd653d
RegAlloc: Define constructors for HostLocInfo to make MSVC happy
2016-08-03 00:25:42 +01:00
MerryMage
4414ec5bc8
RegAlloc: Allow allocation of XMM registers
2016-08-02 13:46:12 +01:00
MerryMage
51448aa06d
More Speed
2016-07-22 23:55:00 +01:00
MerryMage
f7e3d7b8d2
Implement Thumb PUSH instruction
2016-07-18 15:11:16 +01:00
MerryMage
8449deb0bc
MSVC support
2016-07-12 13:28:09 +01:00
MerryMage
e7922e4fef
Implement thumb1_LDR_literal, thumb1_LDR_imm_t1
2016-07-11 22:43:53 +01:00
MerryMage
cbcf61a9e6
backend_x64/RegAlloc: Provide convenience function HostCall to save registers necessary as per host ABI
2016-07-11 15:28:10 +01:00
MerryMage
14388ea690
Proper implementation of Arm::Translate
2016-07-04 21:37:50 +08:00
MerryMage
d743adf518
Reorganisation, Import Skyeye, This is a mess
2016-07-04 17:22:11 +08:00
MerryMage
65df15633d
First Commit
2016-07-01 21:01:06 +08:00