diff options
author | Jan Beulich <jbeulich@suse.com> | 2023-03-31 08:21:30 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2023-03-31 08:21:30 +0200 |
commit | f7377a91b5183977d0702280d4aad90e1829e154 (patch) | |
tree | 19888eaa11da2f2600859172916dc1440c73c8a4 /gas/testsuite | |
parent | 0ff3b7d0c70274a916c21eb8fb5e040ee17af9f8 (diff) | |
download | gdb-f7377a91b5183977d0702280d4aad90e1829e154.zip gdb-f7377a91b5183977d0702280d4aad90e1829e154.tar.gz gdb-f7377a91b5183977d0702280d4aad90e1829e154.tar.bz2 |
x86: handle EVEX Disp8 for .insn
In particular the scaling factor cannot always be determined from pre-
existing operand attributes. Introduce a new {:d<N>} vector operand
syntax extension, restricted to .insn only, to allow specifying this in
(at least) otherwise ambiguous cases.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/i386/insn-32.d | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/insn-32.s | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/insn-64.d | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/insn-64.s | 16 |
4 files changed, 52 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/insn-32.d b/gas/testsuite/gas/i386/insn-32.d index fdd9ae7..d898a71 100644 --- a/gas/testsuite/gas/i386/insn-32.d +++ b/gas/testsuite/gas/i386/insn-32.d @@ -23,6 +23,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: c5 f1 58 d0[ ]+vaddpd %xmm0,%xmm1,%xmm2 [ ]*[a-f0-9]+: c5 f5 58 d0[ ]+vaddpd %ymm0,%ymm1,%ymm2 [ ]*[a-f0-9]+: c5 f2 58 d0[ ]+vaddss %xmm0,%xmm1,%xmm2 +[ ]*[a-f0-9]+: 62 f1 76 08 58 50 01[ ]+\{evex\} vaddss (0x)?4\(%eax\),%xmm1,%xmm2 [ ]*[a-f0-9]+: c4 e3 69 68 19 00[ ]+vfmaddps %xmm0,\(%ecx\),%xmm2,%xmm3 [ ]*[a-f0-9]+: c4 e3 e9 68 19 00[ ]+vfmaddps \(%ecx\),%xmm0,%xmm2,%xmm3 [ ]*[a-f0-9]+: c4 e3 e9 68 18 10[ ]+vfmaddps \(%eax\),%xmm1,%xmm2,%xmm3 @@ -31,4 +32,13 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 62 f1 74 18 58 d0[ ]+vaddps \{rn-sae\},%zmm0,%zmm1,%zmm2 [ ]*[a-f0-9]+: c4 e2 79 92 1c 48[ ]+vgatherdps %xmm0,\(%eax,%xmm1,2\),%xmm3 [ ]*[a-f0-9]+: 62 f2 fd 0c 93 1c 48[ ]+vgatherqpd \(%eax,%xmm1,2\),%xmm3\{%k4\} +[ ]*[a-f0-9]+: 62 f2 7d 28 88 48 01[ ]+vexpandps (0x)?4\(%eax\),%ymm1 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%eax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%eax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%eax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%eax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%eax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%eax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 7c 48 5a 40 01[ ]+vcvtph2pd 0x10\(%eax\),%zmm0 +[ ]*[a-f0-9]+: 62 f5 7c 58 5a 40 01[ ]+vcvtph2pd (0x)?2\(%eax\)\{1to8\},%zmm0 #pass diff --git a/gas/testsuite/gas/i386/insn-32.s b/gas/testsuite/gas/i386/insn-32.s index 73491e4..d54ad3b 100644 --- a/gas/testsuite/gas/i386/insn-32.s +++ b/gas/testsuite/gas/i386/insn-32.s @@ -36,6 +36,7 @@ insn: # vaddss .insn VEX.LIG.F3.0F 0x58, %xmm0, %xmm1, %xmm2 + .insn EVEX.LIG.F3.0F.W0 0x58, 4(%eax){:d4}, %xmm1, %xmm2 # vfmaddps .insn VEX.66.0F3A.W0 0x68, %xmm0, (%ecx), %xmm2, %xmm3 @@ -52,3 +53,18 @@ insn: # vgather... .insn VEX.66.0f38.W0 0x92, %xmm0, (%eax, %xmm1, 2), %xmm3 .insn EVEX.66.0f38.W1 0x93, (%eax, %xmm1, 2), %xmm3{%k4} + + # vexpandps + .insn EVEX.66.0F38.W0 0x88, 4(%eax){:d4}, %ymm1 + + # vcvtpd2phz + .insn EVEX.512.66.M5.W1 0x5a, 64(%eax), %xmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%eax), %zmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%eax){:d64}, %xmm0 + .insn EVEX.512.66.M5.W1 0x5a, 8(%eax){1to8}, %xmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%eax){1to8}, %zmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%eax){1to8:d8}, %xmm0 + + # vcvtph2pd + .insn EVEX.M5.W0 0x5a, 16(%eax){:d16}, %zmm0 + .insn EVEX.M5.W0 0x5a, 2(%eax){1to8:d2}, %zmm0 diff --git a/gas/testsuite/gas/i386/insn-64.d b/gas/testsuite/gas/i386/insn-64.d index 229960f..0f1ec88 100644 --- a/gas/testsuite/gas/i386/insn-64.d +++ b/gas/testsuite/gas/i386/insn-64.d @@ -25,6 +25,7 @@ Disassembly of section .text: [ ]*[a-f0-9]+: c4 c1 71 58 d0[ ]+vaddpd %xmm8,%xmm1,%xmm2 [ ]*[a-f0-9]+: c5 b5 58 d0[ ]+vaddpd %ymm0,%ymm9,%ymm2 [ ]*[a-f0-9]+: c5 72 58 d0[ ]+vaddss %xmm0,%xmm1,%xmm10 +[ ]*[a-f0-9]+: 62 f1 76 08 58 50 01[ ]+\{evex\} vaddss (0x)?4\(%rax\),%xmm1,%xmm2 [ ]*[a-f0-9]+: c4 e3 69 68 19 80[ ]+vfmaddps %xmm8,\(%rcx\),%xmm2,%xmm3 [ ]*[a-f0-9]+: 67 c4 e3 e9 68 19 00[ ]+vfmaddps \(%ecx\),%xmm0,%xmm2,%xmm3 [ ]*[a-f0-9]+: c4 c3 e9 68 18 10[ ]+vfmaddps \(%r8\),%xmm1,%xmm2,%xmm3 @@ -42,4 +43,13 @@ Disassembly of section .text: [ ]*[a-f0-9]+: 62 f2 fd 04 93 1c 48[ ]+vgatherqpd \(%rax,%xmm17,2\),%xmm3\{%k4\} [ ]*[a-f0-9]+: 62 72 fd 0c 93 1c 48[ ]+vgatherqpd \(%rax,%xmm1,2\),%xmm11\{%k4\} [ ]*[a-f0-9]+: 62 e2 fd 0c 93 1c 48[ ]+vgatherqpd \(%rax,%xmm1,2\),%xmm19\{%k4\} +[ ]*[a-f0-9]+: 62 f2 7d 28 88 48 01[ ]+vexpandps (0x)?4\(%rax\),%ymm1 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%rax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%rax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 48 5a 40 01[ ]+vcvtpd2phz 0x40\(%rax\),%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%rax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%rax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 fd 58 5a 40 01[ ]+vcvtpd2ph (0x)?8\(%rax\)\{1to8\},%xmm0 +[ ]*[a-f0-9]+: 62 f5 7c 48 5a 40 01[ ]+vcvtph2pd 0x10\(%rax\),%zmm0 +[ ]*[a-f0-9]+: 62 f5 7c 58 5a 40 01[ ]+vcvtph2pd (0x)?2\(%rax\)\{1to8\},%zmm0 #pass diff --git a/gas/testsuite/gas/i386/insn-64.s b/gas/testsuite/gas/i386/insn-64.s index b8f5ede..9dfdd3a 100644 --- a/gas/testsuite/gas/i386/insn-64.s +++ b/gas/testsuite/gas/i386/insn-64.s @@ -38,6 +38,7 @@ insn: # vaddss .insn VEX.LIG.F3.0F 0x58, %xmm0, %xmm1, %xmm10 + .insn EVEX.LIG.F3.0F.W0 0x58, 4(%rax){:d4}, %xmm1, %xmm2 # vfmaddps .insn VEX.66.0F3A.W0 0x68, %xmm8, (%rcx), %xmm2, %xmm3 @@ -63,3 +64,18 @@ insn: .insn EVEX.66.0f38.W1 0x93, (%rax, %xmm17, 2), %xmm3{%k4} .insn EVEX.66.0f38.W1 0x93, (%rax, %xmm1, 2), %xmm11{%k4} .insn EVEX.66.0f38.W1 0x93, (%rax, %xmm1, 2), %xmm19{%k4} + + # vexpandps + .insn EVEX.66.0F38.W0 0x88, 4(%rax){:d4}, %ymm1 + + # vcvtpd2phz + .insn EVEX.512.66.M5.W1 0x5a, 64(%rax), %xmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%rax), %zmm0 + .insn EVEX.66.M5.W1 0x5a, 64(%rax){:d64}, %xmm0 + .insn EVEX.512.66.M5.W1 0x5a, 8(%rax){1to8}, %xmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%rax){1to8}, %zmm0 + .insn EVEX.66.M5.W1 0x5a, 8(%rax){1to8:d8}, %xmm0 + + # vcvtph2pd + .insn EVEX.M5.W0 0x5a, 16(%rax){:d16}, %zmm0 + .insn EVEX.M5.W0 0x5a, 2(%rax){1to8:d2}, %zmm0 |