shader_bytecode: Add AL2P decoding

This commit is contained in:
ReinUsesLisp 2019-04-29 23:27:15 -03:00
parent 75a8b304d4
commit 7632a7d6d2
1 changed files with 15 additions and 2 deletions

View File

@ -499,6 +499,11 @@ enum class SystemVariable : u64 {
CircularQueueEntryAddressHigh = 0x63, CircularQueueEntryAddressHigh = 0x63,
}; };
enum class PhysicalAttributeDirection : u64 {
Input = 0,
Output = 1,
};
union Instruction { union Instruction {
Instruction& operator=(const Instruction& instr) { Instruction& operator=(const Instruction& instr) {
value = instr.value; value = instr.value;
@ -811,6 +816,12 @@ union Instruction {
BitField<20, 24, s64> immediate_offset; BitField<20, 24, s64> immediate_offset;
} stg; } stg;
union {
BitField<32, 1, PhysicalAttributeDirection> direction;
BitField<47, 3, AttributeSize> size;
BitField<20, 11, u64> address;
} al2p;
union { union {
BitField<0, 3, u64> pred0; BitField<0, 3, u64> pred0;
BitField<3, 3, u64> pred3; BitField<3, 3, u64> pred3;
@ -1376,6 +1387,7 @@ public:
ST_S, ST_S,
LDG, // Load from global memory LDG, // Load from global memory
STG, // Store in global memory STG, // Store in global memory
AL2P, // Transforms attribute memory into physical memory
TEX, TEX,
TEX_B, // Texture Load Bindless TEX_B, // Texture Load Bindless
TXQ, // Texture Query TXQ, // Texture Query
@ -1646,6 +1658,7 @@ private:
INST("1110111101010---", Id::ST_L, Type::Memory, "ST_L"), INST("1110111101010---", Id::ST_L, Type::Memory, "ST_L"),
INST("1110111011010---", Id::LDG, Type::Memory, "LDG"), INST("1110111011010---", Id::LDG, Type::Memory, "LDG"),
INST("1110111011011---", Id::STG, Type::Memory, "STG"), INST("1110111011011---", Id::STG, Type::Memory, "STG"),
INST("1110111110100---", Id::AL2P, Type::Memory, "AL2P"),
INST("110000----111---", Id::TEX, Type::Texture, "TEX"), INST("110000----111---", Id::TEX, Type::Texture, "TEX"),
INST("1101111010111---", Id::TEX_B, Type::Texture, "TEX_B"), INST("1101111010111---", Id::TEX_B, Type::Texture, "TEX_B"),
INST("1101111101001---", Id::TXQ, Type::Texture, "TXQ"), INST("1101111101001---", Id::TXQ, Type::Texture, "TXQ"),