mirror of
https://github.com/cemu-project/Cemu.git
synced 2025-07-07 23:41:18 +12:00
Drop src/asm/ since it's no longer needed
This commit is contained in:
parent
32205a2081
commit
ca292b1a50
8 changed files with 0 additions and 547 deletions
|
@ -49,7 +49,6 @@ add_subdirectory(audio)
|
|||
add_subdirectory(util)
|
||||
add_subdirectory(imgui)
|
||||
add_subdirectory(resource)
|
||||
add_subdirectory(asm)
|
||||
|
||||
add_executable(CemuBin
|
||||
main.cpp
|
||||
|
|
|
@ -544,7 +544,6 @@ else()
|
|||
endif()
|
||||
|
||||
target_link_libraries(CemuCafe PRIVATE
|
||||
CemuAsm
|
||||
CemuAudio
|
||||
CemuCommon
|
||||
CemuComponents
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include "Cafe/HW/Espresso/Const.h"
|
||||
#include "asm/x64util.h"
|
||||
#include "config/ActiveSettings.h"
|
||||
#include "util/helpers/fspinlock.h"
|
||||
#include "util/highresolutiontimer/HighResolutionTimer.h"
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
project(CemuAsm C)
|
||||
|
||||
if (CMAKE_OSX_ARCHITECTURES)
|
||||
set(CEMU_ASM_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES})
|
||||
else()
|
||||
set(CEMU_ASM_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR})
|
||||
endif()
|
||||
|
||||
if (CEMU_ASM_ARCHITECTURE MATCHES "(x86)|(X86)|(amd64)|(AMD64)")
|
||||
|
||||
if (WIN32)
|
||||
|
||||
enable_language(C ASM_MASM)
|
||||
|
||||
add_library(CemuAsm x64util_masm.asm)
|
||||
set_source_files_properties(x64util_masm.asm PROPERTIES LANGUAGE ASM_MASM)
|
||||
|
||||
# workaround for cr flag being passed to LINK.exe which considers it an input file and thus fails
|
||||
# doesn't always seem to happen. The Windows CI builds were fine, but locally I would run into this problem
|
||||
# possibly related to https://gitlab.kitware.com/cmake/cmake/-/issues/18889
|
||||
set(CMAKE_ASM_MASM_CREATE_STATIC_LIBRARY "<CMAKE_AR> /OUT:<TARGET> <LINK_FLAGS> <OBJECTS>")
|
||||
|
||||
set_property(TARGET CemuAsm PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||||
|
||||
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()
|
||||
|
||||
elseif(CEMU_ASM_ARCHITECTURE MATCHES "(aarch64)|(AARCH64)|(arm64)|(ARM64)")
|
||||
add_library(CemuAsm stub.cpp)
|
||||
else()
|
||||
message(STATUS "CemuAsm - Unsupported arch: ${CEMU_ASM_ARCHITECTURE}")
|
||||
endif()
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#if defined(ARCH_X86_64)
|
||||
|
||||
extern "C" void recompiler_fres();
|
||||
extern "C" void recompiler_frsqrte();
|
||||
|
||||
#else
|
||||
|
||||
// stubbed on non-x86 for now
|
||||
static void recompiler_fres()
|
||||
{
|
||||
cemu_assert_unimplemented();
|
||||
}
|
||||
static void recompiler_frsqrte()
|
||||
{
|
||||
cemu_assert_unimplemented();
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,233 +0,0 @@
|
|||
.code
|
||||
|
||||
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