[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/56] tcg/optimize: Split out copy_propagate
From: |
Richard Henderson |
Subject: |
[PULL 12/56] tcg/optimize: Split out copy_propagate |
Date: |
Wed, 27 Oct 2021 19:40:47 -0700 |
Continue splitting tcg_optimize.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Luis Pires <luis.pires@eldorado.org.br>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/optimize.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 019c5aaf81..fad6f5de1f 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -611,6 +611,19 @@ static void init_arguments(OptContext *ctx, TCGOp *op, int
nb_args)
}
}
+static void copy_propagate(OptContext *ctx, TCGOp *op,
+ int nb_oargs, int nb_iargs)
+{
+ TCGContext *s = ctx->tcg;
+
+ for (int i = nb_oargs; i < nb_oargs + nb_iargs; i++) {
+ TCGTemp *ts = arg_temp(op->args[i]);
+ if (ts && ts_is_copy(ts)) {
+ op->args[i] = temp_arg(find_better_copy(s, ts));
+ }
+ }
+}
+
/* Propagate constants and copies, fold constant expressions. */
void tcg_optimize(TCGContext *s)
{
@@ -646,14 +659,7 @@ void tcg_optimize(TCGContext *s)
nb_iargs = def->nb_iargs;
}
init_arguments(&ctx, op, nb_oargs + nb_iargs);
-
- /* Do copy propagation */
- for (i = nb_oargs; i < nb_oargs + nb_iargs; i++) {
- TCGTemp *ts = arg_temp(op->args[i]);
- if (ts && ts_is_copy(ts)) {
- op->args[i] = temp_arg(find_better_copy(s, ts));
- }
- }
+ copy_propagate(&ctx, op, nb_oargs, nb_iargs);
/* For commutative operations make constant second argument */
switch (opc) {
--
2.25.1
- [PULL 00/56] tcg patch queue, Richard Henderson, 2021/10/27
- [PULL 02/56] host-utils: move checks out of divu128/divs128, Richard Henderson, 2021/10/27
- [PULL 03/56] host-utils: move udiv_qrnnd() to host-utils, Richard Henderson, 2021/10/27
- [PULL 01/56] qemu/int128: Add int128_{not,xor}, Richard Henderson, 2021/10/27
- [PULL 04/56] host-utils: add 128-bit quotient support to divu128/divs128, Richard Henderson, 2021/10/27
- [PULL 05/56] host-utils: add unit tests for divu128/divs128, Richard Henderson, 2021/10/27
- [PULL 09/56] tcg/optimize: Change tcg_opt_gen_{mov,movi} interface, Richard Henderson, 2021/10/27
- [PULL 06/56] tcg/optimize: Rename "mask" to "z_mask", Richard Henderson, 2021/10/27
- [PULL 07/56] tcg/optimize: Split out OptContext, Richard Henderson, 2021/10/27
- [PULL 10/56] tcg/optimize: Move prev_mb into OptContext, Richard Henderson, 2021/10/27
- [PULL 12/56] tcg/optimize: Split out copy_propagate,
Richard Henderson <=
- [PULL 13/56] tcg/optimize: Split out fold_call, Richard Henderson, 2021/10/27
- [PULL 18/56] tcg/optimize: Use a boolean to avoid a mass of continues, Richard Henderson, 2021/10/27
- [PULL 15/56] tcg/optimize: Change fail return for do_constant_folding_cond*, Richard Henderson, 2021/10/27
- [PULL 27/56] tcg/optimize: Split out fold_movcond, Richard Henderson, 2021/10/27
- [PULL 11/56] tcg/optimize: Split out init_arguments, Richard Henderson, 2021/10/27
- [PULL 14/56] tcg/optimize: Drop nb_oargs, nb_iargs locals, Richard Henderson, 2021/10/27
- [PULL 16/56] tcg/optimize: Return true from tcg_opt_gen_{mov,movi}, Richard Henderson, 2021/10/27
- [PULL 17/56] tcg/optimize: Split out finish_folding, Richard Henderson, 2021/10/27
- [PULL 25/56] tcg/optimize: Split out fold_mulu2_i32, Richard Henderson, 2021/10/27
- [PULL 19/56] tcg/optimize: Split out fold_mb, fold_qemu_{ld,st}, Richard Henderson, 2021/10/27