Skip to content

Commit

Permalink
asm_tests: x87 fst/fld optimization for different addrmodes
Browse files Browse the repository at this point in the history
  • Loading branch information
pmatos committed Jan 13, 2025
1 parent e2dec06 commit 1f04777
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
44 changes: 44 additions & 0 deletions unittests/32Bit_ASM/X87/FST_AddrModes.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x3f800000",
"RBX": "0x3f800000",
"RCX": "0x3f800000",
"RBP": "0x3f800000",
"RDI": "0x3f800000",
"RSP": "0x3f800000"
},
"MemoryRegions": {
"0xf0000000": "4096"
},
"Mode": "32BIT"
}
%endif

section .bss
base resb 4096

section .text

; Setup
fld1
lea edx, [rel base]
mov esi, 0x64

; Test fst
fst dword [edx]
fst dword [edx + 0xa]
fst dword [edx + esi]
fst dword [edx + esi * 4]
fst dword [edx + esi + 0xa]
fst dword [edx + esi * 4 + 0xa]

; Result check
mov eax, dword [edx]
mov ebx, dword [edx + 0xa]
mov ecx, dword [edx + esi]
mov ebp, dword [edx + esi * 4]
mov edi, dword [edx + esi + 0xa]
mov esp, dword [edx + esi * 4 + 0xa]

hlt
43 changes: 43 additions & 0 deletions unittests/ASM/X87/FST_AddrModes.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
%ifdef CONFIG
{
"RegData": {
"RAX": "0x3f800000",
"RBX": "0x3f800000",
"RCX": "0x3f800000",
"R8": "0x3f800000",
"R9": "0x3f800000",
"R10": "0x3f800000"
},
"MemoryRegions": {
"0x100000000": "4096"
}
}
%endif

section .bss
base resb 4096

section .text

; Setup
fld1
lea rdx, [rel base]
mov rsi, 0x64

; Test fst
fst dword [rdx]
fst dword [rdx + 0xa]
fst dword [rdx + rsi]
fst dword [rdx + rsi * 4]
fst dword [rdx + rsi + 0xa]
fst dword [rdx + rsi * 4 + 0xa]

; Result check
mov eax, dword [rdx]
mov ebx, dword [rdx + 0xa]
mov ecx, dword [rdx + rsi]
mov r8d, dword [rdx + rsi * 4]
mov r9d, dword [rdx + rsi + 0xa]
mov r10d, dword [rdx + rsi * 4 + 0xa]

hlt

0 comments on commit 1f04777

Please sign in to comment.