x86: SKINIT with operand needs IgnoreSize
authorJan Beulich <jbeulich@suse.com>
Mon, 1 Aug 2022 08:53:14 +0000 (10:53 +0200)
committerJan Beulich <jbeulich@suse.com>
Mon, 1 Aug 2022 08:53:14 +0000 (10:53 +0200)
Without it in 16-bit mode a pointless operand size prefix would be
emitted.

gas/testsuite/gas/i386/i386.exp
gas/testsuite/gas/i386/svme.s
gas/testsuite/gas/i386/svme16.d [new file with mode: 0644]
opcodes/i386-opc.tbl
opcodes/i386-tbl.h

index c7822c4c9ba7dad66454595c5ac076ce9a863f31..1d27dfc78b80d0968199118fa01f13502f42749e 100644 (file)
@@ -109,6 +109,7 @@ if [gas_32_check] then {
     run_list_test "cr-err" ""
     run_dump_test "cdr"
     run_dump_test "svme"
+    run_dump_test "svme16"
     run_dump_test "amdfam10"
     run_dump_test "ssse3"
     run_dump_test "rep"
index a721e36777f86728a75df82d2f44c8cbdaaf3c66..3d42fadeab4da8f6b203bc7a08958bcaebd83c25 100644 (file)
@@ -1,4 +1,7 @@
        .text
+.ifdef __ia16__
+       .code16
+.endif
 common:
        clgi
        invlpga
diff --git a/gas/testsuite/gas/i386/svme16.d b/gas/testsuite/gas/i386/svme16.d
new file mode 100644 (file)
index 0000000..bd3424f
--- /dev/null
@@ -0,0 +1,41 @@
+#as: --defsym __ia16__=1
+#objdump: -dw -Mi8086
+#name: 16-bit SVME
+#source: svme.s
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+000 <common>:
+[       ]*[0-9a-f]+:[   ]+0f 01 dd[     ]+clgi
+[       ]*[0-9a-f]+:[   ]+0f 01 df[     ]+invlpga
+[       ]*[0-9a-f]+:[   ]+0f 01 de[     ]+skinit
+[       ]*[0-9a-f]+:[   ]+0f 01 dc[     ]+stgi
+[       ]*[0-9a-f]+:[   ]+0f 01 da[     ]+vmload
+[       ]*[0-9a-f]+:[   ]+0f 01 d9[     ]+vmmcall
+[       ]*[0-9a-f]+:[   ]+0f 01 d8[     ]+vmrun
+[       ]*[0-9a-f]+:[   ]+0f 01 db[     ]+vmsave
+[0-9a-f]+ <att32>:
+[       ]*[0-9a-f]+:[   ]+0f 01 de[     ]+skinit
+[       ]*[0-9a-f]+:[   ]+67 0f 01 df[  ]+addr32 invlpga
+[       ]*[0-9a-f]+:[   ]+67 0f 01 da[  ]+addr32 vmload
+[       ]*[0-9a-f]+:[   ]+67 0f 01 d8[  ]+addr32 vmrun
+[       ]*[0-9a-f]+:[   ]+67 0f 01 db[  ]+addr32 vmsave
+[0-9a-f]+ <att16>:
+[       ]*[0-9a-f]+:[   ]+0f 01 df[     ]+invlpga
+[       ]*[0-9a-f]+:[   ]+0f 01 da[     ]+vmload
+[       ]*[0-9a-f]+:[   ]+0f 01 d8[     ]+vmrun
+[       ]*[0-9a-f]+:[   ]+0f 01 db[     ]+vmsave
+[0-9a-f]+ <intel32>:
+[       ]*[0-9a-f]+:[   ]+0f 01 de[     ]+skinit
+[       ]*[0-9a-f]+:[   ]+67 0f 01 df[  ]+addr32 invlpga
+[       ]*[0-9a-f]+:[   ]+67 0f 01 da[  ]+addr32 vmload
+[       ]*[0-9a-f]+:[   ]+67 0f 01 d8[  ]+addr32 vmrun
+[       ]*[0-9a-f]+:[   ]+67 0f 01 db[  ]+addr32 vmsave
+[0-9a-f]+ <intel16>:
+[       ]*[0-9a-f]+:[   ]+0f 01 df[     ]+invlpga
+[       ]*[0-9a-f]+:[   ]+0f 01 da[     ]+vmload
+[       ]*[0-9a-f]+:[   ]+0f 01 d8[     ]+vmrun
+[       ]*[0-9a-f]+:[   ]+0f 01 db[     ]+vmsave
+#pass
index 94763f9f3e5936daf88df99f62ca9b17a321e742..512235134b04a52871baad99f39e59c7cee99f85 100644 (file)
@@ -2068,7 +2068,7 @@ clgi, 0xf01dd, None, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf,
 invlpga, 0xf01df, None, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
 invlpga, 0xf01df, None, CpuSVME, AddrPrefixOpReg, { Acc|Word|Dword|Qword, RegC|Dword }
 skinit, 0xf01de, None, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
-skinit, 0xf01de, None, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Acc|Dword }
+skinit, 0xf01de, None, CpuSVME, No_bSuf|IgnoreSize|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { Acc|Dword }
 stgi, 0xf01dc, None, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
 vmgexit, 0xf30f01d9, None, CpuSEV_ES, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
 vmload, 0xf01da, None, CpuSVME, No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, {}
index ebf5414bc740aa844cba533c21feda4d90494adb..7df3b29ce151b19d421b346899170ed38adbd172 100644 (file)
@@ -44880,7 +44880,7 @@ const insn_template i386_optab[] =
     { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
          0, 0, 0, 0, 0, 0 } } } },
   { "skinit", 0x01de, 1, None,
-    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0,
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
     { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,