mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-03 21:41:19 +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