summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index bb5209a7e..ffb89e4f4 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -849,8 +849,7 @@ private:
849 ASSERT_MSG(!instr.conversion.saturate_a, "Unimplemented"); 849 ASSERT_MSG(!instr.conversion.saturate_a, "Unimplemented");
850 850
851 switch (opcode->GetId()) { 851 switch (opcode->GetId()) {
852 case OpCode::Id::I2I_R: 852 case OpCode::Id::I2I_R: {
853 case OpCode::Id::I2F_R: {
854 ASSERT_MSG(!instr.conversion.selector, "Unimplemented"); 853 ASSERT_MSG(!instr.conversion.selector, "Unimplemented");
855 854
856 std::string op_a = 855 std::string op_a =
@@ -863,6 +862,17 @@ private:
863 regs.SetRegisterToInteger(instr.gpr0, instr.conversion.is_signed, 0, op_a, 1, 1); 862 regs.SetRegisterToInteger(instr.gpr0, instr.conversion.is_signed, 0, op_a, 1, 1);
864 break; 863 break;
865 } 864 }
865 case OpCode::Id::I2F_R: {
866 std::string op_a =
867 regs.GetRegisterAsInteger(instr.gpr20, 0, instr.conversion.is_signed);
868
869 if (instr.conversion.abs_a) {
870 op_a = "abs(" + op_a + ')';
871 }
872
873 regs.SetRegisterToFloat(instr.gpr0, 0, op_a, 1, 1);
874 break;
875 }
866 case OpCode::Id::F2F_R: { 876 case OpCode::Id::F2F_R: {
867 std::string op_a = regs.GetRegisterAsFloat(instr.gpr20); 877 std::string op_a = regs.GetRegisterAsFloat(instr.gpr20);
868 878