Minor changes to not compile specific x64 code on other arch and add dependency on xbyak_aarch64 on aarch64 platform.
This commit is contained in:
6
externals/CMakeLists.txt
vendored
6
externals/CMakeLists.txt
vendored
@@ -9,6 +9,10 @@ if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
|||||||
add_library(xbyak INTERFACE)
|
add_library(xbyak INTERFACE)
|
||||||
target_include_directories(xbyak SYSTEM INTERFACE ./xbyak/xbyak)
|
target_include_directories(xbyak SYSTEM INTERFACE ./xbyak/xbyak)
|
||||||
target_compile_definitions(xbyak INTERFACE XBYAK_NO_OP_NAMES)
|
target_compile_definitions(xbyak INTERFACE XBYAK_NO_OP_NAMES)
|
||||||
|
elseif(ARCHITECTURE_ARM64)
|
||||||
|
add_library(xbyak_aarch64 INTERFACE)
|
||||||
|
target_include_directories(xbyak_aarch64 SYSTEM INTERFACE ./xbyak_aarch64/xbyak_aarch64)
|
||||||
|
target_compile_definitions(xbyak_aarch64 INTERFACE XBYAK_NO_OP_NAMES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Catch
|
# Catch
|
||||||
@@ -16,7 +20,7 @@ add_library(catch-single-include INTERFACE)
|
|||||||
target_include_directories(catch-single-include INTERFACE catch/single_include)
|
target_include_directories(catch-single-include INTERFACE catch/single_include)
|
||||||
|
|
||||||
# Dynarmic
|
# Dynarmic
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_ARM64)
|
||||||
set(DYNARMIC_TESTS OFF)
|
set(DYNARMIC_TESTS OFF)
|
||||||
set(DYNARMIC_NO_BUNDLED_FMT ON)
|
set(DYNARMIC_NO_BUNDLED_FMT ON)
|
||||||
add_subdirectory(dynarmic)
|
add_subdirectory(dynarmic)
|
||||||
|
|||||||
@@ -220,7 +220,13 @@ endif()
|
|||||||
create_target_directory_groups(common)
|
create_target_directory_groups(common)
|
||||||
|
|
||||||
target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile)
|
target_link_libraries(common PUBLIC ${Boost_LIBRARIES} fmt::fmt microprofile)
|
||||||
target_link_libraries(common PRIVATE lz4::lz4 xbyak)
|
target_link_libraries(common PRIVATE lz4::lz4)
|
||||||
|
if (ARCHITECTURE_x86_64)
|
||||||
|
target_link_libraries(common PRIVATE xbyak)
|
||||||
|
elseif(ARCHITECTURE_ARM64)
|
||||||
|
target_link_libraries(common PRIVATE xbyak_aarch64)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
target_link_libraries(common PRIVATE zstd::zstd)
|
target_link_libraries(common PRIVATE zstd::zstd)
|
||||||
else()
|
else()
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#ifdef ARCHITECTURE_x86_64
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#pragma intrinsic(__umulh)
|
#pragma intrinsic(__umulh)
|
||||||
@@ -15,6 +16,7 @@
|
|||||||
#else
|
#else
|
||||||
#include <x86intrin.h>
|
#include <x86intrin.h>
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
|
|
||||||
|
|||||||
@@ -684,7 +684,7 @@ if (ENABLE_WEB_SERVICE)
|
|||||||
target_link_libraries(core PRIVATE web_service)
|
target_link_libraries(core PRIVATE web_service)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_ARM64)
|
||||||
target_sources(core PRIVATE
|
target_sources(core PRIVATE
|
||||||
arm/dynarmic/arm_dynarmic_32.cpp
|
arm/dynarmic/arm_dynarmic_32.cpp
|
||||||
arm/dynarmic/arm_dynarmic_32.h
|
arm/dynarmic/arm_dynarmic_32.h
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ PhysicalCore::PhysicalCore(std::size_t core_index, Core::System& system,
|
|||||||
PhysicalCore::~PhysicalCore() = default;
|
PhysicalCore::~PhysicalCore() = default;
|
||||||
|
|
||||||
void PhysicalCore::Initialize([[maybe_unused]] bool is_64_bit) {
|
void PhysicalCore::Initialize([[maybe_unused]] bool is_64_bit) {
|
||||||
#ifdef ARCHITECTURE_x86_64
|
#if defined(ARCHITECTURE_x86_64) || defined(ARCHITECTURE_ARM64)
|
||||||
auto& kernel = system.Kernel();
|
auto& kernel = system.Kernel();
|
||||||
if (is_64_bit) {
|
if (is_64_bit) {
|
||||||
arm_interface = std::make_unique<Core::ARM_Dynarmic_64>(
|
arm_interface = std::make_unique<Core::ARM_Dynarmic_64>(
|
||||||
|
|||||||
@@ -54,8 +54,6 @@ add_library(video_core STATIC
|
|||||||
macro/macro_hle.h
|
macro/macro_hle.h
|
||||||
macro/macro_interpreter.cpp
|
macro/macro_interpreter.cpp
|
||||||
macro/macro_interpreter.h
|
macro/macro_interpreter.h
|
||||||
macro/macro_jit_x64.cpp
|
|
||||||
macro/macro_jit_x64.h
|
|
||||||
fence_manager.h
|
fence_manager.h
|
||||||
gpu.cpp
|
gpu.cpp
|
||||||
gpu.h
|
gpu.h
|
||||||
@@ -261,10 +259,24 @@ add_library(video_core STATIC
|
|||||||
vulkan_common/nsight_aftermath_tracker.h
|
vulkan_common/nsight_aftermath_tracker.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(ARCHITECTURE_x86_64)
|
||||||
|
target_sources(video_core
|
||||||
|
PRIVATE
|
||||||
|
macro/macro_jit_x64.cpp
|
||||||
|
macro/macro_jit_x64.h
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
create_target_directory_groups(video_core)
|
create_target_directory_groups(video_core)
|
||||||
|
|
||||||
target_link_libraries(video_core PUBLIC common core)
|
target_link_libraries(video_core PUBLIC common core)
|
||||||
target_link_libraries(video_core PRIVATE glad xbyak)
|
target_link_libraries(video_core PRIVATE glad)
|
||||||
|
if (ARCHITECTURE_x86_64)
|
||||||
|
target_link_libraries(video_core PRIVATE xbyak)
|
||||||
|
elseif(ARCHITECTURE_ARM64)
|
||||||
|
target_link_libraries(video_core PRIVATE xbyak_aarch64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if (YUZU_USE_BUNDLED_FFMPEG AND NOT WIN32)
|
if (YUZU_USE_BUNDLED_FFMPEG AND NOT WIN32)
|
||||||
add_dependencies(video_core ffmpeg-build)
|
add_dependencies(video_core ffmpeg-build)
|
||||||
|
|||||||
@@ -11,8 +11,11 @@
|
|||||||
#include "video_core/macro/macro.h"
|
#include "video_core/macro/macro.h"
|
||||||
#include "video_core/macro/macro_hle.h"
|
#include "video_core/macro/macro_hle.h"
|
||||||
#include "video_core/macro/macro_interpreter.h"
|
#include "video_core/macro/macro_interpreter.h"
|
||||||
|
#ifdef ARCHITECTURE_x86_64
|
||||||
#include "video_core/macro/macro_jit_x64.h"
|
#include "video_core/macro/macro_jit_x64.h"
|
||||||
|
#elif ARCHITECTURE_ARM64
|
||||||
|
|
||||||
|
#endif
|
||||||
namespace Tegra {
|
namespace Tegra {
|
||||||
|
|
||||||
MacroEngine::MacroEngine(Engines::Maxwell3D& maxwell3d)
|
MacroEngine::MacroEngine(Engines::Maxwell3D& maxwell3d)
|
||||||
|
|||||||
Reference in New Issue
Block a user