target/i386: rewrite flags writeback for ADCX/ADOX
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 23 May 2024 07:39:08 +0000 (09:39 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 11 Jun 2024 12:29:22 +0000 (14:29 +0200)
commitcc155f19717ced44d70df3cd5f149a5b9f9a13f1
tree563f08d7d674949d29869ab03aea41c9d1141c17
parent4228eb8cc6ba44d35cd52b05508a47e780668051
target/i386: rewrite flags writeback for ADCX/ADOX

Avoid using set_cc_op() in preparation for implementing APX; treat
CC_OP_EFLAGS similar to the case where we have the "opposite" cc_op
(CC_OP_ADOX for ADCX and CC_OP_ADCX for ADOX), except the resulting
cc_op is not CC_OP_ADCOX. This is written easily as two "if"s, whose
conditions are both false for CC_OP_EFLAGS, both true for CC_OP_ADCOX,
and one each true for CC_OP_ADCX/ADOX.

The new logic also makes it easy to drop usage of tmp0.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
target/i386/cpu.h
target/i386/tcg/emit.c.inc