#include "src/tint/lang/core/ir/disassembler.h"
#include <algorithm>
#include <memory>
#include <optional>
#include <string_view>
#include "src//tint/lang/core/ir/unary.h"
#include "src/tint/lang/core/binary_op.h"
#include "src/tint/lang/core/constant/composite.h"
#include "src/tint/lang/core/constant/scalar.h"
#include "src/tint/lang/core/constant/splat.h"
#include "src/tint/lang/core/ir/binary.h"
#include "src/tint/lang/core/ir/block.h"
#include "src/tint/lang/core/ir/block_param.h"
#include "src/tint/lang/core/ir/break_if.h"
#include "src/tint/lang/core/ir/continue.h"
#include "src/tint/lang/core/ir/discard.h"
#include "src/tint/lang/core/ir/exit_if.h"
#include "src/tint/lang/core/ir/exit_loop.h"
#include "src/tint/lang/core/ir/exit_switch.h"
#include "src/tint/lang/core/ir/function.h"
#include "src/tint/lang/core/ir/if.h"
#include "src/tint/lang/core/ir/instruction_result.h"
#include "src/tint/lang/core/ir/loop.h"
#include "src/tint/lang/core/ir/member_builtin_call.h"
#include "src/tint/lang/core/ir/multi_in_block.h"
#include "src/tint/lang/core/ir/next_iteration.h"
#include "src/tint/lang/core/ir/return.h"
#include "src/tint/lang/core/ir/store.h"
#include "src/tint/lang/core/ir/store_vector_element.h"
#include "src/tint/lang/core/ir/switch.h"
#include "src/tint/lang/core/ir/swizzle.h"
#include "src/tint/lang/core/ir/terminate_invocation.h"
#include "src/tint/lang/core/ir/unreachable.h"
#include "src/tint/lang/core/ir/unused.h"
#include "src/tint/lang/core/ir/user_call.h"
#include "src/tint/lang/core/ir/var.h"
#include "src/tint/lang/core/type/struct.h"
#include "src/tint/lang/core/type/type.h"
#include "src/tint/utils/ice/ice.h"
#include "src/tint/utils/macros/defer.h"
#include "src/tint/utils/rtti/switch.h"
#include "src/tint/utils/text/string.h"
#include "src/tint/utils/text/styled_text.h"
#include "src/tint/utils/text/text_style.h"
usingnamespacetint::core::fluent_types;
namespace tint::core::ir {
namespace {
static constexpr auto StylePlain = …;
static constexpr auto StyleAttribute = …;
static constexpr auto StyleCode = …;
static constexpr auto StyleComment = …;
static constexpr auto StyleEnum = …;
static constexpr auto StyleError = …;
static constexpr auto StyleFunction = …;
static constexpr auto StyleInstruction = …;
static constexpr auto StyleKeyword = …;
static constexpr auto StyleLabel = …;
static constexpr auto StyleLiteral = …;
static constexpr auto StyleType = …;
static constexpr auto StyleVariable = …;
class ScopedIndent { … };
}
Disassembler::Disassembler(Disassembler&&) = default;
Disassembler::Disassembler(const Module& mod) : … { … }
Disassembler::~Disassembler() = default;
void Disassembler::Disassemble() { … }
StyledText& Disassembler::Indent() { … }
void Disassembler::EmitLine() { … }
Source::Location Disassembler::MakeCurrentLocation() { … }
void Disassembler::EmitBlock(const Block* blk, std::string_view comment ) { … }
void Disassembler::EmitBindingPoint(BindingPoint p) { … }
void Disassembler::EmitInputAttachmentIndex(uint32_t i) { … }
void Disassembler::EmitInterpolation(Interpolation interp) { … }
void Disassembler::EmitParamAttributes(const FunctionParam* p) { … }
void Disassembler::EmitReturnAttributes(const Function* func) { … }
void Disassembler::EmitFunction(const Function* func) { … }
void Disassembler::EmitValueWithType(const Instruction* val) { … }
void Disassembler::EmitValueWithType(const Value* val) { … }
void Disassembler::EmitValue(const Value* val) { … }
void Disassembler::EmitInstructionName(const Instruction* inst) { … }
void Disassembler::EmitInstruction(const Instruction* inst) { … }
void Disassembler::EmitOperand(const Instruction* inst, size_t index) { … }
void Disassembler::EmitOperandList(const Instruction* inst, size_t start_index ) { … }
void Disassembler::EmitOperandList(const Instruction* inst, size_t start_index, size_t count) { … }
void Disassembler::EmitIf(const If* if_) { … }
void Disassembler::EmitLoop(const Loop* l) { … }
void Disassembler::EmitSwitch(const Switch* s) { … }
void Disassembler::EmitTerminator(const Terminator* term) { … }
void Disassembler::EmitBinary(const Binary* b) { … }
void Disassembler::EmitUnary(const Unary* u) { … }
void Disassembler::EmitStructDecl(const core::type::Struct* str) { … }
StyledText Disassembler::NameOf(const type::Type* ty) { … }
StyledText Disassembler::NameOf(const Block* node) { … }
StyledText Disassembler::NameOf(const Value* value) { … }
StyledText Disassembler::NameOf(const If* inst) { … }
StyledText Disassembler::NameOf(const Loop* inst) { … }
StyledText Disassembler::NameOf(const Switch* inst) { … }
StyledText Disassembler::NameOf(BinaryOp op) { … }
StyledText Disassembler::NameOf(UnaryOp op) { … }
}