[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 07/48] tcg/optimize: Split out copy_propagate
From: |
Richard Henderson |
Subject: |
[PATCH v3 07/48] tcg/optimize: Split out copy_propagate |
Date: |
Thu, 21 Oct 2021 14:04:58 -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 v3 06/48] tcg/optimize: Split out init_arguments, (continued)
- [PATCH v3 06/48] tcg/optimize: Split out init_arguments, Richard Henderson, 2021/10/21
- [PATCH v3 05/48] tcg/optimize: Move prev_mb into OptContext, Richard Henderson, 2021/10/21
- [PATCH v3 02/48] tcg/optimize: Split out OptContext, Richard Henderson, 2021/10/21
- [PATCH v3 14/48] tcg/optimize: Split out fold_mb, fold_qemu_{ld,st}, Richard Henderson, 2021/10/21
- [PATCH v3 18/48] tcg/optimize: Split out fold_brcond, Richard Henderson, 2021/10/21
- [PATCH v3 04/48] tcg/optimize: Change tcg_opt_gen_{mov, movi} interface, Richard Henderson, 2021/10/21
- [PATCH v3 07/48] tcg/optimize: Split out copy_propagate,
Richard Henderson <=
- [PATCH v3 15/48] tcg/optimize: Split out fold_const{1,2}, Richard Henderson, 2021/10/21
- [PATCH v3 13/48] tcg/optimize: Use a boolean to avoid a mass of continues, Richard Henderson, 2021/10/21
- [PATCH v3 22/48] tcg/optimize: Split out fold_movcond, Richard Henderson, 2021/10/21
- [PATCH v3 19/48] tcg/optimize: Split out fold_setcond, Richard Henderson, 2021/10/21
- [PATCH v3 23/48] tcg/optimize: Split out fold_extract2, Richard Henderson, 2021/10/21