This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] x86: accept SSE* insns accessing MMX registers with ".arch .nommx"
- From: Jan Beulich <jbeulich at suse dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Thu, 13 Feb 2020 14:39:16 +0100
- Subject: Re: [PATCH] x86: accept SSE* insns accessing MMX registers with ".arch .nommx"
- References: <bfe9b4d5-dbb3-8180-61b7-0fcbeb5e2158@suse.com> <CAMe9rOqFHTAhJTGr=uxwxz34wtFtx-toT4w_NCU-UeSpwa0OZw@mail.gmail.com>
On 13.02.2020 12:43, H.J. Lu wrote:
> On Thu, Feb 13, 2020 at 1:24 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> These are regular SSE/SSE2 insns, and hence should be accepted
>> irrespective of MMX as a feature being enabled. Since the MMX CPU
>> feature is intentionally not implicitly enabled by ".arch .sse", MMX
>
> This begs the question if ".arch .sse" should enable MMX.
Well, I understood not doing so was intentional, for allowing
people to write SSE code which is free of MMX insns.
>> registers may be left unrecognized only when both MMX and SSE are
>> disabled. The errors previously generated on most of these insns in this
>> mode perhaps wasn't actually the biggest problem - in "noprefix" mode,
>> mm<N> source operands would silently have been taken as memory operands
>> of those names, i.e. wrong code was silently generated.
>
> This is the real problem. What happens if YMM/ZMM are used with
> AVX disabled?
I don't understand. When AVX is disabled, ymm<N> are expected to
be ordinary identifiers. Same for AVX512F and zmm<N> as well as
k<N>. When MMX is disabled the situation is different, due to
those SSE insns which access MMX registers.
Jan