mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +00:00 
			
		
		
		
	shader_bytecode: Add several more instruction decodings.
This commit is contained in:
		
							parent
							
								
									9f6d305eab
								
							
						
					
					
						commit
						e1630c4d43
					
				@ -234,10 +234,12 @@ public:
 | 
				
			|||||||
        KIL,
 | 
					        KIL,
 | 
				
			||||||
        LD_A,
 | 
					        LD_A,
 | 
				
			||||||
        ST_A,
 | 
					        ST_A,
 | 
				
			||||||
        TEXS,
 | 
					        TEXQ, // Texture Query
 | 
				
			||||||
 | 
					        TEXS, // Texture Fetch with scalar/non-vec4 source/destinations
 | 
				
			||||||
 | 
					        TLDS, // Texture Load with scalar/non-vec4 source/destinations
 | 
				
			||||||
        EXIT,
 | 
					        EXIT,
 | 
				
			||||||
        IPA,
 | 
					        IPA,
 | 
				
			||||||
        FFMA_IMM,
 | 
					        FFMA_IMM, // Fused Multiply and Add
 | 
				
			||||||
        FFMA_CR,
 | 
					        FFMA_CR,
 | 
				
			||||||
        FFMA_RC,
 | 
					        FFMA_RC,
 | 
				
			||||||
        FFMA_RR,
 | 
					        FFMA_RR,
 | 
				
			||||||
