chromium/v8/test/unittests/wasm/function-body-decoder-unittest.cc

// Copyright 2015 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/wasm/function-body-decoder.h"

#include "src/flags/flags.h"
#include "src/utils/ostreams.h"
#include "src/wasm/canonical-types.h"
#include "src/wasm/function-body-decoder-impl.h"
#include "src/wasm/leb-helper.h"
#include "src/wasm/local-decl-encoder.h"
#include "src/wasm/wasm-limits.h"
#include "src/wasm/wasm-module.h"
#include "src/wasm/wasm-opcodes-inl.h"
#include "src/wasm/wasm-subtyping.h"
#include "src/zone/zone.h"
#include "test/common/flag-utils.h"
#include "test/common/wasm/flag-utils.h"
#include "test/common/wasm/test-signatures.h"
#include "test/common/wasm/wasm-macro-gen.h"
#include "test/unittests/test-utils.h"
#include "testing/gmock-support.h"

namespace v8::internal::wasm {

#define B1
#define B2
#define B3

#define WASM_IF_OP
#define WASM_LOOP_OP

#define EXPECT_OK

static const uint8_t kCodeGetLocal0[] =;
static const uint8_t kCodeGetLocal1[] =;
static const uint8_t kCodeSetLocal0[] =;
static const uint8_t kCodeTeeLocal0[] =;

static const ValueType kValueTypes[] =;
static const MachineType machineTypes[] =;

static const WasmOpcode kInt32BinopOpcodes[] =;

#define WASM_BRV_IF_ZERO

constexpr size_t kMaxByteSizedLeb128 =;

F;

// Used to construct fixed-size signatures: MakeSig::Returns(...).Params(...);
using MakeSig = FixedSizeSignature<ValueType>;

enum MemoryType {};

enum TableType {};

// A helper for tests that require a module environment for functions,
// globals, or memories.
class TestModuleBuilder {};

template <class BaseTest>
class FunctionBodyDecoderTestBase : public WithZoneMixin<BaseTest> {};

FunctionBodyDecoderTest;

TEST_F(FunctionBodyDecoderTest, Int32Const1) {}

TEST_F(FunctionBodyDecoderTest, RefFunc) {}

TEST_F(FunctionBodyDecoderTest, EmptyFunction) {}

TEST_F(FunctionBodyDecoderTest, IncompleteIf1) {}

TEST_F(FunctionBodyDecoderTest, Int32Const_fallthru) {}

TEST_F(FunctionBodyDecoderTest, Int32Const_fallthru2) {}

TEST_F(FunctionBodyDecoderTest, Int32Const) {}

TEST_F(FunctionBodyDecoderTest, Int64Const) {}

TEST_F(FunctionBodyDecoderTest, Float32Const) {}

TEST_F(FunctionBodyDecoderTest, Float64Const) {}

TEST_F(FunctionBodyDecoderTest, Int32Const_off_end) {}

TEST_F(FunctionBodyDecoderTest, GetLocal0_param) {}

TEST_F(FunctionBodyDecoderTest, GetLocal0_local) {}

TEST_F(FunctionBodyDecoderTest, TooManyLocals) {}

TEST_F(FunctionBodyDecoderTest, GetLocal0_param_n) {}

TEST_F(FunctionBodyDecoderTest, GetLocalN_local) {}

TEST_F(FunctionBodyDecoderTest, GetLocal0_fail_no_params) {}

TEST_F(FunctionBodyDecoderTest, GetLocal1_fail_no_locals) {}

TEST_F(FunctionBodyDecoderTest, GetLocal_off_end) {}

TEST_F(FunctionBodyDecoderTest, NumLocalBelowLimit) {}

TEST_F(FunctionBodyDecoderTest, NumLocalAtLimit) {}

TEST_F(FunctionBodyDecoderTest, NumLocalAboveLimit) {}

TEST_F(FunctionBodyDecoderTest, GetLocal_varint) {}

TEST_F(FunctionBodyDecoderTest, GetLocal_toomany) {}

TEST_F(FunctionBodyDecoderTest, Binops_off_end) {}

TEST_F(FunctionBodyDecoderTest, BinopsAcrossBlock1) {}

TEST_F(FunctionBodyDecoderTest, BinopsAcrossBlock2) {}

TEST_F(FunctionBodyDecoderTest, BinopsAcrossBlock3) {}

TEST_F(FunctionBodyDecoderTest, Nop) {}

TEST_F(FunctionBodyDecoderTest, SetLocal0_void) {}

TEST_F(FunctionBodyDecoderTest, SetLocal0_param) {}

TEST_F(FunctionBodyDecoderTest, TeeLocal0_param) {}

TEST_F(FunctionBodyDecoderTest, SetLocal0_local) {}

TEST_F(FunctionBodyDecoderTest, TeeLocal0_local) {}

TEST_F(FunctionBodyDecoderTest, TeeLocalN_local) {}

TEST_F(FunctionBodyDecoderTest, BlockN) {}

#define WASM_EMPTY_BLOCK

TEST_F(FunctionBodyDecoderTest, Block0) {}

TEST_F(FunctionBodyDecoderTest, Block0_fallthru1) {}

TEST_F(FunctionBodyDecoderTest, Block0Block0) {}

TEST_F(FunctionBodyDecoderTest, Block0_end) {}

#undef WASM_EMPTY_BLOCK

TEST_F(FunctionBodyDecoderTest, Block1) {}

TEST_F(FunctionBodyDecoderTest, Block1_i) {}

TEST_F(FunctionBodyDecoderTest, Block1_f) {}

TEST_F(FunctionBodyDecoderTest, Block1_continue) {}

TEST_F(FunctionBodyDecoderTest, Block1_br) {}

TEST_F(FunctionBodyDecoderTest, Block2_br) {}

TEST_F(FunctionBodyDecoderTest, Block2) {}

TEST_F(FunctionBodyDecoderTest, Block2b) {}

TEST_F(FunctionBodyDecoderTest, Block2_fallthru) {}

TEST_F(FunctionBodyDecoderTest, Block3) {}

TEST_F(FunctionBodyDecoderTest, Block5) {}

TEST_F(FunctionBodyDecoderTest, BlockType) {}

TEST_F(FunctionBodyDecoderTest, BlockType_fail) {}

TEST_F(FunctionBodyDecoderTest, BlockF32) {}

TEST_F(FunctionBodyDecoderTest, BlockN_off_end) {}

TEST_F(FunctionBodyDecoderTest, Block2_continue) {}

TEST_F(FunctionBodyDecoderTest, Block3_continue) {}

TEST_F(FunctionBodyDecoderTest, NestedBlock_return) {}

TEST_F(FunctionBodyDecoderTest, BlockBrBinop) {}

TEST_F(FunctionBodyDecoderTest, VoidBlockTypeVariants) {}

TEST_F(FunctionBodyDecoderTest, If_empty1) {}

TEST_F(FunctionBodyDecoderTest, If_empty2) {}

TEST_F(FunctionBodyDecoderTest, If_empty3) {}

TEST_F(FunctionBodyDecoderTest, If_empty4) {}

TEST_F(FunctionBodyDecoderTest, If_empty_stack) {}

TEST_F(FunctionBodyDecoderTest, If_incomplete1) {}

TEST_F(FunctionBodyDecoderTest, If_incomplete2) {}

TEST_F(FunctionBodyDecoderTest, If_else_else) {}

TEST_F(FunctionBodyDecoderTest, IfEmpty) {}

TEST_F(FunctionBodyDecoderTest, IfSet) {}

TEST_F(FunctionBodyDecoderTest, IfElseEmpty) {}

TEST_F(FunctionBodyDecoderTest, IfElseUnreachable1) {}

TEST_F(FunctionBodyDecoderTest, IfElseUnreachable2) {}

TEST_F(FunctionBodyDecoderTest, OneArmedIfWithArity) {}

TEST_F(FunctionBodyDecoderTest, IfBreak) {}

TEST_F(FunctionBodyDecoderTest, IfElseBreak) {}

TEST_F(FunctionBodyDecoderTest, Block_else) {}

TEST_F(FunctionBodyDecoderTest, IfNop) {}

TEST_F(FunctionBodyDecoderTest, If_end) {}

TEST_F(FunctionBodyDecoderTest, If_falloff1) {}

TEST_F(FunctionBodyDecoderTest, IfElseNop) {}

TEST_F(FunctionBodyDecoderTest, IfBlock1) {}

TEST_F(FunctionBodyDecoderTest, IfBlock1b) {}

TEST_F(FunctionBodyDecoderTest, IfBlock2a) {}

TEST_F(FunctionBodyDecoderTest, IfBlock2b) {}

TEST_F(FunctionBodyDecoderTest, IfElseSet) {}

TEST_F(FunctionBodyDecoderTest, Loop0) {}

TEST_F(FunctionBodyDecoderTest, Loop1) {}

TEST_F(FunctionBodyDecoderTest, Loop2) {}

TEST_F(FunctionBodyDecoderTest, Loop1_continue) {}

TEST_F(FunctionBodyDecoderTest, Loop1_break) {}

TEST_F(FunctionBodyDecoderTest, Loop2_continue) {}

TEST_F(FunctionBodyDecoderTest, Loop2_break) {}

TEST_F(FunctionBodyDecoderTest, InfiniteLoop1) {}

TEST_F(FunctionBodyDecoderTest, InfiniteLoop2) {}

TEST_F(FunctionBodyDecoderTest, Loop2_unreachable) {}

TEST_F(FunctionBodyDecoderTest, LoopType) {}

TEST_F(FunctionBodyDecoderTest, LoopType_void) {}

TEST_F(FunctionBodyDecoderTest, LoopType_fail) {}

TEST_F(FunctionBodyDecoderTest, ReturnVoid1) {}

TEST_F(FunctionBodyDecoderTest, ReturnVoid2) {}

TEST_F(FunctionBodyDecoderTest, ReturnVoid3) {}

TEST_F(FunctionBodyDecoderTest, Unreachable1) {}

TEST_F(FunctionBodyDecoderTest, Unreachable2) {}

TEST_F(FunctionBodyDecoderTest, UnreachableLoop1) {}

TEST_F(FunctionBodyDecoderTest, Unreachable_binop1) {}

TEST_F(FunctionBodyDecoderTest, Unreachable_binop2) {}

TEST_F(FunctionBodyDecoderTest, Unreachable_select1) {}

TEST_F(FunctionBodyDecoderTest, Unreachable_select2) {}

TEST_F(FunctionBodyDecoderTest, UnreachableRefTypes) {}

TEST_F(FunctionBodyDecoderTest, If1) {}

TEST_F(FunctionBodyDecoderTest, If_off_end) {}

TEST_F(FunctionBodyDecoderTest, If_type1) {}

TEST_F(FunctionBodyDecoderTest, If_type2) {}

TEST_F(FunctionBodyDecoderTest, If_type3) {}

TEST_F(FunctionBodyDecoderTest, If_type4) {}

TEST_F(FunctionBodyDecoderTest, If_type5) {}

TEST_F(FunctionBodyDecoderTest, Int64Local_param) {}

TEST_F(FunctionBodyDecoderTest, Int64Locals) {}

TEST_F(FunctionBodyDecoderTest, Int32Binops) {}

TEST_F(FunctionBodyDecoderTest, DoubleBinops) {}

TEST_F(FunctionBodyDecoderTest, FloatBinops) {}

TEST_F(FunctionBodyDecoderTest, TypeConversions) {}

TEST_F(FunctionBodyDecoderTest, MacrosVoid) {}

TEST_F(FunctionBodyDecoderTest, MacrosContinue) {}

TEST_F(FunctionBodyDecoderTest, MacrosVariadic) {}

TEST_F(FunctionBodyDecoderTest, MacrosNestedBlocks) {}

TEST_F(FunctionBodyDecoderTest, MultipleReturn) {}

TEST_F(FunctionBodyDecoderTest, MultipleReturn_fallthru) {}

TEST_F(FunctionBodyDecoderTest, MacrosInt32) {}

TEST_F(FunctionBodyDecoderTest, MacrosInt64) {}

TEST_F(FunctionBodyDecoderTest, AllSimpleExpressions) {}

TEST_F(FunctionBodyDecoderTest, MemorySize) {}

TEST_F(FunctionBodyDecoderTest, LoadMemOffset) {}

TEST_F(FunctionBodyDecoderTest, LoadMemAlignment) {}

TEST_F(FunctionBodyDecoderTest, StoreMemOffset) {}

TEST_F(FunctionBodyDecoderTest, StoreMemOffset_void) {}

TEST_F(FunctionBodyDecoderTest, LoadMemOffset_varint) {}

TEST_F(FunctionBodyDecoderTest, StoreMemOffset_varint) {}

TEST_F(FunctionBodyDecoderTest, AllLoadMemCombinations) {}

TEST_F(FunctionBodyDecoderTest, AllStoreMemCombinations) {}

TEST_F(FunctionBodyDecoderTest, SimpleCalls) {}

TEST_F(FunctionBodyDecoderTest, CallsWithTooFewArguments) {}

TEST_F(FunctionBodyDecoderTest, CallsWithMismatchedSigs2) {}

TEST_F(FunctionBodyDecoderTest, CallsWithMismatchedSigs3) {}

TEST_F(FunctionBodyDecoderTest, SimpleReturnCalls) {}

TEST_F(FunctionBodyDecoderTest, ReturnCallsWithTooFewArguments) {}

TEST_F(FunctionBodyDecoderTest, ReturnCallWithSubtype) {}

TEST_F(FunctionBodyDecoderTest, ReturnCallsWithMismatchedSigs) {}

TEST_F(FunctionBodyDecoderTest, SimpleIndirectReturnCalls) {}

TEST_F(FunctionBodyDecoderTest, IndirectReturnCallsOutOfBounds) {}

TEST_F(FunctionBodyDecoderTest, IndirectReturnCallsWithMismatchedSigs3) {}

TEST_F(FunctionBodyDecoderTest, IndirectReturnCallsWithoutTableCrash) {}

TEST_F(FunctionBodyDecoderTest, IncompleteIndirectReturnCall) {}

TEST_F(FunctionBodyDecoderTest, MultiReturn) {}

TEST_F(FunctionBodyDecoderTest, MultiReturnType) {}

TEST_F(FunctionBodyDecoderTest, SimpleIndirectCalls) {}

TEST_F(FunctionBodyDecoderTest, IndirectCallsOutOfBounds) {}

TEST_F(FunctionBodyDecoderTest, IndirectCallsWithMismatchedSigs1) {}

TEST_F(FunctionBodyDecoderTest, IndirectCallsWithMismatchedSigs2) {}

TEST_F(FunctionBodyDecoderTest, TablesWithFunctionSubtyping) {}

TEST_F(FunctionBodyDecoderTest, IndirectCallsWithoutTableCrash) {}

TEST_F(FunctionBodyDecoderTest, IncompleteIndirectCall) {}

TEST_F(FunctionBodyDecoderTest, IncompleteStore) {}

TEST_F(FunctionBodyDecoderTest, IncompleteI8x16Shuffle) {}

TEST_F(FunctionBodyDecoderTest, SimpleImportCalls) {}

TEST_F(FunctionBodyDecoderTest, ImportCallsWithMismatchedSigs3) {}

TEST_F(FunctionBodyDecoderTest, Int32Globals) {}

TEST_F(FunctionBodyDecoderTest, ImmutableGlobal) {}

TEST_F(FunctionBodyDecoderTest, Int32Globals_fail) {}

TEST_F(FunctionBodyDecoderTest, Int64Globals) {}

TEST_F(FunctionBodyDecoderTest, Float32Globals) {}

TEST_F(FunctionBodyDecoderTest, Float64Globals) {}

TEST_F(FunctionBodyDecoderTest, NullRefGlobals) {}

TEST_F(FunctionBodyDecoderTest, NullExternRefGlobals) {}

TEST_F(FunctionBodyDecoderTest, NullFuncRefGlobals) {}

TEST_F(FunctionBodyDecoderTest, NullExnRefGlobals) {}

TEST_F(FunctionBodyDecoderTest, AllGetGlobalCombinations) {}

TEST_F(FunctionBodyDecoderTest, AllSetGlobalCombinations) {}

TEST_F(FunctionBodyDecoderTest, TableSet) {}

TEST_F(FunctionBodyDecoderTest, TableGet) {}

TEST_F(FunctionBodyDecoderTest, MultiTableCallIndirect) {}

TEST_F(FunctionBodyDecoderTest, WasmMemoryGrow) {}

TEST_F(FunctionBodyDecoderTest, BreakEnd) {}

TEST_F(FunctionBodyDecoderTest, BreakIfBinop) {}

TEST_F(FunctionBodyDecoderTest, BreakIfBinop_fail) {}

TEST_F(FunctionBodyDecoderTest, BreakIfUnrNarrow) {}

TEST_F(FunctionBodyDecoderTest, BreakNesting1) {}

TEST_F(FunctionBodyDecoderTest, BreakNesting2) {}

TEST_F(FunctionBodyDecoderTest, BreakNesting3) {}

TEST_F(FunctionBodyDecoderTest, BreaksWithMultipleTypes) {}

TEST_F(FunctionBodyDecoderTest, BreakNesting_6_levels) {}

TEST_F(FunctionBodyDecoderTest, Break_TypeCheck) {}

TEST_F(FunctionBodyDecoderTest, Break_TypeCheckAll1) {}

TEST_F(FunctionBodyDecoderTest, Break_TypeCheckAll2) {}

TEST_F(FunctionBodyDecoderTest, Break_TypeCheckAll3) {}

TEST_F(FunctionBodyDecoderTest, Break_Unify) {}

TEST_F(FunctionBodyDecoderTest, BreakIf_cond_type) {}

TEST_F(FunctionBodyDecoderTest, BreakIf_val_type) {}

TEST_F(FunctionBodyDecoderTest, BreakIf_Unify) {}

TEST_F(FunctionBodyDecoderTest, BrTable0) {}

TEST_F(FunctionBodyDecoderTest, BrTable0b) {}

TEST_F(FunctionBodyDecoderTest, BrTable0c) {}

TEST_F(FunctionBodyDecoderTest, BrTable1a) {}

TEST_F(FunctionBodyDecoderTest, BrTable1b) {}

TEST_F(FunctionBodyDecoderTest, BrTable2a) {}

TEST_F(FunctionBodyDecoderTest, BrTable2b) {}

TEST_F(FunctionBodyDecoderTest, BrTableSubtyping) {}

TEST_F(FunctionBodyDecoderTest, BrTable_off_end) {}

TEST_F(FunctionBodyDecoderTest, BrTable_invalid_br1) {}

TEST_F(FunctionBodyDecoderTest, BrTable_invalid_br2) {}

TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch1) {}

TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch2) {}

TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch_loop1) {}

TEST_F(FunctionBodyDecoderTest, BrTable_arity_mismatch_loop2) {}

TEST_F(FunctionBodyDecoderTest, BrTable_loop_block) {}

TEST_F(FunctionBodyDecoderTest, BrTable_block_loop) {}

TEST_F(FunctionBodyDecoderTest, BrTable_type_mismatch1) {}

TEST_F(FunctionBodyDecoderTest, BrTable_type_mismatch2) {}

TEST_F(FunctionBodyDecoderTest, BrTable_type_mismatch_unreachable) {}

TEST_F(FunctionBodyDecoderTest, BrUnreachable1) {}

TEST_F(FunctionBodyDecoderTest, BrUnreachable2) {}

TEST_F(FunctionBodyDecoderTest, Brv1) {}

TEST_F(FunctionBodyDecoderTest, Brv1_type) {}

TEST_F(FunctionBodyDecoderTest, Brv1_type_n) {}

TEST_F(FunctionBodyDecoderTest, BrvIf1) {}

TEST_F(FunctionBodyDecoderTest, BrvIf1_type) {}

TEST_F(FunctionBodyDecoderTest, BrvIf1_type_n) {}

TEST_F(FunctionBodyDecoderTest, Select) {}

