public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Add W table for USER_MSR under MAP4.
@ 2024-04-10  8:38 Hu, Lin1
  2024-04-16 13:51 ` H.J. Lu
  0 siblings, 1 reply; 2+ messages in thread
From: Hu, Lin1 @ 2024-04-10  8:38 UTC (permalink / raw)
  To: binutils; +Cc: JBeulich, hongjiu.lu, lili.cui

Hi,

We found USER_MSR's disassembling process didn't through W table, so we
add it.

BRs,
Lin

opcodes/ChangeLog:

	* i386-dis-evex-mod.h: Modify MOD_EVEX_MAP4_F8_P1,
	MOD_EVEX_MAP4_F8_P3.
	* i386-dis-evex-w.h (EVEX_W_MAP4_F8_P1_M_1): New.
	(EVEX_W_MAP4_F8_P3_M_1): Ditto.
	* i386-dis.c (vex_w_table): Add EVEX_W_MAP4_F8_P1_M_1,
	EVEX_W_MAP4_F8_P3_M_1.
	* i386-opc.tbl: Remove redundant '|'.
---
 opcodes/i386-dis-evex-mod.h | 4 ++--
 opcodes/i386-dis-evex-w.h   | 8 ++++++++
 opcodes/i386-dis.c          | 2 ++
 opcodes/i386-opc.tbl        | 2 +-
 4 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h
index e793b24a6f8..879c91f3b76 100644
--- a/opcodes/i386-dis-evex-mod.h
+++ b/opcodes/i386-dis-evex-mod.h
@@ -1,10 +1,10 @@
   /* MOD_EVEX_MAP4_F8_P1 */
   {
     { "enqcmds",	{ Gva, M }, 0 },
-    { "uwrmsr",		{ Gq, Eq }, 0 },
+    { VEX_W_TABLE (EVEX_W_MAP4_F8_P1_M_1) },
   },
   /* MOD_EVEX_MAP4_F8_P3 */
   {
     { "enqcmd",		{ Gva, M }, 0 },
-    { "urdmsr",		{ Eq, Gq }, 0 },
+    { VEX_W_TABLE (EVEX_W_MAP4_F8_P3_M_1) },
   },
diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h
index 12ab29544bb..24c0c23f23e 100644
--- a/opcodes/i386-dis-evex-w.h
+++ b/opcodes/i386-dis-evex-w.h
@@ -447,6 +447,14 @@
     { "pop2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, NO_PREFIX },
     { "pop2p", { { PUSH2_POP2_Fixup, q_mode}, Eq }, NO_PREFIX },
   },
+  /* EVEX_W_MAP4_F8_P1_M_1 */
+  {
+    { "uwrmsr",		{ Gq, Eq }, 0 },
+  },
+  /* EVEX_W_MAP4_F8_P3_M_1 */
+  {
+    { "urdmsr",		{ Eq, Gq }, 0 },
+  },
   /* EVEX_W_MAP4_FF_R_6 */
   {
     { "push2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, 0 },
diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
index 3efe65af940..b9fdda1b578 100644
--- a/opcodes/i386-dis.c
+++ b/opcodes/i386-dis.c
@@ -1739,6 +1739,8 @@ enum
   EVEX_W_0F3A72,
 
   EVEX_W_MAP4_8F_R_0,
+  EVEX_W_MAP4_F8_P1_M_1,
+  EVEX_W_MAP4_F8_P3_M_1,
   EVEX_W_MAP4_FF_R_6,
 
   EVEX_W_MAP5_5B_P_0,
diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
index fb2e9e91f05..7d248f64bbd 100644
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -3416,7 +3416,7 @@ urdmsr, 0xf20f38f8, USER_MSR, RegMem|NoSuf|NoRex64, { Reg64, Reg64 }
 urdmsr, 0xf2f8, USER_MSR&APX_F, RegMem|EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
 urdmsr, 0xf2f8/0, APX_F(USER_MSR), Modrm|Vex128|VexMap7|EVex128|VexW0|NoSuf, { Imm32, Reg64 }
 uwrmsr, 0xf30f38f8, USER_MSR, Modrm|NoSuf|NoRex64, { Reg64, Reg64 }
-uwrmsr, 0xf3f8, USER_MSR&APX_F, Modrm||EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
+uwrmsr, 0xf3f8, USER_MSR&APX_F, Modrm|EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
 // Immediates want to be first; md_assemble() takes care of swapping operands
 // accordingly.
 uwrmsr, 0xf3f8/0, APX_F(USER_MSR), Modrm|Vex128|VexMap7|EVex128|VexW0|NoSuf, { Imm32, Reg64 }
-- 
2.31.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Add W table for USER_MSR under MAP4.
  2024-04-10  8:38 [PATCH] Add W table for USER_MSR under MAP4 Hu, Lin1
@ 2024-04-16 13:51 ` H.J. Lu
  0 siblings, 0 replies; 2+ messages in thread
From: H.J. Lu @ 2024-04-16 13:51 UTC (permalink / raw)
  To: Hu, Lin1; +Cc: binutils, JBeulich, lili.cui

