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> 2013-02-28 H.J. Lu <hongjiu.lu@intel.com>
* gas/i386/i386.exp: Run inval-rep and x86-64-inval-rep. * gas/i386/i386.exp: Run inval-rep and x86-64-inval-rep.

View File

@ -1,5 +1,4 @@
.*: Assembler messages: .*: Assembler messages:
.*:3: Error: .*
.*:4: Error: .* .*:4: Error: .*
.*:5: Error: .* .*:5: Error: .*
.*:6: Error: .* .*:6: Error: .*
@ -53,14 +52,13 @@
.*:54: Error: .* .*:54: Error: .*
.*:55: Error: .* .*:55: Error: .*
.*:56: Error: .* .*:56: Error: .*
.*:58: Error: .* .*:57: Error: .*
.*:59: Error: .* .*:59: Error: .*
.*:60: Error: .*
.*:62: Error: .* .*:62: Error: .*
.*:63: Error: .* .*:63: Error: .*
.*:64: Error: .* .*:64: Error: .*
.*:65: Error: .* .*:65: Error: .*
.*:66: Error: .*
.*:67: Error: .*
.*:68: Error: .* .*:68: Error: .*
.*:69: Error: .* .*:69: Error: .*
.*:70: Error: .* .*:70: Error: .*
@ -71,98 +69,110 @@
.*:75: Error: .* .*:75: Error: .*
.*:76: Error: .* .*:76: Error: .*
.*:77: Error: .* .*:77: Error: .*
.*:78: Error: .*
.*:79: Error: .* .*:79: Error: .*
.*:80: Error: .* .*:80: Error: .*
.*:81: Error: .* .*:81: Error: .*
.*:82: Error: .* .*:82: Error: .*
.*:84: Error: .* .*:83: Error: .*
.*:85: Error: .*
.*:86: Error: .*
.*:87: Error: .*
.*:88: Error: .*
.*:90: Error: .*
GAS LISTING .* GAS LISTING .*
[ ]*1[ ]+\.text [ ]*1[ ]+\.text
[ ]*2[ ]+\# All the following should be illegal [ ]*2[ ]+\.allow_index_reg
[ ]*3[ ]+mov \(%dx\),%al [ ]*3[ ]+\# All the following should be illegal
[ ]*4[ ]+mov \(%eax,%esp,2\),%al [ ]*4[ ]+mov \(%dx\),%al
[ ]*5[ ]+setae %eax [ ]*5[ ]+mov \(%eax,%esp,2\),%al
[ ]*6[ ]+pushb %ds [ ]*6[ ]+setae %eax
[ ]*7[ ]+popb %ds [ ]*7[ ]+pushb %ds
[ ]*8[ ]+pushb %al [ ]*8[ ]+popb %ds
[ ]*9[ ]+popb %al [ ]*9[ ]+pushb %al
[ ]*10[ ]+pushb %ah [ ]*10[ ]+popb %al
[ ]*11[ ]+popb %ah [ ]*11[ ]+pushb %ah
[ ]*12[ ]+pushb %ax [ ]*12[ ]+popb %ah
[ ]*13[ ]+popb %ax [ ]*13[ ]+pushb %ax
[ ]*14[ ]+pushb %eax [ ]*14[ ]+popb %ax
[ ]*15[ ]+popb %eax [ ]*15[ ]+pushb %eax
[ ]*16[ ]+movb %ds,%ax [ ]*16[ ]+popb %eax
[ ]*17[ ]+movb %ds,%eax [ ]*17[ ]+movb %ds,%ax
[ ]*18[ ]+movb %ax,%ds [ ]*18[ ]+movb %ds,%eax
[ ]*19[ ]+movb %eax,%ds [ ]*19[ ]+movb %ax,%ds
[ ]*20[ ]+movdb %eax,%mm0 [ ]*20[ ]+movb %eax,%ds
[ ]*21[ ]+movqb 0,%mm0 [ ]*21[ ]+movdb %eax,%mm0
[ ]*22[ ]+ldsb 0,%eax [ ]*22[ ]+movqb 0,%mm0
[ ]*23[ ]+setnew 0 [ ]*23[ ]+ldsb 0,%eax
[ ]*24[ ]+movdw %eax,%mm0 [ ]*24[ ]+setnew 0
[ ]*25[ ]+movqw 0,%mm0 [ ]*25[ ]+movdw %eax,%mm0
[ ]*26[ ]+div %cx,%al [ ]*26[ ]+movqw 0,%mm0
[ ]*27[ ]+div %cl,%ax [ ]*27[ ]+div %cx,%al
[ ]*28[ ]+div %ecx,%al [ ]*28[ ]+div %cl,%ax
[ ]*29[ ]+imul 10,%bx,%ecx [ ]*29[ ]+div %ecx,%al
[ ]*30[ ]+imul 10,%bx,%al [ ]*30[ ]+imul 10,%bx,%ecx
[ ]*31[ ]+popab [ ]*31[ ]+imul 10,%bx,%al
[ ]*32[ ]+stil [ ]*32[ ]+popab
[ ]*33[ ]+aaab [ ]*33[ ]+stil
[ ]*34[ ]+cwdel [ ]*34[ ]+aaab
[ ]*35[ ]+cwdw [ ]*35[ ]+cwdel
[ ]*36[ ]+callww 0 [ ]*36[ ]+cwdw
[ ]*37[ ]+foo: jaw foo [ ]*37[ ]+callww 0
[ ]*38[ ]+jcxzw foo [ ]*38[ ]+foo: jaw foo
[ ]*39[ ]+jecxzl foo [ ]*39[ ]+jcxzw foo
[ ]*40[ ]+loopb foo [ ]*40[ ]+jecxzl foo
[ ]*41[ ]+xlatw %es:%bx [ ]*41[ ]+loopb foo
[ ]*42[ ]+xlatl %es:%bx [ ]*42[ ]+xlatw %es:%bx
[ ]*43[ ]+intl 2 [ ]*43[ ]+xlatl %es:%bx
[ ]*44[ ]+int3b [ ]*44[ ]+intl 2
[ ]*45[ ]+hltb [ ]*45[ ]+int3b
[ ]*46[ ]+fstb %st\(0\) [ ]*46[ ]+hltb
[ ]*47[ ]+fcompll 28\(%ebp\) [ ]*47[ ]+fstb %st\(0\)
[ ]*48[ ]+fldlw \(%eax\) [ ]*48[ ]+fcompll 28\(%ebp\)
[ ]*49[ ]+movl \$%ebx,%eax [ ]*49[ ]+fldlw \(%eax\)
[ ]*50[ ]+insertq \$4,\$2,%xmm2,%ebx [ ]*50[ ]+movl \$%ebx,%eax
[ ]*51[ ]+cvtsi2ssq \(%eax\),%xmm1 [ ]*51[ ]+insertq \$4,\$2,%xmm2,%ebx
[ ]*52[ ]+cvtsi2sdq \(%eax\),%xmm1 [ ]*52[ ]+cvtsi2ssq \(%eax\),%xmm1
[ ]*53[ ]+fnstsw %eax [ ]*53[ ]+cvtsi2sdq \(%eax\),%xmm1
[ ]*54[ ]+fnstsw %al [ ]*54[ ]+fnstsw %eax
[ ]*55[ ]+fstsw %eax [ ]*55[ ]+fnstsw %al
[ ]*56[ ]+fstsw %al [ ]*56[ ]+fstsw %eax
[ ]*57[ ]+ [ ]*57[ ]+fstsw %al
GAS LISTING .* GAS LISTING .*
[ ]*58[ ]+movnti %ax, \(%eax\) [ ]*58[ ]+
[ ]*59[ ]+movntiw %ax, \(%eax\) [ ]*59[ ]+movnti %ax, \(%eax\)
[ ]*60[ ]+ [ ]*60[ ]+movntiw %ax, \(%eax\)
[ ]*61[ ]+\.intel_syntax noprefix [ ]*61[ ]+
[ ]*62[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\] [ ]*62[ ]+add \(%si,%esi\), %eax
[ ]*63[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\] [ ]*63[ ]+add \(%esi,%si\), %eax
[ ]*64[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\] [ ]*64[ ]+add \(%eiz\), %eax
[ ]*65[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\] [ ]*65[ ]+add \(%eax\), %eiz
[ ]*66[ ]+movq xmm1, XMMWORD PTR \[esp\] [ ]*66[ ]+
[ ]*67[ ]+movq xmm1, DWORD PTR \[esp\] [ ]*67[ ]+\.intel_syntax noprefix
[ ]*68[ ]+movq xmm1, WORD PTR \[esp\] [ ]*68[ ]+cvtsi2ss xmm1,QWORD PTR \[eax\]
[ ]*69[ ]+movq xmm1, BYTE PTR \[esp\] [ ]*69[ ]+cvtsi2sd xmm1,QWORD PTR \[eax\]
[ ]*70[ ]+movq XMMWORD PTR \[esp\],xmm1 [ ]*70[ ]+cvtsi2ssq xmm1,QWORD PTR \[eax\]
[ ]*71[ ]+movq DWORD PTR \[esp\],xmm1 [ ]*71[ ]+cvtsi2sdq xmm1,QWORD PTR \[eax\]
[ ]*72[ ]+movq WORD PTR \[esp\],xmm1 [ ]*72[ ]+movq xmm1, XMMWORD PTR \[esp\]
[ ]*73[ ]+movq BYTE PTR \[esp\],xmm1 [ ]*73[ ]+movq xmm1, DWORD PTR \[esp\]
[ ]*74[ ]+fnstsw eax [ ]*74[ ]+movq xmm1, WORD PTR \[esp\]
[ ]*75[ ]+fnstsw al [ ]*75[ ]+movq xmm1, BYTE PTR \[esp\]
[ ]*76[ ]+fstsw eax [ ]*76[ ]+movq XMMWORD PTR \[esp\],xmm1
[ ]*77[ ]+fstsw al [ ]*77[ ]+movq DWORD PTR \[esp\],xmm1
[ ]*78[ ]+ [ ]*78[ ]+movq WORD PTR \[esp\],xmm1
[ ]*79[ ]+movsx ax, \[eax\] [ ]*79[ ]+movq BYTE PTR \[esp\],xmm1
[ ]*80[ ]+movsx eax, \[eax\] [ ]*80[ ]+fnstsw eax
[ ]*81[ ]+movzx ax, \[eax\] [ ]*81[ ]+fnstsw al
[ ]*82[ ]+movzx eax, \[eax\] [ ]*82[ ]+fstsw eax
[ ]*83[ ]+ [ ]*83[ ]+fstsw al
[ ]*84[ ]+movnti word ptr \[eax\], ax [ ]*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 .text
.allow_index_reg
# All the following should be illegal # All the following should be illegal
mov (%dx),%al mov (%dx),%al
mov (%eax,%esp,2),%al mov (%eax,%esp,2),%al
@ -58,6 +59,11 @@ foo: jaw foo
movnti %ax, (%eax) movnti %ax, (%eax)
movntiw %ax, (%eax) movntiw %ax, (%eax)
add (%si,%esi), %eax
add (%esi,%si), %eax
add (%eiz), %eax
add (%eax), %eiz
.intel_syntax noprefix .intel_syntax noprefix
cvtsi2ss xmm1,QWORD PTR [eax] cvtsi2ss xmm1,QWORD PTR [eax]
cvtsi2sd xmm1,QWORD PTR [eax] cvtsi2sd xmm1,QWORD PTR [eax]