TEST_F(FunctionBodyDecoderTest, Select_needs_value_type) {}

TEST_F(FunctionBodyDecoderTest, Select_fail1) {}

TEST_F(FunctionBodyDecoderTest, Select_fail2) {}

TEST_F(FunctionBodyDecoderTest, Select_TypeCheck) {}

TEST_F(FunctionBodyDecoderTest, SelectWithType) {}

TEST_F(FunctionBodyDecoderTest, SelectWithType_fail) {}

TEST_F(FunctionBodyDecoderTest, Throw) {}

TEST_F(FunctionBodyDecoderTest, ThrowUnreachable) {}

#define WASM_TRY_OP

TEST_F(FunctionBodyDecoderTest, TryCatch) {}

TEST_F(FunctionBodyDecoderTest, Rethrow) {}

TEST_F(FunctionBodyDecoderTest, TryDelegate) {}

#undef WASM_TRY_OP

#define WASM_TRY_TABLE_OP

TEST_F(FunctionBodyDecoderTest, ThrowRef) {}

TEST_F(FunctionBodyDecoderTest, TryTable) {}

TEST_F(FunctionBodyDecoderTest, MultiValBlock1) {}

TEST_F(FunctionBodyDecoderTest, MultiValBlock2) {}

TEST_F(FunctionBodyDecoderTest, MultiValBlockBr) {}

