summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/reg_alloc.cpp
diff options
context:
space:
mode:
authorGravatar ameerj2021-05-21 20:56:46 -0400
committerGravatar ameerj2021-07-22 21:51:36 -0400
commit0f40b0e61ccc04216e0840e092dfe3051716b8b6 (patch)
tree7c12a0e010dd9aecef164b10a848085957f15358 /src/shader_recompiler/backend/glsl/reg_alloc.cpp
parentglsl: Use std::string_view for Emit function args. (diff)
downloadyuzu-0f40b0e61ccc04216e0840e092dfe3051716b8b6.tar.gz
yuzu-0f40b0e61ccc04216e0840e092dfe3051716b8b6.tar.xz
yuzu-0f40b0e61ccc04216e0840e092dfe3051716b8b6.zip
glsl: Implement a few Integer instructions
Diffstat (limited to 'src/shader_recompiler/backend/glsl/reg_alloc.cpp')
-rw-r--r--src/shader_recompiler/backend/glsl/reg_alloc.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/shader_recompiler/backend/glsl/reg_alloc.cpp b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
index f4886dbfd..3cfa16fea 100644
--- a/src/shader_recompiler/backend/glsl/reg_alloc.cpp
+++ b/src/shader_recompiler/backend/glsl/reg_alloc.cpp
@@ -57,9 +57,10 @@ std::string RegAlloc::Consume(const IR::Value& value) {
57std::string RegAlloc::Consume(IR::Inst& inst) { 57std::string RegAlloc::Consume(IR::Inst& inst) {
58 const Id id{inst.Definition<Id>()}; 58 const Id id{inst.Definition<Id>()};
59 inst.DestructiveRemoveUsage(); 59 inst.DestructiveRemoveUsage();
60 if (!inst.HasUses()) { 60 // TODO: reuse variables of same type if possible
61 Free(id); 61 // if (!inst.HasUses()) {
62 } 62 // Free(id);
63 // }
63 return Representation(inst.Definition<Id>()); 64 return Representation(inst.Definition<Id>());
64} 65}
65 66
@@ -69,14 +70,24 @@ std::string RegAlloc::GetType(Type type, u32 index) {
69 } 70 }
70 register_defined[index] = true; 71 register_defined[index] = true;
71 switch (type) { 72 switch (type) {
73 case Type::U1:
74 return "bool ";
72 case Type::U32: 75 case Type::U32:
73 return "uint "; 76 return "uint ";
74 case Type::S32: 77 case Type::S32:
75 return "int "; 78 return "int ";
76 case Type::F32: 79 case Type::F32:
77 return "float "; 80 return "float ";
78 default: 81 case Type::U64:
82 return "uint64_t ";
83 case Type::U32x2:
84 return "uvec2 ";
85 case Type::F32x2:
86 return "vec2 ";
87 case Type::Void:
79 return ""; 88 return "";
89 default:
90 throw NotImplementedException("Type {}", type);
80 } 91 }
81} 92}
82 93