On 25.09.2024 09:38, Hongtao Liu wrote:
> On Wed, Sep 25, 2024 at 2:56 PM Jan Beulich <jbeul...@suse.com> wrote:
>>
>> Commit a79d13a01f8c ("i386: Fix aes/vaes patterns [PR114576]") correctly
>> said "..., but we need to emit {evex} prefix in the assembly if AES ISA
>> is not enabled". Yet it did so only for the TARGET_AES insns. Going from
>> the alternative chosen in the TARGET_VAES insns is wrong for two
>> reasons:
>> - if, with AES disabled, the latter alternative was chosen despite no
>>   "high" XMM register nor any eGPR in use, gas would still pick the AES
> w/o EVEX SSE REG or EGPR, the first alternative will always be
> matched(alternative 0).
> That is how it works(match from left to right).

Well, if that's guaranteed to always be the case, then ...

>>   (VEX) encoding when no {evex} pseudo-prefix is in use (which is
>>   against - as stated by the description of said commit - AES presently
>>   not being considered a prereq of VAES in gcc);
> 
>> - if AES is (also) enabled, EVEX encoding would needlessly be forced.
> So it's more like an optimization that use VEX encoding when AES is enabled?

... in a way it's an optimization, yes. I can adjust the description
accordingly. However, it's not _just_ an optimization, it also is a
fix for compilation (really: assembly) failing in ...

>> ---
>> As an aside - {evex} (and other) pseudo-prefixes would better be avoided
>> anyway whenever possible, as those are getting in the way of code
>> putting in place macro overrides for certain insns: gas 2.43 rejects
>> such bogus placement of pseudo-prefixes.

... cases like this (which is how I actually came to notice the issue).

Jan

Reply via email to