summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glsl/var_alloc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shader_recompiler/backend/glsl/var_alloc.cpp')
-rw-r--r--src/shader_recompiler/backend/glsl/var_alloc.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/shader_recompiler/backend/glsl/var_alloc.cpp b/src/shader_recompiler/backend/glsl/var_alloc.cpp
index 8c6944f07..896457248 100644
--- a/src/shader_recompiler/backend/glsl/var_alloc.cpp
+++ b/src/shader_recompiler/backend/glsl/var_alloc.cpp
@@ -110,7 +110,6 @@ std::string VarAlloc::Define(IR::Inst& inst, GlslVarType type) {
110 } else { 110 } else {
111 Id id{}; 111 Id id{};
112 id.type.Assign(type); 112 id.type.Assign(type);
113 // id.is_null.Assign(1);
114 GetUseTracker(type).uses_temp = true; 113 GetUseTracker(type).uses_temp = true;
115 inst.SetDefinition<Id>(id); 114 inst.SetDefinition<Id>(id);
116 } 115 }
@@ -121,6 +120,20 @@ std::string VarAlloc::Define(IR::Inst& inst, IR::Type type) {
121 return Define(inst, RegType(type)); 120 return Define(inst, RegType(type));
122} 121}
123 122
123std::string VarAlloc::PhiDefine(IR::Inst& inst, IR::Type type) {
124 return AddDefine(inst, RegType(type));
125}
126
127std::string VarAlloc::AddDefine(IR::Inst& inst, GlslVarType type) {
128 if (inst.HasUses()) {
129 inst.SetDefinition<Id>(Alloc(type));
130 return Representation(inst.Definition<Id>());
131 } else {
132 return "";
133 }
134 return Representation(inst.Definition<Id>());
135}
136
124std::string VarAlloc::Consume(const IR::Value& value) { 137std::string VarAlloc::Consume(const IR::Value& value) {
125 return value.IsImmediate() ? MakeImm(value) : ConsumeInst(*value.InstRecursive()); 138 return value.IsImmediate() ? MakeImm(value) : ConsumeInst(*value.InstRecursive());
126} 139}
@@ -223,6 +236,8 @@ VarAlloc::UseTracker& VarAlloc::GetUseTracker(GlslVarType type) {
223 switch (type) { 236 switch (type) {
224 case GlslVarType::U1: 237 case GlslVarType::U1:
225 return var_bool; 238 return var_bool;
239 case GlslVarType::F16x2:
240 return var_f16x2;
226 case GlslVarType::U32: 241 case GlslVarType::U32:
227 return var_u32; 242 return var_u32;
228 case GlslVarType::S32: 243 case GlslVarType::S32: