JMPABS will need the W0 check; move all of these checks
together with the others in disas_insn.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/tcg/decode-new.c.inc | 27 +++++++++------------------
1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc
index 086a3bcec18..6fab597fafc 100644
--- a/target/i386/tcg/decode-new.c.inc
+++ b/target/i386/tcg/decode-new.c.inc
@@ -2722,24 +2722,6 @@ static bool validate_vex(DisasContext *s, X86DecodedInsn *decode)
if (s->flags & HF_EM_MASK) {
goto illegal;
}
-
- if (e->check) {
- if (e->check & X86_CHECK_VEX128) {
- if (s->vex_l) {
- goto illegal;
- }
- }
- if (e->check & X86_CHECK_W0) {
- if (s->vex_w) {
- goto illegal;
- }
- }
- if (e->check & X86_CHECK_W1) {
- if (!s->vex_w) {
- goto illegal;
- }
- }
- }
return true;
nm_exception:
@@ -2991,6 +2973,15 @@ static void disas_insn(DisasContext *s, CPUState *cpu)
goto illegal_op;
}
}
+ if ((decode.e.check & X86_CHECK_VEX128) && s->vex_l) {
+ goto illegal_op;
+ }
+ if ((decode.e.check & X86_CHECK_W0) && s->vex_w) {
+ goto illegal_op;
+ }
+ if ((decode.e.check & X86_CHECK_W1) && !s->vex_w) {
+ goto illegal_op;
+ }
}
switch (decode.e.special) {
--
2.52.0