diff --git a/renderdoc/driver/shaders/dxil/dxil_bytecode.h b/renderdoc/driver/shaders/dxil/dxil_bytecode.h index 981b75885..c85ab6ad2 100644 --- a/renderdoc/driver/shaders/dxil/dxil_bytecode.h +++ b/renderdoc/driver/shaders/dxil/dxil_bytecode.h @@ -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); diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 2f24eb323..288d39ef9 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -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(inst.args[7], sop)) + commentStr += ToStr(sop); + + WaveMultiPrefixOpCode waveMultiOpCode; + if(getival(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) diff --git a/renderdoc/driver/shaders/dxil/dxil_stringise.cpp b/renderdoc/driver/shaders/dxil/dxil_stringise.cpp index 7d4f0953f..0968d68d9 100644 --- a/renderdoc/driver/shaders/dxil/dxil_stringise.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_stringise.cpp @@ -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(); +}