Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- tcg/optimize.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/tcg/optimize.c b/tcg/optimize.c index 2ec52df368..5729433548 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -2065,6 +2065,15 @@ static bool fold_orc(OptContext *ctx, TCGOp *op) return true; } + /* Fold orc r,x,i to or r,x,~i. */ + if (arg_is_const(op->args[2])) { + uint64_t val = ~arg_info(op->args[2])->val; + + op->opc = (ctx->type == TCG_TYPE_I32 + ? INDEX_op_or_i32 : INDEX_op_or_i64); + op->args[2] = arg_new_constant(ctx, val); + } + ctx->s_mask = arg_info(op->args[1])->s_mask & arg_info(op->args[2])->s_mask; return false; -- 2.34.1