diff options
Diffstat (limited to 'src/shader_recompiler/frontend/maxwell')
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate/impl/video_minimum_maximum.cpp | 18 | ||||
| -rw-r--r-- | src/shader_recompiler/frontend/maxwell/translate_program.h | 3 |
2 files changed, 7 insertions, 14 deletions
diff --git a/src/shader_recompiler/frontend/maxwell/translate/impl/video_minimum_maximum.cpp b/src/shader_recompiler/frontend/maxwell/translate/impl/video_minimum_maximum.cpp index 78869601f..4851b0b8d 100644 --- a/src/shader_recompiler/frontend/maxwell/translate/impl/video_minimum_maximum.cpp +++ b/src/shader_recompiler/frontend/maxwell/translate/impl/video_minimum_maximum.cpp | |||
| @@ -57,16 +57,6 @@ void TranslatorVisitor::VMNMX(u64 insn) { | |||
| 57 | if (vmnmx.sat != 0) { | 57 | if (vmnmx.sat != 0) { |
| 58 | throw NotImplementedException("VMNMX SAT"); | 58 | throw NotImplementedException("VMNMX SAT"); |
| 59 | } | 59 | } |
| 60 | // Selectors were shown to default to 2 in unit tests | ||
| 61 | if (vmnmx.src_a_selector != 2) { | ||
| 62 | throw NotImplementedException("VMNMX Selector {}", vmnmx.src_a_selector.Value()); | ||
| 63 | } | ||
| 64 | if (vmnmx.src_b_selector != 2) { | ||
| 65 | throw NotImplementedException("VMNMX Selector {}", vmnmx.src_b_selector.Value()); | ||
| 66 | } | ||
| 67 | if (vmnmx.src_a_width != VideoWidth::Word) { | ||
| 68 | throw NotImplementedException("VMNMX Source Width {}", vmnmx.src_a_width.Value()); | ||
| 69 | } | ||
| 70 | 60 | ||
| 71 | const bool is_b_imm{vmnmx.is_src_b_reg == 0}; | 61 | const bool is_b_imm{vmnmx.is_src_b_reg == 0}; |
| 72 | const IR::U32 src_a{GetReg8(insn)}; | 62 | const IR::U32 src_a{GetReg8(insn)}; |
| @@ -76,10 +66,14 @@ void TranslatorVisitor::VMNMX(u64 insn) { | |||
| 76 | const VideoWidth a_width{vmnmx.src_a_width}; | 66 | const VideoWidth a_width{vmnmx.src_a_width}; |
| 77 | const VideoWidth b_width{GetVideoSourceWidth(vmnmx.src_b_width, is_b_imm)}; | 67 | const VideoWidth b_width{GetVideoSourceWidth(vmnmx.src_b_width, is_b_imm)}; |
| 78 | 68 | ||
| 69 | const u32 a_selector{static_cast<u32>(vmnmx.src_a_selector)}; | ||
| 70 | // Immediate values can't have a selector | ||
| 71 | const u32 b_selector{is_b_imm ? 0U : static_cast<u32>(vmnmx.src_b_selector)}; | ||
| 72 | |||
| 79 | const bool src_a_signed{vmnmx.src_a_sign != 0}; | 73 | const bool src_a_signed{vmnmx.src_a_sign != 0}; |
| 80 | const bool src_b_signed{vmnmx.src_b_sign != 0}; | 74 | const bool src_b_signed{vmnmx.src_b_sign != 0}; |
| 81 | const IR::U32 op_a{ExtractVideoOperandValue(ir, src_a, a_width, 0, src_a_signed)}; | 75 | const IR::U32 op_a{ExtractVideoOperandValue(ir, src_a, a_width, a_selector, src_a_signed)}; |
| 82 | const IR::U32 op_b{ExtractVideoOperandValue(ir, src_b, b_width, 0, src_b_signed)}; | 76 | const IR::U32 op_b{ExtractVideoOperandValue(ir, src_b, b_width, b_selector, src_b_signed)}; |
| 83 | 77 | ||
| 84 | // First operation's sign is only dependent on operand b's sign | 78 | // First operation's sign is only dependent on operand b's sign |
| 85 | const bool op_1_signed{src_b_signed}; | 79 | const bool op_1_signed{src_b_signed}; |
diff --git a/src/shader_recompiler/frontend/maxwell/translate_program.h b/src/shader_recompiler/frontend/maxwell/translate_program.h index cd535f20d..eac83da9d 100644 --- a/src/shader_recompiler/frontend/maxwell/translate_program.h +++ b/src/shader_recompiler/frontend/maxwell/translate_program.h | |||
| @@ -21,7 +21,6 @@ namespace Shader::Maxwell { | |||
| 21 | [[nodiscard]] IR::Program MergeDualVertexPrograms(IR::Program& vertex_a, IR::Program& vertex_b, | 21 | [[nodiscard]] IR::Program MergeDualVertexPrograms(IR::Program& vertex_a, IR::Program& vertex_b, |
| 22 | Environment& env_vertex_b); | 22 | Environment& env_vertex_b); |
| 23 | 23 | ||
| 24 | [[nodiscard]] void ConvertLegacyToGeneric(IR::Program& program, | 24 | void ConvertLegacyToGeneric(IR::Program& program, const RuntimeInfo& runtime_info); |
| 25 | const Shader::RuntimeInfo& runtime_info); | ||
| 26 | 25 | ||
| 27 | } // namespace Shader::Maxwell | 26 | } // namespace Shader::Maxwell |