mirror of
https://github.com/Vita3K/Vita3K-Android.git
synced 2025-03-02 18:36:34 +00:00
vita3k: Switch to C++20 and update dynarmic submodule.
Co-authored-by: Zangetsu38 <dante38@free.fr>
This commit is contained in:
parent
9c7fdedeb3
commit
76581db7fa
5
.github/workflows/c-cpp.yml
vendored
5
.github/workflows/c-cpp.yml
vendored
@ -21,12 +21,9 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-latest, ubuntu-latest, windows-latest]
|
||||
os: [ubuntu-latest, windows-latest]
|
||||
config: [Release]
|
||||
include:
|
||||
- os: macos-latest
|
||||
cache_path: ~/Library/Caches/ccache
|
||||
extra_cmake_args: -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/macos-x64.cmake
|
||||
- os: ubuntu-latest
|
||||
cache_path: ~/.ccache
|
||||
extra_cmake_args: -DCMAKE_TOOLCHAIN_FILE=./cmake/toolchain/linux-x64.cmake -DUSE_DISCORD_RICH_PRESENCE=OFF
|
||||
|
@ -5,7 +5,7 @@ project(Vita3K)
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(CPU_COUNT)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
@ -139,14 +139,6 @@ if(NOT CI)
|
||||
boost_set_paths()
|
||||
endif()
|
||||
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/GetStandard.cmake")
|
||||
get_standard_for_build()
|
||||
if(${CPP17_SUPPORTED})
|
||||
set(STANDARD_NUM 17)
|
||||
else()
|
||||
set(STANDARD_NUM 11)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
add_definitions (/D "_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS" /D "_CRT_SECURE_NO_WARNINGS" /D "NOMINMAX")
|
||||
endif()
|
||||
|
2
external/dynarmic
vendored
2
external/dynarmic
vendored
@ -1 +1 @@
|
||||
Subproject commit 66089b60cb832194d6c2ad289f164548587b9836
|
||||
Subproject commit 2f1d6b3452f31d6e59c53cba4a469a413b89df61
|
@ -48,9 +48,6 @@ macro(configure_boost)
|
||||
endmacro(configure_boost)
|
||||
|
||||
configure_boost()
|
||||
if(${STANDARD_NUM} GREATER 14)
|
||||
add_definitions(-DVITA3K_CPP${STANDARD_NUM})
|
||||
endif()
|
||||
|
||||
if (USE_DISCORD_RICH_PRESENCE)
|
||||
add_definitions(-DUSE_DISCORD)
|
||||
@ -104,9 +101,6 @@ endif()
|
||||
if(LINUX)
|
||||
target_link_libraries(vita3k PRIVATE stdc++fs)
|
||||
endif()
|
||||
if(${STANDARD_NUM} GREATER 14)
|
||||
target_compile_features(vita3k PUBLIC cxx_std_${STANDARD_NUM})
|
||||
endif()
|
||||
|
||||
set_target_properties(vita3k PROPERTIES OUTPUT_NAME Vita3K
|
||||
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
|
||||
|
@ -21,9 +21,10 @@
|
||||
#include <config/yaml.h>
|
||||
|
||||
#include <util/fs.h>
|
||||
#include <util/optional.h>
|
||||
#include <util/vector_utils.h>
|
||||
|
||||
#include <optional>
|
||||
|
||||
// Enum based on members in Config file
|
||||
// Used for easier getting of options and their names for config files
|
||||
enum file_config {
|
||||
@ -83,12 +84,12 @@ private:
|
||||
|
||||
public:
|
||||
// Optional config settings
|
||||
optional<fs::path> content_path;
|
||||
optional<std::string> run_app_path;
|
||||
optional<std::string> recompile_shader_path;
|
||||
optional<std::string> delete_title_id;
|
||||
optional<std::string> pkg_path;
|
||||
optional<std::string> pkg_zrif;
|
||||
std::optional<fs::path> content_path;
|
||||
std::optional<std::string> run_app_path;
|
||||
std::optional<std::string> recompile_shader_path;
|
||||
std::optional<std::string> delete_title_id;
|
||||
std::optional<std::string> pkg_path;
|
||||
std::optional<std::string> pkg_zrif;
|
||||
|
||||
// Setting not present in the YAML file
|
||||
fs::path config_path = {};
|
||||
|
@ -26,10 +26,6 @@
|
||||
#include <CLI11.hpp>
|
||||
#include <vector>
|
||||
|
||||
#ifndef VITA3K_CPP17
|
||||
#include <boost/optional/optional_io.hpp>
|
||||
#endif
|
||||
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
|
||||
|
@ -250,19 +250,19 @@ const std::vector<std::pair<SceSystemParamLang, std::string>> LIST_SYS_LANG = {
|
||||
{ SCE_SYSTEM_PARAM_LANG_GERMAN, "Deutsch" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_ENGLISH_GB, "English (United Kingdom)" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_ENGLISH_US, "English (United States)" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_SPANISH, u8"Español" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_FRENCH, u8"Français" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_SPANISH, reinterpret_cast<const char *>(u8"Español") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_FRENCH, reinterpret_cast<const char *>(u8"Français") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_ITALIAN, "Italiano" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_DUTCH, "Nederlands" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_NORWEGIAN, "Norsk" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_POLISH, "Polskis" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_PORTUGUESE_BR, u8"Português (Brasil)" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_PORTUGUESE_PT, u8"Português (Portugal)" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_RUSSIAN, u8"Русский" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_PORTUGUESE_BR, reinterpret_cast<const char *>(u8"Português (Brasil)") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_PORTUGUESE_PT, reinterpret_cast<const char *>(u8"Português (Portugal)") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_RUSSIAN, reinterpret_cast<const char *>(u8"Русский") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_FINNISH, "Suomi" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_SWEDISH, "Svenska" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_TURKISH, u8"Türkçe" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_JAPANESE, u8"日本語" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_TURKISH, reinterpret_cast<const char *>(u8"Türkçe") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_JAPANESE, reinterpret_cast<const char *>(u8"日本語") },
|
||||
{ SCE_SYSTEM_PARAM_LANG_KOREAN, "Korean" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_CHINESE_S, "Chinese - Simplified" },
|
||||
{ SCE_SYSTEM_PARAM_LANG_CHINESE_T, "Chinese - Traditional" },
|
||||
|
@ -157,19 +157,19 @@ void init_ime_lang(Ime &ime, const SceImeLanguage &lang) {
|
||||
break;
|
||||
case SCE_IME_LANGUAGE_PORTUGUESE_BR:
|
||||
case SCE_IME_LANGUAGE_PORTUGUESE_PT:
|
||||
space_str = u8"Espaço";
|
||||
space_str = reinterpret_cast<const char *>(u8"Espaço");
|
||||
break;
|
||||
case SCE_IME_LANGUAGE_RUSSIAN:
|
||||
space_str = u8"П р о б е л";
|
||||
space_str = reinterpret_cast<const char *>(u8"П р о б е л");
|
||||
break;
|
||||
case SCE_IME_LANGUAGE_FINNISH:
|
||||
space_str = u8"Välilyönti";
|
||||
space_str = reinterpret_cast<const char *>(u8"Välilyönti");
|
||||
break;
|
||||
case SCE_IME_LANGUAGE_SWEDISH:
|
||||
space_str = "Blanksteg";
|
||||
break;
|
||||
case SCE_IME_LANGUAGE_TURKISH:
|
||||
space_str = u8"Boşluk";
|
||||
space_str = reinterpret_cast<const char *>(u8"Boşluk");
|
||||
break;
|
||||
default:
|
||||
space_str = "Space";
|
||||
@ -216,7 +216,7 @@ void init_ime_lang(Ime &ime, const SceImeLanguage &lang) {
|
||||
};
|
||||
break;
|
||||
case SCE_IME_LANGUAGE_RUSSIAN:
|
||||
second_keyboard = { { FIRST, "ABC" }, { SECOND, u8"РУ" } };
|
||||
second_keyboard = { { FIRST, "ABC" }, { SECOND, reinterpret_cast<const char *>(u8"РУ") } };
|
||||
lang_key = {
|
||||
{ FIRST, { u"й", u"ц", u"у", u"к", u"е", u"н", u"г", u"ш", u"щ", u"з", u"х", u"ъ" } },
|
||||
{ SECOND, { u"ё", u"ф", u"ы", u"в", u"а", u"п", u"р", u"о", u"л", u"д", u"ж", u"э" } },
|
||||
|
@ -24,7 +24,8 @@
|
||||
#include <shader/usse_disasm.h>
|
||||
#include <shader/usse_types.h>
|
||||
#include <util/log.h>
|
||||
#include <util/optional.h>
|
||||
|
||||
#include <optional>
|
||||
|
||||
using namespace shader;
|
||||
using namespace usse;
|
||||
@ -1267,31 +1268,31 @@ enum class DualSrcId {
|
||||
|
||||
typedef std::array<DualSrcId, 3> DualSrcLayout;
|
||||
|
||||
static optional<DualSrcLayout> get_dual_op1_src_layout(uint8_t count, Imm2 config) {
|
||||
static std::optional<DualSrcLayout> get_dual_op1_src_layout(uint8_t count, Imm2 config) {
|
||||
switch (count) {
|
||||
case 1:
|
||||
switch (config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 3: return optional<DualSrcLayout>({ DualSrcId::INTERAL2, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 3: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL2, DualSrcId::NONE, DualSrcId::NONE });
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
case 2:
|
||||
switch (config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
case 3:
|
||||
switch (config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::INTERAL2 });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::UNIFIED });
|
||||
case 3: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::INTERAL2 });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::UNIFIED });
|
||||
case 3: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
default:
|
||||
return {};
|
||||
}
|
||||
@ -1303,33 +1304,33 @@ static optional<DualSrcLayout> get_dual_op1_src_layout(uint8_t count, Imm2 confi
|
||||
}
|
||||
|
||||
// Dual op2 layout depends on op1's src layout too...
|
||||
static optional<DualSrcLayout> get_dual_op2_src_layout(uint8_t op1_count, uint8_t op2_count, Imm2 src_config) {
|
||||
static std::optional<DualSrcLayout> get_dual_op2_src_layout(uint8_t op1_count, uint8_t op2_count, Imm2 src_config) {
|
||||
switch (op1_count) {
|
||||
case 1:
|
||||
switch (op2_count) {
|
||||
case 1:
|
||||
switch (src_config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
default: return {};
|
||||
}
|
||||
case 2:
|
||||
switch (src_config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
case 3: return optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::NONE });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
case 3: return std::optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
default: return {};
|
||||
}
|
||||
case 3:
|
||||
switch (src_config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::INTERAL2 });
|
||||
case 3: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::INTERNAL1 });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::INTERNAL1, DualSrcId::INTERAL2 });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::INTERAL2 });
|
||||
case 3: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::UNIFIED, DualSrcId::INTERNAL1 });
|
||||
default: return {};
|
||||
}
|
||||
default: return {};
|
||||
@ -1338,16 +1339,16 @@ static optional<DualSrcLayout> get_dual_op2_src_layout(uint8_t op1_count, uint8_
|
||||
switch (op2_count) {
|
||||
case 1:
|
||||
switch (src_config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
default: return {};
|
||||
}
|
||||
case 2:
|
||||
switch (src_config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERAL2, DualSrcId::NONE });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::INTERAL2, DualSrcId::NONE });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERAL2, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::INTERAL2, DualSrcId::NONE });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::INTERAL2, DualSrcId::NONE });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL2, DualSrcId::UNIFIED, DualSrcId::NONE });
|
||||
default: return {};
|
||||
}
|
||||
default: return {};
|
||||
@ -1356,10 +1357,10 @@ static optional<DualSrcLayout> get_dual_op2_src_layout(uint8_t op1_count, uint8_
|
||||
switch (op2_count) {
|
||||
case 1:
|
||||
switch (src_config) {
|
||||
case 0: return optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1: return optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 2: return optional<DualSrcLayout>({ DualSrcId::INTERAL2, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 3: return optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 0: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL0, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 1: return std::optional<DualSrcLayout>({ DualSrcId::INTERNAL1, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 2: return std::optional<DualSrcLayout>({ DualSrcId::INTERAL2, DualSrcId::NONE, DualSrcId::NONE });
|
||||
case 3: return std::optional<DualSrcLayout>({ DualSrcId::UNIFIED, DualSrcId::NONE, DualSrcId::NONE });
|
||||
default: return {};
|
||||
}
|
||||
default: return {};
|
||||
@ -1501,8 +1502,8 @@ bool USSETranslatorVisitor::vdual(
|
||||
op1.opr.dest = prim_ustore ? unified_dest : internal_dest;
|
||||
op2.opr.dest = prim_ustore ? internal_dest : unified_dest;
|
||||
|
||||
const optional<DualSrcLayout> op1_layout = get_dual_op1_src_layout(op1_info.src_count, src_config);
|
||||
const optional<DualSrcLayout> op2_layout = get_dual_op2_src_layout(op1_info.src_count, op2_info.src_count, src_config);
|
||||
const std::optional<DualSrcLayout> op1_layout = get_dual_op1_src_layout(op1_info.src_count, src_config);
|
||||
const std::optional<DualSrcLayout> op2_layout = get_dual_op2_src_layout(op1_info.src_count, op2_info.src_count, src_config);
|
||||
|
||||
if (!op1_layout) {
|
||||
LOG_ERROR("Missing dual for op1 layout.");
|
||||
|
@ -24,9 +24,9 @@
|
||||
#include <shader/usse_translator.h>
|
||||
#include <shader/usse_translator_types.h>
|
||||
#include <util/log.h>
|
||||
#include <util/optional.h>
|
||||
|
||||
#include <map>
|
||||
#include <optional>
|
||||
|
||||
namespace shader::usse {
|
||||
|
||||
@ -34,7 +34,7 @@ template <typename Visitor>
|
||||
using USSEMatcher = shader::decoder::Matcher<Visitor, uint64_t>;
|
||||
|
||||
template <typename V>
|
||||
static optional<const USSEMatcher<V>> DecodeUSSE(uint64_t instruction) {
|
||||
static std::optional<const USSEMatcher<V>> DecodeUSSE(uint64_t instruction) {
|
||||
static const std::vector<USSEMatcher<V>> table = {
|
||||
#define INST(fn, name, bitstring) shader::decoder::detail::detail<USSEMatcher<V>>::GetMatcher(fn, name, bitstring)
|
||||
// clang-format off
|
||||
@ -821,12 +821,7 @@ static optional<const USSEMatcher<V>> DecodeUSSE(uint64_t instruction) {
|
||||
const auto matches_instruction = [instruction](const auto &matcher) { return matcher.Matches(instruction); };
|
||||
|
||||
auto iter = std::find_if(table.begin(), table.end(), matches_instruction);
|
||||
return iter != table.end() ? optional<const USSEMatcher<V>>(*iter) :
|
||||
#ifdef VITA3K_CPP17
|
||||
std::nullopt;
|
||||
#else
|
||||
boost::none;
|
||||
#endif
|
||||
return iter != table.end() ? std::optional<const USSEMatcher<V>>(*iter) : std::nullopt;
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -24,27 +24,5 @@ add_library(
|
||||
src/instrset_detect.cpp
|
||||
)
|
||||
|
||||
set(INCLUDE_BEGIN "#pragma once
|
||||
|
||||
/*
|
||||
THIS IS AN AUTOMATICALLY GENERATED FILE. DO NOT EDIT!
|
||||
*/")
|
||||
|
||||
if(${STANDARD_NUM} GREATER 14)
|
||||
set(INCLUDE_HEADER "optional")
|
||||
set(NAMESPACE "std::optional")
|
||||
else()
|
||||
set(INCLUDE_HEADER "boost/optional.hpp")
|
||||
set(NAMESPACE "boost::optional")
|
||||
endif()
|
||||
|
||||
set(INCLUDE_COMPLETE "${INCLUDE_BEGIN}
|
||||
|
||||
#include <${INCLUDE_HEADER}>
|
||||
using ${NAMESPACE}\;
|
||||
")
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/include/util/optional.h" ${INCLUDE_COMPLETE})
|
||||
|
||||
target_include_directories(util PUBLIC include ${CMAKE_CURRENT_BINARY_DIR}/include)
|
||||
target_include_directories(util PUBLIC include)
|
||||
target_link_libraries(util PUBLIC ${Boost_LIBRARIES} fmt spdlog)
|
||||
|
Loading…
x
Reference in New Issue
Block a user