PATCH: Add tests for invalid addresses and riz/eiz

H.J. Lu hongjiu.lu@intel.com
Sat Mar 2 01:59:00 GMT 2013


Hi,

I checkedf in this patch to add tests for invalid addresses and riz/eiz.


H.J.
---
Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/gas/testsuite/ChangeLog,v
retrieving revision 1.2193
diff -u -p -r1.2193 ChangeLog
--- ChangeLog	28 Feb 2013 20:50:18 -0000	1.2193
+++ ChangeLog	2 Mar 2013 01:54:46 -0000
@@ -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.
Index: gas/i386/inval.l
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/i386/inval.l,v
retrieving revision 1.8
diff -u -p -r1.8 inval.l
--- gas/i386/inval.l	15 Jan 2008 18:50:43 -0000	1.8
+++ gas/i386/inval.l	2 Mar 2013 01:54:47 -0000
@@ -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
Index: gas/i386/inval.s
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/i386/inval.s,v
retrieving revision 1.8
diff -u -p -r1.8 inval.s
--- gas/i386/inval.s	15 Jan 2008 18:50:43 -0000	1.8
+++ gas/i386/inval.s	2 Mar 2013 01:54:47 -0000
@@ -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]
Index: gas/i386/x86-64-inval.l
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/i386/x86-64-inval.l,v
retrieving revision 1.14
diff -u -p -r1.14 x86-64-inval.l
--- gas/i386/x86-64-inval.l	14 Sep 2009 13:57:45 -0000	1.14
+++ gas/i386/x86-64-inval.l	2 Mar 2013 01:54:47 -0000
@@ -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
Index: gas/i386/x86-64-inval.s
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/i386/x86-64-inval.s,v
retrieving revision 1.13
diff -u -p -r1.13 x86-64-inval.s
--- gas/i386/x86-64-inval.s	14 Sep 2009 13:57:45 -0000	1.13
+++ gas/i386/x86-64-inval.s	2 Mar 2013 01:54:47 -0000
@@ -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]



More information about the Binutils mailing list