[v2,1/2] x86/Intel: extend MOVSD/CMPSD testsuite coverage

Message ID b71f7b55-2e0c-96e3-2418-6741e085c2f6@suse.com
State New
Headers show
Series
  • x86/Intel: CMPSD/MOVSD testsuite adjustments
Related show

Commit Message

Jan Beulich Nov. 14, 2019, 7:20 a.m.
This is still in the context of PR/gas 25167.

gas/
2019-11-14  Jan Beulich  <jbeulich@suse.com>

	* testsuite/gas/i386/intel-cmps.s,
	testsuite/gas/i386/intel-movs.s: Extend.
	* testsuite/gas/i386/intel-cmps32.d,
	testsuite/gas/i386/intel-cmps64.d,
	testsuite/gas/i386/intel-movs32.d,
	testsuite/gas/i386/intel-movs64.d: Adjust expectations.
	* testsuite/gas/i386/intel-cmps16.d,
	testsuite/gas/i386/intel-movs16.d: New.
	* testsuite/gas/i386/i386.exp: Run new tests.

Patch

--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -532,7 +532,9 @@  if [expr ([istarget "i*86-*-*"] ||  [ist
 	run_list_test "reloc32" "--defsym _bad_=1"
 	run_dump_test "intel-got32"
 	run_dump_test "intel-movs32"
+	run_dump_test "intel-movs16"
 	run_dump_test "intel-cmps32"
+	run_dump_test "intel-cmps16"
 	run_list_test "inval-equ-1" "-al"
 	run_list_test "inval-equ-2" "-al"
 	run_dump_test "ifunc"
--- a/gas/testsuite/gas/i386/intel-cmps.s
+++ b/gas/testsuite/gas/i386/intel-cmps.s
@@ -1,8 +1,20 @@ 
 	.text
 	.intel_syntax noprefix
+.ifdef x86_16
+	.code16
+.endif
+
+.ifdef x86_64
+ .equ adi, rdi
+ .equ asi, rsi
+.else
+ .equ adi, di
+ .equ asi, si
+.endif
 
 cmps:
 	cmpsb
+
 	cmpsb	[esi], es:[edi]
 	cmpsb	fs:[esi], es:[edi]
 	cmpsb	[esi], [edi]
@@ -13,7 +25,18 @@  cmps:
 	cmps	[esi], byte ptr es:[edi]
 	cmps	byte ptr [esi], byte ptr es:[edi]
 
+	cmpsb	[asi], es:[adi]
+	cmpsb	fs:[asi], es:[adi]
+	cmpsb	[asi], [adi]
+	cmpsb	byte ptr [asi], es:[adi]
+	cmpsb	[asi], byte ptr es:[adi]
+	cmpsb	byte ptr [asi], byte ptr es:[adi]
+	cmps	byte ptr [asi], es:[adi]
+	cmps	[asi], byte ptr es:[adi]
+	cmps	byte ptr [asi], byte ptr es:[adi]
+
 	cmpsw
+
 	cmpsw	[esi], es:[edi]
 	cmpsw	fs:[esi], es:[edi]
 	cmpsw	[esi], [edi]
@@ -24,7 +47,18 @@  cmps:
 	cmps	[esi], word ptr es:[edi]
 	cmps	word ptr [esi], word ptr es:[edi]
 
+	cmpsw	[asi], es:[adi]
+	cmpsw	fs:[asi], es:[adi]
+	cmpsw	[asi], [adi]
+	cmpsw	word ptr [asi], es:[adi]
+	cmpsw	[asi], word ptr es:[adi]
+	cmpsw	word ptr [asi], word ptr es:[adi]
+	cmps	word ptr [asi], es:[adi]
+	cmps	[asi], word ptr es:[adi]
+	cmps	word ptr [asi], word ptr es:[adi]
+
 	cmpsd
+
 	cmpsd	[esi], es:[edi]
 	cmpsd	fs:[esi], es:[edi]
 	cmpsd	[esi], [edi]
@@ -35,8 +69,19 @@  cmps:
 	cmps	[esi], dword ptr es:[edi]
 	cmps	dword ptr [esi], dword ptr es:[edi]
 
+	cmpsd	[asi], es:[adi]
+	cmpsd	fs:[asi], es:[adi]
+	cmpsd	[asi], [adi]
+	cmpsd	dword ptr [asi], es:[adi]
+	cmpsd	[asi], dword ptr es:[adi]
+	cmpsd	dword ptr [asi], dword ptr es:[adi]
+	cmps	dword ptr [asi], es:[adi]
+	cmps	[asi], dword ptr es:[adi]
+	cmps	dword ptr [asi], dword ptr es:[adi]
+
 .ifdef x86_64
 	cmpsq
+
 	cmpsq	[rsi], es:[rdi]
 	cmpsq	fs:[rsi], es:[rdi]
 	cmpsq	[rsi], [rdi]
@@ -46,4 +91,14 @@  cmps:
 	cmps	qword ptr [rsi], es:[rdi]
 	cmps	[rsi], qword ptr es:[rdi]
 	cmps	qword ptr [rsi], qword ptr es:[rdi]
+
+	cmpsq	[esi], es:[edi]
+	cmpsq	fs:[esi], es:[edi]
+	cmpsq	[esi], [edi]
+	cmpsq	qword ptr [esi], es:[edi]
+	cmpsq	[esi], qword ptr es:[edi]
+	cmpsq	qword ptr [esi], qword ptr es:[edi]
+	cmps	qword ptr [esi], es:[edi]
+	cmps	[esi], qword ptr es:[edi]
+	cmps	qword ptr [esi], qword ptr es:[edi]
 .endif
--- /dev/null
+++ b/gas/testsuite/gas/i386/intel-cmps16.d
@@ -0,0 +1,68 @@ 
+#as: --defsym x86_16=1
+#objdump: -dMintel -Mi8086
+#source: intel-cmps.s
+#name: x86 Intel cmps (16-bit code)
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <cmps>:
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	64 67 a6 *	cmps +BYTE PTR fs:\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	64 a6 *	cmps +BYTE PTR fs:\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	64 67 a7 *	cmps +WORD PTR fs:\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	64 a7 *	cmps +WORD PTR fs:\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(w *| +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	64 67 66 a7 *	cmps +DWORD PTR fs:?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	64 66 a7 *	cmps +DWORD PTR fs:?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(d *| +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\])
+#pass
--- a/gas/testsuite/gas/i386/intel-cmps32.d
+++ b/gas/testsuite/gas/i386/intel-cmps32.d
@@ -17,6 +17,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[esi\]),(BYTE PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[esi\]),(BYTE PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[esi\]),(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	64 67 a6 *	cmps +BYTE PTR fs:\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[si\],(BYTE PTR )?es:\[di\]
 [ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[esi\]),(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[esi\]),(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	64 66 a7 *	cmps +WORD PTR fs:\[esi\],(WORD PTR )?es:\[edi\]
@@ -27,6 +36,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[esi\]),(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[esi\]),(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[esi\]),(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	64 67 66 a7 *	cmps +WORD PTR fs:\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[si\],(WORD PTR )?es:\[di\]
 [ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[esi\]),(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[esi\]),(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	64 a7 *	cmps +DWORD PTR fs:?\[esi\],(DWORD PTR )?es:\[edi\]
@@ -37,4 +55,13 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[esi\]),(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[esi\]),(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[esi\]),(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	64 67 a7 *	cmps +DWORD PTR fs:?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
+[ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[si\],(DWORD PTR )?es:\[di\]
 #pass
--- a/gas/testsuite/gas/i386/intel-cmps64.d
+++ b/gas/testsuite/gas/i386/intel-cmps64.d
@@ -17,6 +17,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	67 a6 *	cmps +BYTE PTR (ds:)?\[esi\],(BYTE PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	64 a6 *	cmps +BYTE PTR fs:\[rsi\],(BYTE PTR )?es:\[rdi\]
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a6 *	cmps(b *| +BYTE PTR (ds:)?\[rsi\],(BYTE PTR )?es:\[rdi\])
 [ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\]),(WORD PTR )?es:\[rdi\]
 [ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	64 67 66 a7 *	cmps +WORD PTR fs:\[esi\],(WORD PTR )?es:\[edi\]
@@ -27,6 +36,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	67 66 a7 *	cmps +WORD PTR (ds:)?\[esi\],(WORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	64 66 a7 *	cmps +WORD PTR fs:\[rsi\],(WORD PTR )?es:\[rdi\]
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	66 a7 *	cmps(w *| +WORD PTR (ds:)?\[rsi\],(WORD PTR )?es:\[rdi\])
 [ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\]),(DWORD PTR )?es:\[rdi\]
 [ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	64 67 a7 *	cmps +DWORD PTR fs:\[esi\],(DWORD PTR )?es:\[edi\]
@@ -37,6 +55,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
 [ 	]*[a-f0-9]+:	67 a7 *	cmps +DWORD PTR (ds:)?\[esi\],(DWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	64 a7 *	cmps +DWORD PTR fs:\[rsi\],(DWORD PTR )?es:\[rdi\]
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
+[ 	]*[a-f0-9]+:	a7 *	cmps(d *| +DWORD PTR (ds:)?\[rsi\],(DWORD PTR )?es:\[rdi\])
 [ 	]*[a-f0-9]+:	48 a7 *	cmps(q *| +QWORD PTR (ds:)?\[rsi\]),(QWORD PTR )?es:\[rdi\]
 [ 	]*[a-f0-9]+:	48 a7 *	cmps(q *| +QWORD PTR (ds:)?\[rsi\]),(QWORD PTR )?es:\[rdi\]
 [ 	]*[a-f0-9]+:	64 48 a7 *	cmps +QWORD PTR fs:?\[rsi\],(QWORD PTR )?es:\[rdi\]
@@ -47,4 +74,13 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	48 a7 *	cmps(q *| +QWORD PTR (ds:)?\[rsi\]),(QWORD PTR )?es:\[rdi\]
 [ 	]*[a-f0-9]+:	48 a7 *	cmps(q *| +QWORD PTR (ds:)?\[rsi\]),(QWORD PTR )?es:\[rdi\]
 [ 	]*[a-f0-9]+:	48 a7 *	cmps(q *| +QWORD PTR (ds:)?\[rsi\]),(QWORD PTR )?es:\[rdi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	64 67 48 a7 *	cmps +QWORD PTR fs:?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
+[ 	]*[a-f0-9]+:	67 48 a7 *	cmps +QWORD PTR (ds:)?\[esi\],(QWORD PTR )?es:\[edi\]
 #pass
--- a/gas/testsuite/gas/i386/intel-movs.s
+++ b/gas/testsuite/gas/i386/intel-movs.s
@@ -1,8 +1,20 @@ 
 	.text
 	.intel_syntax noprefix
+.ifdef x86_16
+	.code16
+.endif
+
+.ifdef x86_64
+ .equ adi, rdi
+ .equ asi, rsi
+.else
+ .equ adi, di
+ .equ asi, si
+.endif
 
 movs:
 	movsb
+
 	movsb	es:[edi], [esi]
 	movsb	es:[edi], fs:[esi]
 	movsb	[edi], [esi]
@@ -13,7 +25,18 @@  movs:
 	movs	es:[edi], byte ptr [esi]
 	movs	byte ptr es:[edi], byte ptr [esi]
 
+	movsb	es:[adi], [asi]
+	movsb	es:[adi], fs:[asi]
+	movsb	[adi], [asi]
+	movsb	byte ptr es:[adi], [asi]
+	movsb	es:[adi], byte ptr [asi]
+	movsb	byte ptr es:[adi], byte ptr [asi]
+	movs	byte ptr es:[adi], [asi]
+	movs	es:[adi], byte ptr [asi]
+	movs	byte ptr es:[adi], byte ptr [asi]
+
 	movsw
+
 	movsw	es:[edi], [esi]
 	movsw	es:[edi], fs:[esi]
 	movsw	[edi], [esi]
@@ -24,7 +47,18 @@  movs:
 	movs	es:[edi], word ptr [esi]
 	movs	word ptr es:[edi], word ptr [esi]
 
+	movsw	es:[adi], [asi]
+	movsw	es:[adi], fs:[asi]
+	movsw	[adi], [asi]
+	movsw	word ptr es:[adi], [asi]
+	movsw	es:[adi], word ptr [asi]
+	movsw	word ptr es:[adi], word ptr [asi]
+	movs	word ptr es:[adi], [asi]
+	movs	es:[adi], word ptr [asi]
+	movs	word ptr es:[adi], word ptr [asi]
+
 	movsd
+
 	movsd	es:[edi], [esi]
 	movsd	es:[edi], fs:[esi]
 	movsd	[edi], [esi]
@@ -35,8 +69,19 @@  movs:
 	movs	es:[edi], dword ptr [esi]
 	movs	dword ptr es:[edi], dword ptr [esi]
 
+	movsd	es:[adi], [asi]
+	movsd	es:[adi], fs:[asi]
+	movsd	[adi], [asi]
+	movsd	dword ptr es:[adi], [asi]
+	movsd	es:[adi], dword ptr [asi]
+	movsd	dword ptr es:[adi], dword ptr [asi]
+	movs	dword ptr es:[adi], [asi]
+	movs	es:[adi], dword ptr [asi]
+	movs	dword ptr es:[adi], dword ptr [asi]
+
 .ifdef x86_64
 	movsq
+
 	movsq	es:[rdi], [rsi]
 	movsq	es:[rdi], fs:[rsi]
 	movsq	[rdi], [rsi]
@@ -46,4 +91,14 @@  movs:
 	movs	qword ptr es:[rdi], [rsi]
 	movs	es:[rdi], qword ptr [rsi]
 	movs	qword ptr es:[rdi], qword ptr [rsi]
+
+	movsq	es:[edi], [esi]
+	movsq	es:[edi], fs:[esi]
+	movsq	[edi], [esi]
+	movsq	qword ptr es:[edi], [esi]
+	movsq	es:[edi], qword ptr [esi]
+	movsq	qword ptr es:[edi], qword ptr [esi]
+	movs	qword ptr es:[edi], [esi]
+	movs	es:[edi], qword ptr [esi]
+	movs	qword ptr es:[edi], qword ptr [esi]
 .endif
--- /dev/null
+++ b/gas/testsuite/gas/i386/intel-movs16.d
@@ -0,0 +1,68 @@ 
+#as: --defsym x86_16=1
+#objdump: -dMintel -Mi8086
+#source: intel-movs.s
+#name: x86 Intel movs (16-bit code)
+
+.*: +file format .*
+
+Disassembly of section .text:
+
+0+ <movs>:
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	64 67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?fs:\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	64 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?fs:\[si\]
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	64 67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?fs:\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	64 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?fs:\[si\]
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	a5 *	movs(w *| +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	64 67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?fs:?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	64 66 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?fs:?\[si\]
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(d *| +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\])
+#pass
--- a/gas/testsuite/gas/i386/intel-movs32.d
+++ b/gas/testsuite/gas/i386/intel-movs32.d
@@ -17,6 +17,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\])
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	64 67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?fs:\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[di\],(BYTE PTR )?(ds:)?\[si\]
 [ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	64 66 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?fs:\[esi\]
@@ -27,6 +36,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\])
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	64 67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?fs:\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[di\],(WORD PTR )?(ds:)?\[si\]
 [ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	64 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?fs:?\[esi\]
@@ -37,4 +55,13 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\])
 [ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\])
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	64 67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?fs:?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
+[ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[di\],(DWORD PTR )?(ds:)?\[si\]
 #pass
--- a/gas/testsuite/gas/i386/intel-movs64.d
+++ b/gas/testsuite/gas/i386/intel-movs64.d
@@ -17,6 +17,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	67 a4 *	movs +BYTE PTR es:\[edi\],(BYTE PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	64 a4 *	movs +BYTE PTR es:\[rdi\],(BYTE PTR )?fs:\[rsi\]
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a4 *	movs(b *| +BYTE PTR es:\[rdi\],(BYTE PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	64 67 66 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?fs:\[esi\]
@@ -27,6 +36,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	67 66 a5 *	movs +WORD PTR es:\[edi\],(WORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	64 66 a5 *	movs +WORD PTR es:\[rdi\],(WORD PTR )?fs:\[rsi\]
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	66 a5 *	movs(w *| +WORD PTR es:\[rdi\],(WORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	64 67 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?fs:\[esi\]
@@ -37,6 +55,15 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
 [ 	]*[a-f0-9]+:	67 a5 *	movs +DWORD PTR es:\[edi\],(DWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	64 a5 *	movs +DWORD PTR es:\[rdi\],(DWORD PTR )?fs:\[rsi\]
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	a5 *	movs(d *| +DWORD PTR es:\[rdi\],(DWORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	48 a5 *	movs(q *| +QWORD PTR es:\[rdi\],(QWORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	48 a5 *	movs(q *| +QWORD PTR es:\[rdi\],(QWORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	64 48 a5 *	movs +QWORD PTR es:\[rdi\],(QWORD PTR )?fs:?\[rsi\]
@@ -47,4 +74,13 @@  Disassembly of section .text:
 [ 	]*[a-f0-9]+:	48 a5 *	movs(q *| +QWORD PTR es:\[rdi\],(QWORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	48 a5 *	movs(q *| +QWORD PTR es:\[rdi\],(QWORD PTR )?(ds:)?\[rsi\])
 [ 	]*[a-f0-9]+:	48 a5 *	movs(q *| +QWORD PTR es:\[rdi\],(QWORD PTR )?(ds:)?\[rsi\])
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	64 67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?fs:?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
+[ 	]*[a-f0-9]+:	67 48 a5 *	movs +QWORD PTR es:\[edi\],(QWORD PTR )?(ds:)?\[esi\]
 #pass