;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 ; next 5 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 [rcx*1], bnd2 ; GAS - rcx is encoded as index only when it is mib ; next 3 lines should be parsed same bndstx [3,1*r12], bnd2 ; NASM bndstx [1*r12+3], bnd2 ; GAS 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 ; when it becomes a Jb form - short jmp (eb), ; bnd prefix is silently dropped bnd jmp near 0 ; near jmp (opcode e9) ; bnd jmp short 0 ; explicit short jmp (opcode eb) : error bnd jno foo foo: bnd ret