mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-15 22:40:50 +00:00
Specific DXIL disassembly handling for WaveMultiPrefixOp
After
int _WaveMultiPrefixOp12 = WaveMultiPrefixSum(_WaveGetLaneIndex, {_92,_93,_94,_95}); // Unsigned
int _WaveMultiPrefixOp10 = WaveMultiPrefixBitAnd(_127, {_117,_118,_119,_120}); // Signed
int _WaveMultiPrefixOp9 = WaveMultiPrefixBitOr(_WaveGetLaneIndex, {_117,_118,_119,_120}); // Signed
int _WaveMultiPrefixOp = WaveMultiPrefixBitXor(_WaveGetLaneIndex, {_117,_118,_119,_120}); // Signed
int _WaveMultiPrefixOp11 = WaveMultiPrefixProduct(_WaveGetLaneIndex, {_92,_93,_94,_95}); // Unsigned
Before
int _WaveMultiPrefixOp12 = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _92, /*mask1*/ _93, /*mask2*/ _94, /*mask3*/ _95, /*op*/ 0, /*sop*/ 1);
int _WaveMultiPrefixOp10 = WaveMultiPrefixOp(/*value*/ _127, /*mask0*/ _117, /*mask1*/ _118, /*mask2*/ _119, /*mask3*/ _120, /*op*/ 1, /*sop*/ 0);
int _WaveMultiPrefixOp9 = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _117, /*mask1*/ _118, /*mask2*/ _119, /*mask3*/ _120, /*op*/ 2, /*sop*/ 0);
int _WaveMultiPrefixOp = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _117, /*mask1*/ _118, /*mask2*/ _119, /*mask3*/ _120, /*op*/ 3, /*sop*/ 0);
int _WaveMultiPrefixOp11 = WaveMultiPrefixOp(/*value*/ _WaveGetLaneIndex, /*mask0*/ _92, /*mask1*/ _93, /*mask2*/ _94, /*mask3*/ _95, /*op*/ 4, /*sop*/ 1);
This commit is contained in:
@@ -1852,6 +1852,7 @@ DECLARE_STRINGISE_TYPE(DXIL::InstructionFlags);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::AtomicBinOpCode);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::WaveOpCode);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::WaveBitOpCode);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::WaveMultiPrefixOpCode);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::SignedOpKind);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::QuadOpKind);
|
||||
DECLARE_STRINGISE_TYPE(DXIL::PackMode);
|
||||
|
||||
@@ -4198,6 +4198,42 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DXOp::WaveMultiPrefixOp:
|
||||
{
|
||||
// WaveMultiPrefixOp(value,mask0,mask1,mask2,mask3,op,sop)
|
||||
SignedOpKind sop;
|
||||
if(getival<SignedOpKind>(inst.args[7], sop))
|
||||
commentStr += ToStr(sop);
|
||||
|
||||
WaveMultiPrefixOpCode waveMultiOpCode;
|
||||
if(getival<WaveMultiPrefixOpCode>(inst.args[6], waveMultiOpCode))
|
||||
{
|
||||
lineStr += "WaveMultiPrefix";
|
||||
if((waveMultiOpCode == WaveMultiPrefixOpCode::And) ||
|
||||
(waveMultiOpCode == WaveMultiPrefixOpCode::Or) ||
|
||||
(waveMultiOpCode == WaveMultiPrefixOpCode::Xor))
|
||||
lineStr += "Bit";
|
||||
|
||||
lineStr += ToStr(waveMultiOpCode);
|
||||
lineStr += "(";
|
||||
lineStr += GetArgId(inst, 1);
|
||||
lineStr += ", {";
|
||||
lineStr += GetArgId(inst, 2);
|
||||
lineStr += ",";
|
||||
lineStr += GetArgId(inst, 3);
|
||||
lineStr += ",";
|
||||
lineStr += GetArgId(inst, 4);
|
||||
lineStr += ",";
|
||||
lineStr += GetArgId(inst, 5);
|
||||
lineStr += "}";
|
||||
lineStr += ")";
|
||||
}
|
||||
else
|
||||
{
|
||||
showDxFuncName = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DXOp::Pack4x8:
|
||||
{
|
||||
// Pack4x8(packMode,x,y,z,w)
|
||||
|
||||
@@ -864,3 +864,17 @@ rdcstr DoStringise(const DXIL::WaveBitOpCode &el)
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
template <>
|
||||
rdcstr DoStringise(const DXIL::WaveMultiPrefixOpCode &el)
|
||||
{
|
||||
BEGIN_ENUM_STRINGISE(DXIL::WaveMultiPrefixOpCode)
|
||||
{
|
||||
STRINGISE_ENUM_CLASS(Sum)
|
||||
STRINGISE_ENUM_CLASS(And)
|
||||
STRINGISE_ENUM_CLASS(Or)
|
||||
STRINGISE_ENUM_CLASS(Xor)
|
||||
STRINGISE_ENUM_CLASS(Product)
|
||||
}
|
||||
END_ENUM_STRINGISE();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user