x86: FMA insns aren't eligible to VEX2 encoding

PR gas/31178

In da0784f961d8 ("x86: fold FMA VEX and EVEX templates") I overlooked
that C aliases StaticRounding, and hence build_vex_prefix() now needs to
be aware of that aliasing. Disambiguation is easy, as StaticRounding is
only ever used together with SAE (hence why the overlaying works in the
first place).
This commit is contained in:
Jan Beulich 2024-01-09 13:49:48 +01:00
parent ac1b12b513
commit 7440781b67
8 changed files with 11 additions and 0 deletions

View File

@ -3801,6 +3801,8 @@ build_vex_prefix (const insn_template *t)
&& i.reg_operands == i.operands - i.imm_operands
&& i.tm.opcode_modifier.vex
&& i.tm.opcode_modifier.commutative
/* .commutative aliases .staticrounding; disambiguate. */
&& !i.tm.opcode_modifier.sae
&& (i.tm.opcode_modifier.sse2avx
|| (optimize > 1 && !i.no_optimize))
&& i.rex == REX_B

View File

@ -222,4 +222,5 @@ Disassembly of section .text:
+[a-f0-9]+: 66 .* pxor %xmm12,%xmm12
+[a-f0-9]+: c5 .* vpxor %xmm2,%xmm2,%xmm8
+[a-f0-9]+: c5 .* vpxor %ymm0,%ymm0,%ymm1
+[a-f0-9]+: c4 .* vfnmadd231sd %xmm9,%xmm2,%xmm0
#pass

View File

@ -248,3 +248,6 @@ _start:
pcmpgtq %xmm12, %xmm12
vpcmpgtq %xmm2, %xmm2, %xmm8
vpcmpgtq %ymm12, %ymm12, %ymm1
# PR gas/31178
vfnmadd231sd %xmm9, %xmm2, %xmm0

View File

@ -223,4 +223,5 @@ Disassembly of section .text:
+[a-f0-9]+: 66 .* pxor %xmm12,%xmm12
+[a-f0-9]+: c5 .* vpxor %xmm2,%xmm2,%xmm8
+[a-f0-9]+: c5 .* vpxor %ymm0,%ymm0,%ymm1
+[a-f0-9]+: c4 .* vfnmadd231sd %xmm9,%xmm2,%xmm0
#pass

View File

@ -222,4 +222,5 @@ Disassembly of section .text:
+[a-f0-9]+: 66 .* pxor %xmm12,%xmm12
+[a-f0-9]+: c5 .* vpxor %xmm2,%xmm2,%xmm8
+[a-f0-9]+: c5 .* vpxor %ymm0,%ymm0,%ymm1
+[a-f0-9]+: c4 .* vfnmadd231sd %xmm9,%xmm2,%xmm0
#pass

View File

@ -223,4 +223,5 @@ Disassembly of section .text:
+[a-f0-9]+: c5 .* vpxor %xmm0,%xmm0,%xmm12
+[a-f0-9]+: c5 .* vpxor %xmm2,%xmm2,%xmm8
+[a-f0-9]+: c5 .* vpxor %ymm0,%ymm0,%ymm1
+[a-f0-9]+: c4 .* vfnmadd231sd %xmm9,%xmm2,%xmm0
#pass

View File

@ -222,6 +222,7 @@ Disassembly of section .text:
+[a-f0-9]+: 66 .* pxor %xmm12,%xmm12
+[a-f0-9]+: c5 .* vpxor %xmm2,%xmm2,%xmm8
+[a-f0-9]+: c5 .* vpxor %ymm0,%ymm0,%ymm1
+[a-f0-9]+: c4 .* vfnmadd231sd %xmm9,%xmm2,%xmm0
+[a-f0-9]+: 62 f1 f5 08 55 e9 \{evex\} vandnpd %xmm1,%xmm1,%xmm5
+[a-f0-9]+: 62 f1 f5 08 55 e9 \{evex\} vandnpd %xmm1,%xmm1,%xmm5
+[a-f0-9]+: 62 f1 7d 28 6f d1 vmovdqa32 %ymm1,%ymm2

View File

@ -222,6 +222,7 @@ Disassembly of section .text:
+[a-f0-9]+: 66 .* pxor %xmm12,%xmm12
+[a-f0-9]+: c5 .* vpxor %xmm2,%xmm2,%xmm8
+[a-f0-9]+: c5 .* vpxor %ymm0,%ymm0,%ymm1
+[a-f0-9]+: c4 .* vfnmadd231sd %xmm9,%xmm2,%xmm0
+[a-f0-9]+: 62 f1 f5 08 55 e9 \{evex\} vandnpd %xmm1,%xmm1,%xmm5
+[a-f0-9]+: 62 f1 f5 08 55 e9 \{evex\} vandnpd %xmm1,%xmm1,%xmm5
+[a-f0-9]+: 62 f1 7d 28 6f d1 vmovdqa32 %ymm1,%ymm2