diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/shader/decode/half_set_predicate.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/video_core/shader/decode/half_set_predicate.cpp b/src/video_core/shader/decode/half_set_predicate.cpp index 840694527..fec8f2dbe 100644 --- a/src/video_core/shader/decode/half_set_predicate.cpp +++ b/src/video_core/shader/decode/half_set_predicate.cpp | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | #include "common/assert.h" | 5 | #include "common/assert.h" |
| 6 | #include "common/common_types.h" | 6 | #include "common/common_types.h" |
| 7 | #include "common/logging/log.h" | ||
| 7 | #include "video_core/engines/shader_bytecode.h" | 8 | #include "video_core/engines/shader_bytecode.h" |
| 8 | #include "video_core/shader/node_helper.h" | 9 | #include "video_core/shader/node_helper.h" |
| 9 | #include "video_core/shader/shader_ir.h" | 10 | #include "video_core/shader/shader_ir.h" |
| @@ -18,7 +19,7 @@ u32 ShaderIR::DecodeHalfSetPredicate(NodeBlock& bb, u32 pc) { | |||
| 18 | const Instruction instr = {program_code[pc]}; | 19 | const Instruction instr = {program_code[pc]}; |
| 19 | const auto opcode = OpCode::Decode(instr); | 20 | const auto opcode = OpCode::Decode(instr); |
| 20 | 21 | ||
| 21 | DEBUG_ASSERT(instr.hsetp2.ftz == 0); | 22 | LOG_DEBUG(HW_GPU, "ftz={}", static_cast<u32>(instr.hsetp2.ftz)); |
| 22 | 23 | ||
| 23 | Node op_a = UnpackHalfFloat(GetRegister(instr.gpr8), instr.hsetp2.type_a); | 24 | Node op_a = UnpackHalfFloat(GetRegister(instr.gpr8), instr.hsetp2.type_a); |
| 24 | op_a = GetOperandAbsNegHalf(op_a, instr.hsetp2.abs_a, instr.hsetp2.negate_a); | 25 | op_a = GetOperandAbsNegHalf(op_a, instr.hsetp2.abs_a, instr.hsetp2.negate_a); |
| @@ -32,6 +33,8 @@ u32 ShaderIR::DecodeHalfSetPredicate(NodeBlock& bb, u32 pc) { | |||
| 32 | h_and = instr.hsetp2.cbuf_and_imm.h_and; | 33 | h_and = instr.hsetp2.cbuf_and_imm.h_and; |
| 33 | op_b = GetOperandAbsNegHalf(GetConstBuffer(instr.cbuf34.index, instr.cbuf34.GetOffset()), | 34 | op_b = GetOperandAbsNegHalf(GetConstBuffer(instr.cbuf34.index, instr.cbuf34.GetOffset()), |
| 34 | instr.hsetp2.cbuf.abs_b, instr.hsetp2.cbuf.negate_b); | 35 | instr.hsetp2.cbuf.abs_b, instr.hsetp2.cbuf.negate_b); |
| 36 | // F32 is hardcoded in hardware | ||
| 37 | op_b = UnpackHalfFloat(std::move(op_b), Tegra::Shader::HalfType::F32); | ||
| 35 | break; | 38 | break; |
| 36 | case OpCode::Id::HSETP2_IMM: | 39 | case OpCode::Id::HSETP2_IMM: |
| 37 | cond = instr.hsetp2.cbuf_and_imm.cond; | 40 | cond = instr.hsetp2.cbuf_and_imm.cond; |