diff options
| author | 2018-12-21 02:33:15 -0300 | |
|---|---|---|
| committer | 2019-01-15 17:54:52 -0300 | |
| commit | 8d42feb09b25825dad786cf311c9e7721c0f6c7c (patch) | |
| tree | b8be9c936475e9440f8feeecb375e9a47da41810 /src/video_core/shader | |
| parent | shader_decode: Implement HSETP2 (diff) | |
| download | yuzu-8d42feb09b25825dad786cf311c9e7721c0f6c7c.tar.gz yuzu-8d42feb09b25825dad786cf311c9e7721c0f6c7c.tar.xz yuzu-8d42feb09b25825dad786cf311c9e7721c0f6c7c.zip | |
shader_decode: Implement LD_L
Diffstat (limited to 'src/video_core/shader')
| -rw-r--r-- | src/video_core/shader/decode/memory.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/video_core/shader/decode/memory.cpp b/src/video_core/shader/decode/memory.cpp index 6219f8ee6..49b9a9eab 100644 --- a/src/video_core/shader/decode/memory.cpp +++ b/src/video_core/shader/decode/memory.cpp | |||
| @@ -104,6 +104,24 @@ u32 ShaderIR::DecodeMemory(BasicBlock& bb, u32 pc) { | |||
| 104 | } | 104 | } |
| 105 | break; | 105 | break; |
| 106 | } | 106 | } |
| 107 | case OpCode::Id::LD_L: { | ||
| 108 | UNIMPLEMENTED_IF_MSG(instr.ld_l.unknown == 1, "LD_L Unhandled mode: {}", | ||
| 109 | static_cast<unsigned>(instr.ld_l.unknown.Value())); | ||
| 110 | |||
| 111 | const Node index = Operation(OperationCode::IAdd, GetRegister(instr.gpr8), | ||
| 112 | Immediate(static_cast<s32>(instr.smem_imm))); | ||
| 113 | const Node lmem = GetLocalMemory(index); | ||
| 114 | |||
| 115 | switch (instr.ldst_sl.type.Value()) { | ||
| 116 | case Tegra::Shader::StoreType::Bytes32: | ||
| 117 | SetRegister(bb, instr.gpr0, lmem); | ||
| 118 | break; | ||
| 119 | default: | ||
| 120 | UNIMPLEMENTED_MSG("LD_L Unhandled type: {}", | ||
| 121 | static_cast<unsigned>(instr.ldst_sl.type.Value())); | ||
| 122 | } | ||
| 123 | break; | ||
| 124 | } | ||
| 107 | case OpCode::Id::ST_A: { | 125 | case OpCode::Id::ST_A: { |
| 108 | UNIMPLEMENTED_IF_MSG(instr.gpr8.Value() != Register::ZeroIndex, | 126 | UNIMPLEMENTED_IF_MSG(instr.gpr8.Value() != Register::ZeroIndex, |
| 109 | "Indirect attribute loads are not supported"); | 127 | "Indirect attribute loads are not supported"); |