[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/16] Cleanups within TCG middle-end
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 00/16] Cleanups within TCG middle-end |
Date: |
Tue, 20 Jun 2017 19:48:15 -0700 |
There are two conceptually unrelated cleanups in here, though
the second touches many of the same lines as the first, so
separating the two would be ugly.
The first is to split gen_opparam_buf and move the pieces into
TCGOp. This has two effects: the operands for an op is in the
same cacheline as the op, and we get to drop the pointer into
gen_opparam_buf, freeing up a register and/or function argument.
The second is to change what value is stored in TCGArg for each
TCG temporary. Rather than store the index into tcg_ctx.temps,
store the pointer to the temp itself. This allows us to drop
some arithmetic on many uses of a temp within the backend.
Making that second change is tricky, as we don't want to miss any
of the places that ought to be changed. To do that I introduce a
number of helpers.
As a final step I changed the type of TCGOp.args to a structure,
and annotated the places that access constant arguments. I found
that final patch to be really ugly, so I dropped it. But I'm
fairly confident that I've updated all of the non-constant args.
The effect of this is nearly noise, but does reduce code size,
text data bss dec hex filename
6648688 2106408 4486112 13241208 ca0b78 qemu-system-alpha (before)
6627656 2106408 4502496 13236560 c9f950 qemu-system-alpha (after)
or about 21k.
r~
Richard Henderson (16):
tcg: Merge opcode arguments into TCGOp
tcg: Propagate args to op->args in optimizer
tcg: Propagate args to op->args in tcg.c
tcg: Propagate TCGOp down to allocators
tcg: Introduce arg_temp
tcg: Add temp_global bit to TCGTemp
tcg: Return NULL temp for TCG_CALL_DUMMY_ARG
tcg: Introduce temp_arg
tcg: Use per-temp state data in liveness
tcg: Avoid loops against variable bounds
tcg: Change temp_allocate_frame arg to TCGTemp
tcg: Remove unused TCG_CALL_DUMMY_TCGV
tcg: Export temp_idx
tcg: Use per-temp state data in optimize
tcg: Define separate structures for TCGv_*
tcg: Store pointers to temporaries directly in TCGArg
tcg/optimize.c | 647 ++++++++++++++++++++++++++++++++-------------------------
tcg/tcg-op.c | 99 ++++-----
tcg/tcg.c | 610 ++++++++++++++++++++++++-----------------------------
tcg/tcg.h | 287 ++++++++++++++-----------
4 files changed, 841 insertions(+), 802 deletions(-)
--
2.9.4
- [Qemu-devel] [PATCH 00/16] Cleanups within TCG middle-end,
Richard Henderson <=