summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend')
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm.cpp1
-rw-r--r--src/shader_recompiler/backend/glasm/reg_alloc.cpp3
-rw-r--r--src/shader_recompiler/backend/glasm/reg_alloc.h11
3 files changed, 15 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm.cpp b/src/shader_recompiler/backend/glasm/emit_glasm.cpp
index ab6790ce8..e5c96eb7f 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm.cpp
@@ -54,6 +54,7 @@ public:
54 } 54 }
55 switch (value.type) { 55 switch (value.type) {
56 case Type::Register: 56 case Type::Register:
57 case Type::Void:
57 break; 58 break;
58 case Type::U32: 59 case Type::U32:
59 ctx.Add("MOV.U {}.x,{};", reg, value.imm_u32); 60 ctx.Add("MOV.U {}.x,{};", reg, value.imm_u32);
diff --git a/src/shader_recompiler/backend/glasm/reg_alloc.cpp b/src/shader_recompiler/backend/glasm/reg_alloc.cpp
index f556f3aee..0e38f467f 100644
--- a/src/shader_recompiler/backend/glasm/reg_alloc.cpp
+++ b/src/shader_recompiler/backend/glasm/reg_alloc.cpp
@@ -57,6 +57,9 @@ void RegAlloc::FreeReg(Register reg) {
57Value RegAlloc::MakeImm(const IR::Value& value) { 57Value RegAlloc::MakeImm(const IR::Value& value) {
58 Value ret; 58 Value ret;
59 switch (value.Type()) { 59 switch (value.Type()) {
60 case IR::Type::Void:
61 ret.type = Type::Void;
62 break;
60 case IR::Type::U1: 63 case IR::Type::U1:
61 ret.type = Type::U32; 64 ret.type = Type::U32;
62 ret.imm_u32 = value.U1() ? 0xffffffff : 0; 65 ret.imm_u32 = value.U1() ? 0xffffffff : 0;
diff --git a/src/shader_recompiler/backend/glasm/reg_alloc.h b/src/shader_recompiler/backend/glasm/reg_alloc.h
index 5742436cf..ede6edd1f 100644
--- a/src/shader_recompiler/backend/glasm/reg_alloc.h
+++ b/src/shader_recompiler/backend/glasm/reg_alloc.h
@@ -23,6 +23,7 @@ namespace Shader::Backend::GLASM {
23class EmitContext; 23class EmitContext;
24 24
25enum class Type : u32 { 25enum class Type : u32 {
26 Void,
26 Register, 27 Register,
27 U32, 28 U32,
28 S32, 29 S32,
@@ -65,6 +66,8 @@ struct Value {
65 return false; 66 return false;
66 } 67 }
67 switch (type) { 68 switch (type) {
69 case Type::Void:
70 return true;
68 case Type::Register: 71 case Type::Register:
69 return id == rhs.id; 72 return id == rhs.id;
70 case Type::U32: 73 case Type::U32:
@@ -218,6 +221,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarU32> {
218 template <typename FormatContext> 221 template <typename FormatContext>
219 auto format(const Shader::Backend::GLASM::ScalarU32& value, FormatContext& ctx) { 222 auto format(const Shader::Backend::GLASM::ScalarU32& value, FormatContext& ctx) {
220 switch (value.type) { 223 switch (value.type) {
224 case Shader::Backend::GLASM::Type::Void:
225 break;
221 case Shader::Backend::GLASM::Type::Register: 226 case Shader::Backend::GLASM::Type::Register:
222 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); 227 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id);
223 case Shader::Backend::GLASM::Type::U32: 228 case Shader::Backend::GLASM::Type::U32:
@@ -242,6 +247,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarS32> {
242 template <typename FormatContext> 247 template <typename FormatContext>
243 auto format(const Shader::Backend::GLASM::ScalarS32& value, FormatContext& ctx) { 248 auto format(const Shader::Backend::GLASM::ScalarS32& value, FormatContext& ctx) {
244 switch (value.type) { 249 switch (value.type) {
250 case Shader::Backend::GLASM::Type::Void:
251 break;
245 case Shader::Backend::GLASM::Type::Register: 252 case Shader::Backend::GLASM::Type::Register:
246 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); 253 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id);
247 case Shader::Backend::GLASM::Type::U32: 254 case Shader::Backend::GLASM::Type::U32:
@@ -266,6 +273,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF32> {
266 template <typename FormatContext> 273 template <typename FormatContext>
267 auto format(const Shader::Backend::GLASM::ScalarF32& value, FormatContext& ctx) { 274 auto format(const Shader::Backend::GLASM::ScalarF32& value, FormatContext& ctx) {
268 switch (value.type) { 275 switch (value.type) {
276 case Shader::Backend::GLASM::Type::Void:
277 break;
269 case Shader::Backend::GLASM::Type::Register: 278 case Shader::Backend::GLASM::Type::Register:
270 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); 279 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id);
271 case Shader::Backend::GLASM::Type::U32: 280 case Shader::Backend::GLASM::Type::U32:
@@ -290,6 +299,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF64> {
290 template <typename FormatContext> 299 template <typename FormatContext>
291 auto format(const Shader::Backend::GLASM::ScalarF64& value, FormatContext& ctx) { 300 auto format(const Shader::Backend::GLASM::ScalarF64& value, FormatContext& ctx) {
292 switch (value.type) { 301 switch (value.type) {
302 case Shader::Backend::GLASM::Type::Void:
303 break;
293 case Shader::Backend::GLASM::Type::Register: 304 case Shader::Backend::GLASM::Type::Register:
294 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); 305 return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id);
295 case Shader::Backend::GLASM::Type::U32: 306 case Shader::Backend::GLASM::Type::U32: