x86: Check VEX/EVEX encoding before checking vector operands
Since
commit 837e225ba1
Author: Jan Beulich <jbeulich@suse.com>
Date: Thu Oct 20 10:01:12 2022 +0200
x86: re-work AVX-VNNI support
moved AVX-VNNI after AVX512-VNNI, vector Disp8 is applied even when VEX
encoding is selected. Check VEX/EVEX encoding before checking vector
operands to avoid vector Disp8 with VEX encoding.
PR gas/29708
* config/tc-i386.c (match_template): Check VEX/EVEX encoding
before checking vector operands.
* testsuite/gas/i386/avx-vnni.d: Updated.
* testsuite/gas/i386/x86-64-avx-vnni.d: Likewise.
* testsuite/gas/i386/avx-vnni.s: Add a Disp32 test.
* testsuite/gas/i386/x86-64-avx-vnni.s: Likewise.
This commit is contained in:
parent
8a3b17063e
commit
9bb4d86022
5 changed files with 8 additions and 4 deletions
|
@ -6821,15 +6821,15 @@ match_template (char mnem_suffix)
|
|||
slip through to break. */
|
||||
}
|
||||
|
||||
/* Check if vector operands are valid. */
|
||||
if (check_VecOperands (t))
|
||||
/* Check if VEX/EVEX encoding requirements can be satisfied. */
|
||||
if (VEX_check_encoding (t))
|
||||
{
|
||||
specific_error = progress (i.error);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Check if VEX/EVEX encoding requirements can be satisfied. */
|
||||
if (VEX_check_encoding (t))
|
||||
/* Check if vector operands are valid. */
|
||||
if (check_VecOperands (t))
|
||||
{
|
||||
specific_error = progress (i.error);
|
||||
continue;
|
||||
|
|
|
@ -39,4 +39,5 @@ Disassembly of section .text:
|
|||
+[a-f0-9]+: c4 e2 7d 50 c0 \{vex\} vpdpbusd %ymm0,%ymm0,%ymm0
|
||||
+[a-f0-9]+: c4 e2 79 50 c0 \{vex\} vpdpbusd %xmm0,%xmm0,%xmm0
|
||||
+[a-f0-9]+: 62 f2 5d 08 50 d2 vpdpbusd %xmm2,%xmm4,%xmm2
|
||||
+[a-f0-9]+: c4 e2 59 50 91 f0 07 00 00 \{vex\} vpdpbusd 0x7f0\(%ecx\),%xmm4,%xmm2
|
||||
#pass
|
||||
|
|
|
@ -37,3 +37,4 @@ _start:
|
|||
.arch default
|
||||
.arch .avx_vnni
|
||||
vpdpbusd %xmm2, %xmm4, %xmm2
|
||||
{vex3} vpdpbusd 2032(%ecx), %xmm4, %xmm2
|
||||
|
|
|
@ -36,4 +36,5 @@ Disassembly of section .text:
|
|||
+[a-f0-9]+: c4 e2 59 53 11 \{vex\} vpdpwssds \(%rcx\),%xmm4,%xmm2
|
||||
+[a-f0-9]+: 62 b2 5d 08 53 d6 vpdpwssds %xmm22,%xmm4,%xmm2
|
||||
+[a-f0-9]+: 62 d2 5d 08 50 d4 vpdpbusd %xmm12,%xmm4,%xmm2
|
||||
+[a-f0-9]+: c4 e2 59 50 91 f0 07 00 00 \{vex\} vpdpbusd 0x7f0\(%rcx\),%xmm4,%xmm2
|
||||
#pass
|
||||
|
|
|
@ -19,3 +19,4 @@ _start:
|
|||
|
||||
.arch .avx_vnni
|
||||
vpdpbusd %xmm12, %xmm4, %xmm2
|
||||
{vex3} vpdpbusd 2032(%rcx), %xmm4, %xmm2
|
||||
|
|
Loading…
Add table
Reference in a new issue