public inbox for binutils-cvs@sourceware.org
 help / color / mirror / Atom feed
* [binutils-gdb] x86/Intel: don't accept malformed EXTRQ / INSERTQ
@ 2022-11-09 10:09 Jan Beulich
  0 siblings, 0 replies; only message in thread
From: Jan Beulich @ 2022-11-09 10:09 UTC (permalink / raw)
  To: bfd-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=47c0279b2ca36fd79ad4ce8601103623a92161ae

commit 47c0279b2ca36fd79ad4ce8601103623a92161ae
Author: Jan Beulich <jbeulich@suse.com>
Date:   Wed Nov 9 11:09:34 2022 +0100

    x86/Intel: don't accept malformed EXTRQ / INSERTQ
    
    Operand swapping was mistakenly suppressed when the first two operands
    were immediate ones, not taking into account overall operand count. This
    way EXTRQ / INSERTQ would have been accepted also with kind-of-AT&T
    operand order.
    
    For the testcase being extended, in order to not move around "GAS
    LISTING" expectations, suppress pagination.

Diff:
---
 gas/config/tc-i386.c            |  3 ++-
 gas/testsuite/gas/i386/i386.exp |  2 +-
 gas/testsuite/gas/i386/inval.l  | 25 +++++++++++--------------
 gas/testsuite/gas/i386/inval.s  |  3 +++
 4 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 6dcf11470cc..da005c5d61d 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -4885,7 +4885,8 @@ md_assemble (char *line)
       && !startswith (mnemonic, "rmp")
       && (strcmp (mnemonic, "tpause") != 0)
       && (strcmp (mnemonic, "umwait") != 0)
-      && !(operand_type_check (i.types[0], imm)
+      && !(i.operands == 2
+	   && operand_type_check (i.types[0], imm)
 	   && operand_type_check (i.types[1], imm)))
     swap_operands ();
 
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 5b20ac7ce5f..cad783e46fd 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -51,7 +51,7 @@ if [gas_32_check] then {
 
     run_list_test "float" "-al -mmnemonic=att"
     run_list_test "general" "-al --listing-lhs-width=2"
-    run_list_test "inval" "-al"
+    run_list_test "inval" "-aln"
     run_list_test "inval-16" "-al"
     run_list_test "segment" "-al"
     run_list_test "inval-seg" "-al"
diff --git a/gas/testsuite/gas/i386/inval.l b/gas/testsuite/gas/i386/inval.l
index abe220620b7..5d520f0e8e7 100644
--- a/gas/testsuite/gas/i386/inval.l
+++ b/gas/testsuite/gas/i386/inval.l
@@ -87,19 +87,18 @@
 .*:97: Error: .*shl.*
 .*:98: Error: .*rol.*
 .*:99: Error: .*rcl.*
-.*:102: Error: .*
-.*:104: Error: .*
+.*:101: Error: .*extrq.*
+.*:102: Error: .*insertq.*
 .*:105: Error: .*
-.*:106: Error: .*
+.*:107: Error: .*
 .*:108: Error: .*
 .*:109: Error: .*
-.*:110: Error: .*
+.*:111: Error: .*
 .*:112: Error: .*
 .*:113: Error: .*
-.*:114: Error: .*
-GAS LISTING .*
-
-
+.*:115: Error: .*
+.*:116: Error: .*
+.*:117: Error: .*
 [ 	]*1[ 	]+\.text
 [ 	]*2[ 	]+\.allow_index_reg
 [ 	]*3[ 	]+\# All the following should be illegal
@@ -157,9 +156,6 @@ GAS LISTING .*
 [ 	]*55[ 	]+fnstsw %al
 [ 	]*56[ 	]+fstsw %eax
 [ 	]*57[ 	]+fstsw %al
-\fGAS LISTING .*
-
-
 [ 	]*58[ 	]+
 [ 	]*59[ 	]+movnti %ax, \(%eax\)
 [ 	]*60[ 	]+movntiw %ax, \(%eax\)
@@ -203,6 +199,9 @@ GAS LISTING .*
 [ 	]*[1-9][0-9]*[ 	]+rol \[ecx\], 2
 [ 	]*[1-9][0-9]*[ 	]+rcl \[edx\], cl
 [ 	]*[1-9][0-9]*[ 	]+
+[ 	]*[1-9][0-9]*[ 	]+extrq 1, 2, xmm3
+[ 	]*[1-9][0-9]*[ 	]+insertq 1, 2, xmm3, xmm4
+[ 	]*[1-9][0-9]*[ 	]+
 [ 	]*[1-9][0-9]*[ 	]+\.att_syntax prefix
 [ 	]*[1-9][0-9]*[ 	]+movsd \(%esi\), %ss:\(%edi\), %ss:\(%eax\)
 [ 	]*[1-9][0-9]*[ 	]+
@@ -217,6 +216,4 @@ GAS LISTING .*
 [ 	]*[1-9][0-9]*[ 	]+inb	%dx, %ax
 [ 	]*[1-9][0-9]*[ 	]+outb	%ax, %dx
 [ 	]*[1-9][0-9]*[ 	]+movb	%ax, %bx
-\fGAS LISTING .*
-
-
+#pass
diff --git a/gas/testsuite/gas/i386/inval.s b/gas/testsuite/gas/i386/inval.s
index 7adfec64600..4e9f751c61f 100644
--- a/gas/testsuite/gas/i386/inval.s
+++ b/gas/testsuite/gas/i386/inval.s
@@ -98,6 +98,9 @@ movnti word ptr [eax], ax
 	rol [ecx], 2
 	rcl [edx], cl
 
+	extrq 1, 2, xmm3
+	insertq 1, 2, xmm3, xmm4
+
 	.att_syntax prefix
 	movsd (%esi), %ss:(%edi), %ss:(%eax)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-11-09 10:09 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-09 10:09 [binutils-gdb] x86/Intel: don't accept malformed EXTRQ / INSERTQ Jan Beulich

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).