[PATCH] i386: Remove IgnoreSize from string versions of cmpsd and movsd

H.J. Lu hjl.tools@gmail.com
Wed Nov 6 17:38:00 GMT 2019


On Wed, Nov 6, 2019 at 9:02 AM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 06.11.2019 16:58, H.J. Lu wrote:
> > On Wed, Nov 6, 2019 at 5:23 AM Jan Beulich <jbeulich@suse.com> wrote:
> >>
> >> On 06.11.2019 01:12, H.J. Lu wrote:
> >>> On Fri, Oct 4, 2019 at 12:45 AM Jan Beulich <jbeulich@suse.com> wrote:
> >>>>
> >>>> First and foremost the EsSeg attribute was misplaced for CMPSD. Then
> >>>> both it and MOVSD were lacking Dword on both of their operands.
> >>>> Finally string insns with multiple operands and requiring use of ES:
> >>>> had the wrong operand number reported in the diagnostic.
> >>>>
> >>>> gas/
> >>>> 2019-10-04  Jan Beulich  <jbeulich@suse.com>
> >>>>
> >>>>         * config/tc-i386.c (check_string): Make reported operand number
> >>>>         depend on Intel syntax.
> >>>>         * testsuite/gas/i386/intel-cmps.s,
> >>>>         testsuite/gas/i386/intel-cmps32.d,
> >>>>         testsuite/gas/i386/intel-cmps64.d: New.
> >>>>         * testsuite/gas/i386/i386.exp: Run new tests.
> >>>>         * testsuite/gas/i386/intel-movs.s: Extend.
> >>>>         * testsuite/gas/i386/intel-movs32.d,
> >>>>         testsuite/gas/i386/intel-movs64.d: Adjust expectations.
> >>>>         * testsuite/gas/i386/string-bad.l: Tighten expectations.
> >>>>
> >>>> opcodes/
> >>>> 2019-10-04  Jan Beulich  <jbeulich@suse.com>
> >>>>
> >>>>         * opcodes/i386-opc.tbl (movsd): Add Dword and IgnoreSize.
> >>>>         (cmpsd): Likewise. Move EsSeg to other operand.
> >>>>         * opcodes/i386-tbl.h: Re-generate.
> >>>>
> >>>
> >>> This breaks:
> >>>
> >>> [hjl@gnu-skx-1 build-x86_64-linux]$ cat x.s
> >>> .code16
> >>> rep; movsd
> >>> [hjl@gnu-skx-1 build-x86_64-linux]$ gcc -c -m32 x.s
> >>> [hjl@gnu-skx-1 build-x86_64-linux]$ objdump -dw -Mi8086 x.o
> >>>
> >>> x.o:     file format elf32-i386
> >>>
> >>>
> >>> Disassembly of section .text:
> >>>
> >>> 00000000 <.text>:
> >>>    0: f3 66 a5              rep movsl %ds:(%si),%es:(%di)
> >>> [hjl@gnu-skx-1 build-x86_64-linux]$ gcc -c -m32 x.s -B/bin/
> >>> [hjl@gnu-skx-1 build-x86_64-linux]$ objdump -dw -Mi8086 x.o
> >>>
> >>> x.o:     file format elf32-i386
> >>>
> >>>
> >>> Disassembly of section .text:
> >>>
> >>> 00000000 <.text>:
> >>>    0: f3 a5                rep movsw %ds:(%si),%es:(%di)  <<<<<<< This is wrong.
> >>
> >> I suppose that's the IgnoreSize that I mistakenly added also to
> >> the operand-less forms. You've already approved this as a separate
> >
> > It is wrong for both forms.
>
> But it is helpful to know that the operand-less form can be fixed
> by simply dropping the bad IgnoreSize. I think I also see what needs
> changing for the forms with operands, but I have to yet try it out.
> Also I will want to further extend the intel-cmps and intel-movs
> test cases, which is going to take a little more time.
>

This is the patch I am testing.


-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-i386-Remove-IgnoreSize-from-string-versions-of-cmpsd.patch
Type: text/x-patch
Size: 9270 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20191106/6e0e2a25/attachment.bin>


More information about the Binutils mailing list