Revert "glasm: Skip phi moves on undefined instructions"
Causes regressions on Bowser's Fury.
This commit is contained in:
		| @@ -58,9 +58,7 @@ void EmitPhiMove(EmitContext& ctx, const IR::Value& phi_value, const IR::Value& | |||||||
|     } |     } | ||||||
|     const Register phi_reg{ctx.reg_alloc.Consume(IR::Value{&phi})}; |     const Register phi_reg{ctx.reg_alloc.Consume(IR::Value{&phi})}; | ||||||
|     const Value eval_value{ctx.reg_alloc.Consume(value)}; |     const Value eval_value{ctx.reg_alloc.Consume(value)}; | ||||||
|     if (!value.IsImmediate() && IR::IsUndef(RegAlloc::AliasInst(*value.Inst()))) { |  | ||||||
|         return; |  | ||||||
|     } |  | ||||||
|     if (phi_reg == eval_value) { |     if (phi_reg == eval_value) { | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -395,17 +395,4 @@ inline f64 Value::F64() const { | |||||||
|     return inst.GetOpcode() == Opcode::Phi; |     return inst.GetOpcode() == Opcode::Phi; | ||||||
| } | } | ||||||
|  |  | ||||||
| [[nodiscard]] inline bool IsUndef(const Inst& inst) { |  | ||||||
|     switch (inst.GetOpcode()) { |  | ||||||
|     case Opcode::UndefU1: |  | ||||||
|     case Opcode::UndefU8: |  | ||||||
|     case Opcode::UndefU16: |  | ||||||
|     case Opcode::UndefU32: |  | ||||||
|     case Opcode::UndefU64: |  | ||||||
|         return true; |  | ||||||
|     default: |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| } // namespace Shader::IR | } // namespace Shader::IR | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user