diff options
author | Jin Kyu Song <jin.kyu.song@intel.com> | 2013-10-15 19:42:41 -0700 |
---|---|---|
committer | Jin Kyu Song <jin.kyu.song@intel.com> | 2013-11-20 11:29:42 -0800 |
commit | 40762afbe8706e00e837c802994c4e52ba3e3884 (patch) | |
tree | fa5118cea64ab3c5169a5c63a050bf6a2bb5a4ec | |
parent | 0304109b3d40c3a46e383cadaeae365c66e1b0e4 (diff) | |
download | nasm-40762afbe8706e00e837c802994c4e52ba3e3884.tar.gz nasm-40762afbe8706e00e837c802994c4e52ba3e3884.tar.bz2 nasm-40762afbe8706e00e837c802994c4e52ba3e3884.zip |
MPX: Add test cases for MPX
MPX test asm files are added. These include all three different styles of
mib syntax (NASM, ICC and gas).
Signed-off-by: Jin Kyu Song <jin.kyu.song@intel.com>
-rw-r--r-- | test/mpx-64.asm | 117 | ||||
-rw-r--r-- | test/mpx.asm | 85 |
2 files changed, 202 insertions, 0 deletions
diff --git a/test/mpx-64.asm b/test/mpx-64.asm new file mode 100644 index 0000000..50cc4da --- /dev/null +++ b/test/mpx-64.asm @@ -0,0 +1,117 @@ +;Testname=mpx-64; Arguments=-felf64 -ompx-64.o -O0; Files=stdout stderr mpx-64.o +BITS 64 + + bndmk bnd1, [r11] + bndmk bnd1, [rax] + bndmk bnd1, [0x399] + bndmk bnd1, [r9+0x3] + bndmk bnd1, [rax+0x3] + bndmk bnd1, [3,1*r12] + bndmk bnd1, [rax+rcx] + bndmk bnd1, [r11+1*rax+0x3] + bndmk bnd1, [rbx+1*r9+0x3] + + ; bndmov + bndmov bnd1, [r11] + bndmov bnd1, [rax] + bndmov bnd1, [0x399] + bndmov bnd2, [r9+0x3] + bndmov bnd2, [rax+0x3] + bndmov bnd0, [1*r12+0x3] + bndmov bnd2, [rax+rdx] + bndmov bnd1, [r11+1*rax+0x3] + bndmov bnd1, [rbx+1*r9+0x3] + bndmov bnd0, bnd2 + + bndmov [r11], bnd1 + bndmov [rax], bnd1 + bndmov [0x399], bnd1 + bndmov [r9+0x3], bnd2 + bndmov [rax+0x3], bnd2 + bndmov [1*r12+0x3], bnd0 + bndmov [rax+rdx], bnd2 + bndmov [r11+1*rax+0x3], bnd1 + bndmov [rbx+1*r9+0x3], bnd1 + bndmov bnd2, bnd0 + + ; bndcl + bndcl bnd1, [r11] + bndcl bnd1, [rax] + bndcl bnd1, r11 + bndcl bnd1, rcx + bndcl bnd1, [0x399] + bndcl bnd1, [r9+0x3] + bndcl bnd1, [rax+0x3] + bndcl bnd1, [1*r12+0x3] + bndcl bnd1, [rax+rcx] + bndcl bnd1, [r11+1*rax+0x3] + bndcl bnd1, [rbx+1*r9+0x3] + + ; bndcu + bndcu bnd1, [r11] + bndcu bnd1, [rax] + bndcu bnd1, r11 + bndcu bnd1, rcx + bndcu bnd1, [0x399] + bndcu bnd1, [r9+0x3] + bndcu bnd1, [rax+0x3] + bndcu bnd1, [1*r12+0x3] + bndcu bnd1, [rax+rcx] + bndcu bnd1, [r11+1*rax+0x3] + bndcu bnd1, [rbx+1*r9+0x3] + + ; bndcn + bndcn bnd1, [r11] + bndcn bnd1, [rax] + bndcn bnd1, r11 + bndcn bnd1, rcx + bndcn bnd1, [0x399] + bndcn bnd1, [r9+0x3] + bndcn bnd1, [rax+0x3] + bndcn bnd1, [1*r9+0x3] + bndcn bnd1, [rax+rcx] + bndcn bnd1, [r11+1*rax+0x3] + bndcn bnd1, [rbx+1*r9+0x3] + + ; bndstx + ; next 5 lines should be parsed same + bndstx [rax+0x3,rbx], bnd0 ; NASM - split EA + bndstx [rax+rbx*1+0x3], bnd0 ; GAS + bndstx [rax+rbx+3], bnd0 ; GAS + bndstx [rax+0x3], bnd0, rbx ; ICC-1 + bndstx [rax+0x3], rbx, bnd0 ; ICC-2 + + ; GAS's confusing EA - rcx is base reg in NASM + bndstx [rcx*1], bnd2 + ; next 4 lines should be parsed same + bndstx [,rcx*1], bnd2 ; NASM + bndstx [0,rcx*1], bnd2 ; NASM + bndstx [0], bnd2, rcx ; ICC-1 + bndstx [0], rcx, bnd2 ; ICC-2 + + bndstx [1*r12+3], bnd2 ; GAS's confusing EA again + bndstx [3,1*r12], bnd2 ; NASM + bndstx [3], r12, bnd2 ; ICC + + bndstx [r12+0x399], bnd3 + bndstx [r11+0x1234], bnd1 + bndstx [rbx+0x1234], bnd2 + bndstx [rdx], bnd1 + + ; bndldx + bndldx bnd0, [rax+rbx*1+0x3] + bndldx bnd2, [rbx+rdx+3] + bndldx bnd3, [r12+0x399] + bndldx bnd1, [r11+0x1234] + bndldx bnd2, [rbx+0x1234] + bndldx bnd2, [1*rbx+3] + bndldx bnd2, [1*r12+3] + bndldx bnd1, [rdx] + + ; bnd + bnd ret + bnd call foo + bnd jmp foo + bnd jno foo + +foo: bnd ret diff --git a/test/mpx.asm b/test/mpx.asm new file mode 100644 index 0000000..24ffcc8 --- /dev/null +++ b/test/mpx.asm @@ -0,0 +1,85 @@ +;Testname=mpx; Arguments=-felf -ompx.o -O0; Files=stdout stderr mpx.o +BITS 32 + + 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, [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, [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, [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 [eax+0x3,ebx], bnd0 + bndstx [eax+0x3], bnd0, ebx + bndstx [eax+0x3], ebx, bnd0 + bndstx [ecx*1], bnd2 + bndstx [,ecx*1], bnd2 + bndstx [0,ecx*1], bnd2 + bndstx [0], bnd2, ecx + bndstx [0], ecx, bnd2 + bndstx [edx+0x399], bnd3 + bndstx [1*ebx+3], bnd2 + bndstx [3,1*ebx], bnd2 + bndstx [3], ebx, 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 ret + bnd call foo + bnd jmp foo + bnd jno foo + +foo: bnd ret |