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.
This commit is contained in:
H.J. Lu 2013-03-02 01:55:20 +00:00
parent d79e58d83c
commit 5fe308e1a3
5 changed files with 263 additions and 194 deletions

View file

@ -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.

View file

@ -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

View file

@ -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]

View file

@ -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

View file

@ -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]