TEST_F(FunctionBodyDecoderTest, MultiValLoop1) {}

TEST_F(FunctionBodyDecoderTest, MultiValIf) {}

TEST_F(FunctionBodyDecoderTest, BlockParam) {}

TEST_F(FunctionBodyDecoderTest, LoopParam) {}

TEST_F(FunctionBodyDecoderTest, LoopParamBr) {}

TEST_F(FunctionBodyDecoderTest, IfParam) {}

TEST_F(FunctionBodyDecoderTest, Regression709741) {}

TEST_F(FunctionBodyDecoderTest, MemoryInit) {}

TEST_F(FunctionBodyDecoderTest, MemoryInitInvalid) {}

TEST_F(FunctionBodyDecoderTest, DataDrop) {}

TEST_F(FunctionBodyDecoderTest, DataSegmentIndexUnsigned) {}

TEST_F(FunctionBodyDecoderTest, MemoryCopy) {}

TEST_F(FunctionBodyDecoderTest, MemoryFill) {}

TEST_F(FunctionBodyDecoderTest, BulkMemoryOpsWithoutMemory) {}

TEST_F(FunctionBodyDecoderTest, TableInit) {}

TEST_F(FunctionBodyDecoderTest, TableInitWrongType) {}

TEST_F(FunctionBodyDecoderTest, TableInitInvalid) {}

