diff options
author | makigumo <makigumo@users.noreply.github.com> | 2020-03-22 23:37:01 +0100 |
---|---|---|
committer | Dan <dan@wadoku.de> | 2020-03-23 00:09:31 +0100 |
commit | 5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa (patch) | |
tree | 3ac5cad6331b5a3c7e8dba636fe68594e2968e50 /src/video_core/shader/decode/xmad.cpp | |
parent | Merge pull request #3477 from FearlessTobi/webapplet-shit (diff) | |
download | yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.tar yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.tar.gz yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.tar.bz2 yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.tar.lz yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.tar.xz yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.tar.zst yuzu-5a5c6d4ed820fcd0f97021dbdbdfaeaa97f86daa.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/shader/decode/xmad.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/video_core/shader/decode/xmad.cpp b/src/video_core/shader/decode/xmad.cpp index fbd7e9a17..6191ffba1 100644 --- a/src/video_core/shader/decode/xmad.cpp +++ b/src/video_core/shader/decode/xmad.cpp @@ -31,7 +31,7 @@ u32 ShaderIR::DecodeXmad(NodeBlock& bb, u32 pc) { const bool is_signed_b = instr.xmad.sign_b == 1; const bool is_signed_c = is_signed_a; - auto [is_merge, is_psl, is_high_b, mode, op_b, + auto [is_merge, is_psl, is_high_b, mode, op_b_binding, op_c] = [&]() -> std::tuple<bool, bool, bool, Tegra::Shader::XmadMode, Node, Node> { switch (opcode->get().GetId()) { case OpCode::Id::XMAD_CR: @@ -67,9 +67,10 @@ u32 ShaderIR::DecodeXmad(NodeBlock& bb, u32 pc) { op_a = SignedOperation(OperationCode::IBitfieldExtract, is_signed_a, std::move(op_a), instr.xmad.high_a ? Immediate(16) : Immediate(0), Immediate(16)); - const Node original_b = op_b; - op_b = SignedOperation(OperationCode::IBitfieldExtract, is_signed_b, std::move(op_b), - is_high_b ? Immediate(16) : Immediate(0), Immediate(16)); + const Node original_b = op_b_binding; + const Node op_b = + SignedOperation(OperationCode::IBitfieldExtract, is_signed_b, std::move(op_b_binding), + is_high_b ? Immediate(16) : Immediate(0), Immediate(16)); // we already check sign_a and sign_b is difference or not before so just use one in here. Node product = SignedOperation(OperationCode::IMul, is_signed_a, op_a, op_b); |