- if (po->operand[1].type == OPT_CONST && !po->operand[1].val) {
- // deal with complex dst clear
- assert_operand_cnt(2);
- fprintf(fout, " %s = %s;",
- out_dst_opr(buf1, sizeof(buf1), po, &po->operand[0]),
- out_src_opr(buf2, sizeof(buf2), po, &po->operand[1],
- default_cast_to(buf3, sizeof(buf3), &po->operand[0]), 0));
- output_std_flags(fout, po, &pfomask, buf1);
- last_arith_dst = &po->operand[0];
- delayed_flag_op = NULL;
- break;
- }
- // fallthrough
+ if (po->operand[1].type == OPT_CONST && !po->operand[1].val)
+ goto dualop_arith_const;
+ propagate_lmod(po, &po->operand[0], &po->operand[1]);
+ goto dualop_arith;
+