On Wed, Apr 10, 2024 at 1:40 AM Hu, Lin1 <lin1.hu@intel.com> wrote:
>
> Hi,
>
> We found USER_MSR's disassembling process didn't through W table, so we
> add it.
>
> BRs,
> Lin
>
> opcodes/ChangeLog:
>
>         * i386-dis-evex-mod.h: Modify MOD_EVEX_MAP4_F8_P1,
>         MOD_EVEX_MAP4_F8_P3.
>         * i386-dis-evex-w.h (EVEX_W_MAP4_F8_P1_M_1): New.
>         (EVEX_W_MAP4_F8_P3_M_1): Ditto.
>         * i386-dis.c (vex_w_table): Add EVEX_W_MAP4_F8_P1_M_1,
>         EVEX_W_MAP4_F8_P3_M_1.
>         * i386-opc.tbl: Remove redundant '|'.
> ---
>  opcodes/i386-dis-evex-mod.h | 4 ++--
>  opcodes/i386-dis-evex-w.h   | 8 ++++++++
>  opcodes/i386-dis.c          | 2 ++
>  opcodes/i386-opc.tbl        | 2 +-
>  4 files changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/opcodes/i386-dis-evex-mod.h b/opcodes/i386-dis-evex-mod.h
> index e793b24a6f8..879c91f3b76 100644
> --- a/opcodes/i386-dis-evex-mod.h
> +++ b/opcodes/i386-dis-evex-mod.h
> @@ -1,10 +1,10 @@
>    /* MOD_EVEX_MAP4_F8_P1 */
>    {
>      { "enqcmds",       { Gva, M }, 0 },
> -    { "uwrmsr",                { Gq, Eq }, 0 },
> +    { VEX_W_TABLE (EVEX_W_MAP4_F8_P1_M_1) },
>    },
>    /* MOD_EVEX_MAP4_F8_P3 */
>    {
>      { "enqcmd",                { Gva, M }, 0 },
> -    { "urdmsr",                { Eq, Gq }, 0 },
> +    { VEX_W_TABLE (EVEX_W_MAP4_F8_P3_M_1) },
>    },
> diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h
> index 12ab29544bb..24c0c23f23e 100644
> --- a/opcodes/i386-dis-evex-w.h
> +++ b/opcodes/i386-dis-evex-w.h
> @@ -447,6 +447,14 @@
>      { "pop2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, NO_PREFIX },
>      { "pop2p", { { PUSH2_POP2_Fixup, q_mode}, Eq }, NO_PREFIX },
>    },
> +  /* EVEX_W_MAP4_F8_P1_M_1 */
> +  {
> +    { "uwrmsr",                { Gq, Eq }, 0 },
> +  },
> +  /* EVEX_W_MAP4_F8_P3_M_1 */
> +  {
> +    { "urdmsr",                { Eq, Gq }, 0 },
> +  },
>    /* EVEX_W_MAP4_FF_R_6 */
>    {
>      { "push2", { { PUSH2_POP2_Fixup, q_mode}, Eq }, 0 },
> diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c
> index 3efe65af940..b9fdda1b578 100644
> --- a/opcodes/i386-dis.c
> +++ b/opcodes/i386-dis.c
> @@ -1739,6 +1739,8 @@ enum
>    EVEX_W_0F3A72,
>
>    EVEX_W_MAP4_8F_R_0,
> +  EVEX_W_MAP4_F8_P1_M_1,
> +  EVEX_W_MAP4_F8_P3_M_1,
>    EVEX_W_MAP4_FF_R_6,
>
>    EVEX_W_MAP5_5B_P_0,
> diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl
> index fb2e9e91f05..7d248f64bbd 100644
> --- a/opcodes/i386-opc.tbl
> +++ b/opcodes/i386-opc.tbl
> @@ -3416,7 +3416,7 @@ urdmsr, 0xf20f38f8, USER_MSR, RegMem|NoSuf|NoRex64, { Reg64, Reg64 }
>  urdmsr, 0xf2f8, USER_MSR&APX_F, RegMem|EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
>  urdmsr, 0xf2f8/0, APX_F(USER_MSR), Modrm|Vex128|VexMap7|EVex128|VexW0|NoSuf, { Imm32, Reg64 }
>  uwrmsr, 0xf30f38f8, USER_MSR, Modrm|NoSuf|NoRex64, { Reg64, Reg64 }
> -uwrmsr, 0xf3f8, USER_MSR&APX_F, Modrm||EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
> +uwrmsr, 0xf3f8, USER_MSR&APX_F, Modrm|EVexMap4|VexW0|NoSuf, { Reg64, Reg64 }
>  // Immediates want to be first; md_assemble() takes care of swapping operands
>  // accordingly.
>  uwrmsr, 0xf3f8/0, APX_F(USER_MSR), Modrm|Vex128|VexMap7|EVex128|VexW0|NoSuf, { Imm32, Reg64 }
> --
> 2.31.1
>

OK.

Thanks.

-- 
H.J.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-04-16 13:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-10  8:38 [PATCH] Add W table for USER_MSR under MAP4 Hu, Lin1
2024-04-16 13:51 ` H.J. Lu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).