diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-06-18 09:27:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-18 09:27:12 +0200 |
commit | 7dc72daea9603ec7329aef03259b7bafc97f9209 (patch) | |
tree | b95f0b6bd7864f73247387f7698433d98d138885 | |
parent | Merge pull request #2762 from wwylele/light-cp-tangent (diff) | |
parent | CMake: Set MSVC flags for improved C++ standards conformance (diff) | |
download | yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.tar yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.tar.gz yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.tar.bz2 yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.tar.lz yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.tar.xz yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.tar.zst yuzu-7dc72daea9603ec7329aef03259b7bafc97f9209.zip |
-rw-r--r-- | CMakeLists.txt | 9 | ||||
-rw-r--r-- | externals/CMakeLists.txt | 4 | ||||
m--------- | externals/dynarmic | 0 | ||||
-rw-r--r-- | src/video_core/shader/shader_jit_x64_compiler.cpp | 26 |
4 files changed, 20 insertions, 19 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f0af2d41..a61dee6e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,10 +92,13 @@ else() # /W3 - Level 3 warnings # /MP - Multi-threaded compilation # /Zi - Output debugging information - # /Zo - enahnced debug info for optimized builds - set(CMAKE_C_FLAGS "/W3 /MP /Zi /Zo" CACHE STRING "" FORCE) + # /Zo - enhanced debug info for optimized builds + # /permissive- - enables stricter C++ standards conformance checks + set(CMAKE_C_FLAGS "/W3 /MP /Zi /Zo /permissive-" CACHE STRING "" FORCE) # /EHsc - C++-only exception handling semantics - set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} /EHsc" CACHE STRING "" FORCE) + # /Zc:throwingNew - let codegen assume `operator new` will never return null + # /Zc:inline - let codegen omit inline functions in object files + set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} /EHsc /Zc:throwingNew,inline" CACHE STRING "" FORCE) # /MDd - Multi-threaded Debug Runtime DLL set(CMAKE_C_FLAGS_DEBUG "/Od /MDd" CACHE STRING "" FORCE) diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 1e04931ee..02e02350c 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -46,7 +46,5 @@ if (ARCHITECTURE_x86_64) # Defined before "dynarmic" above # add_library(xbyak INTERFACE) target_include_directories(xbyak INTERFACE ./xbyak/xbyak) - if (NOT MSVC) - target_compile_options(xbyak INTERFACE -fno-operator-names) - endif() + target_compile_definitions(xbyak INTERFACE XBYAK_NO_OP_NAMES) endif() diff --git a/externals/dynarmic b/externals/dynarmic -Subproject 7707ff13e981b0aecf87f3156ee0b641469f7bb +Subproject 8f15e3f70cb96e56705e5de6ba97b5d09423a56 diff --git a/src/video_core/shader/shader_jit_x64_compiler.cpp b/src/video_core/shader/shader_jit_x64_compiler.cpp index 5d9b6448c..42a57aab1 100644 --- a/src/video_core/shader/shader_jit_x64_compiler.cpp +++ b/src/video_core/shader/shader_jit_x64_compiler.cpp @@ -321,27 +321,27 @@ void JitShader::Compile_EvaluateCondition(Instruction instr) { case Instruction::FlowControlType::Or: mov(eax, COND0); mov(ebx, COND1); - xor(eax, (instr.flow_control.refx.Value() ^ 1)); - xor(ebx, (instr.flow_control.refy.Value() ^ 1)); - or (eax, ebx); + xor_(eax, (instr.flow_control.refx.Value() ^ 1)); + xor_(ebx, (instr.flow_control.refy.Value() ^ 1)); + or_(eax, ebx); break; case Instruction::FlowControlType::And: mov(eax, COND0); mov(ebx, COND1); - xor(eax, (instr.flow_control.refx.Value() ^ 1)); - xor(ebx, (instr.flow_control.refy.Value() ^ 1)); - and(eax, ebx); + xor_(eax, (instr.flow_control.refx.Value() ^ 1)); + xor_(ebx, (instr.flow_control.refy.Value() ^ 1)); + and_(eax, ebx); break; case Instruction::FlowControlType::JustX: mov(eax, COND0); - xor(eax, (instr.flow_control.refx.Value() ^ 1)); + xor_(eax, (instr.flow_control.refx.Value() ^ 1)); break; case Instruction::FlowControlType::JustY: mov(eax, COND1); - xor(eax, (instr.flow_control.refy.Value() ^ 1)); + xor_(eax, (instr.flow_control.refy.Value() ^ 1)); break; } } @@ -734,10 +734,10 @@ void JitShader::Compile_LOOP(Instruction instr) { mov(LOOPCOUNT, dword[SETUP + offset]); mov(LOOPCOUNT_REG, LOOPCOUNT); shr(LOOPCOUNT_REG, 4); - and(LOOPCOUNT_REG, 0xFF0); // Y-component is the start + and_(LOOPCOUNT_REG, 0xFF0); // Y-component is the start mov(LOOPINC, LOOPCOUNT); shr(LOOPINC, 12); - and(LOOPINC, 0xFF0); // Z-component is the incrementer + and_(LOOPINC, 0xFF0); // Z-component is the incrementer movzx(LOOPCOUNT, LOOPCOUNT.cvt8()); // X-component is iteration count add(LOOPCOUNT, 1); // Iteration count is X-component + 1 @@ -858,9 +858,9 @@ void JitShader::Compile(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>* program_ mov(STATE, ABI_PARAM2); // Zero address/loop registers - xor(ADDROFFS_REG_0.cvt32(), ADDROFFS_REG_0.cvt32()); - xor(ADDROFFS_REG_1.cvt32(), ADDROFFS_REG_1.cvt32()); - xor(LOOPCOUNT_REG, LOOPCOUNT_REG); + xor_(ADDROFFS_REG_0.cvt32(), ADDROFFS_REG_0.cvt32()); + xor_(ADDROFFS_REG_1.cvt32(), ADDROFFS_REG_1.cvt32()); + xor_(LOOPCOUNT_REG, LOOPCOUNT_REG); // Used to set a register to one static const __m128 one = {1.f, 1.f, 1.f, 1.f}; |