Add tests for invalid addresses and riz/eiz
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 2 Mar 2013 01:55:20 +0000 (01:55 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 2 Mar 2013 01:55:20 +0000 (01:55 +0000)
* 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.

gas/testsuite/ChangeLog
gas/testsuite/gas/i386/inval.l
gas/testsuite/gas/i386/inval.s
gas/testsuite/gas/i386/x86-64-inval.l
gas/testsuite/gas/i386/x86-64-inval.s

index 5107894..dd23d56 100644 (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.
index 3f74e9a..bec6b75 100644 (file)
@@ -1,5 +1,4 @@
 .*: Assembler messages:
-.*:3: Error: .*
 .*:4: Error: .*
 .*:5: Error: .*
 .*:6: Error: .*
 .*: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: .*
 .*: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
 \fGAS 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 e33a148..4818baa 100644 (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]
index 11d5186..ad460c2 100644 (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: .*
 .*: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
 \fGAS 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
+\fGAS 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 fd5e8dc..2c2f5db 100644 (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]