[AArch64] Improve floating point single instructions.

Instead of having an "INS" instruction after every single instruction to duplicate the bottom 64bits in to the top 64bits of the register,
create a new FPR register cache type to track when a register's lower 64bits is supposed to be duplicated in to the high 64bits.
Not necessarily actually having the lower bits duplicated in the host side register. This removes inefficient INS instructions from sequential single
float instructions.
In particular a very heavy single heavy block in Animal Crossing went from 712 instructions down to 520 instructions(~37% less instructions!)
This commit is contained in:
Ryan Houdek committed 2015-08-31 11:09:17 -05:00
1 parent 5110574c1f
commit bcde1aa8ff
8 files changed
+300 -224

No files matched your search

@@ -18,8 +18,7 @@ struct BackPatchInfo
FLAG_SIZE_F64 = (1 << 6),
FLAG_REVERSE = (1 << 7),
FLAG_EXTEND = (1 << 8),
FLAG_ONLY_LOWER = (1 << 9),
FLAG_SIZE_F32I = (1 << 10),
FLAG_SIZE_F32I = (1 << 9),
};
static u32 GetFlagSize(u32 flags)