From: Jan Beulich Date: Tue, 8 Oct 2024 14:05:33 +0000 (+0200) Subject: x86/{,V}AES: adjust when to force EVEX encoding X-Git-Tag: basepoints/gcc-16~5378 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ab66f099bf0f405542944c5ce178151bea934b2;p=thirdparty%2Fgcc.git x86/{,V}AES: adjust when to force EVEX encoding 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 isn't quite right: If AES is (also) enabled, EVEX encoding would needlessly be forced. gcc/ * config/i386/sse.md (vaesdec_, vaesdeclast_, vaesenc_, vaesenclast_): Replace which_alternative check by TARGET_AES one. --- diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index d6e2135423d..ccef3e063ec 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -30803,7 +30803,7 @@ UNSPEC_VAESDEC))] "TARGET_VAES" { - if (which_alternative == 0 && mode == V16QImode) + if (!TARGET_AES && mode == V16QImode) return "%{evex%} vaesdec\t{%2, %1, %0|%0, %1, %2}"; else return "vaesdec\t{%2, %1, %0|%0, %1, %2}"; @@ -30817,7 +30817,7 @@ UNSPEC_VAESDECLAST))] "TARGET_VAES" { - if (which_alternative == 0 && mode == V16QImode) + if (!TARGET_AES && mode == V16QImode) return "%{evex%} vaesdeclast\t{%2, %1, %0|%0, %1, %2}"; else return "vaesdeclast\t{%2, %1, %0|%0, %1, %2}"; @@ -30831,7 +30831,7 @@ UNSPEC_VAESENC))] "TARGET_VAES" { - if (which_alternative == 0 && mode == V16QImode) + if (!TARGET_AES && mode == V16QImode) return "%{evex%} vaesenc\t{%2, %1, %0|%0, %1, %2}"; else return "vaesenc\t{%2, %1, %0|%0, %1, %2}"; @@ -30845,7 +30845,7 @@ UNSPEC_VAESENCLAST))] "TARGET_VAES" { - if (which_alternative == 0 && mode == V16QImode) + if (!TARGET_AES && mode == V16QImode) return "%{evex%} vaesenclast\t{%2, %1, %0|%0, %1, %2}"; else return "vaesenclast\t{%2, %1, %0|%0, %1, %2}";