diff mbox series

x86emul/test: drop an undue conditional

Message ID f1fc4064-a2dd-4287-81ba-a90ce5205e0e@suse.com (mailing list archive)
State New
Headers show
Series x86emul/test: drop an undue conditional | expand

Commit Message

Jan Beulich Nov. 5, 2024, 1:53 p.m. UTC
Gating the main part of what do_test() does is wrong: As it stands, the
"memory" forms of BNDC{L,N,U} weren't tested because of this mistake.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

Comments

Andrew Cooper Nov. 5, 2024, 1:59 p.m. UTC | #1
On 05/11/2024 1:53 pm, Jan Beulich wrote:
> Gating the main part of what do_test() does is wrong: As it stands, the
> "memory" forms of BNDC{L,N,U} weren't tested because of this mistake.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
diff mbox series

Patch

--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -2213,42 +2213,37 @@  void do_test(uint8_t *instr, unsigned in
                           unsigned int bytes,
                           struct x86_emulate_ctxt *ctxt))
 {
-    struct x86_emulate_state *s;
+    struct x86_emulate_state *s = x86_decode_insn(ctxt, fetch);
 
-    if ( !modrm || mem != mem_none )
+    if ( !s )
     {
-        s = x86_decode_insn(ctxt, fetch);
+        print_insn(instr, len);
+        printf(" failed to decode\n");
+        return;
+    }
+
+    if ( x86_insn_length(s, ctxt) != len )
+    {
+        print_insn(instr, len);
+        printf(" length %u (expected %u)\n", x86_insn_length(s, ctxt), len);
+    }
 
-        if ( !s )
-        {
-            print_insn(instr, len);
-            printf(" failed to decode\n");
-            return;
-        }
-
-        if ( x86_insn_length(s, ctxt) != len )
-        {
-            print_insn(instr, len);
-            printf(" length %u (expected %u)\n", x86_insn_length(s, ctxt), len);
-        }
-
-        if ( x86_insn_is_mem_access(s, ctxt) != (mem != mem_none) )
-        {
-            print_insn(instr, len);
-            printf(" mem access %d (expected %d)\n",
-                   x86_insn_is_mem_access(s, ctxt), mem != mem_none);
-        }
-
-        if ( x86_insn_is_mem_write(s, ctxt) != (mem == mem_write) )
-        {
-            print_insn(instr, len);
-            printf(" mem write %d (expected %d)\n",
-                   x86_insn_is_mem_write(s, ctxt), mem == mem_write);
-        }
+    if ( x86_insn_is_mem_access(s, ctxt) != (mem != mem_none) )
+    {
+        print_insn(instr, len);
+        printf(" mem access %d (expected %d)\n",
+               x86_insn_is_mem_access(s, ctxt), mem != mem_none);
+    }
 
-        x86_emulate_free_state(s);
+    if ( x86_insn_is_mem_write(s, ctxt) != (mem == mem_write) )
+    {
+        print_insn(instr, len);
+        printf(" mem write %d (expected %d)\n",
+               x86_insn_is_mem_write(s, ctxt), mem == mem_write);
     }
 
+    x86_emulate_free_state(s);
+
     if ( modrm )
     {
         instr[modrm] |= 0xc0;