TEST_F(FunctionBodyDecoderTest, ElemDrop) {}

TEST_F(FunctionBodyDecoderTest, TableInitDeclarativeElem) {}

TEST_F(FunctionBodyDecoderTest, DeclarativeElemDrop) {}

TEST_F(FunctionBodyDecoderTest, RefFuncDeclared) {}

TEST_F(FunctionBodyDecoderTest, RefFuncUndeclared) {}

TEST_F(FunctionBodyDecoderTest, ElemSegmentIndexUnsigned) {}

TEST_F(FunctionBodyDecoderTest, TableCopy) {}

TEST_F(FunctionBodyDecoderTest, TableCopyWrongType) {}

TEST_F(FunctionBodyDecoderTest, TableGrow) {}

TEST_F(FunctionBodyDecoderTest, TableSize) {}

TEST_F(FunctionBodyDecoderTest, TableFill) {}

TEST_F(FunctionBodyDecoderTest, TableOpsWithoutTable) {}

TEST_F(FunctionBodyDecoderTest, TableCopyMultiTable) {}

TEST_F(FunctionBodyDecoderTest, TableInitMultiTable) {}

TEST_F(FunctionBodyDecoderTest, UnpackPackedTypes) {}

ValueType ref(uint32_t type_index) {}
ValueType refNull(uint32_t type_index) {}

