summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Arm64Emitter.cpp
AgeCommit message (Collapse)Author
2016-03-04JitArm64: Implement mulhwxdegasus
2016-01-21Correct ampersands as wellmathieui
2016-01-21More asterisksmathieui
2016-01-21Common: asterisks go against the type namemathieui
not the variable name
2015-10-22Arm64Emitter: Get rid of a pointer castLioncash
2015-10-22Arm64Emitter: Mark trivial functions as constexprLioncash
2015-09-26Common: Move asserts to their own headerLioncash
2015-09-07[AArch64] Fix Test&Branch to relative location instructions.Ryan Houdek
Wasn't masking by the size of the offset encoding so negative values were killing the instruction Missed commiting this in my integer gatherpipe PR. Fixes crashing on AArch64.
2015-08-31Merge pull request #2929 from Sonicadvance1/aarch64_optimize_gpr_flushRyan Houdek
Aarch64 optimize gpr flush
2015-08-30[AArch64] Fix issue in emitter.Ryan Houdek
Loadstore pairs support only signed offsets, not unsigned.
2015-08-30[AArch64] Support profiling by cycle counters if they are available to EL0Ryan Houdek
2015-08-23[AArch64] Implement MOVI and ORR(imm) in the NEON emitter.Ryan Houdek
2015-08-15JitArm64: Fix jit clearingdegasus
We have to reset m_lastCacheFlushEnd on clearing.
2015-08-10Arm64Emitter: Fix encoding of '2-reg misc' variant of FCMEQLioncash
2015-08-09[AArch64] Fix FCMGE instruction encoding.Ryan Houdek
Fixes a crash when ps_sel is used (PSO 1&2 intro movies).
2015-07-12JitArm64: Far Code Cachedegasus
2015-07-02Arm64Emitter: Add a missing const specifier for an array tableLioncash
2015-06-29[AArch64] Implement BFI & UBFIZ in the emitter.Ryan Houdek
Also fixes a bug in the UBFX instruction emitter. Naughty Naughty PPSSPP, not testing emitter functions you add.
2015-06-13[AArch64] Implement {U, S}QXTN{,2}Ryan Houdek
Also split out XTN to XTN and XTN2.
2015-06-13Arm64Emitter: Remove unused variable from EncodeLoadStoreRegisterOffsetLioncash
2015-06-09[AArch64] Implement a couple instructions in the emitter.Ryan Houdek
Implements LD2R. Implements LD1R/LD2R with post-indexing support. Implements vector min/max instructions.
2015-06-07[AArch64] Add ASIMD LDR/STR with register offsetRyan Houdek
2015-06-07[AArch64] Upstream PPSSPP's emitter changes.Ryan Houdek
Requires a minor change to in the JIT to make sure everything still works.
2015-05-25Set copyright year to when a file was createdTillmann Karras
2015-05-25Update license headers to GPLv2+Tillmann Karras
2015-03-08[AArch64] Add an assert to SMOV in the emitter.Ryan Houdek
SMOV doesn't have an encoding for moving a 32bit element to a 32bit GPR. One should use UMOV if they want that.
2015-03-03[AArch64] Handle FPR island registers in a less dumb way.Ryan Houdek
2015-03-02[AArch64] Stop violating the AAPCS64 so much.Ryan Houdek
2015-03-02[AArch64] Implemented paired pushing/popping for the VFP.Ryan Houdek
A bit more efficient if we are only pushing two VFP registers. We can probably be a bit more efficient in the future by mixing paired loadstores in to the other paths as well.
2015-03-02[AArch64] Implement VFP loadstore paired in the emitter.Ryan Houdek
2015-03-02[AArch64] Optimize FPR pushing and popping.Ryan Houdek
Previously on FPR pushing and popping we would do a single STR/LDR per quad FPR we wanted to push/pop. In most of our cases when we are pushing and popping VFP registers they will be consecutive registers that will save more efficiently using the NEON loadstores that can do up to four quad registers. So this can potentially cutting instructions down to ~1/4th the amount of instructions if the registers are all consecutive. On the Cortex-A57 this is basically just an icache improvement, but on the Nvidia Denver this may be optimized to be more efficient. Either way it's a win.
2015-02-16[AArch64] Implement loadstore unscaled.Ryan Houdek
2015-02-13[AArch64] Implement a couple of emitter instructions.Ryan Houdek
These will be used with the vertex loader JIT recompiler.
2015-02-13[AArch64] Fix a bunch of emitter asserts.Ryan Houdek
Since I've added the msg handler. I found all these asserts that were backwards. So they were asserting on the correct arguments.
2015-01-25Merge pull request #1947 from Sonicadvance1/AArch64_tu_tl_mergeRyan Houdek
[AArch64] Implement TU/TL merging.
2015-01-25[AArch64] Fix AArch64 instruction encoding.Ryan Houdek
2015-01-22[AArch64] Minor fix in the UMULH/SMULH.Ryan Houdek
These two instructions ignore the register encoded in to RA.
2015-01-20[AArch64] Add some more scalar VFP ops to the emitter.Ryan Houdek
2015-01-18[AArch64] Emitter improvements.Ryan Houdek
Adds a bunch of new instructions to the emitter.
2015-01-08[AArch64] Add the float emitter.Ryan Houdek
2015-01-07[AArch64] Add a few more VFP register helpers.Ryan Houdek
Renames Is128Bit to IsQuad to line up more with the other helpers.
2015-01-07[AArch64] Add MUL/MNEG instruction aliases to the emitter.Ryan Houdek
2015-01-07[AArch64] Minor MOVI2R improvement.Ryan Houdek
Use the ZR for both input arguments in the case the immediate is the maximum immediate value. This allows it to be aliased to MVN when disassembling.
2015-01-07[AArch64] Fix 8 & 16 bit loadstore indexes.Ryan Houdek
I wasn't bit shifting correctly for 8 and 16bit loadstores.
2015-01-07[AArch64] Fix ADDS/SUBS emitter functions.Ryan Houdek
These weren't emitting the flag bit. So they were regular ADD and SUB emitters.
2014-12-20[AArch64] Improvements to the AArch64 emitter.Ryan Houdek
Fixes issues with negative offsets in loadstore instructions. Adds ADRP/ADR instructions. Optimizes MOVI2R function to take advantage of ADRP on pointers, can change a 3 instruction operation down to one. Adds GPR push/pop operations for ABI related things.
2014-12-02[AArch64] Add loadstore paired emitter instructions.Ryan Houdek
2014-11-25Arm(64)Emitter: Make some variables staticLioncash
2014-09-18Add AArch64 emitter aliases for MOV and MVN.Ryan Houdek
2014-09-12Fix AArch64 MOVI2R helper function.Ryan Houdek
In the case of a zero immediate, it wouldn't generate code at all. Also in the case of max u32/u64, use ORN to optimize it.