[PATCH v7] x86: replace adhoc (partly wrong) ambiguous operand checking for MOVSX/MOVZX

H.J. Lu hjl.tools@gmail.com
Thu Feb 13 16:19:00 GMT 2020


On Thu, Feb 13, 2020 at 7:02 AM Jan Beulich <jbeulich@suse.com> wrote:
>
> On 13.02.2020 15:34, H.J. Lu wrote:
> > On Thu, Feb 13, 2020 at 1:21 AM Jan Beulich <jbeulich@suse.com> wrote:
> >> @@ -6551,6 +6558,32 @@ process_suffix (void)
> >>         }
> >>      }
> >>
> >> +  if ((i.tm.base_opcode | 8) == 0xfbe
> >> +      || (i.tm.base_opcode == 0x63 && i.tm.cpu_flags.bitfield.cpu64))
> >> +    {
> >> +      /* In Intel syntax, movsx/movzx must have a "suffix" (checked above).
> >> +        In AT&T syntax, if there is no suffix (warned about above), the default
> >> +        will be byte extension.  */
> >
> > Please drop the warning for AT&T syntax and document it instead.
>
> But it is wrong to make a choice silently. When there are multiple
> options, we ought to inform the user, i.e. it needs to be at least

I have seen

movzx 7(%eax), %ecx

from 2010.   We need to live with this oddity of movsx/movzx.

> a warning. Doing what you ask for is against the entire series this
> is just the (almost; I've just now figured there's one more case
> wanting to take care of, as you may have seen from the question
> asked back in the VFPCLASS sub-thread) last patch of. The only
> consistent alternative would be for that warning to also become an
> error, but I have to admit I'm not convinced this is a good idea (I
> seem to recall there being something - perhaps just a test case -
> that breaks if this gets changed).
>
> Jan



-- 
H.J.



More information about the Binutils mailing list