summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glasm/reg_alloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glasm/reg_alloc.h')
-rw-r--r--src/shader_recompiler/backend/glasm/reg_alloc.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/shader_recompiler/backend/glasm/reg_alloc.h b/src/shader_recompiler/backend/glasm/reg_alloc.h
index f1899eae1..200c51610 100644
--- a/src/shader_recompiler/backend/glasm/reg_alloc.h
+++ b/src/shader_recompiler/backend/glasm/reg_alloc.h
@@ -27,6 +27,7 @@ enum class Type : u32 {
27 U32, 27 U32,
28 S32, 28 S32,
29 F32, 29 F32,
30 U64,
30 F64, 31 F64,
31}; 32};
32 33
@@ -55,6 +56,7 @@ struct Value {
55 u32 imm_u32; 56 u32 imm_u32;
56 s32 imm_s32; 57 s32 imm_s32;
57 f32 imm_f32; 58 f32 imm_f32;
59 u64 imm_u64;
58 f64 imm_f64; 60 f64 imm_f64;
59 }; 61 };
60 62
@@ -71,6 +73,8 @@ struct Value {
71 return imm_s32 == rhs.imm_s32; 73 return imm_s32 == rhs.imm_s32;
72 case Type::F32: 74 case Type::F32:
73 return Common::BitCast<u32>(imm_f32) == Common::BitCast<u32>(rhs.imm_f32); 75 return Common::BitCast<u32>(imm_f32) == Common::BitCast<u32>(rhs.imm_f32);
76 case Type::U64:
77 return imm_u64 == rhs.imm_u64;
74 case Type::F64: 78 case Type::F64:
75 return Common::BitCast<u64>(imm_f64) == Common::BitCast<u64>(rhs.imm_f64); 79 return Common::BitCast<u64>(imm_f64) == Common::BitCast<u64>(rhs.imm_f64);
76 } 80 }
@@ -103,6 +107,10 @@ public:
103 107
104 void FreeReg(Register reg); 108 void FreeReg(Register reg);
105 109
110 void InvalidateConditionCodes() {
111 // This does nothing for now
112 }
113
106 [[nodiscard]] size_t NumUsedRegisters() const noexcept { 114 [[nodiscard]] size_t NumUsedRegisters() const noexcept {
107 return num_used_registers; 115 return num_used_registers;
108 } 116 }
@@ -210,6 +218,7 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarU32> {
210 return fmt::format_to(ctx.out(), "{}", static_cast<u32>(value.imm_s32)); 218 return fmt::format_to(ctx.out(), "{}", static_cast<u32>(value.imm_s32));
211 case Shader::Backend::GLASM::Type::F32: 219 case Shader::Backend::GLASM::Type::F32:
212 return fmt::format_to(ctx.out(), "{}", Common::BitCast<u32>(value.imm_f32)); 220 return fmt::format_to(ctx.out(), "{}", Common::BitCast<u32>(value.imm_f32));
221 case Shader::Backend::GLASM::Type::U64:
213 case Shader::Backend::GLASM::Type::F64: 222 case Shader::Backend::GLASM::Type::F64:
214 break; 223 break;
215 } 224 }
@@ -233,6 +242,7 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarS32> {
233 return fmt::format_to(ctx.out(), "{}", value.imm_s32); 242 return fmt::format_to(ctx.out(), "{}", value.imm_s32);
234 case Shader::Backend::GLASM::Type::F32: 243 case Shader::Backend::GLASM::Type::F32:
235 return fmt::format_to(ctx.out(), "{}", Common::BitCast<s32>(value.imm_f32)); 244 return fmt::format_to(ctx.out(), "{}", Common::BitCast<s32>(value.imm_f32));
245 case Shader::Backend::GLASM::Type::U64:
236 case Shader::Backend::GLASM::Type::F64: 246 case Shader::Backend::GLASM::Type::F64:
237 break; 247 break;
238 } 248 }
@@ -256,6 +266,7 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF32> {
256 return fmt::format_to(ctx.out(), "{}", Common::BitCast<s32>(value.imm_s32)); 266 return fmt::format_to(ctx.out(), "{}", Common::BitCast<s32>(value.imm_s32));
257 case Shader::Backend::GLASM::Type::F32: 267 case Shader::Backend::GLASM::Type::F32:
258 return fmt::format_to(ctx.out(), "{}", value.imm_f32); 268 return fmt::format_to(ctx.out(), "{}", value.imm_f32);
269 case Shader::Backend::GLASM::Type::U64:
259 case Shader::Backend::GLASM::Type::F64: 270 case Shader::Backend::GLASM::Type::F64:
260 break; 271 break;
261 } 272 }
@@ -277,6 +288,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF64> {
277 case Shader::Backend::GLASM::Type::S32: 288 case Shader::Backend::GLASM::Type::S32:
278 case Shader::Backend::GLASM::Type::F32: 289 case Shader::Backend::GLASM::Type::F32:
279 break; 290 break;
291 case Shader::Backend::GLASM::Type::U64:
292 return format_to(ctx.out(), "{}", Common::BitCast<f64>(value.imm_u64));
280 case Shader::Backend::GLASM::Type::F64: 293 case Shader::Backend::GLASM::Type::F64:
281 return format_to(ctx.out(), "{}", value.imm_f64); 294 return format_to(ctx.out(), "{}", value.imm_f64);
282 } 295 }