0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-09-22 10:43:39 -04:00
Files
nasm/test/xchg.asm
H. Peter Anvin 8dae3d681d insns.dat: fix broken XCHG pattern (BR 3392951)
A pattern for XCHG was incompletely macroized. This caused a
fallthrough to the next pattern, reversing the operands, but would
probably have had generated incorrect code in at least some cases.

Beef up the xchg test.

Reported-by: E. C. Masloch <pushbx@ulukai.org>
Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
2025-09-19 12:56:19 -07:00

152 lines
1.6 KiB
NASM

;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