diff mbox series

[46/46] tcg/optimize: Move fold_cmp_vec, fold_cmpsel_vec into alphabetic sort

Message ID 20241210152401.1823648-47-richard.henderson@linaro.org (mailing list archive)
State New
Headers show
Series tcg: Remove in-flight mask data from OptContext | expand

Commit Message

Richard Henderson Dec. 10, 2024, 3:24 p.m. UTC
The big comment just above says functions should be sorted.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 tcg/optimize.c | 60 +++++++++++++++++++++++++-------------------------
 1 file changed, 30 insertions(+), 30 deletions(-)

Comments

Pierrick Bouvier Dec. 17, 2024, 8:47 p.m. UTC | #1
On 12/10/24 07:24, Richard Henderson wrote:
> The big comment just above says functions should be sorted.
> 
> 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 54082042aa..2c5691e3c9 100644
> --- a/tcg/optimize.c
> +++ b/tcg/optimize.c
> @@ -1610,6 +1610,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;
> @@ -2499,36 +2529,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, a_mask = -1;

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
diff mbox series

Patch

diff --git a/tcg/optimize.c b/tcg/optimize.c
index 54082042aa..2c5691e3c9 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -1610,6 +1610,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;
@@ -2499,36 +2529,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, a_mask = -1;