glasm: Fix moving U64 immediates to registers in GLASM
This commit is contained in:
		| @@ -43,7 +43,8 @@ struct RegWrapper { | ||||
|     RegWrapper(EmitContext& ctx, Value value) | ||||
|         : reg_alloc{ctx.reg_alloc}, allocated{value.type != Type::Register} { | ||||
|         if (allocated) { | ||||
|             reg = value.type == Type::F64 ? reg_alloc.AllocLongReg() : reg_alloc.AllocReg(); | ||||
|             const bool is_long{value.type == Type::F64 || value.type == Type::U64}; | ||||
|             reg = is_long ? reg_alloc.AllocLongReg() : reg_alloc.AllocReg(); | ||||
|         } else { | ||||
|             reg = Register{value}; | ||||
|         } | ||||
|   | ||||
| @@ -289,9 +289,9 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF64> { | ||||
|         case Shader::Backend::GLASM::Type::F32: | ||||
|             break; | ||||
|         case Shader::Backend::GLASM::Type::U64: | ||||
|             return format_to(ctx.out(), "{}", Common::BitCast<f64>(value.imm_u64)); | ||||
|             return fmt::format_to(ctx.out(), "{}", Common::BitCast<f64>(value.imm_u64)); | ||||
|         case Shader::Backend::GLASM::Type::F64: | ||||
|             return format_to(ctx.out(), "{}", value.imm_f64); | ||||
|             return fmt::format_to(ctx.out(), "{}", value.imm_f64); | ||||
|         } | ||||
|         throw Shader::InvalidArgument("Invalid value type {}", value.type); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user