srctree

Robin Linden parent 3bc92e8f 485f7635
wasm: Simplify stringification of empty instructions

inlinesplit
wasm/serialize.cpp added: 15, removed: 185, total 0
@@ -1,13 +1,16 @@
// SPDX-FileCopyrightText: 2024 David Zero <zero-one@zer0-one.net>
// SPDX-FileCopyrightText: 2024 Robin Lindén <dev@robinlinden.eu>
//
// SPDX-License-Identifier: BSD-2-Clause
 
#include "wasm/serialize.h"
 
#include "wasm/instructions.h"
 
#include <cstddef>
#include <optional>
#include <string>
#include <type_traits>
#include <variant>
 
namespace wasm::instructions {
@@ -82,152 +85,10 @@ void InstructionStringifyVisitor::operator()(I32Const const &t) {
out += std::to_string(t.value);
}
 
void InstructionStringifyVisitor::operator()(I32EqualZero const &) {
out += I32EqualZero::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Equal const &) {
out += I32Equal::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32NotEqual const &) {
out += I32NotEqual::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32LessThanSigned const &) {
out += I32LessThanSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32LessThanUnsigned const &) {
out += I32LessThanUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32GreaterThanSigned const &) {
out += I32GreaterThanSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32GreaterThanUnsigned const &) {
out += I32GreaterThanUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32LessThanEqualSigned const &) {
out += I32LessThanEqualSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32LessThanEqualUnsigned const &) {
out += I32LessThanEqualUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32GreaterThanEqualSigned const &) {
out += I32GreaterThanEqualSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32GreaterThanEqualUnsigned const &) {
out += I32GreaterThanEqualUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32CountLeadingZeros const &) {
out += I32CountLeadingZeros::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32CountTrailingZeros const &) {
out += I32CountTrailingZeros::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32PopulationCount const &) {
out += I32PopulationCount::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Add const &) {
out += I32Add::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Subtract const &) {
out += I32Subtract::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Multiply const &) {
out += I32Multiply::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32DivideSigned const &) {
out += I32DivideSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32DivideUnsigned const &) {
out += I32DivideUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32RemainderSigned const &) {
out += I32RemainderSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32RemainderUnsigned const &) {
out += I32RemainderUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32And const &) {
out += I32And::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Or const &) {
out += I32Or::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32ExclusiveOr const &) {
out += I32ExclusiveOr::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32ShiftLeft const &) {
out += I32ShiftLeft::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32ShiftRightSigned const &) {
out += I32ShiftRightSigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32ShiftRightUnsigned const &) {
out += I32ShiftRightUnsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32RotateLeft const &) {
out += I32RotateLeft::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32RotateRight const &) {
out += I32RotateRight::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32WrapI64 const &) {
out += I32WrapI64::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32TruncateF32Signed const &) {
out += I32TruncateF32Signed::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32TruncateF32Unsigned const &) {
out += I32TruncateF32Unsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32TruncateF64Signed const &) {
out += I32TruncateF64Signed::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32TruncateF64Unsigned const &) {
out += I32TruncateF64Unsigned::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32ReinterpretF32 const &) {
out += I32ReinterpretF32::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Extend8Signed const &) {
out += I32Extend8Signed::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(I32Extend16Signed const &) {
out += I32Extend16Signed::kMnemonic;
template<typename T>
requires std::is_empty_v<T>
void InstructionStringifyVisitor::operator()(T const &) {
out += T::kMnemonic;
}
 
void InstructionStringifyVisitor::operator()(LocalGet const &t) {
 
wasm/serialize.h added: 15, removed: 185, total 0
@@ -1,4 +1,5 @@
// SPDX-FileCopyrightText: 2024 David Zero <zero-one@zer0-one.net>
// SPDX-FileCopyrightText: 2024 Robin Lindén <dev@robinlinden.eu>
//
// SPDX-License-Identifier: BSD-2-Clause
 
@@ -14,6 +15,7 @@
#include <optional>
#include <string>
#include <string_view>
#include <type_traits>
#include <variant>
 
namespace wasm {
@@ -96,47 +98,14 @@ struct InstructionStringifyVisitor {
void operator()(BreakIf const &t);
void operator()(Return const &);
void operator()(I32Const const &t);
void operator()(I32EqualZero const &);
void operator()(I32Equal const &);
void operator()(I32NotEqual const &);
void operator()(I32LessThanSigned const &);
void operator()(I32LessThanUnsigned const &);
void operator()(I32GreaterThanSigned const &);
void operator()(I32GreaterThanUnsigned const &);
void operator()(I32LessThanEqualSigned const &);
void operator()(I32LessThanEqualUnsigned const &);
void operator()(I32GreaterThanEqualSigned const &);
void operator()(I32GreaterThanEqualUnsigned const &);
void operator()(I32CountLeadingZeros const &);
void operator()(I32CountTrailingZeros const &);
void operator()(I32PopulationCount const &);
void operator()(I32Add const &);
void operator()(I32Subtract const &);
void operator()(I32Multiply const &);
void operator()(I32DivideSigned const &);
void operator()(I32DivideUnsigned const &);
void operator()(I32RemainderSigned const &);
void operator()(I32RemainderUnsigned const &);
void operator()(I32And const &);
void operator()(I32Or const &);
void operator()(I32ExclusiveOr const &);
void operator()(I32ShiftLeft const &);
void operator()(I32ShiftRightSigned const &);
void operator()(I32ShiftRightUnsigned const &);
void operator()(I32RotateLeft const &);
void operator()(I32RotateRight const &);
void operator()(I32WrapI64 const &);
void operator()(I32TruncateF32Signed const &);
void operator()(I32TruncateF32Unsigned const &);
void operator()(I32TruncateF64Signed const &);
void operator()(I32TruncateF64Unsigned const &);
void operator()(I32ReinterpretF32 const &);
void operator()(I32Extend8Signed const &);
void operator()(I32Extend16Signed const &);
void operator()(LocalGet const &t);
void operator()(LocalSet const &t);
void operator()(LocalTee const &t);
void operator()(I32Load const &t);
 
template<typename T>
requires std::is_empty_v<T>
void operator()(T const &);
};
 
std::string to_string(Instruction const &inst, std::optional<InstructionStringifyVisitor> = std::nullopt);