aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2013-03-02 01:55:20 +0000
committerH.J. Lu <hjl.tools@gmail.com>2013-03-02 01:55:20 +0000
commit5fe308e1a33f0f28b1aa3ff5b9a0c29eeeaca3b1 (patch)
treeb22f13f446fe6e2d8be82da4327ac4f969d7e199 /gas
parentd79e58d83cf2ba86afe15683d7fc68149d12e30f (diff)
downloadgdb-5fe308e1a33f0f28b1aa3ff5b9a0c29eeeaca3b1.zip
gdb-5fe308e1a33f0f28b1aa3ff5b9a0c29eeeaca3b1.tar.gz
gdb-5fe308e1a33f0f28b1aa3ff5b9a0c29eeeaca3b1.tar.bz2
Add tests for invalid addresses and riz/eiz
* gas/i386/inval.s: Add tests for invalid addresses and eiz. * gas/i386/x86-64-inval.s: Add tests for invalid addresses and riz/eiz. * gas/i386/inval.l: Updated. * gas/i386/x86-64-inval.l: Likewise.
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/ChangeLog10
-rw-r--r--gas/testsuite/gas/i386/inval.l186
-rw-r--r--gas/testsuite/gas/i386/inval.s6
-rw-r--r--gas/testsuite/gas/i386/x86-64-inval.l241
-rw-r--r--gas/testsuite/gas/i386/x86-64-inval.s14
5 files changed, 263 insertions, 194 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 5107894..dd23d56 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2013-03-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gas/i386/inval.s: Add tests for invalid addresses and eiz.
+
+ * gas/i386/x86-64-inval.s: Add tests for invalid addresses and
+ riz/eiz.
+
+ * gas/i386/inval.l: Updated.
+ * gas/i386/x86-64-inval.l: Likewise.
+
2013-02-28 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/i386.exp: Run inval-rep and x86-64-inval-rep.
diff --git a/gas/testsuite/gas/i386/inval.l b/gas/testsuite/gas/i386/inval.l
index 3f74e9a..bec6b75 100644
--- a/gas/testsuite/gas/i386/inval.l
+++ b/gas/testsuite/gas/i386/inval.l
@@ -1,5 +1,4 @@
.*: Assembler messages:
-.*:3: Error: .*
.*:4: Error: .*
.*:5: Error: .*
.*:6: Error: .*
@@ -53,14 +52,13 @@
.*:54: Error: .*
.*:55: Error: .*
.*:56: Error: .*
-.*:58: Error: .*
+.*:57: Error: .*
.*:59: Error: .*
+.*:60: Error: .*
.*:62: Error: .*
.*:63: Error: .*
.*:64: Error: .*
.*:65: Error: .*
-.*:66: Error: .*
-.*:67: Error: .*
.*:68: Error: .*
.*:69: Error: .*
.*:70: Error: .*
@@ -71,98 +69,110 @@
.*:75: Error: .*
.*:76: Error: .*
.*:77: Error: .*
+.*:78: Error: .*
.*:79: Error: .*
.*:80: Error: .*
.*:81: Error: .*
.*:82: Error: .*
-.*:84: Error: .*
+.*:83: Error: .*
+.*:85: Error: .*
+.*:86: Error: .*
+.*:87: Error: .*
+.*:88: Error: .*
+.*:90: Error: .*
GAS LISTING .*
[ ]*1[ ]+\.text
-[ ]*2[ ]+\# All the following should be illegal
-[ ]*3[ ]+mov \(%dx\),%al
-[ ]*4[ ]+mov \(%eax,%esp,2\),%al
-[ ]*5[ ]+setae %eax
-[ ]*6[ ]+pushb %ds
-[ ]*7[ ]+popb %ds
-[ ]*8[ ]+pushb %al
-[ ]*9[ ]+popb %al
-[ ]*10[ ]+pushb %ah
-[ ]*11[ ]+popb %ah
-[ ]*12[ ]+pushb %ax
-[ ]*13[ ]+popb %ax
-[ ]*14[ ]+pushb %eax
-[ ]*15[ ]+popb %eax
-[ ]*16[ ]+movb %ds,%ax
-[ ]*17[ ]+movb %ds,%eax
-[ ]*18[ ]+movb %ax,%ds
-[ ]*19[ ]+movb %eax,%ds
-[ ]*20[ ]+movdb %eax,%mm0
-[ ]*21[ ]+movqb 0,%mm0
-[ ]*22[ ]+ldsb 0,%eax
-[ ]*23[ ]+setnew 0
-[ ]*24[ ]+movdw %eax,%mm0
-[ ]*25[ ]+movqw 0,%mm0
-[ ]*26[ ]+div %cx,%al
-[ ]*27[ ]+div %cl,%ax
-[ ]*28[ ]+div %ecx,%al
-[ ]*29[ ]+imul 10,%bx,%ecx
-[ ]*30[ ]+imul 10,%bx,%al
-[ ]*31[ ]+popab
-[ ]*32[ ]+stil
-[ ]*33[ ]+aaab
-[ ]*34[ ]+cwdel
-[ ]*35[ ]+cwdw
-[ ]*36[ ]+callww 0
-[ ]*37[ ]+foo: jaw foo
-[ ]*38[ ]+jcxzw foo
-[ ]*39[ ]+jecxzl foo
-[ ]*40[ ]+loopb foo
-[ ]*41[ ]+xlatw %es:%bx
-[ ]*42[ ]+xlatl %es:%bx
-[ ]*43[ ]+intl 2
-[ ]*44[ ]+int3b
-[ ]*45[ ]+hltb
-[ ]*46[ ]+fstb %st\(0\)
-[ ]*47[ ]+fcompll 28\(%ebp\)
-[ ]*48[ ]+fldlw \(%eax\)
-[ ]*49[ ]+movl \$%ebx,%eax
-[ ]*50[ ]+insertq \$4,\$2,%xmm2,%ebx
-[ ]*51[ ]+cvtsi2ssq \(%eax\),%xmm1
-[ ]*52[ ]+cvtsi2sdq \(%eax\),%xmm1
-[ ]*53[ ]+fnstsw %eax
-[ ]*54[ ]+fnstsw %al
-[ ]*55[ ]+fstsw %eax
-[ ]*56[ ]+fstsw %al
-[ ]*57[ ]+
+[ ]*2[ ]+\.allow_index_reg
+[ ]*3[ ]+\# All the following should be illegal
+[ ]*4[ ]+mov \(%dx\),%al
+[ ]*5[ ]+mov \(%eax,%esp,2\),%al
+[ ]*6[ ]+setae %eax
+[ ]*7[ ]+pushb %ds
+[ ]*8[ ]+popb %ds
+[ ]*9[ ]+pushb %al
+[ ]*10[ ]+popb %al
+[ ]*11[ ]+pushb %ah
+[ ]*12[ ]+popb %ah
+[ ]*13[ ]+pushb %ax
+[ ]*14[ ]+popb %ax
+[ ]*15[ ]+pushb %eax
+[ ]*16[ ]+popb %eax
+[ ]*17[ ]+movb %ds,%ax
+[ ]*18[ ]+movb %ds,%eax
+[ ]*19[ ]+movb %ax,%ds
+[ ]*20[ ]+movb %eax,%ds
+[ ]*21[ ]+movdb %eax,%mm0
+[ ]*22[ ]+movqb 0,%mm0
+[ ]*23[ ]+ldsb 0,%eax
+[ ]*24[ ]+setnew 0
+[ ]*25[ ]+movdw %eax,%mm0
+[ ]*26[ ]+movqw 0,%mm0
+[ ]*27[ ]+div %cx,%al
+[ ]*28[ ]+div %cl,%ax
+[ ]*29[ ]+div %ecx,%al
+[ ]*30[ ]+imul 10,%bx,%ecx
+[ ]*31[ ]+imul 10,%bx,%al
+[ ]*32[ ]+popab
+[ ]*33[ ]+stil
+[ ]*34[ ]+aaab
+[ ]*35[ ]+cwdel
+[ ]*36[ ]+cwdw
+[ ]*37[ ]+callww 0
+[ ]*38[ ]+foo: jaw foo
+[ ]*39[ ]+jcxzw foo
+[ ]*40[ ]+jecxzl foo
+[ ]*41[ ]+loopb foo
+[ ]*42[ ]+xlatw %es:%bx
+[ ]*43[ ]+xlatl %es:%bx
+[ ]*44[ ]+intl 2
+[ ]*45[ ]+int3b
+[ ]*46[ ]+hltb
+[ ]*47[ ]+fstb %st\(0\)
+[ ]*48[ ]+fcompll 28\(%ebp\)
+[ ]*49[ ]+fldlw \(%eax\)
+[ ]*50[ ]+movl \$%ebx,%eax
+[ ]*51[ ]+insertq \$4,\$2,%xmm2,%ebx
+[ ]*52[ ]+cvtsi2ssq \(%eax\),%xmm1
+[ ]*53[ ]+cvtsi2sdq \(%eax\),%xmm1
+[ ]*54[ ]+fnstsw %eax
+[ ]*55[ ]+fnstsw %al
+[ ]*56[ ]+fstsw %eax
+[ ]*57[ ]+fstsw %al
GAS LISTING .*
-[ ]*58[ ]+movnti %ax, \(%eax\)
-[ ]*59[ ]+movntiw %ax, \(%eax\)
-[ ]*60[ ]+
-[ ]*61[ ]+\.intel_syntax noprefix
-[ ]*62[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\]
-[ ]*63[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\]
-[ ]*64[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\]
-[ ]*65[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\]
-[ ]*66[ ]+movq xmm1, XMMWORD PTR \[esp\]
-[ ]*67[ ]+movq xmm1, DWORD PTR \[esp\]
-[ ]*68[ ]+movq xmm1, WORD PTR \[esp\]
-[ ]*69[ ]+movq xmm1, BYTE PTR \[esp\]
-[ ]*70[ ]+movq XMMWORD PTR \[esp\],xmm1
-[ ]*71[ ]+movq DWORD PTR \[esp\],xmm1
-[ ]*72[ ]+movq WORD PTR \[esp\],xmm1
-[ ]*73[ ]+movq BYTE PTR \[esp\],xmm1
-[ ]*74[ ]+fnstsw eax
-[ ]*75[ ]+fnstsw al
-[ ]*76[ ]+fstsw eax
-[ ]*77[ ]+fstsw al
-[ ]*78[ ]+
-[ ]*79[ ]+movsx ax, \[eax\]
-[ ]*80[ ]+movsx eax, \[eax\]
-[ ]*81[ ]+movzx ax, \[eax\]
-[ ]*82[ ]+movzx eax, \[eax\]
-[ ]*83[ ]+
-[ ]*84[ ]+movnti word ptr \[eax\], ax
+[ ]*58[ ]+
+[ ]*59[ ]+movnti %ax, \(%eax\)
+[ ]*60[ ]+movntiw %ax, \(%eax\)
+[ ]*61[ ]+
+[ ]*62[ ]+add \(%si,%esi\), %eax
+[ ]*63[ ]+add \(%esi,%si\), %eax
+[ ]*64[ ]+add \(%eiz\), %eax
+[ ]*65[ ]+add \(%eax\), %eiz
+[ ]*66[ ]+
+[ ]*67[ ]+\.intel_syntax noprefix
+[ ]*68[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\]
+[ ]*69[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\]
+[ ]*70[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\]
+[ ]*71[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\]
+[ ]*72[ ]+movq xmm1, XMMWORD PTR \[esp\]
+[ ]*73[ ]+movq xmm1, DWORD PTR \[esp\]
+[ ]*74[ ]+movq xmm1, WORD PTR \[esp\]
+[ ]*75[ ]+movq xmm1, BYTE PTR \[esp\]
+[ ]*76[ ]+movq XMMWORD PTR \[esp\],xmm1
+[ ]*77[ ]+movq DWORD PTR \[esp\],xmm1
+[ ]*78[ ]+movq WORD PTR \[esp\],xmm1
+[ ]*79[ ]+movq BYTE PTR \[esp\],xmm1
+[ ]*80[ ]+fnstsw eax
+[ ]*81[ ]+fnstsw al
+[ ]*82[ ]+fstsw eax
+[ ]*83[ ]+fstsw al
+[ ]*84[ ]+
+[ ]*85[ ]+movsx ax, \[eax\]
+[ ]*86[ ]+movsx eax, \[eax\]
+[ ]*87[ ]+movzx ax, \[eax\]
+[ ]*88[ ]+movzx eax, \[eax\]
+[ ]*89[ ]+
+[ ]*90[ ]+movnti word ptr \[eax\], ax
diff --git a/gas/testsuite/gas/i386/inval.s b/gas/testsuite/gas/i386/inval.s
index e33a148..4818baa 100644
--- a/gas/testsuite/gas/i386/inval.s
+++ b/gas/testsuite/gas/i386/inval.s
@@ -1,4 +1,5 @@
.text
+ .allow_index_reg
# All the following should be illegal
mov (%dx),%al
mov (%eax,%esp,2),%al
@@ -58,6 +59,11 @@ foo: jaw foo
movnti %ax, (%eax)
movntiw %ax, (%eax)
+ add (%si,%esi), %eax
+ add (%esi,%si), %eax
+ add (%eiz), %eax
+ add (%eax), %eiz
+
.intel_syntax noprefix
cvtsi2ss xmm1,QWORD PTR [eax]
cvtsi2sd xmm1,QWORD PTR [eax]
diff --git a/gas/testsuite/gas/i386/x86-64-inval.l b/gas/testsuite/gas/i386/x86-64-inval.l
index 11d5186..ad460c2 100644
--- a/gas/testsuite/gas/i386/x86-64-inval.l
+++ b/gas/testsuite/gas/i386/x86-64-inval.l
@@ -1,5 +1,4 @@
.*: Assembler messages:
-.*:3: Error: .*
.*:4: Error: .*
.*:5: Error: .*
.*:6: Error: .*
@@ -61,8 +60,9 @@
.*:62: Error: .*
.*:63: Error: .*
.*:64: Error: .*
-.*:66: Error: .*
+.*:65: Error: .*
.*:67: Error: .*
+.*:68: Error: .*
.*:70: Error: .*
.*:71: Error: .*
.*:72: Error: .*
@@ -75,8 +75,6 @@
.*:79: Error: .*
.*:80: Error: .*
.*:81: Error: .*
-.*:82: Error: .*
-.*:83: Error: .*
.*:84: Error: .*
.*:85: Error: .*
.*:86: Error: .*
@@ -97,112 +95,143 @@
.*:101: Error: .*
.*:102: Error: .*
.*:103: Error: .*
+.*:104: Error: .*
+.*:105: Error: .*
+.*:106: Error: .*
+.*:107: Error: .*
+.*:108: Error: .*
+.*:109: Error: .*
+.*:110: Error: .*
+.*:111: Error: .*
+.*:112: Error: .*
+.*:113: Error: .*
+.*:114: Error: .*
+.*:115: Error: .*
+.*:116: Error: .*
+.*:117: Error: .*
GAS LISTING .*
[ ]*1[ ]+\.text
-[ ]*2[ ]+\# All the following should be illegal for x86-64
-[ ]*3[ ]+aaa \# illegal
-[ ]*4[ ]+aad \# illegal
-[ ]*5[ ]+aam \# illegal
-[ ]*6[ ]+aas \# illegal
-[ ]*7[ ]+arpl %ax,%ax \# illegal
-[ ]*8[ ]+bound %eax,\(%rax\) \# illegal
-[ ]*9[ ]+calll \*%eax \# 32-bit data size not allowed
-[ ]*10[ ]+calll \*\(%ax\) \# 32-bit data size not allowed
-[ ]*11[ ]+calll \*\(%eax\) \# 32-bit data size not allowed
-[ ]*12[ ]+calll \*\(%r8\) \# 32-bit data size not allowed
-[ ]*13[ ]+calll \*\(%rax\) \# 32-bit data size not allowed
-[ ]*14[ ]+callq \*\(%ax\) \# no 16-bit addressing
-[ ]*15[ ]+daa \# illegal
-[ ]*16[ ]+das \# illegal
-[ ]*17[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands
-[ ]*18[ ]+into \# illegal
-[ ]*19[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter
-[ ]*20[ ]+jmpl \*%eax \# 32-bit data size not allowed
-[ ]*21[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed
-[ ]*22[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed
-[ ]*23[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed
-[ ]*24[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed
-[ ]*25[ ]+jmpq \*\(%ax\) \# no 16-bit addressing
-[ ]*26[ ]+lcalll \$0,\$0 \# illegal
-[ ]*27[ ]+lcallq \$0,\$0 \# illegal
-[ ]*28[ ]+ldsl %eax,\(%rax\) \# illegal
-[ ]*29[ ]+ldsq %rax,\(%rax\) \# illegal
-[ ]*30[ ]+lesl %eax,\(%rax\) \# illegal
-[ ]*31[ ]+lesq %rax,\(%rax\) \# illegal
-[ ]*32[ ]+ljmpl \$0,\$0 \# illegal
-[ ]*33[ ]+ljmpq \$0,\$0 \# illegal
-[ ]*34[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed
-[ ]*35[ ]+loopw foo \# No prefix exists to select CX as a counter
-[ ]*36[ ]+loopew foo \# No prefix exists to select CX as a counter
-[ ]*37[ ]+loopnew foo \# No prefix exists to select CX as a counter
-[ ]*38[ ]+loopnzw foo \# No prefix exists to select CX as a counter
-[ ]*39[ ]+loopzw foo \# No prefix exists to select CX as a counter
-[ ]*40[ ]+leavel \# can't have 32-bit stack operands
-[ ]*41[ ]+pop %ds \# illegal
-[ ]*42[ ]+pop %es \# illegal
-[ ]*43[ ]+pop %ss \# illegal
-[ ]*44[ ]+popa \# illegal
-[ ]*45[ ]+popl %eax \# can't have 32-bit stack operands
-[ ]*46[ ]+push %cs \# illegal
-[ ]*47[ ]+push %ds \# illegal
-[ ]*48[ ]+push %es \# illegal
-[ ]*49[ ]+push %ss \# illegal
-[ ]*50[ ]+pusha \# illegal
-[ ]*51[ ]+pushl %eax \# can't have 32-bit stack operands
-[ ]*52[ ]+pushfl \# can't have 32-bit stack operands
-[ ]*53[ ]+popfl \# can't have 32-bit stack operands
-[ ]*54[ ]+retl \# can't have 32-bit stack operands
-[ ]*55[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\.
-[ ]*56[ ]+fnstsw %eax
-[ ]*57[ ]+fnstsw %al
+[ ]*2[ ]+\.allow_index_reg
+[ ]*3[ ]+\# All the following should be illegal for x86-64
+[ ]*4[ ]+aaa \# illegal
+[ ]*5[ ]+aad \# illegal
+[ ]*6[ ]+aam \# illegal
+[ ]*7[ ]+aas \# illegal
+[ ]*8[ ]+arpl %ax,%ax \# illegal
+[ ]*9[ ]+bound %eax,\(%rax\) \# illegal
+[ ]*10[ ]+calll \*%eax \# 32-bit data size not allowed
+[ ]*11[ ]+calll \*\(%ax\) \# 32-bit data size not allowed
+[ ]*12[ ]+calll \*\(%eax\) \# 32-bit data size not allowed
+[ ]*13[ ]+calll \*\(%r8\) \# 32-bit data size not allowed
+[ ]*14[ ]+calll \*\(%rax\) \# 32-bit data size not allowed
+[ ]*15[ ]+callq \*\(%ax\) \# no 16-bit addressing
+[ ]*16[ ]+daa \# illegal
+[ ]*17[ ]+das \# illegal
+[ ]*18[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands
+[ ]*19[ ]+into \# illegal
+[ ]*20[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter
+[ ]*21[ ]+jmpl \*%eax \# 32-bit data size not allowed
+[ ]*22[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed
+[ ]*23[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed
+[ ]*24[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed
+[ ]*25[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed
+[ ]*26[ ]+jmpq \*\(%ax\) \# no 16-bit addressing
+[ ]*27[ ]+lcalll \$0,\$0 \# illegal
+[ ]*28[ ]+lcallq \$0,\$0 \# illegal
+[ ]*29[ ]+ldsl %eax,\(%rax\) \# illegal
+[ ]*30[ ]+ldsq %rax,\(%rax\) \# illegal
+[ ]*31[ ]+lesl %eax,\(%rax\) \# illegal
+[ ]*32[ ]+lesq %rax,\(%rax\) \# illegal
+[ ]*33[ ]+ljmpl \$0,\$0 \# illegal
+[ ]*34[ ]+ljmpq \$0,\$0 \# illegal
+[ ]*35[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed
+[ ]*36[ ]+loopw foo \# No prefix exists to select CX as a counter
+[ ]*37[ ]+loopew foo \# No prefix exists to select CX as a counter
+[ ]*38[ ]+loopnew foo \# No prefix exists to select CX as a counter
+[ ]*39[ ]+loopnzw foo \# No prefix exists to select CX as a counter
+[ ]*40[ ]+loopzw foo \# No prefix exists to select CX as a counter
+[ ]*41[ ]+leavel \# can't have 32-bit stack operands
+[ ]*42[ ]+pop %ds \# illegal
+[ ]*43[ ]+pop %es \# illegal
+[ ]*44[ ]+pop %ss \# illegal
+[ ]*45[ ]+popa \# illegal
+[ ]*46[ ]+popl %eax \# can't have 32-bit stack operands
+[ ]*47[ ]+push %cs \# illegal
+[ ]*48[ ]+push %ds \# illegal
+[ ]*49[ ]+push %es \# illegal
+[ ]*50[ ]+push %ss \# illegal
+[ ]*51[ ]+pusha \# illegal
+[ ]*52[ ]+pushl %eax \# can't have 32-bit stack operands
+[ ]*53[ ]+pushfl \# can't have 32-bit stack operands
+[ ]*54[ ]+popfl \# can't have 32-bit stack operands
+[ ]*55[ ]+retl \# can't have 32-bit stack operands
+[ ]*56[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\.
+[ ]*57[ ]+fnstsw %eax
GAS LISTING .*
-[ ]*58[ ]+fstsw %eax
-[ ]*59[ ]+fstsw %al
-[ ]*60[ ]+in \$8,%rax
-[ ]*61[ ]+out %rax,\$8
-[ ]*62[ ]+movzxl \(%rax\),%rax
-[ ]*63[ ]+movnti %ax, \(%rax\)
-[ ]*64[ ]+movntiw %ax, \(%rax\)
-[ ]*65[ ]+
-[ ]*66[ ]+mov 0x80000000\(%rax\),%ebx
-[ ]*67[ ]+mov 0x80000000,%ebx
-[ ]*68[ ]+
-[ ]*69[ ]+\.intel_syntax noprefix
-[ ]*70[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword
-[ ]*71[ ]+movq xmm1, XMMWORD PTR \[rsp\]
-[ ]*72[ ]+movq xmm1, DWORD PTR \[rsp\]
-[ ]*73[ ]+movq xmm1, WORD PTR \[rsp\]
-[ ]*74[ ]+movq xmm1, BYTE PTR \[rsp\]
-[ ]*75[ ]+movq XMMWORD PTR \[rsp\],xmm1
-[ ]*76[ ]+movq DWORD PTR \[rsp\],xmm1
-[ ]*77[ ]+movq WORD PTR \[rsp\],xmm1
-[ ]*78[ ]+movq BYTE PTR \[rsp\],xmm1
-[ ]*79[ ]+fnstsw eax
-[ ]*80[ ]+fnstsw al
-[ ]*81[ ]+fstsw eax
-[ ]*82[ ]+fstsw al
-[ ]*83[ ]+in rax,8
-[ ]*84[ ]+out 8,rax
-[ ]*85[ ]+movsx ax, \[rax\]
-[ ]*86[ ]+movsx eax, \[rax\]
-[ ]*87[ ]+movsx rax, \[rax\]
-[ ]*88[ ]+movzx ax, \[rax\]
-[ ]*89[ ]+movzx eax, \[rax\]
-[ ]*90[ ]+movzx rax, \[rax\]
-[ ]*91[ ]+movnti word ptr \[rax\], ax
-[ ]*92[ ]+calld eax \# 32-bit data size not allowed
-[ ]*93[ ]+calld \[ax\] \# 32-bit data size not allowed
-[ ]*94[ ]+calld \[eax\] \# 32-bit data size not allowed
-[ ]*95[ ]+calld \[r8\] \# 32-bit data size not allowed
-[ ]*96[ ]+calld \[rax\] \# 32-bit data size not allowed
-[ ]*97[ ]+callq \[ax\] \# no 16-bit addressing
-[ ]*98[ ]+jmpd eax \# 32-bit data size not allowed
-[ ]*99[ ]+jmpd \[ax\] \# 32-bit data size not allowed
-[ ]*100[ ]+jmpd \[eax\] \# 32-bit data size not allowed
-[ ]*101[ ]+jmpd \[r8\] \# 32-bit data size not allowed
-[ ]*102[ ]+jmpd \[rax\] \# 32-bit data size not allowed
-[ ]*103[ ]+jmpq \[ax\] \# no 16-bit addressing
+[ ]*58[ ]+fnstsw %al
+[ ]*59[ ]+fstsw %eax
+[ ]*60[ ]+fstsw %al
+[ ]*61[ ]+in \$8,%rax
+[ ]*62[ ]+out %rax,\$8
+[ ]*63[ ]+movzxl \(%rax\),%rax
+[ ]*64[ ]+movnti %ax, \(%rax\)
+[ ]*65[ ]+movntiw %ax, \(%rax\)
+[ ]*66[ ]+
+[ ]*67[ ]+mov 0x80000000\(%rax\),%ebx
+[ ]*68[ ]+mov 0x80000000,%ebx
+[ ]*69[ ]+
+[ ]*70[ ]+add \(%rip,%rsi\), %eax
+[ ]*71[ ]+add \(%rsi,%rip\), %eax
+[ ]*72[ ]+add \(,%rip\), %eax
+[ ]*73[ ]+add \(%eip,%esi\), %eax
+[ ]*74[ ]+add \(%esi,%eip\), %eax
+[ ]*75[ ]+add \(,%eip\), %eax
+[ ]*76[ ]+add \(%rsi,%esi\), %eax
+[ ]*77[ ]+add \(%esi,%rsi\), %eax
+[ ]*78[ ]+add \(%eiz\), %eax
+[ ]*79[ ]+add \(%riz\), %eax
+[ ]*80[ ]+add \(%rax\), %riz
+[ ]*81[ ]+add \(%rax\), %eiz
+[ ]*82[ ]+
+[ ]*83[ ]+\.intel_syntax noprefix
+[ ]*84[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword
+[ ]*85[ ]+movq xmm1, XMMWORD PTR \[rsp\]
+[ ]*86[ ]+movq xmm1, DWORD PTR \[rsp\]
+[ ]*87[ ]+movq xmm1, WORD PTR \[rsp\]
+[ ]*88[ ]+movq xmm1, BYTE PTR \[rsp\]
+[ ]*89[ ]+movq XMMWORD PTR \[rsp\],xmm1
+[ ]*90[ ]+movq DWORD PTR \[rsp\],xmm1
+[ ]*91[ ]+movq WORD PTR \[rsp\],xmm1
+[ ]*92[ ]+movq BYTE PTR \[rsp\],xmm1
+[ ]*93[ ]+fnstsw eax
+[ ]*94[ ]+fnstsw al
+[ ]*95[ ]+fstsw eax
+[ ]*96[ ]+fstsw al
+[ ]*97[ ]+in rax,8
+[ ]*98[ ]+out 8,rax
+[ ]*99[ ]+movsx ax, \[rax\]
+[ ]*100[ ]+movsx eax, \[rax\]
+[ ]*101[ ]+movsx rax, \[rax\]
+[ ]*102[ ]+movzx ax, \[rax\]
+[ ]*103[ ]+movzx eax, \[rax\]
+[ ]*104[ ]+movzx rax, \[rax\]
+[ ]*105[ ]+movnti word ptr \[rax\], ax
+[ ]*106[ ]+calld eax \# 32-bit data size not allowed
+[ ]*107[ ]+calld \[ax\] \# 32-bit data size not allowed
+[ ]*108[ ]+calld \[eax\] \# 32-bit data size not allowed
+[ ]*109[ ]+calld \[r8\] \# 32-bit data size not allowed
+[ ]*110[ ]+calld \[rax\] \# 32-bit data size not allowed
+[ ]*111[ ]+callq \[ax\] \# no 16-bit addressing
+[ ]*112[ ]+jmpd eax \# 32-bit data size not allowed
+[ ]*113[ ]+jmpd \[ax\] \# 32-bit data size not allowed
+[ ]*114[ ]+jmpd \[eax\] \# 32-bit data size not allowed
+ GAS LISTING .*
+
+
+[ ]*115[ ]+jmpd \[r8\] \# 32-bit data size not allowed
+[ ]*116[ ]+jmpd \[rax\] \# 32-bit data size not allowed
+[ ]*117[ ]+jmpq \[ax\] \# no 16-bit addressing
diff --git a/gas/testsuite/gas/i386/x86-64-inval.s b/gas/testsuite/gas/i386/x86-64-inval.s
index fd5e8dc..2c2f5db 100644
--- a/gas/testsuite/gas/i386/x86-64-inval.s
+++ b/gas/testsuite/gas/i386/x86-64-inval.s
@@ -1,4 +1,5 @@
.text
+ .allow_index_reg
# All the following should be illegal for x86-64
aaa # illegal
aad # illegal
@@ -66,6 +67,19 @@ movntiw %ax, (%rax)
mov 0x80000000(%rax),%ebx
mov 0x80000000,%ebx
+ add (%rip,%rsi), %eax
+ add (%rsi,%rip), %eax
+ add (,%rip), %eax
+ add (%eip,%esi), %eax
+ add (%esi,%eip), %eax
+ add (,%eip), %eax
+ add (%rsi,%esi), %eax
+ add (%esi,%rsi), %eax
+ add (%eiz), %eax
+ add (%riz), %eax
+ add (%rax), %riz
+ add (%rax), %eiz
+
.intel_syntax noprefix
cmpxchg16b dword ptr [rax] # Must be oword
movq xmm1, XMMWORD PTR [rsp]