TEST_F(FunctionBodyDecoderTest, StructOrArrayNewDefault) {}

TEST_F(FunctionBodyDecoderTest, DefaultableLocal) {}

TEST_F(FunctionBodyDecoderTest, NonDefaultableLocals) {}

TEST_F(FunctionBodyDecoderTest, RefEq) {}

TEST_F(FunctionBodyDecoderTest, RefAsNonNull) {}

TEST_F(FunctionBodyDecoderTest, RefNull) {}

TEST_F(FunctionBodyDecoderTest, RefIsNull) {}

TEST_F(FunctionBodyDecoderTest, BrOnNull) {}

TEST_F(FunctionBodyDecoderTest, BrOnNonNull) {}

TEST_F(FunctionBodyDecoderTest, GCStruct) {}

TEST_F(FunctionBodyDecoderTest, GCArray) {}

TEST_F(FunctionBodyDecoderTest, PackedFields) {}

TEST_F(FunctionBodyDecoderTest, PackedTypesAsLocals) {}

TEST_F(FunctionBodyDecoderTest, RefTestCast) {}

TEST_F(FunctionBodyDecoderTest, BrOnCastOrCastFail) {}

TEST_F(FunctionBodyDecoderTest, BrOnAbstractType) {}

TEST_F(FunctionBodyDecoderTest, BrWithBottom) {}

TEST_F(FunctionBodyDecoderTest, LocalTeeTyping) {}

TEST_F(FunctionBodyDecoderTest, MergeNullableTypes) {}

// This tests that num_locals_ in decoder remains consistent, even if we fail
// mid-DecodeLocals().
TEST_F(FunctionBodyDecoderTest, Regress_1154439) {}

TEST_F(FunctionBodyDecoderTest, DropOnEmptyStack) {}

TEST_F(FunctionBodyDecoderTest, AnyConvertExtern) {}

TEST_F(FunctionBodyDecoderTest, ExternConvertAny) {}

class BranchTableIteratorTest : public TestWithZone {};

#define CHECK_BR_TABLE_LENGTH

#define CHECK_BR_TABLE_ERROR

TEST_F(BranchTableIteratorTest, count0) {}

TEST_F(BranchTableIteratorTest, count1) {}

TEST_F(BranchTableIteratorTest, error0) {}

#undef CHECK_BR_TABLE_LENGTH
#undef CHECK_BR_TABLE_ERROR

struct PrintOpcodes {};
std::ostream& operator<<(std::ostream& out, const PrintOpcodes& range) {}

class WasmOpcodeLengthTest : public TestWithZone {};

TEST_F(WasmOpcodeLengthTest, AllOpcodesImplemented) {}

TEST_F(WasmOpcodeLengthTest, Statements) {}

TEST_F(WasmOpcodeLengthTest, MiscExpressions) {}

TEST_F(WasmOpcodeLengthTest, I32Const) {}

TEST_F(WasmOpcodeLengthTest, I64Const) {}

TEST_F(WasmOpcodeLengthTest, VariableLength) {}

TEST_F(WasmOpcodeLengthTest, LoadsAndStores) {}

TEST_F(WasmOpcodeLengthTest, MiscMemExpressions) {}

TEST_F(WasmOpcodeLengthTest, SimpleExpressions) {}

TEST_F(WasmOpcodeLengthTest, SimdExpressions) {}

TEST_F(WasmOpcodeLengthTest, IllegalRefIndices) {}

TEST_F(WasmOpcodeLengthTest, GCOpcodes) {}

TEST_F(WasmOpcodeLengthTest, PrefixedOpcodesLEB) {}

class TypeReaderTest : public TestWithZone {};

TEST_F(TypeReaderTest, HeapTypeDecodingTest) {}

class LocalDeclDecoderTest : public TestWithZone {};

TEST_F(LocalDeclDecoderTest, EmptyLocals) {}

TEST_F(LocalDeclDecoderTest, NoLocals) {}

TEST_F(LocalDeclDecoderTest, WrongLocalDeclsCount1) {}

TEST_F(LocalDeclDecoderTest, WrongLocalDeclsCount2) {}

TEST_F(LocalDeclDecoderTest, OneLocal) {}

TEST_F(LocalDeclDecoderTest, FiveLocals) {}

TEST_F(LocalDeclDecoderTest, MixedLocals) {}

TEST_F(LocalDeclDecoderTest, UseEncoder) {}

TEST_F(LocalDeclDecoderTest, ExnRef) {}

TEST_F(LocalDeclDecoderTest, InvalidTypeIndex) {}

class BytecodeIteratorTest : public TestWithZone {};

TEST_F(BytecodeIteratorTest, SimpleForeach) {}

TEST_F(BytecodeIteratorTest, ForeachTwice) {}

TEST_F(BytecodeIteratorTest, ForeachOffset) {}

TEST_F(BytecodeIteratorTest, WithLocalDecls) {}

/*******************************************************************************
 * Memory64 tests.
 ******************************************************************************/

class FunctionBodyDecoderTestOnBothMemoryTypes
    : public FunctionBodyDecoderTestBase<
          WithDefaultPlatformMixin<::testing::TestWithParam<MemoryType>>> {};

std::string PrintMemoryType(::testing::TestParamInfo<MemoryType> info) {}

INSTANTIATE_TEST_SUITE_P();

TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, IndexTypes) {}

TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, 64BitOffsetOnMemory32) {}

TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, 64BitOffsetOnMemory64) {}

TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, MemorySize) {}

TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, MemoryGrow) {}

TEST_P(FunctionBodyDecoderTestOnBothMemoryTypes, CopyDifferentMemTypes) {}

/*******************************************************************************
 * Multi-memory tests.
 ******************************************************************************/

TEST_F(FunctionBodyDecoderTest, ExtendedMemoryAccessImmediate) {}

/*******************************************************************************
 * Table64.
 ******************************************************************************/

class FunctionBodyDecoderTestTable64
    : public FunctionBodyDecoderTestBase<
          WithDefaultPlatformMixin<::testing::TestWithParam<TableType>>> {};

std::string PrintTableType(::testing::TestParamInfo<TableType> info) {}

INSTANTIATE_TEST_SUITE_P();

TEST_P(FunctionBodyDecoderTestTable64, Table64Set) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64Get) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64CallIndirect) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64ReturnCallIndirect) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64Grow) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64Size) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64Fill) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64Init) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64Copy) {}

TEST_P(FunctionBodyDecoderTestTable64, Table64CopyDifferentTypes) {}

#undef B1
#undef B2
#undef B3
#undef WASM_IF_OP
#undef WASM_LOOP_OP
#undef WASM_BRV_IF_ZERO
#undef EXPECT_OK

}  // namespace v8::internal::wasm