summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/i386/mpx.s
diff options
context:
space:
mode:
Diffstat (limited to 'gas/testsuite/gas/i386/mpx.s')
-rw-r--r--gas/testsuite/gas/i386/mpx.s165
1 files changed, 165 insertions, 0 deletions
diff --git a/gas/testsuite/gas/i386/mpx.s b/gas/testsuite/gas/i386/mpx.s
new file mode 100644
index 0000000000..8c5f043867
--- /dev/null
+++ b/gas/testsuite/gas/i386/mpx.s
@@ -0,0 +1,165 @@
+# MPX instructions
+ .allow_index_reg
+ .text
+
+ ### bndmk
+ bndmk (%eax), %bnd1
+ bndmk (0x399), %bnd1
+ bndmk 0x3(%edx), %bnd1
+ bndmk (%eax,%ecx), %bnd1
+ bndmk (,%ecx,1), %bnd1
+ bndmk 0x3(%ecx,%eax,1), %bnd1
+
+ ### bndmov
+ bndmov (%eax), %bnd1
+ bndmov (0x399), %bnd1
+ bndmov 0x3(%edx), %bnd2
+ bndmov (%eax,%edx), %bnd2
+ bndmov (,%eax,1), %bnd2
+ bndmov 0x3(%ecx,%eax,1), %bnd1
+ bndmov %bnd2, %bnd0
+
+ bndmov %bnd1, (%eax)
+ bndmov %bnd1, (0x399)
+ bndmov %bnd2, 0x3(%edx)
+ bndmov %bnd2, (%eax,%edx)
+ bndmov %bnd2, (,%eax,1)
+ bndmov %bnd1, 0x3(%ecx,%eax,1)
+ bndmov %bnd0, %bnd2
+
+ ### bndcl
+ bndcl (%ecx), %bnd1
+ bndcl %ecx, %bnd1
+ bndcl %ax, %bnd1
+ bndcl (0x399), %bnd1
+ bndcl 0x3(%edx), %bnd1
+ bndcl (%eax,%ecx), %bnd1
+ bndcl (,%ecx,1), %bnd1
+ bndcl 0x3(%ecx,%eax,1), %bnd1
+
+ ### bndcu
+ bndcu (%ecx), %bnd1
+ bndcu %ecx, %bnd1
+ bndcu %ax, %bnd1
+ bndcu (0x399), %bnd1
+ bndcu 0x3(%edx), %bnd1
+ bndcu (%eax,%ecx), %bnd1
+ bndcu (,%ecx,1), %bnd1
+ bndcu 0x3(%ecx,%eax,1), %bnd1
+
+ ### bndcn
+ bndcn (%ecx), %bnd1
+ bndcn %ecx, %bnd1
+ bndcn %ax, %bnd1
+ bndcn (0x399), %bnd1
+ bndcn 0x3(%edx), %bnd1
+ bndcn (%eax,%ecx), %bnd1
+ bndcn (,%ecx,1), %bnd1
+ bndcn 0x3(%ecx,%eax,1), %bnd1
+
+ ### bndstx
+ bndstx %bnd0, 0x3(%eax,%ebx,1)
+ bndstx %bnd2, 3(%ebx,%edx)
+ bndstx %bnd2, 3(,%edx,1)
+ bndstx %bnd3, 0x399(%edx)
+ bndstx %bnd2, 0x1234(%ebx)
+ bndstx %bnd2, 3(%ebx,1)
+ bndstx %bnd1, (%edx)
+
+ ### bndldx
+ bndldx 0x3(%eax,%ebx,1), %bnd0
+ bndldx 3(%ebx,%edx), %bnd2
+ bndldx 3(,%edx,1), %bnd2
+ bndldx 0x399(%edx), %bnd3
+ bndldx 0x1234(%ebx), %bnd2
+ bndldx 3(%ebx,1), %bnd2
+ bndldx (%edx), %bnd1
+
+ ### bnd
+ bnd call foo
+ bnd call *(%eax)
+ bnd je foo
+ bnd jmp foo
+ bnd jmp *(%ecx)
+ bnd ret
+
+.intel_syntax noprefix
+ bndmk bnd1, [eax]
+ bndmk bnd1, [0x399]
+ bndmk bnd1, [ecx+0x3]
+ bndmk bnd1, [eax+ecx]
+ bndmk bnd1, [ecx*1]
+ bndmk bnd1, [edx+1*eax+0x3]
+
+ ### bndmov
+ bndmov bnd1, [eax]
+ bndmov bnd1, [0x399]
+ bndmov bnd1, [ecx+0x3]
+ bndmov bnd1, [eax+ecx]
+ bndmov bnd1, [ecx*1]
+ bndmov bnd1, [edx+1*eax+0x3]
+ bndmov bnd0, bnd1
+
+ bndmov [eax], bnd1
+ bndmov [0x399], bnd1
+ bndmov [ecx+0x3], bnd1
+ bndmov [eax+ecx], bnd1
+ bndmov [ecx*1], bnd1
+ bndmov [edx+1*eax+0x3], bnd1
+ bndmov bnd1, bnd0
+
+ ### bndcl
+ bndcl bnd1, [eax]
+ bndcl bnd1, ecx
+ bndcl bnd1, ax
+ bndcl bnd1, [0x399]
+ bndcl bnd1, [ecx+0x3]
+ bndcl bnd1, [eax+ecx]
+ bndcl bnd1, [ecx*1]
+ bndcl bnd1, [edx+1*eax+0x3]
+
+ ### bndcu
+ bndcu bnd1, [eax]
+ bndcu bnd1, ecx
+ bndcu bnd1, ax
+ bndcu bnd1, [0x399]
+ bndcu bnd1, [ecx+0x3]
+ bndcu bnd1, [eax+ecx]
+ bndcu bnd1, [ecx*1]
+ bndcu bnd1, [edx+1*eax+0x3]
+
+ ### bndcn
+ bndcn bnd1, [eax]
+ bndcn bnd1, ecx
+ bndcn bnd1, ax
+ bndcn bnd1, [0x399]
+ bndcn bnd1, [ecx+0x3]
+ bndcn bnd1, [eax+ecx]
+ bndcn bnd1, [ecx*1]
+ bndcn bnd1, [edx+1*eax+0x3]
+
+ ### bndstx
+ bndstx [eax+ebx*1+0x3], bnd0
+ bndstx [ebx+edx+3], bnd2
+ bndstx [ecx*1], bnd2
+ bndstx [edx+0x399], bnd3
+ bndstx [1*ebx+3], bnd2
+ bndstx [edx], bnd1
+
+ ### bndldx
+ bndldx bnd0, [eax+ebx*1+0x3]
+ bndldx bnd2, [ebx+edx+3]
+ bndldx bnd2, [ecx*1]
+ bndldx bnd3, [edx+0x399]
+ bndldx bnd2, [1*ebx+3]
+ bndldx bnd1, [edx]
+
+ ### bnd
+ bnd call foo
+ bnd call eax
+ bnd je foo
+ bnd jmp foo
+ bnd jmp ecx
+ bnd ret
+
+foo: bnd ret