;Testname=unoptimized; Arguments=-fbin -oxchg.bin -O0; Files=stdout stderr xchg.bin ;Testname=optimized; Arguments=-fbin -oxchg.bin -Ox; Files=stdout stderr xchg.bin %macro x 2 xchg %1,%2 xchg %2,%1 xchg %2,%2 xchg %2,MEM xchg MEM,%2 %endmacro bits 16 %define MEM [bx] x al,al x al,cl x al,dl x al,bl x al,ah x al,ch x al,dh x al,bh x ax,ax x ax,cx x ax,dx x ax,bx x ax,sp x ax,bp x ax,si x ax,di x bx,dx x cx,dx x eax,eax x eax,ecx x eax,edx x eax,ebx x eax,esp x eax,ebp x eax,esi x eax,edi x ebx,edx x ecx,edx bits 32 %define MEM [ebx] align 64 x al,al x al,cl x al,dl x al,bl x al,ah x al,ch x al,dh x al,bh x ax,ax x ax,cx x ax,dx x ax,bx x ax,sp x ax,bp x ax,si x ax,di x bx,dx x cx,dx x eax,eax x eax,ecx x eax,edx x eax,ebx x eax,esp x eax,ebp x eax,esi x eax,edi x ebx,edx x ecx,edx bits 64 %define MEM [rbx] align 64 x al,al x al,cl x al,dl x al,bl x al,ah x al,ch x al,dh x al,bh x al,spl x al,bpl x al,sil x al,dil x al,r8b x al,r9b x al,r10b x al,r11b x al,r12b x al,r13b x al,r14b x al,r15b x ax,ax x ax,cx x ax,dx x ax,bx x ax,sp x ax,bp x ax,si x ax,di x ax,r8w x ax,r9w x ax,r10w x ax,r11w x ax,r12w x ax,r13w x ax,r14w x ax,r15w x bx,dx x cx,dx x eax,eax x eax,ecx x eax,edx x eax,ebx x eax,esp x eax,ebp x eax,esi x eax,edi x eax,r8d x eax,r9d x eax,r10d x eax,r11d x eax,r12d x eax,r13d x eax,r14d x eax,r15d x ebx,edx x ecx,edx x rax,rax x rax,rcx x rax,rdx x rax,rbx x rax,rsp x rax,rbp x rax,rsi x rax,rdi x rax,r8 x rax,r9 x rax,r10 x rax,r11 x rax,r12 x rax,r13 x rax,r14 x rax,r15 x rbx,rdx x rcx,rdx