On 12/19/24 20:10, Richard Henderson wrote:
The sign mask is about repetitions, a la clrsb64(), so the lsb
itself can never be a repetition.  Thus ~1 not -1 is correct.

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

diff --git a/tcg/optimize.c b/tcg/optimize.c
index 5bfcb22a0e..63f80efeec 100644
--- a/tcg/optimize.c
+++ b/tcg/optimize.c
@@ -2403,8 +2403,8 @@ static bool fold_negsetcond(OptContext *ctx, TCGOp *op)
          fold_setcond_tst_pow2(ctx, op, true);
      }
- /* Value is {0,-1} so all bits are repetitions of the sign. */
-    return fold_masks_s(ctx, op, -1);
+    /* Value is {0,-1} so all bits above lsb are repetitions of the lsb. */
+    return fold_masks_s(ctx, op, ~1);
  }
static bool fold_setcond2(OptContext *ctx, TCGOp *op)

Reviewed-by: Pierrick Bouvier <pierrick.bouv...@linaro.org>


Reply via email to