diff options
| author | 2018-12-21 02:22:44 -0300 | |
|---|---|---|
| committer | 2019-01-15 17:54:51 -0300 | |
| commit | 8486e7f8c8367a7cc225da9fbac262a116744108 (patch) | |
| tree | 13e8558c771c410dcf02349e737a3c7101f7a5ad /src | |
| parent | shader_decode: Implement IADD (diff) | |
| download | yuzu-8486e7f8c8367a7cc225da9fbac262a116744108.tar.gz yuzu-8486e7f8c8367a7cc225da9fbac262a116744108.tar.xz yuzu-8486e7f8c8367a7cc225da9fbac262a116744108.zip | |
shader_decode: Implement SEL
Diffstat (limited to 'src')
| -rw-r--r-- | src/video_core/shader/decode/arithmetic_integer.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/video_core/shader/decode/arithmetic_integer.cpp b/src/video_core/shader/decode/arithmetic_integer.cpp index 47b27ac5b..429b86813 100644 --- a/src/video_core/shader/decode/arithmetic_integer.cpp +++ b/src/video_core/shader/decode/arithmetic_integer.cpp | |||
| @@ -41,6 +41,14 @@ u32 ShaderIR::DecodeArithmeticInteger(BasicBlock& bb, u32 pc) { | |||
| 41 | SetRegister(bb, instr.gpr0, Operation(OperationCode::IAdd, PRECISE, op_a, op_b)); | 41 | SetRegister(bb, instr.gpr0, Operation(OperationCode::IAdd, PRECISE, op_a, op_b)); |
| 42 | break; | 42 | break; |
| 43 | } | 43 | } |
| 44 | case OpCode::Id::SEL_C: | ||
| 45 | case OpCode::Id::SEL_R: | ||
| 46 | case OpCode::Id::SEL_IMM: { | ||
| 47 | const Node condition = GetPredicate(instr.sel.pred, instr.sel.neg_pred != 0); | ||
| 48 | const Node value = Operation(OperationCode::Select, PRECISE, condition, op_a, op_b); | ||
| 49 | SetRegister(bb, instr.gpr0, value); | ||
| 50 | break; | ||
| 51 | } | ||
| 44 | default: | 52 | default: |
| 45 | UNIMPLEMENTED_MSG("Unhandled ArithmeticInteger instruction: {}", opcode->get().GetName()); | 53 | UNIMPLEMENTED_MSG("Unhandled ArithmeticInteger instruction: {}", opcode->get().GetName()); |
| 46 | } | 54 | } |