Browse Source
EVEX "VMOVD xmm1, r32/m32", "VMOVD r32/m32, xmm2", "VMOVQ xmm1, r64/m64", "VMOVD r64/m64, xmm2", "VMOVQ xmm1, xmm2/m64" and "VMOVQ xmm1/m64, xmm2" can only be encoded with EVEX.128. Set EVex=2 on EVEX.128 only vmovd and vmovq. gas/ PR gas/23670 * testsuite/gas/i386/evex-lig-2.d: New file. * testsuite/gas/i386/evex-lig-2.s: Likewise. * testsuite/gas/i386/x86-64-evex-lig-2.d: Likewise. * testsuite/gas/i386/x86-64-evex-lig-2.s: Likewise. * testsuite/gas/i386/i386.exp: Run evex-lig-2 and x86-64-evex-lig-2. opcodes/ PR gas/23670 * i386-dis-evex.h (evex_table): Use EVEX_LEN_0F6E_P_2, EVEX_LEN_0F7E_P_1, EVEX_LEN_0F7E_P_2 and EVEX_LEN_0FD6_P_2. (EVEX_LEN_0F6E_P_2): New EVEX_LEN_TABLE entry. (EVEX_LEN_0F7E_P_1): Likewise. (EVEX_LEN_0F7E_P_2): Likewise. (EVEX_LEN_0FD6_P_2): Likewise. * i386-dis.c (USE_EVEX_LEN_TABLE): New. (EVEX_LEN_TABLE): Likewise. (EVEX_LEN_0F6E_P_2): New enum. (EVEX_LEN_0F7E_P_1): Likewise. (EVEX_LEN_0F7E_P_2): Likewise. (EVEX_LEN_0FD6_P_2): Likewise. (evex_len_table): New. (get_valid_dis386): Handle USE_EVEX_LEN_TABLE. * i386-opc.tbl: Set EVex=2 on EVEX.128 only vmovd and vmovq. * i386-tbl.h: Regenerated.users/ahayward/variable_sve2
11 changed files with 173 additions and 13 deletions
@ -0,0 +1,18 @@ |
|||
#as: -mevexlig=256 |
|||
#objdump: -dw |
|||
#name: i386 EVEX non-LIG insns with -mevexlig=256 |
|||
|
|||
.*: +file format .* |
|||
|
|||
|
|||
Disassembly of section .text: |
|||
|
|||
0+ <_start>: |
|||
+[a-f0-9]+: 62 f1 7d 08 7e 21 vmovd %xmm4,\(%ecx\) |
|||
+[a-f0-9]+: 62 f1 7d 08 7e e1 vmovd %xmm4,%ecx |
|||
+[a-f0-9]+: 62 f1 7d 08 6e 21 vmovd \(%ecx\),%xmm4 |
|||
+[a-f0-9]+: 62 f1 7d 08 6e e1 vmovd %ecx,%xmm4 |
|||
+[a-f0-9]+: 62 f1 fd 08 d6 21 vmovq %xmm4,\(%ecx\) |
|||
+[a-f0-9]+: 62 f1 fe 08 7e 21 vmovq \(%ecx\),%xmm4 |
|||
+[a-f0-9]+: 62 f1 fe 08 7e f4 vmovq %xmm4,%xmm6 |
|||
#pass |
|||
@ -0,0 +1,14 @@ |
|||
# Check EVEX non-LIG instructions with with -mevexlig=256 |
|||
|
|||
.allow_index_reg |
|||
.text |
|||
_start: |
|||
{evex} vmovd %xmm4,(%ecx) |
|||
{evex} vmovd %xmm4,%ecx |
|||
{evex} vmovd (%ecx),%xmm4 |
|||
{evex} vmovd %ecx,%xmm4 |
|||
|
|||
{evex} vmovq %xmm4,(%ecx) |
|||
{evex} vmovq (%ecx),%xmm4 |
|||
|
|||
{evex} vmovq %xmm4,%xmm6 |
|||
@ -0,0 +1,20 @@ |
|||
#as: -mevexlig=256 |
|||
#objdump: -dw |
|||
#name: x86-64 EVEX non-LIG insns with -mevexlig=256 |
|||
|
|||
.*: +file format .* |
|||
|
|||
|
|||
Disassembly of section .text: |
|||
|
|||
0+ <_start>: |
|||
+[a-f0-9]+: 62 f1 7d 08 7e 21 vmovd %xmm4,\(%rcx\) |
|||
+[a-f0-9]+: 62 f1 7d 08 7e e1 vmovd %xmm4,%ecx |
|||
+[a-f0-9]+: 62 f1 7d 08 6e 21 vmovd \(%rcx\),%xmm4 |
|||
+[a-f0-9]+: 62 f1 7d 08 6e e1 vmovd %ecx,%xmm4 |
|||
+[a-f0-9]+: 62 f1 fd 08 7e 21 vmovq %xmm4,\(%rcx\) |
|||
+[a-f0-9]+: 62 f1 fd 08 7e e1 vmovq %xmm4,%rcx |
|||
+[a-f0-9]+: 62 f1 fd 08 6e 21 vmovq \(%rcx\),%xmm4 |
|||
+[a-f0-9]+: 62 f1 fd 08 6e e1 vmovq %rcx,%xmm4 |
|||
+[a-f0-9]+: 62 f1 fe 08 7e f4 vmovq %xmm4,%xmm6 |
|||
#pass |
|||
@ -0,0 +1,15 @@ |
|||
# Check EVEX non-LIG instructions with with -mevexlig=256 |
|||
|
|||
.allow_index_reg |
|||
.text |
|||
_start: |
|||
{evex} vmovd %xmm4,(%rcx) |
|||
{evex} vmovd %xmm4,%ecx |
|||
{evex} vmovd (%rcx),%xmm4 |
|||
{evex} vmovd %ecx,%xmm4 |
|||
|
|||
{evex} vmovq %xmm4,(%rcx) |
|||
{evex} vmovq %xmm4,%rcx |
|||
{evex} vmovq (%rcx),%xmm4 |
|||
{evex} vmovq %rcx,%xmm4 |
|||
{evex} vmovq %xmm4,%xmm6 |
|||
Loading…
Reference in new issue