mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
tcg/optimize: Fold dup2_vec
When the two arguments are identical, this can be reduced to dup_vec or to mov_vec from a tcg_constant_vec. Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
a5b30d950c
commit
1dc4fe7012
@ -1109,6 +1109,21 @@ void tcg_optimize(TCGContext *s)
|
|||||||
}
|
}
|
||||||
goto do_default;
|
goto do_default;
|
||||||
|
|
||||||
|
case INDEX_op_dup2_vec:
|
||||||
|
assert(TCG_TARGET_REG_BITS == 32);
|
||||||
|
if (arg_is_const(op->args[1]) && arg_is_const(op->args[2])) {
|
||||||
|
tmp = arg_info(op->args[1])->val;
|
||||||
|
if (tmp == arg_info(op->args[2])->val) {
|
||||||
|
tcg_opt_gen_movi(s, op, op->args[0], tmp);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (args_are_copies(op->args[1], op->args[2])) {
|
||||||
|
op->opc = INDEX_op_dup_vec;
|
||||||
|
TCGOP_VECE(op) = MO_32;
|
||||||
|
nb_iargs = 1;
|
||||||
|
}
|
||||||
|
goto do_default;
|
||||||
|
|
||||||
CASE_OP_32_64(not):
|
CASE_OP_32_64(not):
|
||||||
CASE_OP_32_64(neg):
|
CASE_OP_32_64(neg):
|
||||||
CASE_OP_32_64(ext8s):
|
CASE_OP_32_64(ext8s):
|
||||||
|
Loading…
Reference in New Issue
Block a user