summaryrefslogtreecommitdiff
path: root/Source/Core/Common/x64ABI.cpp
AgeCommit message (Collapse)Author
2015-05-25Set copyright year to when a file was createdTillmann Karras
2015-05-25Update license headers to GPLv2+Tillmann Karras
2015-02-25Formatting/Whitespace CleanupStevoisiak
Various fixes to formatting and whitespace
2015-01-05x64ABI: enhance MOVTwo to take an offsetFiora
This lets us merge displacements into MOVTwo in trampolines.
2014-11-09JIT: add 64-bit write support to FIFO functionsFiora
Also fix 64-bit values passed to CallAC and otherwise correct immediate handling in FIFO writes. Fixes 007 Nightfire.
2014-11-02x64ABI: get rid of some duplicate codeTillmann Karras
2014-10-25Convert registersInUse to BitSet.comex
2014-10-10x64 emitter: Add some more missing ops (MOVDQA, MOVDQU, PSHUFHW)Henrik Rydgård
Also constify some pointers.
2014-09-10JIT: use XCHG in MOVTwoFiora
Roughly the same speed or slightly faster depending on CPU; mostly just cleaner since we don't have to pass in a temp.
2014-09-08Include CommonTypes.h instead of Common.h.Rohit Nirmal
2014-09-08Remove ABI_AlignStack/ABI_RestoreStack and the noProlog option to ↵comex
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.
2014-09-08Remove the inaccurately named ABI_PushAllCalleeSavedRegsAndAdjustStack (it ↵comex
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.
2014-09-08Improve code and clarify parameters to ABI_Push/PopRegistersAndAdjustStack.comex
- 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.)
2014-09-06Factor code from ABI_CallFunctionRR and GetWriteTrampoline into a helper, ↵comex
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.
2014-08-30Common: Clean up brace placementsLioncash
2014-08-03Remove the rest of x86_32 support from Common.Ryan Houdek
2014-03-25Compute stack usage correctly in ABI_CallFunctionPC.magumagu
(The numbers need to be consistent with the actual usage, or else the stack gets corrupted.)
2014-03-25Use unaligned stores to save XMM regs to stack.magumagu
On Win32, the stack isn't aligned, so aligned stores will cause crashes.
2014-03-11Fixes spacing for "for", "while", "switch" and "if"Matthew Parlane
Also moved && and || to ends of lines instead of start. Fixed misc vertical alignments and some { needed newlining.
2014-03-08x64ABI: Add two more CallFunction functions (for additional parameter types).Pierre Bourdon
2014-03-04Make our architecture defines less stupid.Ryan Houdek
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.
2014-02-22Make Common/ mostly IWYU clean (and fix errors in rest of the project ↵Pierre Bourdon
detected by this change).
2014-02-18Convert all includes to relative paths.Lioncash
2013-12-31Remove unnecessary Src/ foldersJasper St. Pierre