diff --git a/librecomp/CMakeLists.txt b/librecomp/CMakeLists.txt index 9c4bf53..3e460f0 100644 --- a/librecomp/CMakeLists.txt +++ b/librecomp/CMakeLists.txt @@ -4,6 +4,7 @@ project(librecomp) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(CMAKE_CXX_EXTENSIONS OFF) +set(CMAKE_C_STANDARD 11) # Define the library add_library(librecomp STATIC @@ -46,11 +47,13 @@ target_include_directories(librecomp PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/librecomp" ) -target_compile_options(librecomp PRIVATE -# -Wall -# -Wextra - -Wno-unused-parameter -) +if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(librecomp PRIVATE + # -Wall + # -Wextra + -Wno-unused-parameter + ) +endif() if (WIN32) add_compile_definitions(NOMINMAX) diff --git a/librecomp/include/librecomp/rsp_vu_impl.hpp b/librecomp/include/librecomp/rsp_vu_impl.hpp index dbf46b2..d3cdc2b 100644 --- a/librecomp/include/librecomp/rsp_vu_impl.hpp +++ b/librecomp/include/librecomp/rsp_vu_impl.hpp @@ -36,6 +36,12 @@ using u32 = uint32_t; #define DIVOUT vpu.divout #define DIVDP vpu.divdp +#ifdef _MSC_VER +#define COUNT_LEADING_ZEROES __lzcnt +#else +#define COUNT_LEADING_ZEROES __builtin_clz +#endif + auto RSP::r128::operator()(u32 index) const -> r128 { if constexpr (Accuracy::RSP::SISD) { r128 v{ *this }; @@ -1348,7 +1354,7 @@ auto RSP::VRCP(r128& vd, u8 de, cr128& vt) -> void { } else if (input == -32768) { result = 0xffff'0000; } else { - u32 shift = __builtin_clz(data); + u32 shift = COUNT_LEADING_ZEROES(data); u32 index = (u64(data) << shift & 0x7fc0'0000) >> 22; result = rspReciprocals[index]; result = (0x10000 | result) << 14; @@ -1400,7 +1406,7 @@ auto RSP::VRSQ(r128& vd, u8 de, cr128& vt) -> void { } else if (input == -32768) { result = 0xffff'0000; } else { - u32 shift = __builtin_clz(data); + u32 shift = COUNT_LEADING_ZEROES(data); u32 index = (u64(data) << shift & 0x7fc0'0000) >> 22; result = rspInverseSquareRoots[index & 0x1fe | shift & 1]; result = (0x10000 | result) << 14; diff --git a/ultramodern/CMakeLists.txt b/ultramodern/CMakeLists.txt index 90ac35a..a5c7656 100644 --- a/ultramodern/CMakeLists.txt +++ b/ultramodern/CMakeLists.txt @@ -29,11 +29,13 @@ target_include_directories(ultramodern PUBLIC "${PROJECT_SOURCE_DIR}/../thirdparty/sse2neon" ) -target_compile_options(ultramodern PRIVATE -# -Wall -# -Wextra - -Wno-unused-parameter -) +if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(ultramodern PRIVATE + # -Wall + # -Wextra + -Wno-unused-parameter + ) +endif() if (WIN32) add_compile_definitions(NOMINMAX)