mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-03 05:21:18 +12:00
break build
This commit is contained in:
parent
12ec9b7f4f
commit
ad695b1e95
4 changed files with 0 additions and 520 deletions
|
@ -1,38 +0,0 @@
|
|||
project(CemuAsm C)
|
||||
|
||||
IF (WIN32)
|
||||
|
||||
enable_language(C ASM_MASM)
|
||||
|
||||
add_library(CemuAsm
|
||||
x64util_masm.asm
|
||||
)
|
||||
set_source_files_properties(x64util_masm.asm PROPERTIES LANGUAGE ASM_MASM)
|
||||
|
||||
ELSE()
|
||||
|
||||
# NASM
|
||||
IF (APPLE)
|
||||
set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> -g -Fdwarf -f macho64 --prefix _ -o <OBJECT> <SOURCE>")
|
||||
ELSE()
|
||||
set(CMAKE_ASM_NASM_COMPILE_OBJECT "<CMAKE_ASM_NASM_COMPILER> -g -Fdwarf -f elf64 -o <OBJECT> <SOURCE>")
|
||||
ENDIF()
|
||||
set(CMAKE_ASM_NASM_LINK_EXECUTABLE "ld <FLAGS> <CMAKE_ASM_NASM_LINK_FLAGS> <LINK_FLAGS> -fPIC <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
|
||||
|
||||
enable_language(C ASM_NASM)
|
||||
|
||||
add_library(CemuAsm
|
||||
x64util_nasm.asm
|
||||
)
|
||||
set_source_files_properties(x64util_nasm.asm PROPERTIES LANGUAGE ASM_NASM)
|
||||
|
||||
IF (APPLE)
|
||||
set_target_properties(CemuAsm PROPERTIES NASM_OBJ_FORMAT macho64)
|
||||
ELSE()
|
||||
set_target_properties(CemuAsm PROPERTIES NASM_OBJ_FORMAT elf64)
|
||||
ENDIF()
|
||||
set_target_properties(CemuAsm PROPERTIES LINKER_LANGUAGE C)
|
||||
|
||||
ENDIF()
|
||||
|
||||
set_property(TARGET CemuAsm PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
|
@ -1,5 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
extern "C" uint64 ATTR_MS_ABI udiv128(uint64 low, uint64 hi, uint64 divisor, uint64 *remainder);
|
||||
extern "C" void recompiler_fres();
|
||||
extern "C" void recompiler_frsqrte();
|
|
@ -1,240 +0,0 @@
|
|||
.code
|
||||
|
||||
udiv128 PROC
|
||||
mov rax, rcx
|
||||
div r8
|
||||
mov [r9], rdx
|
||||
ret
|
||||
udiv128 ENDP
|
||||
|
||||
recompiler_fres PROC
|
||||
; store all modified registers
|
||||
push rdx
|
||||
push rcx
|
||||
push rax
|
||||
push r8
|
||||
lea r8,[asmFresLookupTable]
|
||||
movq rdx, xmm15
|
||||
mov rcx,rdx
|
||||
shr rcx,2Fh
|
||||
mov rax,rdx
|
||||
and ecx,1Fh
|
||||
shr rax,25h
|
||||
and eax,3FFh
|
||||
imul eax,dword ptr [r8+rcx*8+4]
|
||||
mov r8d,dword ptr [r8+rcx*8]
|
||||
mov rcx,rdx
|
||||
shr rcx,34h
|
||||
inc eax
|
||||
shr eax,1
|
||||
sub r8d,eax
|
||||
and ecx,7FFh
|
||||
jne fres_espresso_label3
|
||||
mov rax,7FF0000000000000h
|
||||
or rdx,rax
|
||||
movq xmm15, rdx
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
fres_espresso_label3:
|
||||
cmp ecx,7FFh
|
||||
jne fres_espresso_label4
|
||||
mov rax,0FFFFFFFFFFFFFh
|
||||
test rax,rdx
|
||||
jne fres_espresso_label1
|
||||
test rdx,rdx
|
||||
jns fres_espresso_label2
|
||||
mov rax,8000000000000000h
|
||||
movq xmm15, rax
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
fres_espresso_label2:
|
||||
xorps xmm15,xmm15
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
fres_espresso_label4:
|
||||
mov eax,7FDh
|
||||
sub eax,ecx
|
||||
mov ecx,eax
|
||||
mov rax,8000000000000000h
|
||||
and rdx,rax
|
||||
shl rcx,34h
|
||||
mov eax,r8d
|
||||
or rcx,rdx
|
||||
shl rax,1Dh
|
||||
add rcx,rax
|
||||
movq xmm15, rcx
|
||||
fres_espresso_label1:
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
|
||||
recompiler_fres ENDP
|
||||
|
||||
asmFresLookupTable:
|
||||
DD 07ff800h, 03e1h
|
||||
DD 0783800h, 03a7h
|
||||
DD 070ea00h, 0371h
|
||||
DD 06a0800h, 0340h
|
||||
DD 0638800h, 0313h
|
||||
DD 05d6200h, 02eah
|
||||
DD 0579000h, 02c4h
|
||||
DD 0520800h, 02a0h
|
||||
DD 04cc800h, 027fh
|
||||
DD 047ca00h, 0261h
|
||||
DD 0430800h, 0245h
|
||||
DD 03e8000h, 022ah
|
||||
DD 03a2c00h, 0212h
|
||||
DD 0360800h, 01fbh
|
||||
DD 0321400h, 01e5h
|
||||
DD 02e4a00h, 01d1h
|
||||
DD 02aa800h, 01beh
|
||||
DD 0272c00h, 01ach
|
||||
DD 023d600h, 019bh
|
||||
DD 0209e00h, 018bh
|
||||
DD 01d8800h, 017ch
|
||||
DD 01a9000h, 016eh
|
||||
DD 017ae00h, 015bh
|
||||
DD 014f800h, 015bh
|
||||
DD 0124400h, 0143h
|
||||
DD 0fbe00h, 0143h
|
||||
DD 0d3800h, 012dh
|
||||
DD 0ade00h, 012dh
|
||||
DD 088400h, 011ah
|
||||
DD 065000h, 011ah
|
||||
DD 041c00h, 0108h
|
||||
DD 020c00h, 0106h
|
||||
|
||||
recompiler_frsqrte PROC
|
||||
; store all modified registers
|
||||
push rdx
|
||||
push rcx
|
||||
push rax
|
||||
push r8
|
||||
push r9
|
||||
movq r8, xmm15
|
||||
mov rax,7FFFFFFFFFFFFFFFh
|
||||
test rax,r8
|
||||
jne frsqrte_espresso_label1
|
||||
mov rax,0FFF0000000000000h
|
||||
and r8,rax
|
||||
mov rax,7FF0000000000000h
|
||||
or r8,rax
|
||||
movq xmm15, r8
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
frsqrte_espresso_label1:
|
||||
mov r9,r8
|
||||
shr r9,34h
|
||||
and r9d,7FFh
|
||||
cmp r9d,7FFh
|
||||
jne frsqrte_espresso_label2
|
||||
mov rax,0FFFFFFFFFFFFFh
|
||||
test rax,r8
|
||||
jne frsqrte_espresso_label3
|
||||
test r8,r8
|
||||
js frsqrte_espresso_label4
|
||||
xorps xmm15,xmm15
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
frsqrte_espresso_label2:
|
||||
test r8,r8
|
||||
jns frsqrte_espresso_label5
|
||||
frsqrte_espresso_label4:
|
||||
mov rax,7FF8000000000000h
|
||||
movq xmm15, rax
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
frsqrte_espresso_label5:
|
||||
lea rdx,[asmFrsqrteLookupTable]
|
||||
mov rax,r8
|
||||
shr rax,30h
|
||||
mov rcx,r8
|
||||
shr rcx,25h
|
||||
and eax,1Fh
|
||||
and ecx,7FFh
|
||||
imul ecx,dword ptr [rdx+rax*8+4]
|
||||
mov eax,dword ptr [rdx+rax*8]
|
||||
sub eax,ecx
|
||||
lea ecx,[r9-3FDh]
|
||||
shr ecx,1
|
||||
movsxd rdx,eax
|
||||
mov eax,3FFh
|
||||
sub eax,ecx
|
||||
shl rdx,1Ah
|
||||
mov ecx,eax
|
||||
mov rax,8000000000000000h
|
||||
and r8,rax
|
||||
shl rcx,34h
|
||||
or rcx,r8
|
||||
add rdx,rcx
|
||||
movq xmm15, rdx
|
||||
frsqrte_espresso_label3:
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
|
||||
recompiler_frsqrte ENDP
|
||||
|
||||
asmFrsqrteLookupTable:
|
||||
DD 01a7e800h, 0568h
|
||||
DD 017cb800h, 04f3h
|
||||
DD 01552800h, 048dh
|
||||
DD 0130c000h, 0435h
|
||||
DD 010f2000h, 03e7h
|
||||
DD 0eff000h, 03a2h
|
||||
DD 0d2e000h, 0365h
|
||||
DD 0b7c000h, 032eh
|
||||
DD 09e5000h, 02fch
|
||||
DD 0867000h, 02d0h
|
||||
DD 06ff000h, 02a8h
|
||||
DD 05ab800h, 0283h
|
||||
DD 046a000h, 0261h
|
||||
DD 0339800h, 0243h
|
||||
DD 0218800h, 0226h
|
||||
DD 0105800h, 020bh
|
||||
DD 03ffa000h, 07a4h
|
||||
DD 03c29000h, 0700h
|
||||
DD 038aa000h, 0670h
|
||||
DD 03572000h, 05f2h
|
||||
DD 03279000h, 0584h
|
||||
DD 02fb7000h, 0524h
|
||||
DD 02d26000h, 04cch
|
||||
DD 02ac0000h, 047eh
|
||||
DD 02881000h, 043ah
|
||||
DD 02665000h, 03fah
|
||||
DD 02468000h, 03c2h
|
||||
DD 02287000h, 038eh
|
||||
DD 020c1000h, 035eh
|
||||
DD 01f12000h, 0332h
|
||||
DD 01d79000h, 030ah
|
||||
DD 01bf4000h, 02e6h
|
||||
|
||||
|
||||
|
||||
END
|
|
@ -1,237 +0,0 @@
|
|||
DEFAULT REL
|
||||
|
||||
SECTION .text
|
||||
|
||||
global udiv128
|
||||
global recompiler_fres
|
||||
global recompiler_frsqrte
|
||||
|
||||
udiv128:
|
||||
mov rax, rcx
|
||||
div r8
|
||||
mov [r9], rdx
|
||||
ret
|
||||
|
||||
recompiler_fres:
|
||||
; store all modified registers
|
||||
push rdx
|
||||
push rcx
|
||||
push rax
|
||||
push r8
|
||||
lea r8,[asmFresLookupTable]
|
||||
movq rdx, xmm15
|
||||
mov rcx,rdx
|
||||
shr rcx,2Fh
|
||||
mov rax,rdx
|
||||
and ecx,1Fh
|
||||
shr rax,25h
|
||||
and eax,3FFh
|
||||
imul eax,dword [r8+rcx*8+4]
|
||||
mov r8d,dword [r8+rcx*8]
|
||||
mov rcx,rdx
|
||||
shr rcx,34h
|
||||
inc eax
|
||||
shr eax,1
|
||||
sub r8d,eax
|
||||
and ecx,7FFh
|
||||
jne fres_espresso_label3
|
||||
mov rax,7FF0000000000000h
|
||||
or rdx,rax
|
||||
movq xmm15, rdx
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
fres_espresso_label3:
|
||||
cmp ecx,7FFh
|
||||
jne fres_espresso_label4
|
||||
mov rax,0FFFFFFFFFFFFFh
|
||||
test rax,rdx
|
||||
jne fres_espresso_label1
|
||||
test rdx,rdx
|
||||
jns fres_espresso_label2
|
||||
mov rax,8000000000000000h
|
||||
movq xmm15, rax
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
fres_espresso_label2:
|
||||
xorps xmm15,xmm15
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
fres_espresso_label4:
|
||||
mov eax,7FDh
|
||||
sub eax,ecx
|
||||
mov ecx,eax
|
||||
mov rax,8000000000000000h
|
||||
and rdx,rax
|
||||
shl rcx,34h
|
||||
mov eax,r8d
|
||||
or rcx,rdx
|
||||
shl rax,1Dh
|
||||
add rcx,rax
|
||||
movq xmm15, rcx
|
||||
fres_espresso_label1:
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
|
||||
asmFresLookupTable:
|
||||
DD 07ff800h, 03e1h
|
||||
DD 0783800h, 03a7h
|
||||
DD 070ea00h, 0371h
|
||||
DD 06a0800h, 0340h
|
||||
DD 0638800h, 0313h
|
||||
DD 05d6200h, 02eah
|
||||
DD 0579000h, 02c4h
|
||||
DD 0520800h, 02a0h
|
||||
DD 04cc800h, 027fh
|
||||
DD 047ca00h, 0261h
|
||||
DD 0430800h, 0245h
|
||||
DD 03e8000h, 022ah
|
||||
DD 03a2c00h, 0212h
|
||||
DD 0360800h, 01fbh
|
||||
DD 0321400h, 01e5h
|
||||
DD 02e4a00h, 01d1h
|
||||
DD 02aa800h, 01beh
|
||||
DD 0272c00h, 01ach
|
||||
DD 023d600h, 019bh
|
||||
DD 0209e00h, 018bh
|
||||
DD 01d8800h, 017ch
|
||||
DD 01a9000h, 016eh
|
||||
DD 017ae00h, 015bh
|
||||
DD 014f800h, 015bh
|
||||
DD 0124400h, 0143h
|
||||
DD 0fbe00h, 0143h
|
||||
DD 0d3800h, 012dh
|
||||
DD 0ade00h, 012dh
|
||||
DD 088400h, 011ah
|
||||
DD 065000h, 011ah
|
||||
DD 041c00h, 0108h
|
||||
DD 020c00h, 0106h
|
||||
|
||||
recompiler_frsqrte:
|
||||
; store all modified registers
|
||||
push rdx
|
||||
push rcx
|
||||
push rax
|
||||
push r8
|
||||
push r9
|
||||
movq r8, xmm15
|
||||
mov rax,7FFFFFFFFFFFFFFFh
|
||||
test rax,r8
|
||||
jne frsqrte_espresso_label1
|
||||
mov rax,0FFF0000000000000h
|
||||
and r8,rax
|
||||
mov rax,7FF0000000000000h
|
||||
or r8,rax
|
||||
movq xmm15, r8
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
frsqrte_espresso_label1:
|
||||
mov r9,r8
|
||||
shr r9,34h
|
||||
and r9d,7FFh
|
||||
cmp r9d,7FFh
|
||||
jne frsqrte_espresso_label2
|
||||
mov rax,0FFFFFFFFFFFFFh
|
||||
test rax,r8
|
||||
jne frsqrte_espresso_label3
|
||||
test r8,r8
|
||||
js frsqrte_espresso_label4
|
||||
xorps xmm15,xmm15
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
frsqrte_espresso_label2:
|
||||
test r8,r8
|
||||
jns frsqrte_espresso_label5
|
||||
frsqrte_espresso_label4:
|
||||
mov rax,7FF8000000000000h
|
||||
movq xmm15, rax
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
frsqrte_espresso_label5:
|
||||
lea rdx,[asmFrsqrteLookupTable]
|
||||
mov rax,r8
|
||||
shr rax,30h
|
||||
mov rcx,r8
|
||||
shr rcx,25h
|
||||
and eax,1Fh
|
||||
and ecx,7FFh
|
||||
imul ecx,dword [rdx+rax*8+4]
|
||||
mov eax,dword [rdx+rax*8]
|
||||
sub eax,ecx
|
||||
lea ecx,[r9-3FDh]
|
||||
shr ecx,1
|
||||
movsxd rdx,eax
|
||||
mov eax,3FFh
|
||||
sub eax,ecx
|
||||
shl rdx,1Ah
|
||||
mov ecx,eax
|
||||
mov rax,8000000000000000h
|
||||
and r8,rax
|
||||
shl rcx,34h
|
||||
or rcx,r8
|
||||
add rdx,rcx
|
||||
movq xmm15, rdx
|
||||
frsqrte_espresso_label3:
|
||||
pop r9
|
||||
pop r8
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
ret
|
||||
|
||||
asmFrsqrteLookupTable:
|
||||
DD 01a7e800h, 0568h
|
||||
DD 017cb800h, 04f3h
|
||||
DD 01552800h, 048dh
|
||||
DD 0130c000h, 0435h
|
||||
DD 010f2000h, 03e7h
|
||||
DD 0eff000h, 03a2h
|
||||
DD 0d2e000h, 0365h
|
||||
DD 0b7c000h, 032eh
|
||||
DD 09e5000h, 02fch
|
||||
DD 0867000h, 02d0h
|
||||
DD 06ff000h, 02a8h
|
||||
DD 05ab800h, 0283h
|
||||
DD 046a000h, 0261h
|
||||
DD 0339800h, 0243h
|
||||
DD 0218800h, 0226h
|
||||
DD 0105800h, 020bh
|
||||
DD 03ffa000h, 07a4h
|
||||
DD 03c29000h, 0700h
|
||||
DD 038aa000h, 0670h
|
||||
DD 03572000h, 05f2h
|
||||
DD 03279000h, 0584h
|
||||
DD 02fb7000h, 0524h
|
||||
DD 02d26000h, 04cch
|
||||
DD 02ac0000h, 047eh
|
||||
DD 02881000h, 043ah
|
||||
DD 02665000h, 03fah
|
||||
DD 02468000h, 03c2h
|
||||
DD 02287000h, 038eh
|
||||
DD 020c1000h, 035eh
|
||||
DD 01f12000h, 0332h
|
||||
DD 01d79000h, 030ah
|
||||
DD 01bf4000h, 02e6h
|
Loading…
Add table
Add a link
Reference in a new issue