[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 07/18] tcg/optimize: Fold movcond with true and false values i
From: |
Richard Henderson |
Subject: |
[PATCH v2 07/18] tcg/optimize: Fold movcond with true and false values identical |
Date: |
Wed, 11 Sep 2024 09:50:36 -0700 |
Fold "x = cond ? y : y" to "x = y".
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/optimize.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index ba16ec27e2..cf311790e0 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1851,6 +1851,11 @@ static bool fold_movcond(OptContext *ctx, TCGOp *op)
{
int i;
+ /* If true and false values are the same, eliminate the cmp. */
+ if (args_are_copies(op->args[3], op->args[4])) {
+ return tcg_opt_gen_mov(ctx, op, op->args[0], op->args[3]);
+ }
+
/*
* Canonicalize the "false" input reg to match the destination reg so
* that the tcg backend can implement a "move if true" operation.
--
2.43.0
- [PATCH v2 00/18] tcg: Improve support for cmpsel_vec, Richard Henderson, 2024/09/11
- [PATCH v2 01/18] tcg: Export vec_gen_6, Richard Henderson, 2024/09/11
- [PATCH v2 02/18] tcg/i386: Split out tcg_out_vex_modrm_type, Richard Henderson, 2024/09/11
- [PATCH v2 03/18] tcg/i386: Do not expand cmp_vec early, Richard Henderson, 2024/09/11
- [PATCH v2 04/18] tcg/i386: Do not expand cmpsel_vec early, Richard Henderson, 2024/09/11
- [PATCH v2 05/18] tcg/ppc: Do not expand cmp_vec early, Richard Henderson, 2024/09/11
- [PATCH v2 06/18] tcg/s390x: Do not expand cmp_vec early, Richard Henderson, 2024/09/11
- [PATCH v2 08/18] tcg/optimize: Optimize cmp_vec and cmpsel_vec, Richard Henderson, 2024/09/11
- [PATCH v2 07/18] tcg/optimize: Fold movcond with true and false values identical,
Richard Henderson <=
- [PATCH v2 10/18] tcg/i386: Optimize cmpsel with constant 0 operand 3., Richard Henderson, 2024/09/11
- [PATCH v2 09/18] tcg/optimize: Optimize bitsel_vec, Richard Henderson, 2024/09/11
- [PATCH v2 11/18] tcg/i386: Implement cmp_vec with avx512 insns, Richard Henderson, 2024/09/11
- [PATCH v2 12/18] tcg/i386: Add predicate parameters to tcg_out_evex_opc, Richard Henderson, 2024/09/11
- [PATCH v2 14/18] tcg/i386: Implement vector TST{EQ,NE} for avx512, Richard Henderson, 2024/09/11
- [PATCH v2 13/18] tcg/i386: Implement cmpsel_vec with avx512 insns, Richard Henderson, 2024/09/11
- [PATCH v2 16/18] tcg/ppc: Optimize cmpsel with constant 0/-1 arguments, Richard Henderson, 2024/09/11
- [PATCH v2 17/18] tcg/s390x: Implement cmpsel_vec, Richard Henderson, 2024/09/11
- [PATCH v2 18/18] tcg/s390x: Optimize cmpsel with constant 0/-1 arguments, Richard Henderson, 2024/09/11