glasm: Add Void type to GLASM values
This commit is contained in:
		| @@ -54,6 +54,7 @@ public: | ||||
|         } | ||||
|         switch (value.type) { | ||||
|         case Type::Register: | ||||
|         case Type::Void: | ||||
|             break; | ||||
|         case Type::U32: | ||||
|             ctx.Add("MOV.U {}.x,{};", reg, value.imm_u32); | ||||
|   | ||||
| @@ -57,6 +57,9 @@ void RegAlloc::FreeReg(Register reg) { | ||||
| Value RegAlloc::MakeImm(const IR::Value& value) { | ||||
|     Value ret; | ||||
|     switch (value.Type()) { | ||||
|     case IR::Type::Void: | ||||
|         ret.type = Type::Void; | ||||
|         break; | ||||
|     case IR::Type::U1: | ||||
|         ret.type = Type::U32; | ||||
|         ret.imm_u32 = value.U1() ? 0xffffffff : 0; | ||||
|   | ||||
| @@ -23,6 +23,7 @@ namespace Shader::Backend::GLASM { | ||||
| class EmitContext; | ||||
|  | ||||
| enum class Type : u32 { | ||||
|     Void, | ||||
|     Register, | ||||
|     U32, | ||||
|     S32, | ||||
| @@ -65,6 +66,8 @@ struct Value { | ||||
|             return false; | ||||
|         } | ||||
|         switch (type) { | ||||
|         case Type::Void: | ||||
|             return true; | ||||
|         case Type::Register: | ||||
|             return id == rhs.id; | ||||
|         case Type::U32: | ||||
| @@ -218,6 +221,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarU32> { | ||||
|     template <typename FormatContext> | ||||
|     auto format(const Shader::Backend::GLASM::ScalarU32& value, FormatContext& ctx) { | ||||
|         switch (value.type) { | ||||
|         case Shader::Backend::GLASM::Type::Void: | ||||
|             break; | ||||
|         case Shader::Backend::GLASM::Type::Register: | ||||
|             return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); | ||||
|         case Shader::Backend::GLASM::Type::U32: | ||||
| @@ -242,6 +247,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarS32> { | ||||
|     template <typename FormatContext> | ||||
|     auto format(const Shader::Backend::GLASM::ScalarS32& value, FormatContext& ctx) { | ||||
|         switch (value.type) { | ||||
|         case Shader::Backend::GLASM::Type::Void: | ||||
|             break; | ||||
|         case Shader::Backend::GLASM::Type::Register: | ||||
|             return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); | ||||
|         case Shader::Backend::GLASM::Type::U32: | ||||
| @@ -266,6 +273,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF32> { | ||||
|     template <typename FormatContext> | ||||
|     auto format(const Shader::Backend::GLASM::ScalarF32& value, FormatContext& ctx) { | ||||
|         switch (value.type) { | ||||
|         case Shader::Backend::GLASM::Type::Void: | ||||
|             break; | ||||
|         case Shader::Backend::GLASM::Type::Register: | ||||
|             return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); | ||||
|         case Shader::Backend::GLASM::Type::U32: | ||||
| @@ -290,6 +299,8 @@ struct fmt::formatter<Shader::Backend::GLASM::ScalarF64> { | ||||
|     template <typename FormatContext> | ||||
|     auto format(const Shader::Backend::GLASM::ScalarF64& value, FormatContext& ctx) { | ||||
|         switch (value.type) { | ||||
|         case Shader::Backend::GLASM::Type::Void: | ||||
|             break; | ||||
|         case Shader::Backend::GLASM::Type::Register: | ||||
|             return Shader::Backend::GLASM::FormatTo<true>(ctx, value.id); | ||||
|         case Shader::Backend::GLASM::Type::U32: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user