Some of these functions are really quite large. We have a number of
things that ought to be circularly dependent, but we duplicated code
to break that chain for the inlines.
This saved 25% of the code size of one of the translators I examined.
Reviewed-by: Bastian Koppelmann<address@hidden>
Signed-off-by: Richard Henderson<address@hidden>
---
Makefile.target | 2 +-
tcg/tcg-op.c | 1978 +++++++++++++++++++++++++++++++++++++++++++
tcg/tcg-op.h | 2488 ++++++++-----------------------------------------------
tcg/tcg.c | 137 ---
tcg/tcg.h | 3 -
5 files changed, 2339 insertions(+), 2269 deletions(-)
create mode 100644 tcg/tcg-op.c
+static inline TCGMemOp tcg_canonicalize_memop(TCGMemOp op, bool is64, bool st)
+{
+ switch (op & MO_SIZE) {
+ case MO_8:
+ op &= ~MO_BSWAP;
+ break;
+ case MO_16:
+ break;
+ case MO_32:
+ if (!is64) {
+ op &= ~MO_SIGN;
+ }
+ break;
+ case MO_64:
+ if (!is64) {
+ tcg_abort();
+ }
+ break;
+ }
+ if (st) {
+ op &= ~MO_SIGN;
+ }