Explorar o código

Merge pull request #7522 from ameerj/shader-recompiler-filenames

shader_recompiler/backend: Minor organization and refactoring to reduce compile time overhead
Mai M %!s(int64=4) %!d(string=hai) anos
pai
achega
edbde7a220
Modificáronse 65 ficheiros con 282 adicións e 214 borrados
  1. 6 6
      src/shader_recompiler/CMakeLists.txt
  2. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm.cpp
  3. 22 0
      src/shader_recompiler/backend/glasm/emit_glasm_barriers.cpp
  4. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_bitwise_conversion.cpp
  5. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_composite.cpp
  6. 30 1
      src/shader_recompiler/backend/glasm/emit_glasm_context_get_set.cpp
  7. 18 0
      src/shader_recompiler/backend/glasm/emit_glasm_control_flow.cpp
  8. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_convert.cpp
  9. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp
  10. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_image.cpp
  11. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
  12. 26 0
      src/shader_recompiler/backend/glasm/emit_glasm_logical.cpp
  13. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp
  14. 1 170
      src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp
  15. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_select.cpp
  16. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_shared_memory.cpp
  17. 95 0
      src/shader_recompiler/backend/glasm/emit_glasm_special.cpp
  18. 30 0
      src/shader_recompiler/backend/glasm/emit_glasm_undefined.cpp
  19. 1 1
      src/shader_recompiler/backend/glasm/emit_glasm_warp.cpp
  20. 1 1
      src/shader_recompiler/backend/glasm/glasm_emit_context.cpp
  21. 0 0
      src/shader_recompiler/backend/glasm/glasm_emit_context.h
  22. 1 1
      src/shader_recompiler/backend/glasm/reg_alloc.cpp
  23. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl.cpp
  24. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp
  25. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_barriers.cpp
  26. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_bitwise_conversion.cpp
  27. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp
  28. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp
  29. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_control_flow.cpp
  30. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp
  31. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp
  32. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_image.cpp
  33. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp
  34. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_logical.cpp
  35. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp
  36. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp
  37. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_select.cpp
  38. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp
  39. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_special.cpp
  40. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_undefined.cpp
  41. 1 1
      src/shader_recompiler/backend/glsl/emit_glsl_warp.cpp
  42. 1 1
      src/shader_recompiler/backend/glsl/glsl_emit_context.cpp
  43. 0 0
      src/shader_recompiler/backend/glsl/glsl_emit_context.h
  44. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv.cpp
  45. 1 3
      src/shader_recompiler/backend/spirv/emit_spirv.h
  46. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp
  47. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp
  48. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp
  49. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp
  50. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp
  51. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_control_flow.cpp
  52. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp
  53. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp
  54. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_image.cpp
  55. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_image_atomic.cpp
  56. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp
  57. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_logical.cpp
  58. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_memory.cpp
  59. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_select.cpp
  60. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_shared_memory.cpp
  61. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_special.cpp
  62. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_undefined.cpp
  63. 1 0
      src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp
  64. 1 1
      src/shader_recompiler/backend/spirv/spirv_emit_context.cpp
  65. 0 0
      src/shader_recompiler/backend/spirv/spirv_emit_context.h

+ 6 - 6
src/shader_recompiler/CMakeLists.txt

