[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 07/51] tcg/optimize: Split out copy_propagate
From: |
Richard Henderson |
Subject: |
[PATCH v4 07/51] tcg/optimize: Split out copy_propagate |
Date: |
Tue, 26 Oct 2021 16:08:59 -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
- [PATCH v4 00/51] tcg: optimize redundant sign extensions, Richard Henderson, 2021/10/26
- [PATCH v4 02/51] tcg/optimize: Split out OptContext, Richard Henderson, 2021/10/26
- [PATCH v4 01/51] tcg/optimize: Rename "mask" to "z_mask", Richard Henderson, 2021/10/26
- [PATCH v4 03/51] tcg/optimize: Remove do_default label, Richard Henderson, 2021/10/26
- [PATCH v4 05/51] tcg/optimize: Move prev_mb into OptContext, Richard Henderson, 2021/10/26
- [PATCH v4 04/51] tcg/optimize: Change tcg_opt_gen_{mov, movi} interface, Richard Henderson, 2021/10/26
- [PATCH v4 09/51] tcg/optimize: Drop nb_oargs, nb_iargs locals, Richard Henderson, 2021/10/26
- [PATCH v4 13/51] tcg/optimize: Use a boolean to avoid a mass of continues, Richard Henderson, 2021/10/26
- [PATCH v4 12/51] tcg/optimize: Split out finish_folding, Richard Henderson, 2021/10/26
- [PATCH v4 06/51] tcg/optimize: Split out init_arguments, Richard Henderson, 2021/10/26
- [PATCH v4 07/51] tcg/optimize: Split out copy_propagate,
Richard Henderson <=
- [PATCH v4 08/51] tcg/optimize: Split out fold_call, Richard Henderson, 2021/10/26
- [PATCH v4 10/51] tcg/optimize: Change fail return for do_constant_folding_cond*, Richard Henderson, 2021/10/26
- [PATCH v4 11/51] tcg/optimize: Return true from tcg_opt_gen_{mov, movi}, Richard Henderson, 2021/10/26
- [PATCH v4 14/51] tcg/optimize: Split out fold_mb, fold_qemu_{ld,st}, Richard Henderson, 2021/10/26
- [PATCH v4 18/51] tcg/optimize: Split out fold_brcond, Richard Henderson, 2021/10/26
- [PATCH v4 19/51] tcg/optimize: Split out fold_setcond, Richard Henderson, 2021/10/26
- [PATCH v4 20/51] tcg/optimize: Split out fold_mulu2_i32, Richard Henderson, 2021/10/26
- [PATCH v4 17/51] tcg/optimize: Split out fold_brcond2, Richard Henderson, 2021/10/26
- [PATCH v4 21/51] tcg/optimize: Split out fold_addsub2_i32, Richard Henderson, 2021/10/26
- [PATCH v4 22/51] tcg/optimize: Split out fold_movcond, Richard Henderson, 2021/10/26