mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-10-30 15:39:02 -05:00 
			
		
		
		
	Implemented Control Codes
This commit is contained in:
		| @@ -240,6 +240,41 @@ enum class FlowCondition : u64 { | ||||
|     Fcsm_Tr = 0x1C, // TODO(bunnei): What is this used for? | ||||
| }; | ||||
|  | ||||
| enum class ControlCode : u64 { | ||||
|     F = 0, | ||||
|     LT = 1, | ||||
|     EQ = 2, | ||||
|     LE = 3, | ||||
|     GT = 4, | ||||
|     NE = 5, | ||||
|     GE = 6, | ||||
|     Num = 7, | ||||
|     Nan = 8, | ||||
|     LTU = 9, | ||||
|     EQU = 10, | ||||
|     LEU = 11, | ||||
|     GTU = 12, | ||||
|     NEU = 13, | ||||
|     GEU = 14, | ||||
|     // | ||||
|     OFF = 16, | ||||
|     LO = 17, | ||||
|     SFF = 18, | ||||
|     LS = 19, | ||||
|     HI = 20, | ||||
|     SFT = 21, | ||||
|     HS = 22, | ||||
|     OFT = 23, | ||||
|     CSM_TA = 24, | ||||
|     CSM_TR = 25, | ||||
|     CSM_MX = 26, | ||||
|     FCSM_TA = 27, | ||||
|     FCSM_TR = 28, | ||||
|     FCSM_MX = 29, | ||||
|     RLE = 30, | ||||
|     RGT = 31, | ||||
| }; | ||||
|  | ||||
| enum class PredicateResultMode : u64 { | ||||
|     None = 0x0, | ||||
|     NotZero = 0x3, | ||||
| @@ -735,6 +770,7 @@ union Instruction { | ||||
|         BitField<36, 5, u64> index; | ||||
|     } cbuf36; | ||||
|  | ||||
|     BitField<47, 1, u64> generates_cc; | ||||
|     BitField<61, 1, u64> is_b_imm; | ||||
|     BitField<60, 1, u64> is_b_gpr; | ||||
|     BitField<59, 1, u64> is_c_gpr; | ||||
|   | ||||
| @@ -351,6 +351,15 @@ public: | ||||
|         shader.AddLine(dest + " = " + src + ';'); | ||||
|     } | ||||
|  | ||||
|     std::string GetControlCode(const Tegra::Shader::ControlCode cc) { | ||||
|         u32 code = static_cast<u32>(cc); | ||||
|         return "controlCode_" + std::to_string(code); | ||||
|     } | ||||
|  | ||||
|     void SetControlCode(const Tegra::Shader::ControlCode cc, const std::string& value) { | ||||
|         shader.AddLine(GetControlCode(cc) + " = " + value + ';'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Writes code that does a output attribute assignment to register operation. Output attributes | ||||
|      * are stored as floats, so this may require conversion. | ||||
| @@ -414,6 +423,12 @@ public: | ||||
|         } | ||||
|         declarations.AddNewLine(); | ||||
|  | ||||
|         for (u32 cc = 0; cc < 32; cc++) { | ||||
|             Tegra::Shader::ControlCode code = static_cast<Tegra::Shader::ControlCode>(cc); | ||||
|             declarations.AddLine("bool " + GetControlCode(code) + " = false;"); | ||||
|         } | ||||
|         declarations.AddNewLine(); | ||||
|  | ||||
|         for (const auto element : declr_input_attribute) { | ||||
|             // TODO(bunnei): Use proper number of elements for these | ||||
|             u32 idx = | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 FernandoS27
					FernandoS27