- if (temp_is_const(args[1]) && temp_is_const(args[2])) {
- tmp = deposit64(temps[args[1]].val, args[3], args[4],
- temps[args[2]].val);
- tcg_opt_gen_movi(s, op, args, args[0], tmp);
+ if (arg_is_const(op->args[1]) && arg_is_const(op->args[2])) {
+ tmp = deposit64(arg_info(op->args[1])->val,
+ op->args[3], op->args[4],
+ arg_info(op->args[2])->val);
+ tcg_opt_gen_movi(s, op, op->args[0], tmp);
+ break;
+ }
+ goto do_default;
+
+ CASE_OP_32_64(extract):
+ if (arg_is_const(op->args[1])) {
+ tmp = extract64(arg_info(op->args[1])->val,
+ op->args[2], op->args[3]);
+ tcg_opt_gen_movi(s, op, op->args[0], tmp);
+ break;
+ }
+ goto do_default;
+
+ CASE_OP_32_64(sextract):
+ if (arg_is_const(op->args[1])) {
+ tmp = sextract64(arg_info(op->args[1])->val,
+ op->args[2], op->args[3]);
+ tcg_opt_gen_movi(s, op, op->args[0], tmp);