@ -248,10 +250,31 @@ public:
 | 
				
			|||||||
        FMUL_R,
 | 
					        FMUL_R,
 | 
				
			||||||
        FMUL_IMM,
 | 
					        FMUL_IMM,
 | 
				
			||||||
        FMUL32_IMM,
 | 
					        FMUL32_IMM,
 | 
				
			||||||
        MUFU,
 | 
					        MUFU, // Multi-Function Operator
 | 
				
			||||||
 | 
					        RRO,  // Range Reduction Operator
 | 
				
			||||||
 | 
					        F2F_C,
 | 
				
			||||||
 | 
					        F2F_R,
 | 
				
			||||||
 | 
					        F2F_IMM,
 | 
				
			||||||
 | 
					        F2I_C,
 | 
				
			||||||
 | 
					        F2I_R,
 | 
				
			||||||
 | 
					        F2I_IMM,
 | 
				
			||||||
 | 
					        I2F_C,
 | 
				
			||||||
 | 
					        I2F_R,
 | 
				
			||||||
 | 
					        I2F_IMM,
 | 
				
			||||||
 | 
					        LOP32I,
 | 
				
			||||||
 | 
					        MOV_C,
 | 
				
			||||||
 | 
					        MOV_R,
 | 
				
			||||||
 | 
					        MOV_IMM,
 | 
				
			||||||
 | 
					        MOV32I,
 | 
				
			||||||
 | 
					        SHR_C,
 | 
				
			||||||
 | 
					        SHR_R,
 | 
				
			||||||
 | 
					        SHR_IMM,
 | 
				
			||||||
 | 
					        FSETP_C, // Set Predicate
 | 
				
			||||||
        FSETP_R,
 | 
					        FSETP_R,
 | 
				
			||||||
        FSETP_C,
 | 
					 | 
				
			||||||
        FSETP_IMM,
 | 
					        FSETP_IMM,
 | 
				
			||||||
 | 
					        ISETP_C,
 | 
				
			||||||
 | 
					        ISETP_IMM,
 | 
				
			||||||
 | 
					        ISETP_R,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    enum class Type {
 | 
					    enum class Type {
 | 
				
			||||||
@ -261,6 +284,7 @@ public:
 | 
				
			|||||||
        Flow,
 | 
					        Flow,
 | 
				
			||||||
        Memory,
 | 
					        Memory,
 | 
				
			||||||
        FloatPredicate,
 | 
					        FloatPredicate,
 | 
				
			||||||
 | 
					        IntegerPredicate,
 | 
				
			||||||
        Unknown,
 | 
					        Unknown,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -358,7 +382,9 @@ private:
 | 
				
			|||||||
            INST("111000110011----", Id::KIL, Type::Flow, "KIL"),
 | 
					            INST("111000110011----", Id::KIL, Type::Flow, "KIL"),
 | 
				
			||||||
            INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"),
 | 
					            INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"),
 | 
				
			||||||
            INST("1110111111110---", Id::ST_A, Type::Memory, "ST_A"),
 | 
					            INST("1110111111110---", Id::ST_A, Type::Memory, "ST_A"),
 | 
				
			||||||
 | 
					            INST("1101111101001---", Id::TEXQ, Type::Memory, "TEXQ"),
 | 
				
			||||||
            INST("1101100---------", Id::TEXS, Type::Memory, "TEXS"),
 | 
					            INST("1101100---------", Id::TEXS, Type::Memory, "TEXS"),
 | 
				
			||||||
 | 
					            INST("1101101---------", Id::TLDS, Type::Memory, "TLDS"),
 | 
				
			||||||
            INST("111000110000----", Id::EXIT, Type::Trivial, "EXIT"),
 | 
					            INST("111000110000----", Id::EXIT, Type::Trivial, "EXIT"),
 | 
				
			||||||
            INST("11100000--------", Id::IPA, Type::Trivial, "IPA"),
 | 
					            INST("11100000--------", Id::IPA, Type::Trivial, "IPA"),
 | 
				
			||||||
            INST("001100101-------", Id::FFMA_IMM, Type::Ffma, "FFMA_IMM"),
 | 
					            INST("001100101-------", Id::FFMA_IMM, Type::Ffma, "FFMA_IMM"),
 | 
				
			||||||
@ -373,9 +399,30 @@ private:
 | 
				
			|||||||
            INST("0011100-01101---", Id::FMUL_IMM, Type::Arithmetic, "FMUL_IMM"),
 | 
					            INST("0011100-01101---", Id::FMUL_IMM, Type::Arithmetic, "FMUL_IMM"),
 | 
				
			||||||
            INST("00011110--------", Id::FMUL32_IMM, Type::Arithmetic, "FMUL32_IMM"),
 | 
					            INST("00011110--------", Id::FMUL32_IMM, Type::Arithmetic, "FMUL32_IMM"),
 | 
				
			||||||
            INST("0101000010000---", Id::MUFU, Type::Arithmetic, "MUFU"),
 | 
					            INST("0101000010000---", Id::MUFU, Type::Arithmetic, "MUFU"),
 | 
				
			||||||
            INST("010110111011----", Id::FSETP_R, Type::FloatPredicate, "FSETP_R"),
 | 
					            INST("0101110010010---", Id::RRO, Type::Arithmetic, "RRO"),
 | 
				
			||||||
 | 
					            INST("0100110010101---", Id::F2F_C, Type::Arithmetic, "F2F_C"),
 | 
				
			||||||
 | 
					            INST("0101110010101---", Id::F2F_R, Type::Arithmetic, "F2F_R"),
 | 
				
			||||||
 | 
					            INST("0011100-10101---", Id::F2F_IMM, Type::Arithmetic, "F2F_IMM"),
 | 
				
			||||||
 | 
					            INST("0100110010110---", Id::F2I_C, Type::Arithmetic, "F2I_C"),
 | 
				
			||||||
 | 
					            INST("0101110010110---", Id::F2I_R, Type::Arithmetic, "F2I_R"),
 | 
				
			||||||
 | 
					            INST("0011100-10110---", Id::F2I_IMM, Type::Arithmetic, "F2I_IMM"),
 | 
				
			||||||
 | 
					            INST("0100110010111---", Id::I2F_C, Type::Arithmetic, "I2F_C"),
 | 
				
			||||||
 | 
					            INST("0101110010111---", Id::I2F_R, Type::Arithmetic, "I2F_R"),
 | 
				
			||||||
 | 
					            INST("0011100-10111---", Id::I2F_IMM, Type::Arithmetic, "I2F_IMM"),
 | 
				
			||||||
 | 
					            INST("000001----------", Id::LOP32I, Type::Arithmetic, "LOP32I"),
 | 
				
			||||||
 | 
					            INST("0100110010011---", Id::MOV_C, Type::Arithmetic, "MOV_C"),
 | 
				
			||||||
 | 
					            INST("0101110010011---", Id::MOV_R, Type::Arithmetic, "MOV_R"),
 | 
				
			||||||
 | 
					            INST("0011100-10011---", Id::MOV_IMM, Type::Arithmetic, "MOV_IMM"),
 | 
				
			||||||
 | 
					            INST("000000010000----", Id::MOV32I, Type::Arithmetic, "MOV32I"),
 | 
				
			||||||
 | 
					            INST("0100110000101---", Id::SHR_C, Type::Arithmetic, "SHR_C"),
 | 
				
			||||||
 | 
					            INST("0101110000101---", Id::SHR_R, Type::Arithmetic, "SHR_R"),
 | 
				
			||||||
 | 
					            INST("0011100-00101---", Id::SHR_IMM, Type::Arithmetic, "SHR_IMM"),
 | 
				
			||||||
            INST("010010111011----", Id::FSETP_C, Type::FloatPredicate, "FSETP_C"),
 | 
					            INST("010010111011----", Id::FSETP_C, Type::FloatPredicate, "FSETP_C"),
 | 
				
			||||||
 | 
					            INST("010110111011----", Id::FSETP_R, Type::FloatPredicate, "FSETP_R"),
 | 
				
			||||||
            INST("0011011-1011----", Id::FSETP_IMM, Type::FloatPredicate, "FSETP_IMM"),
 | 
					            INST("0011011-1011----", Id::FSETP_IMM, Type::FloatPredicate, "FSETP_IMM"),
 | 
				
			||||||
 | 
					            INST("010010110110----", Id::ISETP_C, Type::IntegerPredicate, "ISETP_C"),
 | 
				
			||||||
 | 
					            INST("010110110110----", Id::ISETP_R, Type::IntegerPredicate, "ISETP_R"),
 | 
				
			||||||
 | 
					            INST("0011011-0110----", Id::ISETP_IMM, Type::IntegerPredicate, "ISETP_IMM"),
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
#undef INST
 | 
					#undef INST
 | 
				
			||||||
        std::stable_sort(table.begin(), table.end(), [](const auto& a, const auto& b) {
 | 
					        std::stable_sort(table.begin(), table.end(), [](const auto& a, const auto& b) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user