From 4c5b8d1e01195f5c11048d99d71f39ddb5449f12 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Thu, 23 Feb 2017 11:00:44 +0100 Subject: [PATCH] x86: extend 64-bit invalid MPX insn forms testcase --- gas/ChangeLog | 7 + gas/testsuite/gas/i386/x86-64-mpx-inval-2.l | 375 +++++++++++--------- gas/testsuite/gas/i386/x86-64-mpx-inval-2.s | 15 + 3 files changed, 226 insertions(+), 171 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 2b118053d9..c306584b12 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2017-02-21 Jan Beulich + + * gas/testsuite/gas/i386/x86-64-mpx-inval-2.d: Add 32- and 16- + bit GPR forms of BNDCL, BNDCU, and BNDCN. Add RSP-as-index + Intel syntax forms of BNDMK, BNDSTX, and BNDLDX. + * gas/testsuite/gas/i386/x86-64-mpx-inval-2.l: Adjust. + 2017-02-22 Maciej W. Rozycki * ecoff.c (ecoff_directive_end) [md_flush_pending_output]: Call diff --git a/gas/testsuite/gas/i386/x86-64-mpx-inval-2.l b/gas/testsuite/gas/i386/x86-64-mpx-inval-2.l index 8bd427c610..ed69fe5b03 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-inval-2.l +++ b/gas/testsuite/gas/i386/x86-64-mpx-inval-2.l @@ -9,44 +9,59 @@ .*:16: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:19: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:20: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:23: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:24: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:27: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:28: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:21: Error: .* `bndcl' +.*:22: Error: .* `bndcl' +.*:25: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:26: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:27: Error: .* `bndcu' +.*:28: Error: .* `bndcu' .*:31: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:32: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:33: Warning: register scaling is being ignored here -.*:34: Error: `base\(%rip\)' cannot be used here -.*:35: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:33: Error: .* `bndcn' +.*:34: Error: .* `bndcn' +.*:37: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:38: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:39: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:40: Warning: register scaling is being ignored here -.*:41: Error: `base\(%rip\)' cannot be used here -.*:42: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:39: Warning: register scaling is being ignored here +.*:40: Error: `base\(%rip\)' cannot be used here +.*:41: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:44: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:45: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:46: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:47: Error: `\[rip\]' cannot be used here +.*:46: Warning: register scaling is being ignored here +.*:47: Error: `base\(%rip\)' cannot be used here .*:48: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:51: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:52: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:53: Error: `\[rip\]' cannot be used here .*:54: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:55: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:55: Error: `\[rax\+rsp\]' is not a valid base/index expression .*:58: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:59: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:61: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:62: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:63: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:65: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:66: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:67: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:70: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:67: Error: .* `bndcl' +.*:68: Error: .* `bndcl' .*:71: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:72: Warning: register scaling is being ignored here -.*:73: Error: `\[rip\+base\]' cannot be used here -.*:74: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:72: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:73: Error: .* `bndcu' +.*:74: Error: .* `bndcu' .*:77: Error: 32-bit address isn't allowed in 64-bit MPX instructions. .*:78: Error: 32-bit address isn't allowed in 64-bit MPX instructions. -.*:79: Warning: register scaling is being ignored here -.*:80: Error: `\[rip\+base\]' cannot be used here -.*:81: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:79: Error: .* `bndcn' +.*:80: Error: .* `bndcn' +.*:83: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:84: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:85: Warning: register scaling is being ignored here +.*:86: Error: `\[rip\+base\]' cannot be used here +.*:87: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:88: Error: `\[rax\+rsp\]' is not a valid base/index expression +.*:91: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:92: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:93: Warning: register scaling is being ignored here +.*:94: Error: `\[rip\+base\]' cannot be used here +.*:95: Error: 32-bit address isn't allowed in 64-bit MPX instructions. +.*:96: Error: `\[rax\+rsp\]' is not a valid base/index expression GAS LISTING .* @@ -54,175 +69,193 @@ GAS LISTING .* [ ]*2[ ]+\.allow_index_reg [ ]*3[ ]+\.text [ ]*4[ ]+ -[ ]*5[ ]+\#\#\# bndmk -[ ]*6[ ]+\?\?\?\? 67F30F1B bndmk \(%eax\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*6[ ]+08 -[ ]*7[ ]+\?\?\?\? 67F30F1B bndmk 0x3\(%ecx,%ebx,1\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*7[ ]+4C1903 -[ ]*8[ ]+bndmk \(%rip\), %bnd3 -[ ]*9[ ]+\?\?\?\? 67F30F1B bndmk \(%eip\), %bnd2 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*9[ ]+15000000 -[ ]*9[ ]+00 -[ ]*10[ ]+ -[ ]*11[ ]+\#\#\# bndmov -[ ]*12[ ]+\?\?\?\? 6766410F bndmov \(%r8d\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*12[ ]+1A08 -[ ]*13[ ]+\?\?\?\? 6766410F bndmov 0x3\(%r9d,%edx,1\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*13[ ]+1A4C1103 -[ ]*14[ ]+ -[ ]*15[ ]+\?\?\?\? 67660F1B bndmov %bnd1, \(%eax\) -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*15[ ]+08 -[ ]*16[ ]+\?\?\?\? 67660F1B bndmov %bnd1, 0x3\(%ecx,%eax,1\) -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*16[ ]+4C0103 -[ ]*17[ ]+ -[ ]*18[ ]+\#\#\# bndcl -[ ]*19[ ]+\?\?\?\? 67F30F1A bndcl \(%ecx\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*19[ ]+09 -[ ]*20[ ]+\?\?\?\? 67F30F1A bndcl 0x3\(%ecx,%eax,1\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*20[ ]+4C0103 -[ ]*21[ ]+ -[ ]*22[ ]+\#\#\# bndcu -[ ]*23[ ]+\?\?\?\? 67F20F1A bndcu \(%ecx\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*23[ ]+09 -[ ]*24[ ]+\?\?\?\? 67F20F1A bndcu 0x3\(%ecx,%eax,1\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*24[ ]+4C0103 -[ ]*25[ ]+ -[ ]*26[ ]+\#\#\# bndcn -[ ]*27[ ]+\?\?\?\? 67F20F1B bndcn \(%ecx\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*27[ ]+09 -[ ]*28[ ]+\?\?\?\? 67F20F1B bndcn 0x3\(%ecx,%eax,1\), %bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*28[ ]+4C0103 -[ ]*29[ ]+ -[ ]*30[ ]+\#\#\# bndstx +[ ]*[1-9][0-9]*[ ]+\#\#\# bndmk +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1B bndmk \(%eax\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1B bndmk 0x3\(%ecx,%ebx,1\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C1903 +[ ]*[1-9][0-9]*[ ]+bndmk \(%rip\), %bnd3 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1B bndmk \(%eip\), %bnd2 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+15000000 +[ ]*[1-9][0-9]*[ ]+00 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndmov +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 6766410F bndmov \(%r8d\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+1A08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 6766410F bndmov 0x3\(%r9d,%edx,1\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+1A4C1103 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67660F1B bndmov %bnd1, \(%eax\) +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67660F1B bndmov %bnd1, 0x3\(%ecx,%eax,1\) +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0103 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndcl +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1A bndcl \(%ecx\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+09 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1A bndcl 0x3\(%ecx,%eax,1\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0103 +[ ]*[1-9][0-9]*[ ]+bndcl %ecx, %bnd1 +[ ]*[1-9][0-9]*[ ]+bndcl %cx, %bnd1 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndcu +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1A bndcu \(%ecx\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+09 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1A bndcu 0x3\(%ecx,%eax,1\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0103 +[ ]*[1-9][0-9]*[ ]+bndcu %ecx, %bnd1 +[ ]*[1-9][0-9]*[ ]+bndcu %cx, %bnd1 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndcn +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1B bndcn \(%ecx\), %bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+09 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1B bndcn 0x3\(%ecx,%eax,1\), %bnd1 GAS LISTING .* -[ ]*31[ ]+\?\?\?\? 670F1B44 bndstx %bnd0, 0x3\(%eax,%ebx,1\) .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*31[ ]+1803 -[ ]*32[ ]+\?\?\?\? 670F1B53 bndstx %bnd2, 3\(%ebx,1\) +[ ]*[1-9][0-9]*[ ]+4C0103 +[ ]*[1-9][0-9]*[ ]+bndcn %ecx, %bnd1 +[ ]*[1-9][0-9]*[ ]+bndcn %cx, %bnd1 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndstx +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1B44 bndstx %bnd0, 0x3\(%eax,%ebx,1\) +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+1803 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1B53 bndstx %bnd2, 3\(%ebx,1\) .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*32[ ]+03 -[ ]*33[ ]+\?\?\?\? 410F1B0C bndstx %bnd1, \(%r15,%rax,2\) +[ ]*[1-9][0-9]*[ ]+03 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 410F1B0C bndstx %bnd1, \(%r15,%rax,2\) .* Warning: register scaling is being ignored here -[ ]*33[ ]+47 -[ ]*34[ ]+bndstx %bnd3, base\(%rip\) -[ ]*35[ ]+\?\?\?\? 670F1B0D bndstx %bnd1, base\(%eip\) +[ ]*[1-9][0-9]*[ ]+47 +[ ]*[1-9][0-9]*[ ]+bndstx %bnd3, base\(%rip\) +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1B0D bndstx %bnd1, base\(%eip\) .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*35[ ]+[0-9a-f][0-9a-f][0-9a-f]00000 -[ ]*36[ ]+ -[ ]*37[ ]+\#\#\# bndldx -[ ]*38[ ]+\?\?\?\? 670F1A44 bndldx 0x3\(%eax,%ebx,1\), %bnd0 +[ ]*[1-9][0-9]*[ ]+[0-9a-f][0-9a-f][0-9a-f]00000 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndldx +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1A44 bndldx 0x3\(%eax,%ebx,1\), %bnd0 .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*38[ ]+1803 -[ ]*39[ ]+\?\?\?\? 670F1A53 bndldx 3\(%ebx,1\), %bnd2 +[ ]*[1-9][0-9]*[ ]+1803 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1A53 bndldx 3\(%ebx,1\), %bnd2 .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*39[ ]+03 -[ ]*40[ ]*\?\?\?\? 420F1A1C bndldx \(%rax,%r15,4\), %bnd3 +[ ]*[1-9][0-9]*[ ]+03 +[ ]*[1-9][0-9]*[ ]*\?\?\?\? 420F1A1C bndldx \(%rax,%r15,4\), %bnd3 .* Warning: register scaling is being ignored here -[ ]*40[ ]*B8 -[ ]*41[ ]*bndldx base\(%rip\), %bnd1 -[ ]*42[ ]*\?\?\?\? 670F1A1D bndldx base\(%eip\), %bnd3 +[ ]*[1-9][0-9]*[ ]*B8 +[ ]*[1-9][0-9]*[ ]*bndldx base\(%rip\), %bnd1 +[ ]*[1-9][0-9]*[ ]*\?\?\?\? 670F1A1D bndldx base\(%eip\), %bnd3 .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*42[ ]*[0-9a-f][0-9a-f][0-9a-f]00000 -[ ]*43[ ]+ -[ ]*44[ ]+\.intel_syntax noprefix -[ ]*45[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[eax\] +[ ]*[1-9][0-9]*[ ]+[0-9a-f][0-9a-f][0-9a-f]00000 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\.intel_syntax noprefix +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[eax\] .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*45[ ]+08 -[ ]*46[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[edx\+1\*eax\+0x3\] +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[edx\+1\*eax\+0x3\] .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*46[ ]+4C0203 -[ ]*47[ ]*bndmk bnd3, \[rip\] -[ ]*48[ ]*\?\?\?\? 67F30F1B bndmk bnd2, \[eip\] +[ ]*[1-9][0-9]*[ ]+4C0203 +[ ]*[1-9][0-9]*[ ]*bndmk bnd3, \[rip\] +[ ]*[1-9][0-9]*[ ]*\?\?\?\? 67F30F1B bndmk bnd2, \[eip\] .* Error: 32-bit address isn't allowed in 64-bit MPX instructions. -[ ]*48[ ]*15000000 -[ ]*48[ ]*00 -[ ]*49[ ]+ -[ ]*50[ ]+\#\#\# bndmov -[ ]*51[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[eax\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*51[ ]+08 -[ ]*52[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[edx\+1\*eax\+0x3\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*52[ ]+4C0203 -[ ]*53[ ]+ -[ ]*54[ ]+\?\?\?\? 67660F1B bndmov \[eax\], bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*54[ ]+08 -[ ]*55[ ]+\?\?\?\? 67660F1B bndmov \[edx\+1\*eax\+0x3\], bnd1 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*55[ ]+4C0203 -[ ]*56[ ]+ +[ ]*[1-9][0-9]*[ ]*15000000 +[ ]*[1-9][0-9]*[ ]*00 +[ ]*[1-9][0-9]*[ ]+bndmk bnd2, \[rax\+rsp\] +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndmov +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[eax\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[edx\+1\*eax\+0x3\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0203 +[ ]*[1-9][0-9]*[ ]+ GAS LISTING .* -[ ]*57[ ]+\#\#\# bndcl -[ ]*58[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[eax\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*58[ ]+08 -[ ]*59[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[edx\+1\*eax\+0x3\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*59[ ]+4C0203 -[ ]*60[ ]+ -[ ]*61[ ]+\#\#\# bndcu -[ ]*62[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[eax\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*62[ ]+08 -[ ]*63[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[edx\+1\*eax\+0x3\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*63[ ]+4C0203 -[ ]*64[ ]+ -[ ]*65[ ]+\#\#\# bndcn -[ ]*66[ ]+\?\?\?\? 67F20F1B bndcn bnd1, \[eax\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*66[ ]+08 -[ ]*67[ ]+\?\?\?\? 67F20F1B bndcn bnd1, \[edx\+1\*eax\+0x3\] -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*67[ ]+4C0203 -[ ]*68[ ]+ -[ ]*69[ ]+\#\#\# bndstx -[ ]*70[ ]+\?\?\?\? 670F1B44 bndstx \[eax\+ebx\*1\+0x3\], bnd0 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*70[ ]+1803 -[ ]*71[ ]+\?\?\?\? 670F1B14 bndstx \[1\*ebx\+3\], bnd2 -.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*71[ ]+1D030000 -[ ]*71[ ]+00 -[ ]*72[ ]+\?\?\?\? 410F1B14 bndstx \[r8\+rdi\*4\], bnd2 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67660F1B bndmov \[eax\], bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67660F1B bndmov \[edx\+1\*eax\+0x3\], bnd1 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0203 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndcl +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[eax\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[edx\+1\*eax\+0x3\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0203 +[ ]*[1-9][0-9]*[ ]+bndcl bnd1, eax +[ ]*[1-9][0-9]*[ ]+bndcl bnd1, dx +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndcu +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[eax\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[edx\+1\*eax\+0x3\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0203 +[ ]*[1-9][0-9]*[ ]+bndcu bnd1, eax +[ ]*[1-9][0-9]*[ ]+bndcu bnd1, dx +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndcn +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1B bndcn bnd1, \[eax\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+08 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 67F20F1B bndcn bnd1, \[edx\+1\*eax\+0x3\] +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+4C0203 +[ ]*[1-9][0-9]*[ ]+bndcn bnd1, eax +[ ]*[1-9][0-9]*[ ]+bndcn bnd1, dx +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndstx +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1B44 bndstx \[eax\+ebx\*1\+0x3\], bnd0 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+1803 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1B14 bndstx \[1\*ebx\+3\], bnd2 +.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. +[ ]*[1-9][0-9]*[ ]+1D030000 +[ ]*[1-9][0-9]*[ ]+00 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 410F1B14 bndstx \[r8\+rdi\*4\], bnd2 .* Warning: register scaling is being ignored here -[ ]*72[ ]+B8 -[ ]*73[ ]+bndstx \[rip\+base\], bnd1 -[ ]*74[ ]+\?\?\?\? 670F1B1D bndstx \[eip\+base\], bnd3 +[ ]*[1-9][0-9]*[ ]+B8 +[ ]*[1-9][0-9]*[ ]+bndstx \[rip\+base\], bnd1 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1B1D bndstx \[eip\+base\], bnd3 .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*74[ ]+[0-9a-f][0-9a-f][0-9a-f]00000 -[ ]*75[ ]+ -[ ]*76[ ]+\#\#\# bndldx -[ ]*77[ ]+\?\?\?\? 670F1A44 bndldx bnd0, \[eax\+ebx\*1\+0x3\] +[ ]*[1-9][0-9]*[ ]+[0-9a-f][0-9a-f][0-9a-f]00000 +[ ]*[1-9][0-9]*[ ]+bndstx \[rax\+rsp\], bnd3 +[ ]*[1-9][0-9]*[ ]+ +[ ]*[1-9][0-9]*[ ]+\#\#\# bndldx +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1A44 bndldx bnd0, \[eax\+ebx\*1\+0x3\] .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*77[ ]+1803 -[ ]*78[ ]+\?\?\?\? 670F1A14 bndldx bnd2, \[1\*ebx\+3\] + GAS LISTING .* + + +[ ]*[1-9][0-9]*[ ]+1803 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1A14 bndldx bnd2, \[1\*ebx\+3\] .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*78[ ]+1D030000 -[ ]*78[ ]+00 -[ ]*79[ ]+\?\?\?\? 420F1A14 bndldx bnd2, \[rdi\+r8\*8\] +[ ]*[1-9][0-9]*[ ]+1D030000 +[ ]*[1-9][0-9]*[ ]+00 +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 420F1A14 bndldx bnd2, \[rdi\+r8\*8\] .* Warning: register scaling is being ignored here -[ ]*79[ ]+C7 -[ ]*80[ ]+bndldx bnd1, \[rip\+base\] -[ ]*81[ ]+\?\?\?\? 670F1A1D bndldx bnd3, \[eip\+base\] +[ ]*[1-9][0-9]*[ ]+C7 +[ ]*[1-9][0-9]*[ ]+bndldx bnd1, \[rip\+base\] +[ ]*[1-9][0-9]*[ ]+\?\?\?\? 670F1A1D bndldx bnd3, \[eip\+base\] .* Error: 32-bit address isn't allowed in 64-bit MPX instructions\. -[ ]*81 [0-9a-f][0-9a-f][0-9a-f]00000 +[ ]*[1-9][0-9]*[ ]+[0-9a-f][0-9a-f][0-9a-f]00000 +[ ]*[1-9][0-9]*[ ]+bndldx bnd3, \[rax\+rsp\] #pass diff --git a/gas/testsuite/gas/i386/x86-64-mpx-inval-2.s b/gas/testsuite/gas/i386/x86-64-mpx-inval-2.s index 7e8e8d53d7..0ff0e78249 100644 --- a/gas/testsuite/gas/i386/x86-64-mpx-inval-2.s +++ b/gas/testsuite/gas/i386/x86-64-mpx-inval-2.s @@ -18,14 +18,20 @@ ### bndcl bndcl (%ecx), %bnd1 bndcl 0x3(%ecx,%eax,1), %bnd1 + bndcl %ecx, %bnd1 + bndcl %cx, %bnd1 ### bndcu bndcu (%ecx), %bnd1 bndcu 0x3(%ecx,%eax,1), %bnd1 + bndcu %ecx, %bnd1 + bndcu %cx, %bnd1 ### bndcn bndcn (%ecx), %bnd1 bndcn 0x3(%ecx,%eax,1), %bnd1 + bndcn %ecx, %bnd1 + bndcn %cx, %bnd1 ### bndstx bndstx %bnd0, 0x3(%eax,%ebx,1) @@ -46,6 +52,7 @@ bndmk bnd1, [edx+1*eax+0x3] bndmk bnd3, [rip] bndmk bnd2, [eip] + bndmk bnd2, [rax+rsp] ### bndmov bndmov bnd1, [eax] @@ -57,14 +64,20 @@ ### bndcl bndcl bnd1, [eax] bndcl bnd1, [edx+1*eax+0x3] + bndcl bnd1, eax + bndcl bnd1, dx ### bndcu bndcu bnd1, [eax] bndcu bnd1, [edx+1*eax+0x3] + bndcu bnd1, eax + bndcu bnd1, dx ### bndcn bndcn bnd1, [eax] bndcn bnd1, [edx+1*eax+0x3] + bndcn bnd1, eax + bndcn bnd1, dx ### bndstx bndstx [eax+ebx*1+0x3], bnd0 @@ -72,6 +85,7 @@ bndstx [r8+rdi*4], bnd2 bndstx [rip+base], bnd1 bndstx [eip+base], bnd3 + bndstx [rax+rsp], bnd3 ### bndldx bndldx bnd0, [eax+ebx*1+0x3] @@ -79,3 +93,4 @@ bndldx bnd2, [rdi+r8*8] bndldx bnd1, [rip+base] bndldx bnd3, [eip+base] + bndldx bnd3, [rax+rsp] -- 2.34.1