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.henderson@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)