shader_ir: Add comments on missing instruction.
Also shows Nvidia's address space on comments.
This commit is contained in:
parent
2de7649311
commit
f2549739d1
|
@ -146,15 +146,18 @@ u32 ShaderIR::DecodeInstr(NodeBlock& bb, u32 pc) {
|
|||
|
||||
const Instruction instr = {program_code[pc]};
|
||||
const auto opcode = OpCode::Decode(instr);
|
||||
const u32 nv_address = ConvertAddressToNvidiaSpace(pc);
|
||||
|
||||
// Decoding failure
|
||||
if (!opcode) {
|
||||
UNIMPLEMENTED_MSG("Unhandled instruction: {0:x}", instr.value);
|
||||
bb.push_back(Comment(fmt::format("{:05x} Unimplemented Shader instruction (0x{:016x})",
|
||||
nv_address, instr.value)));
|
||||
return pc + 1;
|
||||
}
|
||||
|
||||
bb.push_back(
|
||||
Comment(fmt::format("{}: {} (0x{:016x})", pc, opcode->get().GetName(), instr.value)));
|
||||
bb.push_back(Comment(
|
||||
fmt::format("{:05x} {} (0x{:016x})", nv_address, opcode->get().GetName(), instr.value)));
|
||||
|
||||
using Tegra::Shader::Pred;
|
||||
UNIMPLEMENTED_IF_MSG(instr.pred.full_pred == Pred::NeverExecute,
|
||||
|
|
|
@ -127,6 +127,10 @@ public:
|
|||
return disable_flow_stack;
|
||||
}
|
||||
|
||||
u32 ConvertAddressToNvidiaSpace(const u32 address) const {
|
||||
return (address - main_offset) * sizeof(Tegra::Shader::Instruction);
|
||||
}
|
||||
|
||||
private:
|
||||
void Decode();
|
||||
|
||||
|
|
Reference in New Issue