RD DXIL Disassembly: ignore first getelemenptr index if it is zero

Before
GroupShared float* _30 = shared_pos[0] + _29;

After
GroupShared float* _30 = shared_pos[_29];
This commit is contained in:
Jake Turner
2024-04-26 06:18:16 +01:00
parent b8f77d8393
commit 756a980d96
@@ -2786,18 +2786,33 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
lineStr += ptrStr;
// arg[1] : index 0
bool first = true;
if(inst.args.size() > 1)
{
lineStr += "[";
lineStr += ArgToString(inst.args[1], false);
lineStr += "]";
if(getival<uint32_t>(inst.args[1]) > 0)
{
lineStr += "[";
lineStr += ArgToString(inst.args[1], false);
lineStr += "]";
first = false;
}
}
// arg[2..] : index 1...N
for(size_t a = 2; a < inst.args.size(); ++a)
{
lineStr += " + ";
if(first)
lineStr += "[";
else
lineStr += " + ";
lineStr += ArgToString(inst.args[a], false);
if(first)
{
lineStr += "]";
first = false;
}
}
}
}