From 007f4d46f401caa4d5a86312a459875eb91c5d8b Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Tue, 23 Apr 2024 11:45:21 +0100 Subject: [PATCH] RD DXIL Disassembly: change "load" and "store" output load float _49 = *_48; // align 4 store *_30 = _27; // align 4 --- .../driver/shaders/dxil/dxil_disassemble.cpp | 50 ++++--------------- 1 file changed, 10 insertions(+), 40 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 5266904bd..168f6b5e4 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -2480,13 +2480,12 @@ void Program::MakeRDDisassemblyString() } break; } + case Operation::LoadAtomic: commentStr += "atomic "; case Operation::Load: { - lineStr += "load "; + lineStr += "*"; if(inst.opFlags() & InstructionFlags::Volatile) - lineStr += "volatile "; - lineStr += inst.type->toString(); - lineStr += ", "; + commentStr += "volatile "; bool first = true; for(const Value *s : inst.args) { @@ -2497,19 +2496,20 @@ void Program::MakeRDDisassemblyString() first = false; } if(inst.align > 0) - lineStr += StringFormat::Fmt(", align %u", (1U << inst.align) >> 1); + commentStr += StringFormat::Fmt("align %u ", (1U << inst.align) >> 1); break; } + case Operation::StoreAtomic: commentStr += "atomic "; case Operation::Store: { - lineStr += "store "; if(inst.opFlags() & InstructionFlags::Volatile) - lineStr += "volatile "; - lineStr += ArgToString(inst.args[1], false); - lineStr += ", "; + commentStr += "volatile "; + lineStr = "*"; lineStr += ArgToString(inst.args[0], false); + lineStr += " = "; + lineStr += ArgToString(inst.args[1], false); if(inst.align > 0) - lineStr += StringFormat::Fmt(", align %u", (1U << inst.align) >> 1); + commentStr += StringFormat::Fmt("align %u ", (1U << inst.align) >> 1); break; } case Operation::FOrdEqual: @@ -2741,36 +2741,6 @@ void Program::MakeRDDisassemblyString() } break; } - case Operation::LoadAtomic: - { - lineStr += "load atomic "; - if(inst.opFlags() & InstructionFlags::Volatile) - lineStr += "volatile "; - lineStr += inst.type->toString(); - lineStr += ", "; - bool first = true; - for(const Value *s : inst.args) - { - if(!first) - lineStr += ", "; - - lineStr += ArgToString(s, false); - first = false; - } - lineStr += StringFormat::Fmt(", align %u", (1U << inst.align) >> 1); - break; - } - case Operation::StoreAtomic: - { - lineStr += "store atomic "; - if(inst.opFlags() & InstructionFlags::Volatile) - lineStr += "volatile "; - lineStr += ArgToString(inst.args[1], false); - lineStr += ", "; - lineStr += ArgToString(inst.args[0], false); - lineStr += StringFormat::Fmt(", align %u", (1U << inst.align) >> 1); - break; - } case Operation::CompareExchange: { lineStr += "cmpxchg ";