diff options
author | Jan Beulich <jbeulich@suse.com> | 2022-07-06 15:39:03 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2022-07-06 15:39:03 +0200 |
commit | c975cec5fffacc073866be11c0599c97054b3052 (patch) | |
tree | 005a0a805a95451a4637a4df50f1c26ddbd97aec /gas/testsuite | |
parent | ad349f2493f934573c0809ead35ea299286beecd (diff) | |
download | gdb-c975cec5fffacc073866be11c0599c97054b3052.zip gdb-c975cec5fffacc073866be11c0599c97054b3052.tar.gz gdb-c975cec5fffacc073866be11c0599c97054b3052.tar.bz2 |
x86: fix 3-operand insn reverse-matching
The middle operand would have gone entirely unchecked, allowing e.g.
vmovss %xmm0, %esp, %xmm2
to assemble successfully, or e.g.
vmovss %xmm0, $4, %xmm2
causing an internal error. Alongside dealing with this also drop a
related comment, which hasn't been applicable anymore since the
introduction of 3-operand patterns with D set (and which perhaps never
had been logical to be there, as reverse-matched insns don't make it
there in the first place).
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/gas/i386/inval-avx.l | 25 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/inval-avx.s | 6 |
2 files changed, 15 insertions, 16 deletions
diff --git a/gas/testsuite/gas/i386/inval-avx.l b/gas/testsuite/gas/i386/inval-avx.l index 866987e..0b47527 100644 --- a/gas/testsuite/gas/i386/inval-avx.l +++ b/gas/testsuite/gas/i386/inval-avx.l @@ -2,20 +2,13 @@ .*:4: Error: .* .*:5: Error: .* .*:6: Error: .* -.*:9: Error:.* ambiguous .* `vcvtpd2dq' -.*:10: Error:.* ambiguous .* `vcvtpd2ps' -.*:11: Error:.* ambiguous .* `vcvttpd2dq' +.*:8: Error: .* +.*:9: Error: .* +.*:10: Error: .* +.*:11: Error: .* +.*:12: Error: .* +.*:15: Error:.* ambiguous .* `vcvtpd2dq' +.*:16: Error:.* ambiguous .* `vcvtpd2ps' +.*:17: Error:.* ambiguous .* `vcvttpd2dq' GAS LISTING .* - - -[ ]*1[ ]+\# Check illegal AVX instructions -[ ]*2[ ]+\.text -[ ]*3[ ]+_start: -[ ]*4[ ]+vcvtpd2dq \(%ecx\),%xmm2 -[ ]*5[ ]+vcvtpd2ps \(%ecx\),%xmm2 -[ ]*6[ ]+vcvttpd2dq \(%ecx\),%xmm2 -[ ]*7[ ]+ -[ ]*8[ ]+\.intel_syntax noprefix -[ ]*9[ ]+vcvtpd2dq xmm2,\[ecx\] -[ ]*10[ ]+vcvtpd2ps xmm2,\[ecx\] -[ ]*11[ ]+vcvttpd2dq xmm2,\[ecx\] +#pass diff --git a/gas/testsuite/gas/i386/inval-avx.s b/gas/testsuite/gas/i386/inval-avx.s index 94a64f6..741901a 100644 --- a/gas/testsuite/gas/i386/inval-avx.s +++ b/gas/testsuite/gas/i386/inval-avx.s @@ -5,6 +5,12 @@ _start: vcvtpd2ps (%ecx),%xmm2 vcvttpd2dq (%ecx),%xmm2 + vmovss %xmm0, (%esp), %xmm2 + vmovss %xmm0, $4, %xmm2 + vmovss %xmm0, %cr0, %xmm2 + vmovss %xmm0, %ymm4, %xmm2 + vmovss %xmm0, %mm4, %xmm2 + .intel_syntax noprefix vcvtpd2dq xmm2,[ecx] vcvtpd2ps xmm2,[ecx] |