summaryrefslogtreecommitdiff
path: root/src/video_core/shader
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/shader')
-rw-r--r--src/video_core/shader/decode.cpp4
-rw-r--r--src/video_core/shader/decode/conversion.cpp7
-rw-r--r--src/video_core/shader/decode/xmad.cpp5
-rw-r--r--src/video_core/shader/shader_ir.cpp9
4 files changed, 16 insertions, 9 deletions
diff --git a/src/video_core/shader/decode.cpp b/src/video_core/shader/decode.cpp
index e4c438792..2da595c0d 100644
--- a/src/video_core/shader/decode.cpp
+++ b/src/video_core/shader/decode.cpp
@@ -116,6 +116,8 @@ ExitMethod ShaderIR::Scan(u32 begin, u32 end, std::set<u32>& labels) {
116 // Continue scanning for an exit method. 116 // Continue scanning for an exit method.
117 break; 117 break;
118 } 118 }
119 default:
120 break;
119 } 121 }
120 } 122 }
121 return exit_method = ExitMethod::AlwaysReturn; 123 return exit_method = ExitMethod::AlwaysReturn;
@@ -206,4 +208,4 @@ u32 ShaderIR::DecodeInstr(NodeBlock& bb, u32 pc) {
206 return pc + 1; 208 return pc + 1;
207} 209}
208 210
209} // namespace VideoCommon::Shader \ No newline at end of file 211} // namespace VideoCommon::Shader
diff --git a/src/video_core/shader/decode/conversion.cpp b/src/video_core/shader/decode/conversion.cpp
index ba15b1115..b5ec9a6f5 100644
--- a/src/video_core/shader/decode/conversion.cpp
+++ b/src/video_core/shader/decode/conversion.cpp
@@ -120,10 +120,11 @@ u32 ShaderIR::DecodeConversion(NodeBlock& bb, u32 pc) {
120 return Operation(OperationCode::FCeil, PRECISE, value); 120 return Operation(OperationCode::FCeil, PRECISE, value);
121 case Tegra::Shader::F2fRoundingOp::Trunc: 121 case Tegra::Shader::F2fRoundingOp::Trunc:
122 return Operation(OperationCode::FTrunc, PRECISE, value); 122 return Operation(OperationCode::FTrunc, PRECISE, value);
123 default:
124 UNIMPLEMENTED_MSG("Unimplemented F2F rounding mode {}",
125 static_cast<u32>(instr.conversion.f2f.rounding.Value()));
126 return Immediate(0);
123 } 127 }
124 UNIMPLEMENTED_MSG("Unimplemented F2F rounding mode {}",
125 static_cast<u32>(instr.conversion.f2f.rounding.Value()));
126 return Immediate(0);
127 }(); 128 }();
128 value = GetSaturatedFloat(value, instr.alu.saturate_d); 129 value = GetSaturatedFloat(value, instr.alu.saturate_d);
129 130
diff --git a/src/video_core/shader/decode/xmad.cpp b/src/video_core/shader/decode/xmad.cpp
index db15c0718..04a776398 100644
--- a/src/video_core/shader/decode/xmad.cpp
+++ b/src/video_core/shader/decode/xmad.cpp
@@ -56,9 +56,10 @@ u32 ShaderIR::DecodeXmad(NodeBlock& bb, u32 pc) {
56 instr.xmad.mode, 56 instr.xmad.mode,
57 Immediate(static_cast<u32>(instr.xmad.imm20_16)), 57 Immediate(static_cast<u32>(instr.xmad.imm20_16)),
58 GetRegister(instr.gpr39)}; 58 GetRegister(instr.gpr39)};
59 default:
60 UNIMPLEMENTED_MSG("Unhandled XMAD instruction: {}", opcode->get().GetName());
61 return {false, false, false, Tegra::Shader::XmadMode::None, Immediate(0), Immediate(0)};
59 } 62 }
60 UNIMPLEMENTED_MSG("Unhandled XMAD instruction: {}", opcode->get().GetName());
61 return {false, false, false, Tegra::Shader::XmadMode::None, Immediate(0), Immediate(0)};
62 }(); 63 }();
63 64
64 op_a = BitfieldExtract(op_a, instr.xmad.high_a ? 16 : 0, 16); 65 op_a = BitfieldExtract(op_a, instr.xmad.high_a ? 16 : 0, 16);
diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp
index 17f2f711c..e4eb0dfd9 100644
--- a/src/video_core/shader/shader_ir.cpp
+++ b/src/video_core/shader/shader_ir.cpp
@@ -439,11 +439,14 @@ Node ShaderIR::BitfieldExtract(Node value, u32 offset, u32 bits) {
439 return OperationCode::LogicalUGreaterEqual; 439 return OperationCode::LogicalUGreaterEqual;
440 case OperationCode::INegate: 440 case OperationCode::INegate:
441 UNREACHABLE_MSG("Can't negate an unsigned integer"); 441 UNREACHABLE_MSG("Can't negate an unsigned integer");
442 return {};
442 case OperationCode::IAbsolute: 443 case OperationCode::IAbsolute:
443 UNREACHABLE_MSG("Can't apply absolute to an unsigned integer"); 444 UNREACHABLE_MSG("Can't apply absolute to an unsigned integer");
445 return {};
446 default:
447 UNREACHABLE_MSG("Unknown signed operation with code={}", static_cast<u32>(operation_code));
448 return {};
444 } 449 }
445 UNREACHABLE_MSG("Unknown signed operation with code={}", static_cast<u32>(operation_code));
446 return {};
447} 450}
448 451
449} // namespace VideoCommon::Shader \ No newline at end of file 452} // namespace VideoCommon::Shader