Просмотр исходного кода

glasm: Do not alias ConditionRef for now

Immediate condition refs where not handled correctly. Just move the
value for now.
ReinUsesLisp 5 лет назад
Родитель
Сommit
1ee7f8b943

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

@@ -22,8 +22,8 @@ void EmitIdentity(EmitContext&, IR::Inst& inst, const IR::Value& value) {
     Alias(inst, value);
 }
 
-void EmitConditionRef(EmitContext&, IR::Inst& inst, const IR::Value& value) {
-    Alias(inst, value);
+void EmitConditionRef(EmitContext& ctx, IR::Inst& inst, const IR::Value& value) {
+    ctx.Add("MOV.S {},{};", inst, ScalarS32{ctx.reg_alloc.Consume(value)});
 }
 
 void EmitBitCastU16F16(EmitContext&, IR::Inst& inst, const IR::Value& value) {

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

@@ -139,7 +139,6 @@ void RegAlloc::Free(Id id) {
 /*static*/ bool RegAlloc::IsAliased(const IR::Inst& inst) {
     switch (inst.GetOpcode()) {
     case IR::Opcode::Identity:
-    case IR::Opcode::ConditionRef:
     case IR::Opcode::BitCastU16F16:
     case IR::Opcode::BitCastU32F32:
     case IR::Opcode::BitCastU64F64: