[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 51/51] tcg/optimize: Move fold_cmp_vec, fold_cmpsel_vec into a
From: |
Richard Henderson |
Subject: |
[PATCH v2 51/51] tcg/optimize: Move fold_cmp_vec, fold_cmpsel_vec into alphabetic sort |
Date: |
Thu, 19 Dec 2024 20:11:03 -0800 |
The big comment just above says functions should be sorted.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/optimize.c | 60 +++++++++++++++++++++++++-------------------------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/tcg/optimize.c b/tcg/optimize.c
index 4ec70130a9..c708e50bc2 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1635,6 +1635,36 @@ static bool fold_call(OptContext *ctx, TCGOp *op)
return true;
}
+static bool fold_cmp_vec(OptContext *ctx, TCGOp *op)
+{
+ /* Canonicalize the comparison to put immediate second. */
+ if (swap_commutative(NO_DEST, &op->args[1], &op->args[2])) {
+ op->args[3] = tcg_swap_cond(op->args[3]);
+ }
+ return finish_folding(ctx, op);
+}
+
+static bool fold_cmpsel_vec(OptContext *ctx, TCGOp *op)
+{
+ /* 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 comparison to put immediate second. */
+ if (swap_commutative(NO_DEST, &op->args[1], &op->args[2])) {
+ op->args[5] = tcg_swap_cond(op->args[5]);
+ }
+ /*
+ * Canonicalize the "false" input reg to match the destination,
+ * so that the tcg backend can implement "move if true".
+ */
+ if (swap_commutative(op->args[0], &op->args[4], &op->args[3])) {
+ op->args[5] = tcg_invert_cond(op->args[5]);
+ }
+ return finish_folding(ctx, op);
+}
+
static bool fold_count_zeros(OptContext *ctx, TCGOp *op)
{
uint64_t z_mask, s_mask;
@@ -2536,36 +2566,6 @@ static bool fold_setcond2(OptContext *ctx, TCGOp *op)
return tcg_opt_gen_movi(ctx, op, op->args[0], i);
}
-static bool fold_cmp_vec(OptContext *ctx, TCGOp *op)
-{
- /* Canonicalize the comparison to put immediate second. */
- if (swap_commutative(NO_DEST, &op->args[1], &op->args[2])) {
- op->args[3] = tcg_swap_cond(op->args[3]);
- }
- return finish_folding(ctx, op);
-}
-
-static bool fold_cmpsel_vec(OptContext *ctx, TCGOp *op)
-{
- /* 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 comparison to put immediate second. */
- if (swap_commutative(NO_DEST, &op->args[1], &op->args[2])) {
- op->args[5] = tcg_swap_cond(op->args[5]);
- }
- /*
- * Canonicalize the "false" input reg to match the destination,
- * so that the tcg backend can implement "move if true".
- */
- if (swap_commutative(op->args[0], &op->args[4], &op->args[3])) {
- op->args[5] = tcg_invert_cond(op->args[5]);
- }
- return finish_folding(ctx, op);
-}
-
static bool fold_sextract(OptContext *ctx, TCGOp *op)
{
uint64_t z_mask, s_mask, s_mask_old;
--
2.43.0
- [PATCH v2 45/51] tcg/optimize: Use finish_folding in fold_tcg_ld_memcopy, (continued)
- [PATCH v2 45/51] tcg/optimize: Use finish_folding in fold_tcg_ld_memcopy, Richard Henderson, 2024/12/19
- [PATCH v2 47/51] tcg/optimize: Use finish_folding in fold_bitsel_vec, Richard Henderson, 2024/12/19
- [PATCH v2 48/51] tcg/optimize: Use finish_folding as default in tcg_optimize, Richard Henderson, 2024/12/19
- [PATCH v2 42/51] tcg/optimize: Simplify sign bit test in fold_shift, Richard Henderson, 2024/12/19
- [PATCH v2 44/51] tcg/optimize: Use fold_masks_zs in fold_tcg_ld, Richard Henderson, 2024/12/19
- [PATCH v2 49/51] tcg/optimize: Remove z_mask, s_mask from OptContext, Richard Henderson, 2024/12/19
- [PATCH v2 50/51] tcg/optimize: Move fold_bitsel_vec into alphabetic sort, Richard Henderson, 2024/12/19
- [PATCH v2 43/51] tcg/optimize: Use finish_folding in fold_sub, fold_sub_vec, Richard Henderson, 2024/12/19
- [PATCH v2 46/51] tcg/optimize: Use fold_masks_zs in fold_xor, Richard Henderson, 2024/12/19
- [PATCH v2 51/51] tcg/optimize: Move fold_cmp_vec, fold_cmpsel_vec into alphabetic sort,
Richard Henderson <=
- [PATCH v2 40/51] tcg/optimize: Canonicalize s_mask in fold_exts, fold_sextract, Richard Henderson, 2024/12/19
- [PATCH v2 41/51] tcg/optimize: Use fold_masks_zs, fold_masks_s in fold_shift, Richard Henderson, 2024/12/19