x86-64/MPX: bndmk, bndldx, and bndstx don't allow RIP-relative addressing

Additionally warn about scaling factors other than 1 for the latter
two, as those get ignored by the hardware.
This commit is contained in:
Jan Beulich 2016-07-01 09:07:15 +02:00 committed by Jan Beulich
parent 327e8c421b
commit 8178be5b0c
4 changed files with 211 additions and 116 deletions

View File

@ -1,3 +1,11 @@
2016-07-01 Jan Beulich <jbeulich@suse.com>
* tc-i386.c (i386_index_check): Add special checks for bndmk,
bndldx, and bndstx.
* testsuite/gas/i386/mpx-inval-2.s: Add %rip and %eip relative
as well as scaling by other than 1 tests.
* testsuite/gas/i386/mpx-inval-2.l: Adjust accordingly.
2016-07-01 Jan Beulich <jbeulich@suse.com>
* tc-i386.c (md_assemble): Alter address size checking for MPX

View File

@ -8612,6 +8612,23 @@ bad_address:
|| i.index_reg->reg_num == RegEiz))
|| !i.index_reg->reg_type.bitfield.baseindex)))
goto bad_address;
/* bndmk, bndldx, and bndstx have special restrictions. */
if (current_templates->start->base_opcode == 0xf30f1b
|| (current_templates->start->base_opcode & ~1) == 0x0f1a)
{
/* They cannot use RIP-relative addressing. */
if (i.base_reg && i.base_reg->reg_num == RegRip)
{
as_bad (_("`%s' cannot be used here"), operand_string);
return 0;
}
/* bndldx and bndstx ignore their scale factor. */
if (current_templates->start->base_opcode != 0xf30f1b
&& i.log2_scale_factor)
as_warn (_("register scaling is being ignored here"));
}
}
else
{

View File

@ -1,36 +1,52 @@
.*: Assembler messages:
.*:6: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:7: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:10: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:11: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:8: Error: `\(%rip\)' cannot be used here
.*:9: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:12: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:13: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:14: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:17: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:18: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:21: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:22: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*: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.
.*:29: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:30: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:33: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:34: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:37: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:15: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*: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.
.*: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.
.*:38: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:41: 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.
.*: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
.*:48: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:49: 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: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:56: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:57: Error: 32-bit address isn't allowed in 64-bit MPX instructions.
.*:60: 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.
.*:64: 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.
.*: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.
.*: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.
.*: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.
.*: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.
.*: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.
.*: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.
GAS LISTING .*
@ -45,130 +61,168 @@ GAS LISTING .*
[ ]*7[ ]+\?\?\?\? 67F30F1B bndmk 0x3\(%ecx,%ebx,1\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*7[ ]+4C1903
[ ]*8[ ]+
[ ]*9[ ]+\#\#\# bndmov
[ ]*10[ ]+\?\?\?\? 6766410F bndmov \(%r8d\), %bnd1
[ ]*8[ ]+bndmk \(%rip\), %bnd3
[ ]*9[ ]+\?\?\?\? 67F30F1B bndmk \(%eip\), %bnd2
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*10[ ]+1A08
[ ]*11[ ]+\?\?\?\? 6766410F bndmov 0x3\(%r9d,%edx,1\), %bnd1
[ ]*9[ ]+15000000
[ ]*9[ ]+00
[ ]*10[ ]+
[ ]*11[ ]+\#\#\# bndmov
[ ]*12[ ]+\?\?\?\? 6766410F bndmov \(%r8d\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*11[ ]+1A4C1103
[ ]*12[ ]+
[ ]*13[ ]+\?\?\?\? 67660F1B bndmov %bnd1, \(%eax\)
[ ]*12[ ]+1A08
[ ]*13[ ]+\?\?\?\? 6766410F bndmov 0x3\(%r9d,%edx,1\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*13[ ]+08
[ ]*14[ ]+\?\?\?\? 67660F1B bndmov %bnd1, 0x3\(%ecx,%eax,1\)
[ ]*13[ ]+1A4C1103
[ ]*14[ ]+
[ ]*15[ ]+\?\?\?\? 67660F1B bndmov %bnd1, \(%eax\)
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*14[ ]+4C0103
[ ]*15[ ]+
[ ]*16[ ]+\#\#\# bndcl
[ ]*17[ ]+\?\?\?\? 67F30F1A bndcl \(%ecx\), %bnd1
[ ]*15[ ]+08
[ ]*16[ ]+\?\?\?\? 67660F1B bndmov %bnd1, 0x3\(%ecx,%eax,1\)
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*17[ ]+09
[ ]*18[ ]+\?\?\?\? 67F30F1A bndcl 0x3\(%ecx,%eax,1\), %bnd1
[ ]*16[ ]+4C0103
[ ]*17[ ]+
[ ]*18[ ]+\#\#\# bndcl
[ ]*19[ ]+\?\?\?\? 67F30F1A bndcl \(%ecx\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*18[ ]+4C0103
[ ]*19[ ]+
[ ]*20[ ]+\#\#\# bndcu
[ ]*21[ ]+\?\?\?\? 67F20F1A bndcu \(%ecx\), %bnd1
[ ]*19[ ]+09
[ ]*20[ ]+\?\?\?\? 67F30F1A bndcl 0x3\(%ecx,%eax,1\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*21[ ]+09
[ ]*22[ ]+\?\?\?\? 67F20F1A bndcu 0x3\(%ecx,%eax,1\), %bnd1
[ ]*20[ ]+4C0103
[ ]*21[ ]+
[ ]*22[ ]+\#\#\# bndcu
[ ]*23[ ]+\?\?\?\? 67F20F1A bndcu \(%ecx\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*22[ ]+4C0103
[ ]*23[ ]+
[ ]*24[ ]+\#\#\# bndcn
[ ]*25[ ]+\?\?\?\? 67F20F1B bndcn \(%ecx\), %bnd1
[ ]*23[ ]+09
[ ]*24[ ]+\?\?\?\? 67F20F1A bndcu 0x3\(%ecx,%eax,1\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*25[ ]+09
[ ]*26[ ]+\?\?\?\? 67F20F1B bndcn 0x3\(%ecx,%eax,1\), %bnd1
[ ]*24[ ]+4C0103
[ ]*25[ ]+
[ ]*26[ ]+\#\#\# bndcn
[ ]*27[ ]+\?\?\?\? 67F20F1B bndcn \(%ecx\), %bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*26[ ]+4C0103
[ ]*27[ ]+
[ ]*28[ ]+\#\#\# bndstx
[ ]*29[ ]+\?\?\?\? 670F1B44 bndstx %bnd0, 0x3\(%eax,%ebx,1\)
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*29[ ]+1803
[ ]*30[ ]+\?\?\?\? 670F1B53 bndstx %bnd2, 3\(%ebx,1\)
[ ]*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
GAS LISTING .*
[ ]*30[ ]+03
[ ]*31[ ]+
[ ]*32[ ]+\#\#\# bndldx
[ ]*33[ ]+\?\?\?\? 670F1A44 bndldx 0x3\(%eax,%ebx,1\), %bnd0
[ ]*31[ ]+\?\?\?\? 670F1B44 bndstx %bnd0, 0x3\(%eax,%ebx,1\)
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*33[ ]+1803
[ ]*34[ ]+\?\?\?\? 670F1A53 bndldx 3\(%ebx,1\), %bnd2
[ ]*31[ ]+1803
[ ]*32[ ]+\?\?\?\? 670F1B53 bndstx %bnd2, 3\(%ebx,1\)
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*34[ ]+03
[ ]*35[ ]+
[ ]*36[ ]+\.intel_syntax noprefix
[ ]*37[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[eax\]
[ ]*32[ ]+03
[ ]*33[ ]+\?\?\?\? 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\)
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*37[ ]+08
[ ]*38[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[edx\+1\*eax\+0x3\]
[ ]*35[ ]+00000000
[ ]*36[ ]+
[ ]*37[ ]+\#\#\# bndldx
[ ]*38[ ]+\?\?\?\? 670F1A44 bndldx 0x3\(%eax,%ebx,1\), %bnd0
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*38[ ]+4C0203
[ ]*39[ ]+
[ ]*40[ ]+\#\#\# bndmov
[ ]*41[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[eax\]
[ ]*38[ ]+1803
[ ]*39[ ]+\?\?\?\? 670F1A53 bndldx 3\(%ebx,1\), %bnd2
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*41[ ]+08
[ ]*42[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[edx\+1\*eax\+0x3\]
[ ]*39[ ]+03
[ ]*40[ ]*\?\?\?\? 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
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*42[ ]+4C0203
[ ]*42[ ]*00000000
[ ]*43[ ]+
[ ]*44[ ]+\?\?\?\? 67660F1B bndmov \[eax\], bnd1
[ ]*44[ ]+\.intel_syntax noprefix
[ ]*45[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[eax\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*44[ ]+08
[ ]*45[ ]+\?\?\?\? 67660F1B bndmov \[edx\+1\*eax\+0x3\], bnd1
[ ]*45[ ]+08
[ ]*46[ ]+\?\?\?\? 67F30F1B bndmk bnd1, \[edx\+1\*eax\+0x3\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*45[ ]+4C0203
[ ]*46[ ]+
[ ]*47[ ]+\#\#\# bndcl
[ ]*48[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[eax\]
[ ]*46[ ]+4C0203
[ ]*47[ ]*bndmk bnd3, \[rip\]
[ ]*48[ ]*\?\?\?\? 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\.
[ ]*48[ ]+08
[ ]*49[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[edx\+1\*eax\+0x3\]
[ ]*51[ ]+08
[ ]*52[ ]+\?\?\?\? 67660F1A bndmov bnd1, \[edx\+1\*eax\+0x3\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*49[ ]+4C0203
[ ]*50[ ]+
[ ]*51[ ]+\#\#\# bndcu
[ ]*52[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[eax\]
[ ]*52[ ]+4C0203
[ ]*53[ ]+
[ ]*54[ ]+\?\?\?\? 67660F1B bndmov \[eax\], bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*52[ ]+08
[ ]*53[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[edx\+1\*eax\+0x3\]
[ ]*54[ ]+08
[ ]*55[ ]+\?\?\?\? 67660F1B bndmov \[edx\+1\*eax\+0x3\], bnd1
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*53[ ]+4C0203
[ ]*54[ ]+
[ ]*55[ ]+\#\#\# bndcn
[ ]*56[ ]+\?\?\?\? 67F20F1B bndcn bnd1, \[eax\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*56[ ]+08
[ ]*57[ ]+\?\?\?\? 67F20F1B bndcn bnd1, \[edx\+1\*eax\+0x3\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*57[ ]+4C0203
[ ]*58[ ]+
[ ]*55[ ]+4C0203
[ ]*56[ ]+
GAS LISTING .*
[ ]*59[ ]+\#\#\# bndstx
[ ]*60[ ]+\?\?\?\? 670F1B44 bndstx \[eax\+ebx\*1\+0x3\], bnd0
[ ]*57[ ]+\#\#\# bndcl
[ ]*58[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[eax\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*60[ ]+1803
[ ]*61[ ]+\?\?\?\? 670F1B14 bndstx \[1\*ebx\+3\], bnd2
[ ]*58[ ]+08
[ ]*59[ ]+\?\?\?\? 67F30F1A bndcl bnd1, \[edx\+1\*eax\+0x3\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*61[ ]+1D030000
[ ]*61[ ]+00
[ ]*62[ ]+
[ ]*63[ ]+\#\#\# bndldx
[ ]*64[ ]+\?\?\?\? 670F1A44 bndldx bnd0, \[eax\+ebx\*1\+0x3\]
[ ]*59[ ]+4C0203
[ ]*60[ ]+
[ ]*61[ ]+\#\#\# bndcu
[ ]*62[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[eax\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*64[ ]+1803
[ ]*65[ ]+\?\?\?\? 670F1A14 bndldx bnd2, \[1\*ebx\+3\]
[ ]*62[ ]+08
[ ]*63[ ]+\?\?\?\? 67F20F1A bndcu bnd1, \[edx\+1\*eax\+0x3\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*65[ ]+1D030000
[ ]*65[ ]+00(|909090 )
[ ]*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
.* Warning: register scaling is being ignored here
[ ]*72[ ]+B8
[ ]*73[ ]+bndstx \[rip\+base\], bnd1
[ ]*74[ ]+\?\?\?\? 670F1B1D bndstx \[eip\+base\], bnd3
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*74[ ]+00000000
[ ]*75[ ]+
[ ]*76[ ]+\#\#\# bndldx
[ ]*77[ ]+\?\?\?\? 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\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*78[ ]+1D030000
[ ]*78[ ]+00
[ ]*79[ ]+\?\?\?\? 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\]
.* Error: 32-bit address isn't allowed in 64-bit MPX instructions\.
[ ]*81 00000000
#pass

View File

@ -5,6 +5,8 @@
### bndmk
bndmk (%eax), %bnd1
bndmk 0x3(%ecx,%ebx,1), %bnd1
bndmk (%rip), %bnd3
bndmk (%eip), %bnd2
### bndmov
bndmov (%r8d), %bnd1
@ -28,14 +30,22 @@
### bndstx
bndstx %bnd0, 0x3(%eax,%ebx,1)
bndstx %bnd2, 3(%ebx,1)
bndstx %bnd1, (%r15,%rax,2)
bndstx %bnd3, base(%rip)
bndstx %bnd1, base(%eip)
### bndldx
bndldx 0x3(%eax,%ebx,1), %bnd0
bndldx 3(%ebx,1), %bnd2
bndldx (%rax,%r15,4), %bnd3
bndldx base(%rip), %bnd1
bndldx base(%eip), %bnd3
.intel_syntax noprefix
bndmk bnd1, [eax]
bndmk bnd1, [edx+1*eax+0x3]
bndmk bnd3, [rip]
bndmk bnd2, [eip]
### bndmov
bndmov bnd1, [eax]
@ -59,7 +69,13 @@
### bndstx
bndstx [eax+ebx*1+0x3], bnd0
bndstx [1*ebx+3], bnd2
bndstx [r8+rdi*4], bnd2
bndstx [rip+base], bnd1
bndstx [eip+base], bnd3
### bndldx
bndldx bnd0, [eax+ebx*1+0x3]
bndldx bnd2, [1*ebx+3]
bndldx bnd2, [rdi+r8*8]
bndldx bnd1, [rip+base]
bndldx bnd3, [eip+base]