| Age | Commit message (Collapse) | Author |
|
|
|
|
|
Various fixes to formatting and whitespace
|
|
This lets us merge displacements into MOVTwo in trampolines.
|
|
Also fix 64-bit values passed to CallAC and otherwise correct immediate
handling in FIFO writes.
Fixes 007 Nightfire.
|
|
|
|
|
|
Also constify some pointers.
|
|
Roughly the same speed or slightly faster depending on CPU; mostly just cleaner
since we don't have to pass in a temp.
|
|
|
|
ABI_CallFunctionRR.
The latter being true was the only case where the former would do
anything, and it was never true. They became obsolete with x86's
removal.
|
|
didn't preserve FPRs!) and replace with ABI_PushRegistersAndAdjustStack.
To avoid FPRs being pushed unnecessarily, I checked the uses: DSPEmitter
doesn't use FPRs, and VertexLoader doesn't use anything but RAX, so I
specified the register list accordingly. The regular JIT, however, does
use FPRs, and as far as I can tell, it was incorrect not to save them in
the outer routine. Since the dispatcher loop is only exited when
pausing or stopping, this should have no noticeable performance impact.
|
|
- Factor common work into a helper function.
- Replace confusingly named "noProlog" with "rsp_alignment". Now that
x86 is not supported, we can just specify it explicitly as 8 for
clarity.
- Add the option to include more frame size, which I'll need later.
- Revert a change by magumagu in March which replaced MOVAPD with MOVUPD
on account of 32-bit Windows, since it's no longer supported. True,
apparently recent processors don't execute the former any faster if the
pointer is, in fact, aligned, but there's no point using MOVUPD for
something that's guaranteed to be aligned...
(I discovered that GenFrsqrte and GenFres were incorrectly passing false
to noProlog - they were, in fact, functions without prologs, the
original meaning of the parameter - which caused the previous change to
break. This is now fixed.)
|
|
and fix a special case.
The special case is where the registers are actually to be swapped (i.e.
func(ABI_PARAM2, ABI_PARAM1); this was previously impossible but would
be ugly not to handle anyway.
|
|
|
|
|
|
(The numbers need to be consistent with the actual usage, or else the stack gets corrupted.)
|
|
On Win32, the stack isn't aligned, so aligned stores will cause crashes.
|
|
Also moved && and || to ends of lines instead of start.
Fixed misc vertical alignments and some { needed newlining.
|
|
|
|
Our defines were never clear between what meant 64bit or x86_64
This makes a clear cut between bitness and architecture.
This commit also has the side effect of bringing up aarch64 compiling support.
|
|
detected by this change).
|
|
|
|
|