0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-07-24 10:25:42 -04:00
nasm/test/apx.asm
H. Peter Anvin 3b55b62f02 apx: implement the mechanism for evex.zu
Implement the mechanism needed to handle {zu} suffixes that actually
set ND (IMUL, SETcc).

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2024-08-14 15:44:38 -07:00

155 lines
3.2 KiB
NASM

bits 64
ccmpnz {dfv=} rax,rbx
ccmpnz {dfv=cf} rax,rbx
ccmpnz {dfv=zf} rax,rbx
ccmpnz {dfv=sf} rax,rbx
ccmpnz {dfv=of} rax,rbx
ccmpnz {dfv=of,cf} rax,rbx
ccmpnz {dfv=of,cf} [rax],rbx
ccmpnz {dfv=of,cf} dword [rax],3
ccmpnz {dfv=of,cf} dword [r31],3
ccmpnz 15, dword [r31], 3
ccmpnz {dfv=of,cf} dword [r31], byte 3
ccmpnz {dfv=of,cf} dword [r31], 3
ccmpnz {dfv=of,cf} dword [r31], dword 3
ccmpnz {dfv=of,cf} dword [r31], strict dword 3
ccmpnz {dfv=of,cf} dword [r31], 0xaabbccdd
ccmpnz {dfv=of,cf} dword [r31], dword 0xaabbccdd
ccmpnz {dfv=of,cf} qword [r31], 0xaabbccdd
push rax
pushp rax
push rax, rbx
push rax:rbx
pop rax:rbx
pop rbx, rax
add al,[rdx],cl
add {nf} al,[rdx],cl
add [rdx],cl
add {evex} [rdx],cl
add {nf} [rdx],cl
add al,[rdx],r25b
add {nf} al,[rdx],r25b
add [rdx],r25b
add {evex} [rdx],r25b
add {nf} [rdx],r25b
add al,[r27],cl
add {nf} al,[r27],cl
add [r27],cl
add {evex} [r27],cl
add {nf} [r27],cl
add al,[r27],r25b
add {nf} al,[r27],r25b
add [r27],r25b
add {evex} [r27],r25b
add {nf} [r27],r25b
add eax,[rdx],ecx
add {nf} eax,[rdx],ecx
add [rdx],ecx
add {evex} [rdx],ecx
add {nf} [rdx],ecx
add eax,[rdx],r25d
add {nf} eax,[rdx],r25d
add [rdx],r25d
add {evex} [rdx],r25d
add {nf} [rdx],r25d
add eax,[r27],ecx
add {nf} eax,[r27],ecx
add [r27],ecx
add {evex} [r27],ecx
add {nf} [r27],ecx
add eax,[r27],r25d
add {nf} eax,[r27],r25d
add [r27],r25d
add {evex} [r27],r25d
add {nf} [r27],r25d
add{zu} al,[rdx],cl
add{zu}{nf} al,[rdx],cl
add al,al,cl
add{zu} al,al,cl
add{zu} al,cl
add{zu}{nf} al,al,cl
add{zu}{nf} al,cl
add{nf}{zu} al,al,cl
add{nf}{zu} al,cl
add{evex} al,cl
add{nf} al,al,cl
add{nf} al,cl
add al,cl
add{zu} eax,[rdx],ecx
add{zu}{nf} eax,[rdx],ecx
add eax,eax,ecx
add{zu} eax,eax,ecx
add{zu} eax,ecx
add{zu}{nf} eax,eax,ecx
add{zu}{nf} eax,ecx
add{nf}{zu} eax,eax,ecx
add{nf}{zu} eax,ecx
add{evex} eax,ecx
add{nf} eax,eax,ecx
add{nf} eax,ecx
add eax,ecx
%if 0
add{evex} [rdx],16
add{evex} [rdx],byte 16
add{evex} [rdx],dword 16
add{evex} [rdx],strict dword 16
%endif
add{evex} dword [rdx],16
add{evex} dword [rdx],256
add{evex} dword [rdx],byte 16
add{evex} dword [rdx],dword 16
add{evex} dword [rdx],strict dword 16
%if 0
add{nf} [rdx],16
add{nf} [rdx],byte 16
add{nf} [rdx],dword 16
add{nf} [rdx],strict dword 16
%endif
add{nf} dword [rdx],16
add{nf} dword [rdx],256
add{nf} dword [rdx],byte 16
add{nf} dword [rdx],dword 16
add{nf} dword [rdx],strict dword 16
add{nf} eax,[rdx],16
add{nf} eax,[rdx],256
add{nf} eax,[rdx],byte 16
add{nf} eax,[rdx],dword 16
add{nf} eax,[rdx],strict dword 16
add{nf} eax,dword [rdx],16
add{nf} eax,dword [rdx],256
add{nf} eax,dword [rdx],byte 16
add{nf} eax,dword [rdx],dword 16
add{nf} eax,dword [rdx],strict dword 16
setc al
setc{evex} al
setc eax
setc rax
setc{zu} al
setc{zu} eax
setc [rdi]
setc byte [rdi]
%ifdef ERR
setc dword [rdi]
setc{zu} [rdi]
%endif