[PATCH 10/13] x86: fold EsSeg into IsString

H.J. Lu hjl.tools@gmail.com
Mon Nov 4 17:16:00 GMT 2019


On Mon, Nov 4, 2019 at 8:15 AM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 31.10.2019 20:39, H.J. Lu wrote:
> > On Wed, Oct 30, 2019 at 1:27 AM Jan Beulich <jbeulich@suse.com> wrote:
> >> --- a/opcodes/i386-opc.tbl
> >> +++ b/opcodes/i386-opc.tbl
> >> @@ -60,6 +60,9 @@
> >>  // RegMem implies a ModR/M byte
> >>  #define RegMem Modrm|RegMem
> >>
> >> +#define EsSegOp0 IsString=IS_STRING_ES_OP0
> >> +#define EsSegOp1 IsString=IS_STRING_ES_OP1
> >> +
> >>  #define VexW0 VexW=VEXW0
> >>  #define VexW1 VexW=VEXW1
> >>  #define VexWIG VexW=VEXWIG
> >> @@ -488,11 +491,11 @@ setg, 1, 0xf9f, 0x0, 2, Cpu386, Modrm|No
> >>
> >>  // String manipulation.
> >>  cmps, 0, 0xa6, None, 1, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { 0 }
> >> -cmps, 2, 0xa6, None, 1, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex|EsSeg, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
> >> +cmps, 2, 0xa6, None, 1, 0, W|No_sSuf|No_ldSuf|EsSegOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
> >>  scmp, 0, 0xa6, None, 1, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { 0 }
> >> -scmp, 2, 0xa6, None, 1, 0, W|No_sSuf|No_ldSuf|IsString|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex|EsSeg, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
> >> +scmp, 2, 0xa6, None, 1, 0, W|No_sSuf|No_ldSuf|EsSegOp0|RepPrefixOk, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Byte|Word|Dword|Qword|Unspecified|BaseIndex }
> >
> > Please use
> >
> > #define IsStringEsSegOp0 IsString=IS_STRING_ES_OP0
> > #define IsStringEsSegOp1 IsString=IS_STRING_ES_OP1
> >
> > so that we can tell it a string instruction.
>
> Would IsStringEsOp0 or even IsStringEs0 also be okay with you?
>
> Jan

IsStringEsOp0 looks good to me.

-- 
H.J.



More information about the Binutils mailing list