@@ -1,7 +1,5 @@
 add_library(shader_recompiler STATIC
     backend/bindings.h
-    backend/glasm/emit_context.cpp
-    backend/glasm/emit_context.h
     backend/glasm/emit_glasm.cpp
     backend/glasm/emit_glasm.h
     backend/glasm/emit_glasm_barriers.cpp
@@ -22,10 +20,10 @@ add_library(shader_recompiler STATIC
     backend/glasm/emit_glasm_special.cpp
     backend/glasm/emit_glasm_undefined.cpp
     backend/glasm/emit_glasm_warp.cpp
+    backend/glasm/glasm_emit_context.cpp
+    backend/glasm/glasm_emit_context.h
     backend/glasm/reg_alloc.cpp
     backend/glasm/reg_alloc.h
-    backend/glsl/emit_context.cpp
-    backend/glsl/emit_context.h
     backend/glsl/emit_glsl.cpp
     backend/glsl/emit_glsl.h
     backend/glsl/emit_glsl_atomic.cpp
@@ -47,10 +45,10 @@ add_library(shader_recompiler STATIC
     backend/glsl/emit_glsl_special.cpp
     backend/glsl/emit_glsl_undefined.cpp
     backend/glsl/emit_glsl_warp.cpp
+    backend/glsl/glsl_emit_context.cpp
+    backend/glsl/glsl_emit_context.h
     backend/glsl/var_alloc.cpp
     backend/glsl/var_alloc.h
-    backend/spirv/emit_context.cpp
-    backend/spirv/emit_context.h
     backend/spirv/emit_spirv.cpp
     backend/spirv/emit_spirv.h
     backend/spirv/emit_spirv_atomic.cpp
@@ -72,6 +70,8 @@ add_library(shader_recompiler STATIC
     backend/spirv/emit_spirv_special.cpp
     backend/spirv/emit_spirv_undefined.cpp
     backend/spirv/emit_spirv_warp.cpp
+    backend/spirv/spirv_emit_context.cpp
+    backend/spirv/spirv_emit_context.h
     environment.h
     exception.h
     frontend/ir/abstract_syntax_list.h

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm.cpp

@@ -9,9 +9,9 @@
 #include "common/div_ceil.h"
 #include "common/settings.h"
 #include "shader_recompiler/backend/bindings.h"
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/ir_emitter.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"

+ 22 - 0
src/shader_recompiler/backend/glasm/emit_glasm_barriers.cpp

@@ -0,0 +1,22 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
+
+namespace Shader::Backend::GLASM {
+
+void EmitBarrier(EmitContext& ctx) {
+    ctx.Add("BAR;");
+}
+
+void EmitWorkgroupMemoryBarrier(EmitContext& ctx) {
+    ctx.Add("MEMBAR.CTA;");
+}
+
+void EmitDeviceMemoryBarrier(EmitContext& ctx) {
+    ctx.Add("MEMBAR;");
+}
+
+} // namespace Shader::Backend::GLASM

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_bitwise_conversion.cpp

@@ -2,8 +2,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLASM {

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_composite.cpp

@@ -2,8 +2,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLASM {

+ 30 - 1
src/shader_recompiler/backend/glasm/emit_glasm_context_get_set.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"
 #include "shader_recompiler/shader_info.h"
@@ -335,6 +335,35 @@ void EmitSetFragDepth(EmitContext& ctx, ScalarF32 value) {
     ctx.Add("MOV.F result.depth.z,{};", value);
 }
 
+void EmitWorkgroupId(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {},invocation.groupid;", inst);
+}
+
+void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {},invocation.localid;", inst);
+}
+
+void EmitInvocationId(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,primitive_invocation.x;", inst);
+}
+
+void EmitSampleId(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,fragment.sampleid.x;", inst);
+}
+
+void EmitIsHelperInvocation(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,fragment.helperthread.x;", inst);
+}
+
+void EmitYDirection(EmitContext& ctx, IR::Inst& inst) {
+    ctx.uses_y_direction = true;
+    ctx.Add("MOV.F {}.x,y_direction[0].w;", inst);
+}
+
+void EmitResolutionDownFactor(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.F {}.x,scaling[0].z;", inst);
+}
+
 void EmitLoadLocal(EmitContext& ctx, IR::Inst& inst, ScalarU32 word_offset) {
     ctx.Add("MOV.U {},lmem[{}].x;", inst, word_offset);
 }

+ 18 - 0
src/shader_recompiler/backend/glasm/emit_glasm_control_flow.cpp

@@ -0,0 +1,18 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
+
+namespace Shader::Backend::GLASM {
+
+void EmitJoin(EmitContext&) {
+    throw NotImplementedException("Join shouldn't be emitted");
+}
+
+void EmitDemoteToHelperInvocation(EmitContext& ctx) {
+    ctx.Add("KIL TR.x;");
+}
+
+} // namespace Shader::Backend::GLASM

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_convert.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 #include "shader_recompiler/frontend/ir/value.h"
 

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_floating_point.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 #include "shader_recompiler/frontend/ir/value.h"
 

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_image.cpp

@@ -4,8 +4,8 @@
 
 #include <utility>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 #include "shader_recompiler/frontend/ir/value.h"
 

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp

@@ -2,8 +2,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLASM {

+ 26 - 0
src/shader_recompiler/backend/glasm/emit_glasm_logical.cpp

@@ -0,0 +1,26 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
+
+namespace Shader::Backend::GLASM {
+
+void EmitLogicalOr(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
+    ctx.Add("OR.S {},{},{};", inst, a, b);
+}
+
+void EmitLogicalAnd(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
+    ctx.Add("AND.S {},{},{};", inst, a, b);
+}
+
+void EmitLogicalXor(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
+    ctx.Add("XOR.S {},{},{};", inst, a, b);
+}
+
+void EmitLogicalNot(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
+    ctx.Add("SEQ.S {},{},0;", inst, value);
+}
+
+} // namespace Shader::Backend::GLASM

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_memory.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/runtime_info.h"

+ 1 - 170
src/shader_recompiler/backend/glasm/emit_glasm_not_implemented.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
@@ -17,110 +17,6 @@ namespace Shader::Backend::GLASM {
 
 #define NotImplemented() throw NotImplementedException("GLASM instruction {}", __LINE__)
 
-static void DefinePhi(EmitContext& ctx, IR::Inst& phi) {
-    switch (phi.Type()) {
-    case IR::Type::U1:
-    case IR::Type::U32:
-    case IR::Type::F32:
-        ctx.reg_alloc.Define(phi);
-        break;
-    case IR::Type::U64:
-    case IR::Type::F64:
-        ctx.reg_alloc.LongDefine(phi);
-        break;
-    default:
-        throw NotImplementedException("Phi node type {}", phi.Type());
-    }
-}
-
-void EmitPhi(EmitContext& ctx, IR::Inst& phi) {
-    const size_t num_args{phi.NumArgs()};
-    for (size_t i = 0; i < num_args; ++i) {
-        ctx.reg_alloc.Consume(phi.Arg(i));
-    }
-    if (!phi.Definition<Id>().is_valid) {
-        // The phi node wasn't forward defined
-        DefinePhi(ctx, phi);
-    }
-}
-
-void EmitVoid(EmitContext&) {}
-
-void EmitReference(EmitContext& ctx, const IR::Value& value) {
-    ctx.reg_alloc.Consume(value);
-}
-
-void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value& value) {
-    IR::Inst& phi{RegAlloc::AliasInst(*phi_value.Inst())};
-    if (!phi.Definition<Id>().is_valid) {
-        // The phi node wasn't forward defined
-        DefinePhi(ctx, phi);
-    }
-    const Register phi_reg{ctx.reg_alloc.Consume(IR::Value{&phi})};
-    const Value eval_value{ctx.reg_alloc.Consume(value)};
-
-    if (phi_reg == eval_value) {
-        return;
-    }
-    switch (phi.Flags<IR::Type>()) {
-    case IR::Type::U1:
-    case IR::Type::U32:
-    case IR::Type::F32:
-        ctx.Add("MOV.S {}.x,{};", phi_reg, ScalarS32{eval_value});
-        break;
-    case IR::Type::U64:
-    case IR::Type::F64:
-        ctx.Add("MOV.U64 {}.x,{};", phi_reg, ScalarRegister{eval_value});
-        break;
-    default:
-        throw NotImplementedException("Phi node type {}", phi.Type());
-    }
-}
-
-void EmitJoin(EmitContext& ctx) {
-    NotImplemented();
-}
-
-void EmitDemoteToHelperInvocation(EmitContext& ctx) {
-    ctx.Add("KIL TR.x;");
-}
-
-void EmitBarrier(EmitContext& ctx) {
-    ctx.Add("BAR;");
-}
-
-void EmitWorkgroupMemoryBarrier(EmitContext& ctx) {
-    ctx.Add("MEMBAR.CTA;");
-}
-
-void EmitDeviceMemoryBarrier(EmitContext& ctx) {
-    ctx.Add("MEMBAR;");
-}
-
-void EmitPrologue(EmitContext& ctx) {
-    // TODO
-}
-
-void EmitEpilogue(EmitContext& ctx) {
-    // TODO
-}
-
-void EmitEmitVertex(EmitContext& ctx, ScalarS32 stream) {
-    if (stream.type == Type::U32 && stream.imm_u32 == 0) {
-        ctx.Add("EMIT;");
-    } else {
-        ctx.Add("EMITS {};", stream);
-    }
-}
-
-void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
-    if (!stream.IsImmediate()) {
-        LOG_WARNING(Shader_GLASM, "Stream is not immediate");
-    }
-    ctx.reg_alloc.Consume(stream);
-    ctx.Add("ENDPRIM;");
-}
-
 void EmitGetRegister(EmitContext& ctx) {
     NotImplemented();
 }
@@ -185,55 +81,6 @@ void EmitSetOFlag(EmitContext& ctx) {
     NotImplemented();
 }
 
-void EmitWorkgroupId(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {},invocation.groupid;", inst);
-}
-
-void EmitLocalInvocationId(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {},invocation.localid;", inst);
-}
-
-void EmitInvocationId(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,primitive_invocation.x;", inst);
-}
-
-void EmitSampleId(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,fragment.sampleid.x;", inst);
-}
-
-void EmitIsHelperInvocation(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,fragment.helperthread.x;", inst);
-}
-
-void EmitYDirection(EmitContext& ctx, IR::Inst& inst) {
-    ctx.uses_y_direction = true;
-    ctx.Add("MOV.F {}.x,y_direction[0].w;", inst);
-}
-
-void EmitResolutionDownFactor(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.F {}.x,scaling[0].z;", inst);
-}
-
-void EmitUndefU1(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,0;", inst);
-}
-
-void EmitUndefU8(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,0;", inst);
-}
-
-void EmitUndefU16(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,0;", inst);
-}
-
-void EmitUndefU32(EmitContext& ctx, IR::Inst& inst) {
-    ctx.Add("MOV.S {}.x,0;", inst);
-}
-
-void EmitUndefU64(EmitContext& ctx, IR::Inst& inst) {
-    ctx.LongAdd("MOV.S64 {}.x,0;", inst);
-}
-
 void EmitGetZeroFromOp(EmitContext& ctx) {
     NotImplemented();
 }
@@ -258,20 +105,4 @@ void EmitGetInBoundsFromOp(EmitContext& ctx) {
     NotImplemented();
 }
 
-void EmitLogicalOr(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
-    ctx.Add("OR.S {},{},{};", inst, a, b);
-}
-
-void EmitLogicalAnd(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
-    ctx.Add("AND.S {},{},{};", inst, a, b);
-}
-
-void EmitLogicalXor(EmitContext& ctx, IR::Inst& inst, ScalarS32 a, ScalarS32 b) {
-    ctx.Add("XOR.S {},{},{};", inst, a, b);
-}
-
-void EmitLogicalNot(EmitContext& ctx, IR::Inst& inst, ScalarS32 value) {
-    ctx.Add("SEQ.S {},{},0;", inst, value);
-}
-
 } // namespace Shader::Backend::GLASM

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_select.cpp

@@ -3,8 +3,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLASM {

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_shared_memory.cpp

@@ -3,8 +3,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLASM {

+ 95 - 0
src/shader_recompiler/backend/glasm/emit_glasm_special.cpp

@@ -0,0 +1,95 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
+#include "shader_recompiler/frontend/ir/value.h"
+
+namespace Shader::Backend::GLASM {
+
+static void DefinePhi(EmitContext& ctx, IR::Inst& phi) {
+    switch (phi.Type()) {
+    case IR::Type::U1:
+    case IR::Type::U32:
+    case IR::Type::F32:
+        ctx.reg_alloc.Define(phi);
+        break;
+    case IR::Type::U64:
+    case IR::Type::F64:
+        ctx.reg_alloc.LongDefine(phi);
+        break;
+    default:
+        throw NotImplementedException("Phi node type {}", phi.Type());
+    }
+}
+
+void EmitPhi(EmitContext& ctx, IR::Inst& phi) {
+    const size_t num_args{phi.NumArgs()};
+    for (size_t i = 0; i < num_args; ++i) {
+        ctx.reg_alloc.Consume(phi.Arg(i));
+    }
+    if (!phi.Definition<Id>().is_valid) {
+        // The phi node wasn't forward defined
+        DefinePhi(ctx, phi);
+    }
+}
+
+void EmitVoid(EmitContext&) {}
+
+void EmitReference(EmitContext& ctx, const IR::Value& value) {
+    ctx.reg_alloc.Consume(value);
+}
+
+void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value& value) {
+    IR::Inst& phi{RegAlloc::AliasInst(*phi_value.Inst())};
+    if (!phi.Definition<Id>().is_valid) {
+        // The phi node wasn't forward defined
+        DefinePhi(ctx, phi);
+    }
+    const Register phi_reg{ctx.reg_alloc.Consume(IR::Value{&phi})};
+    const Value eval_value{ctx.reg_alloc.Consume(value)};
+
+    if (phi_reg == eval_value) {
+        return;
+    }
+    switch (phi.Flags<IR::Type>()) {
+    case IR::Type::U1:
+    case IR::Type::U32:
+    case IR::Type::F32:
+        ctx.Add("MOV.S {}.x,{};", phi_reg, ScalarS32{eval_value});
+        break;
+    case IR::Type::U64:
+    case IR::Type::F64:
+        ctx.Add("MOV.U64 {}.x,{};", phi_reg, ScalarRegister{eval_value});
+        break;
+    default:
+        throw NotImplementedException("Phi node type {}", phi.Type());
+    }
+}
+
+void EmitPrologue(EmitContext&) {
+    // TODO
+}
+
+void EmitEpilogue(EmitContext&) {
+    // TODO
+}
+
+void EmitEmitVertex(EmitContext& ctx, ScalarS32 stream) {
+    if (stream.type == Type::U32 && stream.imm_u32 == 0) {
+        ctx.Add("EMIT;");
+    } else {
+        ctx.Add("EMITS {};", stream);
+    }
+}
+
+void EmitEndPrimitive(EmitContext& ctx, const IR::Value& stream) {
+    if (!stream.IsImmediate()) {
+        LOG_WARNING(Shader_GLASM, "Stream is not immediate");
+    }
+    ctx.reg_alloc.Consume(stream);
+    ctx.Add("ENDPRIM;");
+}
+
+} // namespace Shader::Backend::GLASM

+ 30 - 0
src/shader_recompiler/backend/glasm/emit_glasm_undefined.cpp

@@ -0,0 +1,30 @@
+// Copyright 2021 yuzu Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
+
+namespace Shader::Backend::GLASM {
+
+void EmitUndefU1(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,0;", inst);
+}
+
+void EmitUndefU8(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,0;", inst);
+}
+
+void EmitUndefU16(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,0;", inst);
+}
+
+void EmitUndefU32(EmitContext& ctx, IR::Inst& inst) {
+    ctx.Add("MOV.S {}.x,0;", inst);
+}
+
+void EmitUndefU64(EmitContext& ctx, IR::Inst& inst) {
+    ctx.LongAdd("MOV.S64 {}.x,0;", inst);
+}
+
+} // namespace Shader::Backend::GLASM

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_glasm_warp.cpp

@@ -2,8 +2,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm_instructions.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"
 

+ 1 - 1
src/shader_recompiler/backend/glasm/emit_context.cpp → src/shader_recompiler/backend/glasm/glasm_emit_context.cpp

@@ -5,8 +5,8 @@
 #include <string_view>
 
 #include "shader_recompiler/backend/bindings.h"
-#include "shader_recompiler/backend/glasm/emit_context.h"
 #include "shader_recompiler/backend/glasm/emit_glasm.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
 #include "shader_recompiler/runtime_info.h"

+ 0 - 0
src/shader_recompiler/backend/glasm/emit_context.h → src/shader_recompiler/backend/glasm/glasm_emit_context.h


+ 1 - 1
src/shader_recompiler/backend/glasm/reg_alloc.cpp

@@ -6,7 +6,7 @@
 
 #include <fmt/format.h>
 
-#include "shader_recompiler/backend/glasm/emit_context.h"
+#include "shader_recompiler/backend/glasm/glasm_emit_context.h"
 #include "shader_recompiler/backend/glasm/reg_alloc.h"
 #include "shader_recompiler/exception.h"
 #include "shader_recompiler/frontend/ir/value.h"

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl.cpp

@@ -9,9 +9,9 @@
 
 #include "common/div_ceil.h"
 #include "common/settings.h"
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/ir_emitter.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_atomic.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_barriers.cpp

@@ -2,8 +2,8 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_bitwise_conversion.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_composite.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_context_get_set.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"
 #include "shader_recompiler/runtime_info.h"

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_control_flow.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/exception.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_convert.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_floating_point.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 #include "shader_recompiler/frontend/ir/value.h"
 

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_image.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_integer.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_logical.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_memory.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"
 

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_not_implemented.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 #ifdef _MSC_VER

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_select.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_shared_memory.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 
 namespace Shader::Backend::GLSL {

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_special.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_undefined.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 
 namespace Shader::Backend::GLSL {
 

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_glsl_warp.cpp

@@ -4,8 +4,8 @@
 
 #include <string_view>
 
-#include "shader_recompiler/backend/glsl/emit_context.h"
 #include "shader_recompiler/backend/glsl/emit_glsl_instructions.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/value.h"
 #include "shader_recompiler/profile.h"
 

+ 1 - 1
src/shader_recompiler/backend/glsl/emit_context.cpp → src/shader_recompiler/backend/glsl/glsl_emit_context.cpp

@@ -3,7 +3,7 @@
 // Refer to the license.txt file included.
 
 #include "shader_recompiler/backend/bindings.h"
-#include "shader_recompiler/backend/glsl/emit_context.h"
+#include "shader_recompiler/backend/glsl/glsl_emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
 #include "shader_recompiler/runtime_info.h"

+ 0 - 0
src/shader_recompiler/backend/glsl/emit_context.h → src/shader_recompiler/backend/glsl/glsl_emit_context.h


+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv.cpp

@@ -11,6 +11,7 @@
 #include "common/settings.h"
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 #include "shader_recompiler/frontend/ir/basic_block.h"
 #include "shader_recompiler/frontend/ir/program.h"
 

+ 1 - 3
src/shader_recompiler/backend/spirv/emit_spirv.h

@@ -6,13 +6,11 @@
 
 #include <vector>
 
-#include <sirit/sirit.h>
-
 #include "common/common_types.h"
 #include "shader_recompiler/backend/bindings.h"
-#include "shader_recompiler/backend/spirv/emit_context.h"
 #include "shader_recompiler/frontend/ir/program.h"
 #include "shader_recompiler/profile.h"
+#include "shader_recompiler/runtime_info.h"
 
 namespace Shader::Backend::SPIRV {
 

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_atomic.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_barriers.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 
 namespace Shader::Backend::SPIRV {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_bitwise_conversion.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_composite.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 
 namespace Shader::Backend::SPIRV {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_context_get_set.cpp

@@ -7,6 +7,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_control_flow.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_convert.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_floating_point.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 
 namespace Shader::Backend::SPIRV {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_image.cpp

@@ -6,6 +6,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 
 namespace Shader::Backend::SPIRV {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_image_atomic.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 #include "shader_recompiler/frontend/ir/modifiers.h"
 
 namespace Shader::Backend::SPIRV {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_logical.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_memory.cpp

@@ -6,6 +6,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_select.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_shared_memory.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_special.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_undefined.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 

+ 1 - 0
src/shader_recompiler/backend/spirv/emit_spirv_warp.cpp

@@ -4,6 +4,7 @@
 
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
 #include "shader_recompiler/backend/spirv/emit_spirv_instructions.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 1 - 1
src/shader_recompiler/backend/spirv/emit_context.cpp → src/shader_recompiler/backend/spirv/spirv_emit_context.cpp

@@ -13,8 +13,8 @@
 
 #include "common/common_types.h"
 #include "common/div_ceil.h"
-#include "shader_recompiler/backend/spirv/emit_context.h"
 #include "shader_recompiler/backend/spirv/emit_spirv.h"
+#include "shader_recompiler/backend/spirv/spirv_emit_context.h"
 
 namespace Shader::Backend::SPIRV {
 namespace {

+ 0 - 0
src/shader_recompiler/backend/spirv/emit_context.h → src/shader_recompiler/backend/spirv/spirv_emit_context.h