View File

@ -1,5 +1,4 @@
.*: Assembler messages: .*: Assembler messages:
.*:3: Error: .*
.*:4: Error: .* .*:4: Error: .*
.*:5: Error: .* .*:5: Error: .*
.*:6: Error: .* .*:6: Error: .*
@ -61,8 +60,9 @@
.*:62: Error: .* .*:62: Error: .*
.*:63: Error: .* .*:63: Error: .*
.*:64: Error: .* .*:64: Error: .*
.*:66: Error: .* .*:65: Error: .*
.*:67: Error: .* .*:67: Error: .*
.*:68: Error: .*
.*:70: Error: .* .*:70: Error: .*
.*:71: Error: .* .*:71: Error: .*
.*:72: Error: .* .*:72: Error: .*
@ -75,8 +75,6 @@
.*:79: Error: .* .*:79: Error: .*
.*:80: Error: .* .*:80: Error: .*
.*:81: Error: .* .*:81: Error: .*
.*:82: Error: .*
.*:83: Error: .*
.*:84: Error: .* .*:84: Error: .*
.*:85: Error: .* .*:85: Error: .*
.*:86: Error: .* .*:86: Error: .*
@ -97,112 +95,143 @@
.*:101: Error: .* .*:101: Error: .*
.*:102: Error: .* .*:102: Error: .*
.*:103: 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 .* GAS LISTING .*
[ ]*1[ ]+\.text [ ]*1[ ]+\.text
[ ]*2[ ]+\# All the following should be illegal for x86-64 [ ]*2[ ]+\.allow_index_reg
[ ]*3[ ]+aaa \# illegal [ ]*3[ ]+\# All the following should be illegal for x86-64
[ ]*4[ ]+aad \# illegal [ ]*4[ ]+aaa \# illegal
[ ]*5[ ]+aam \# illegal [ ]*5[ ]+aad \# illegal
[ ]*6[ ]+aas \# illegal [ ]*6[ ]+aam \# illegal
[ ]*7[ ]+arpl %ax,%ax \# illegal [ ]*7[ ]+aas \# illegal
[ ]*8[ ]+bound %eax,\(%rax\) \# illegal [ ]*8[ ]+arpl %ax,%ax \# illegal
[ ]*9[ ]+calll \*%eax \# 32-bit data size not allowed [ ]*9[ ]+bound %eax,\(%rax\) \# illegal
[ ]*10[ ]+calll \*\(%ax\) \# 32-bit data size not allowed [ ]*10[ ]+calll \*%eax \# 32-bit data size not allowed
[ ]*11[ ]+calll \*\(%eax\) \# 32-bit data size not allowed [ ]*11[ ]+calll \*\(%ax\) \# 32-bit data size not allowed
[ ]*12[ ]+calll \*\(%r8\) \# 32-bit data size not allowed [ ]*12[ ]+calll \*\(%eax\) \# 32-bit data size not allowed
[ ]*13[ ]+calll \*\(%rax\) \# 32-bit data size not allowed [ ]*13[ ]+calll \*\(%r8\) \# 32-bit data size not allowed
[ ]*14[ ]+callq \*\(%ax\) \# no 16-bit addressing [ ]*14[ ]+calll \*\(%rax\) \# 32-bit data size not allowed
[ ]*15[ ]+daa \# illegal [ ]*15[ ]+callq \*\(%ax\) \# no 16-bit addressing
[ ]*16[ ]+das \# illegal [ ]*16[ ]+daa \# illegal
[ ]*17[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands [ ]*17[ ]+das \# illegal
[ ]*18[ ]+into \# illegal [ ]*18[ ]+enterl \$0,\$0 \# can't have 32-bit stack operands
[ ]*19[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter [ ]*19[ ]+into \# illegal
[ ]*20[ ]+jmpl \*%eax \# 32-bit data size not allowed [ ]*20[ ]+foo: jcxz foo \# No prefix exists to select CX as a counter
[ ]*21[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed [ ]*21[ ]+jmpl \*%eax \# 32-bit data size not allowed
[ ]*22[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed [ ]*22[ ]+jmpl \*\(%ax\) \# 32-bit data size not allowed
[ ]*23[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed [ ]*23[ ]+jmpl \*\(%eax\) \# 32-bit data size not allowed
[ ]*24[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed [ ]*24[ ]+jmpl \*\(%r8\) \# 32-bit data size not allowed
[ ]*25[ ]+jmpq \*\(%ax\) \# no 16-bit addressing [ ]*25[ ]+jmpl \*\(%rax\) \# 32-bit data size not allowed
[ ]*26[ ]+lcalll \$0,\$0 \# illegal [ ]*26[ ]+jmpq \*\(%ax\) \# no 16-bit addressing
[ ]*27[ ]+lcallq \$0,\$0 \# illegal [ ]*27[ ]+lcalll \$0,\$0 \# illegal
[ ]*28[ ]+ldsl %eax,\(%rax\) \# illegal [ ]*28[ ]+lcallq \$0,\$0 \# illegal
[ ]*29[ ]+ldsq %rax,\(%rax\) \# illegal [ ]*29[ ]+ldsl %eax,\(%rax\) \# illegal
[ ]*30[ ]+lesl %eax,\(%rax\) \# illegal [ ]*30[ ]+ldsq %rax,\(%rax\) \# illegal
[ ]*31[ ]+lesq %rax,\(%rax\) \# illegal [ ]*31[ ]+lesl %eax,\(%rax\) \# illegal
[ ]*32[ ]+ljmpl \$0,\$0 \# illegal [ ]*32[ ]+lesq %rax,\(%rax\) \# illegal
[ ]*33[ ]+ljmpq \$0,\$0 \# illegal [ ]*33[ ]+ljmpl \$0,\$0 \# illegal
[ ]*34[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed [ ]*34[ ]+ljmpq \$0,\$0 \# illegal
[ ]*35[ ]+loopw foo \# No prefix exists to select CX as a counter [ ]*35[ ]+ljmpq \*\(%rax\) \# 64-bit data size not allowed
[ ]*36[ ]+loopew foo \# No prefix exists to select CX as a counter [ ]*36[ ]+loopw foo \# No prefix exists to select CX as a counter
[ ]*37[ ]+loopnew foo \# No prefix exists to select CX as a counter [ ]*37[ ]+loopew foo \# No prefix exists to select CX as a counter
[ ]*38[ ]+loopnzw foo \# No prefix exists to select CX as a counter [ ]*38[ ]+loopnew foo \# No prefix exists to select CX as a counter
[ ]*39[ ]+loopzw foo \# No prefix exists to select CX as a counter [ ]*39[ ]+loopnzw foo \# No prefix exists to select CX as a counter
[ ]*40[ ]+leavel \# can't have 32-bit stack operands [ ]*40[ ]+loopzw foo \# No prefix exists to select CX as a counter
[ ]*41[ ]+pop %ds \# illegal [ ]*41[ ]+leavel \# can't have 32-bit stack operands
[ ]*42[ ]+pop %es \# illegal [ ]*42[ ]+pop %ds \# illegal
[ ]*43[ ]+pop %ss \# illegal [ ]*43[ ]+pop %es \# illegal
[ ]*44[ ]+popa \# illegal [ ]*44[ ]+pop %ss \# illegal
[ ]*45[ ]+popl %eax \# can't have 32-bit stack operands [ ]*45[ ]+popa \# illegal
[ ]*46[ ]+push %cs \# illegal [ ]*46[ ]+popl %eax \# can't have 32-bit stack operands
[ ]*47[ ]+push %ds \# illegal [ ]*47[ ]+push %cs \# illegal
[ ]*48[ ]+push %es \# illegal [ ]*48[ ]+push %ds \# illegal
[ ]*49[ ]+push %ss \# illegal [ ]*49[ ]+push %es \# illegal
[ ]*50[ ]+pusha \# illegal [ ]*50[ ]+push %ss \# illegal
[ ]*51[ ]+pushl %eax \# can't have 32-bit stack operands [ ]*51[ ]+pusha \# illegal
[ ]*52[ ]+pushfl \# can't have 32-bit stack operands [ ]*52[ ]+pushl %eax \# can't have 32-bit stack operands
[ ]*53[ ]+popfl \# can't have 32-bit stack operands [ ]*53[ ]+pushfl \# can't have 32-bit stack operands
[ ]*54[ ]+retl \# can't have 32-bit stack operands [ ]*54[ ]+popfl \# can't have 32-bit stack operands
[ ]*55[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\. [ ]*55[ ]+retl \# can't have 32-bit stack operands
[ ]*56[ ]+fnstsw %eax [ ]*56[ ]+insertq \$4,\$2,%xmm2,%ebx \# The last operand must be XMM register\.
[ ]*57[ ]+fnstsw %al [ ]*57[ ]+fnstsw %eax
GAS LISTING .* GAS LISTING .*
[ ]*58[ ]+fstsw %eax [ ]*58[ ]+fnstsw %al
[ ]*59[ ]+fstsw %al [ ]*59[ ]+fstsw %eax
[ ]*60[ ]+in \$8,%rax [ ]*60[ ]+fstsw %al
[ ]*61[ ]+out %rax,\$8 [ ]*61[ ]+in \$8,%rax
[ ]*62[ ]+movzxl \(%rax\),%rax [ ]*62[ ]+out %rax,\$8
[ ]*63[ ]+movnti %ax, \(%rax\) [ ]*63[ ]+movzxl \(%rax\),%rax
[ ]*64[ ]+movntiw %ax, \(%rax\) [ ]*64[ ]+movnti %ax, \(%rax\)
[ ]*65[ ]+ [ ]*65[ ]+movntiw %ax, \(%rax\)
[ ]*66[ ]+mov 0x80000000\(%rax\),%ebx [ ]*66[ ]+
[ ]*67[ ]+mov 0x80000000,%ebx [ ]*67[ ]+mov 0x80000000\(%rax\),%ebx
[ ]*68[ ]+ [ ]*68[ ]+mov 0x80000000,%ebx
[ ]*69[ ]+\.intel_syntax noprefix [ ]*69[ ]+
[ ]*70[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword [ ]*70[ ]+add \(%rip,%rsi\), %eax
[ ]*71[ ]+movq xmm1, XMMWORD PTR \[rsp\] [ ]*71[ ]+add \(%rsi,%rip\), %eax
[ ]*72[ ]+movq xmm1, DWORD PTR \[rsp\] [ ]*72[ ]+add \(,%rip\), %eax
[ ]*73[ ]+movq xmm1, WORD PTR \[rsp\] [ ]*73[ ]+add \(%eip,%esi\), %eax
[ ]*74[ ]+movq xmm1, BYTE PTR \[rsp\] [ ]*74[ ]+add \(%esi,%eip\), %eax
[ ]*75[ ]+movq XMMWORD PTR \[rsp\],xmm1 [ ]*75[ ]+add \(,%eip\), %eax
[ ]*76[ ]+movq DWORD PTR \[rsp\],xmm1 [ ]*76[ ]+add \(%rsi,%esi\), %eax
[ ]*77[ ]+movq WORD PTR \[rsp\],xmm1 [ ]*77[ ]+add \(%esi,%rsi\), %eax
[ ]*78[ ]+movq BYTE PTR \[rsp\],xmm1 [ ]*78[ ]+add \(%eiz\), %eax
[ ]*79[ ]+fnstsw eax [ ]*79[ ]+add \(%riz\), %eax
[ ]*80[ ]+fnstsw al [ ]*80[ ]+add \(%rax\), %riz
[ ]*81[ ]+fstsw eax [ ]*81[ ]+add \(%rax\), %eiz
[ ]*82[ ]+fstsw al [ ]*82[ ]+
[ ]*83[ ]+in rax,8 [ ]*83[ ]+\.intel_syntax noprefix
[ ]*84[ ]+out 8,rax [ ]*84[ ]+cmpxchg16b dword ptr \[rax\] \# Must be oword
[ ]*85[ ]+movsx ax, \[rax\] [ ]*85[ ]+movq xmm1, XMMWORD PTR \[rsp\]
[ ]*86[ ]+movsx eax, \[rax\] [ ]*86[ ]+movq xmm1, DWORD PTR \[rsp\]
[ ]*87[ ]+movsx rax, \[rax\] [ ]*87[ ]+movq xmm1, WORD PTR \[rsp\]
[ ]*88[ ]+movzx ax, \[rax\] [ ]*88[ ]+movq xmm1, BYTE PTR \[rsp\]
[ ]*89[ ]+movzx eax, \[rax\] [ ]*89[ ]+movq XMMWORD PTR \[rsp\],xmm1
[ ]*90[ ]+movzx rax, \[rax\] [ ]*90[ ]+movq DWORD PTR \[rsp\],xmm1
[ ]*91[ ]+movnti word ptr \[rax\], ax [ ]*91[ ]+movq WORD PTR \[rsp\],xmm1
[ ]*92[ ]+calld eax \# 32-bit data size not allowed [ ]*92[ ]+movq BYTE PTR \[rsp\],xmm1
[ ]*93[ ]+calld \[ax\] \# 32-bit data size not allowed [ ]*93[ ]+fnstsw eax
[ ]*94[ ]+calld \[eax\] \# 32-bit data size not allowed [ ]*94[ ]+fnstsw al
[ ]*95[ ]+calld \[r8\] \# 32-bit data size not allowed [ ]*95[ ]+fstsw eax
[ ]*96[ ]+calld \[rax\] \# 32-bit data size not allowed [ ]*96[ ]+fstsw al
[ ]*97[ ]+callq \[ax\] \# no 16-bit addressing [ ]*97[ ]+in rax,8
[ ]*98[ ]+jmpd eax \# 32-bit data size not allowed [ ]*98[ ]+out 8,rax
[ ]*99[ ]+jmpd \[ax\] \# 32-bit data size not allowed [ ]*99[ ]+movsx ax, \[rax\]
[ ]*100[ ]+jmpd \[eax\] \# 32-bit data size not allowed [ ]*100[ ]+movsx eax, \[rax\]
[ ]*101[ ]+jmpd \[r8\] \# 32-bit data size not allowed [ ]*101[ ]+movsx rax, \[rax\]
[ ]*102[ ]+jmpd \[rax\] \# 32-bit data size not allowed [ ]*102[ ]+movzx ax, \[rax\]
[ ]*103[ ]+jmpq \[ax\] \# no 16-bit addressing [ ]*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 .text
.allow_index_reg
# All the following should be illegal for x86-64 # All the following should be illegal for x86-64
aaa # illegal aaa # illegal
aad # illegal aad # illegal
@ -66,6 +67,19 @@ movntiw %ax, (%rax)
mov 0x80000000(%rax),%ebx mov 0x80000000(%rax),%ebx
mov 0x80000000,%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 .intel_syntax noprefix
cmpxchg16b dword ptr [rax] # Must be oword cmpxchg16b dword ptr [rax] # Must be oword
movq xmm1, XMMWORD PTR [rsp] movq xmm1, XMMWORD PTR [rsp]