Просмотр исходного кода

shader/memory: Implement unaligned LDL.S16 and LDS.S16

ReinUsesLisp 6 лет назад
Родитель
Сommit
9a2cdf8520
1 измененных файлов с 3 добавлено и 5 удалено
  1. 3 5
      src/video_core/shader/decode/memory.cpp

+ 3 - 5
src/video_core/shader/decode/memory.cpp

@@ -169,12 +169,10 @@ u32 ShaderIR::DecodeMemory(NodeBlock& bb, u32 pc) {
         };
 
         switch (instr.ldst_sl.type.Value()) {
-        case StoreType::Signed16: {
-            Node address = GetAddress(0);
-
-            SetRegister(bb, instr.gpr0, Sign16Extend(GetMemory(0)));
+        case StoreType::Signed16:
+            SetRegister(bb, instr.gpr0,
+                        Sign16Extend(ExtractUnaligned(GetMemory(0), GetAddress(0), 0b10, 16)));
             break;
-        }
         case StoreType::Bits32:
         case StoreType::Bits64:
         case StoreType::Bits128: {