emit_glasm_shared_memory.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2021 yuzu Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #include "shader_recompiler/backend/glasm/emit_context.h"
  5. #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
  6. #include "shader_recompiler/frontend/ir/value.h"
  7. namespace Shader::Backend::GLASM {
  8. void EmitLoadSharedU8(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  9. ctx.Add("LDS.U8 {},shared_mem[{}];", inst, offset);
  10. }
  11. void EmitLoadSharedS8(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  12. ctx.Add("LDS.S8 {},shared_mem[{}];", inst, offset);
  13. }
  14. void EmitLoadSharedU16(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  15. ctx.Add("LDS.U16 {},shared_mem[{}];", inst, offset);
  16. }
  17. void EmitLoadSharedS16(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  18. ctx.Add("LDS.S16 {},shared_mem[{}];", inst, offset);
  19. }
  20. void EmitLoadSharedU32(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  21. ctx.Add("LDS.U32 {},shared_mem[{}];", inst, offset);
  22. }
  23. void EmitLoadSharedU64(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  24. ctx.Add("LDS.U32X2 {},shared_mem[{}];", inst, offset);
  25. }
  26. void EmitLoadSharedU128(EmitContext& ctx, IR::Inst& inst, ScalarU32 offset) {
  27. ctx.Add("LDS.U32X4 {},shared_mem[{}];", inst, offset);
  28. }
  29. void EmitWriteSharedU8(EmitContext& ctx, ScalarU32 offset, ScalarU32 value) {
  30. ctx.Add("STS.U8 {},shared_mem[{}];", value, offset);
  31. }
  32. void EmitWriteSharedU16(EmitContext& ctx, ScalarU32 offset, ScalarU32 value) {
  33. ctx.Add("STS.U16 {},shared_mem[{}];", value, offset);
  34. }
  35. void EmitWriteSharedU32(EmitContext& ctx, ScalarU32 offset, ScalarU32 value) {
  36. ctx.Add("STS.U32 {},shared_mem[{}];", value, offset);
  37. }
  38. void EmitWriteSharedU64(EmitContext& ctx, ScalarU32 offset, Register value) {
  39. ctx.Add("STS.U32X2 {},shared_mem[{}];", value, offset);
  40. }
  41. void EmitWriteSharedU128(EmitContext& ctx, ScalarU32 offset, Register value) {
  42. ctx.Add("STS.U32X4 {},shared_mem[{}];", value, offset);
  43. }
  44. } // namespace Shader::Backend::GLASM