Skip to content

Commit 42a1ace

Browse files
committed
Specific DXIL disassembly handling for WaveActiveBit
After int _WaveActiveBit14 = WaveActiveBitAnd(_WaveGetLaneIndex); int _WaveActiveBit13 = WaveActiveBitOr(_WaveGetLaneIndex); int _WaveActiveBit = WaveActiveBitXor(_WaveGetLaneIndex); Before int _WaveActiveBit14 = WaveActiveBit(/*value*/ _WaveGetLaneIndex, /*op*/ 0); int _WaveActiveBit13 = WaveActiveBit(/*value*/ _WaveGetLaneIndex, /*op*/ 1); int _WaveActiveBit = WaveActiveBit(/*value*/ _WaveGetLaneIndex, /*op*/ 2);
1 parent f0936cd commit 42a1ace

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

renderdoc/driver/shaders/dxil/dxil_bytecode.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1851,6 +1851,7 @@ DECLARE_REFLECTION_ENUM(DXIL::Attribute);
18511851
DECLARE_STRINGISE_TYPE(DXIL::InstructionFlags);
18521852
DECLARE_STRINGISE_TYPE(DXIL::AtomicBinOpCode);
18531853
DECLARE_STRINGISE_TYPE(DXIL::WaveOpCode);
1854+
DECLARE_STRINGISE_TYPE(DXIL::WaveBitOpCode);
18541855
DECLARE_STRINGISE_TYPE(DXIL::SignedOpKind);
18551856
DECLARE_STRINGISE_TYPE(DXIL::QuadOpKind);
18561857
DECLARE_STRINGISE_TYPE(DXIL::PackMode);

renderdoc/driver/shaders/dxil/dxil_disassemble.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4181,6 +4181,23 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
41814181
}
41824182
break;
41834183
}
4184+
case DXOp::WaveActiveBit:
4185+
{
4186+
// WaveActiveBit(value, i8 waveBitOp)
4187+
WaveBitOpCode waveBitOpCode;
4188+
if(getival<WaveBitOpCode>(inst.args[2], waveBitOpCode))
4189+
{
4190+
lineStr += "WaveActiveBit" + ToStr(waveBitOpCode);
4191+
lineStr += "(";
4192+
lineStr += GetArgId(inst, 1);
4193+
lineStr += ")";
4194+
}
4195+
else
4196+
{
4197+
showDxFuncName = true;
4198+
}
4199+
break;
4200+
}
41844201
case DXOp::Pack4x8:
41854202
{
41864203
// Pack4x8(packMode,x,y,z,w)

renderdoc/driver/shaders/dxil/dxil_stringise.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -852,3 +852,15 @@ rdcstr DoStringise(const DXIL::SignedOpKind &el)
852852
}
853853
END_ENUM_STRINGISE();
854854
}
855+
856+
template <>
857+
rdcstr DoStringise(const DXIL::WaveBitOpCode &el)
858+
{
859+
BEGIN_ENUM_STRINGISE(DXIL::WaveBitOpCode)
860+
{
861+
STRINGISE_ENUM_CLASS(And)
862+
STRINGISE_ENUM_CLASS(Or)
863+
STRINGISE_ENUM_CLASS(Xor)
864+
}
865+
END_ENUM_STRINGISE();
866+
}

0 commit comments

Comments
 (0)