aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/WebAssembly/Structure
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-07-11 02:57:23 +0900
committernsfisis <nsfisis@gmail.com>2024-07-11 02:57:23 +0900
commit26f49b7e27076e689541b9e13a1b54f60a4ee5c2 (patch)
treea3762813c34a384f21ddeed630ddf333a1cc1b05 /src/WebAssembly/Structure
parent326273f20c2d7dfe3d866eb720d1bb914570e3a3 (diff)
downloadphp-waddiwasi-26f49b7e27076e689541b9e13a1b54f60a4ee5c2.tar.gz
php-waddiwasi-26f49b7e27076e689541b9e13a1b54f60a4ee5c2.tar.zst
php-waddiwasi-26f49b7e27076e689541b9e13a1b54f60a4ee5c2.zip
feat: organize namespaces
Diffstat (limited to 'src/WebAssembly/Structure')
-rw-r--r--src/WebAssembly/Structure/Instructions/Instr.php971
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Block.php24
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/BlockType.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/TypeIdx.php14
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/ValType.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Br.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/BrIf.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/BrTable.php24
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Call.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/CallIndirect.php21
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Else_.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/End.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/If_.php26
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Loop.php24
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Nop.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Return_.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Control/Unreachable.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/DataDrop.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Load.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Store.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Load.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Store.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16S.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16U.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8S.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8U.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store16.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store8.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16S.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16U.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32S.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32U.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8S.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8U.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store16.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store32.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store8.php25
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryCopy.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryFill.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryGrow.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryInit.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Memory/MemorySize.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Abs.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Add.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ceil.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Const.php23
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32CopySign.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32DemoteF64.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Div.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Eq.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Floor.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ge.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Gt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Le.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Lt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Max.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Min.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Mul.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ne.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Nearest.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Neg.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI32.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI64.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sqrt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sub.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Trunc.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Abs.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Add.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ceil.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Const.php23
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64CopySign.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Div.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Eq.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Floor.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ge.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Gt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Le.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Lt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Max.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Min.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Mul.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ne.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Nearest.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Neg.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64PromoteF32.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI32.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI64.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sqrt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sub.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Trunc.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Add.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32And.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Clz.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Const.php23
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ctz.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eq.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eqz.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend16S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend8S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Mul.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ne.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Or.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Popcnt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF32.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF64.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotL.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotR.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Shl.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Sub.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32WrapI64.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Xor.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Add.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64And.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Clz.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Const.php23
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ctz.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eq.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eqz.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend16S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend8S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Mul.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ne.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Or.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Popcnt.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF32.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF64.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotL.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotR.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Shl.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrS.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrU.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Sub.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64S.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64U.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Xor.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Parametric/Drop.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Parametric/Select.php24
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Reference/RefFunc.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Reference/RefIsNull.php15
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Reference/RefNull.php21
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/ElemDrop.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableCopy.php21
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableFill.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableGet.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableGrow.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableInit.php21
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableSet.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Table/TableSize.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalGet.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalSet.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalGet.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalSet.php20
-rw-r--r--src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalTee.php20
-rw-r--r--src/WebAssembly/Structure/Modules/Data.php17
-rw-r--r--src/WebAssembly/Structure/Modules/DataMode.php25
-rw-r--r--src/WebAssembly/Structure/Modules/DataModes/Active.php20
-rw-r--r--src/WebAssembly/Structure/Modules/DataModes/Passive.php14
-rw-r--r--src/WebAssembly/Structure/Modules/Elem.php21
-rw-r--r--src/WebAssembly/Structure/Modules/ElemMode.php30
-rw-r--r--src/WebAssembly/Structure/Modules/ElemModes/Active.php20
-rw-r--r--src/WebAssembly/Structure/Modules/ElemModes/Declarative.php14
-rw-r--r--src/WebAssembly/Structure/Modules/ElemModes/Passive.php14
-rw-r--r--src/WebAssembly/Structure/Modules/Export.php17
-rw-r--r--src/WebAssembly/Structure/Modules/ExportDesc.php28
-rw-r--r--src/WebAssembly/Structure/Modules/ExportDescs/Func.php15
-rw-r--r--src/WebAssembly/Structure/Modules/ExportDescs/Global_.php15
-rw-r--r--src/WebAssembly/Structure/Modules/ExportDescs/Mem.php15
-rw-r--r--src/WebAssembly/Structure/Modules/ExportDescs/Table.php15
-rw-r--r--src/WebAssembly/Structure/Modules/Func.php21
-rw-r--r--src/WebAssembly/Structure/Modules/Global_.php20
-rw-r--r--src/WebAssembly/Structure/Modules/Import.php19
-rw-r--r--src/WebAssembly/Structure/Modules/ImportDesc.php32
-rw-r--r--src/WebAssembly/Structure/Modules/ImportDescs/Func.php15
-rw-r--r--src/WebAssembly/Structure/Modules/ImportDescs/Global_.php16
-rw-r--r--src/WebAssembly/Structure/Modules/ImportDescs/Mem.php16
-rw-r--r--src/WebAssembly/Structure/Modules/ImportDescs/Table.php16
-rw-r--r--src/WebAssembly/Structure/Modules/Local.php15
-rw-r--r--src/WebAssembly/Structure/Modules/Mem.php15
-rw-r--r--src/WebAssembly/Structure/Modules/Module.php35
-rw-r--r--src/WebAssembly/Structure/Modules/Start.php13
-rw-r--r--src/WebAssembly/Structure/Modules/Table.php15
-rw-r--r--src/WebAssembly/Structure/Types/ExternType.php28
-rw-r--r--src/WebAssembly/Structure/Types/ExternTypes/Func.php16
-rw-r--r--src/WebAssembly/Structure/Types/ExternTypes/Global_.php16
-rw-r--r--src/WebAssembly/Structure/Types/ExternTypes/Mem.php16
-rw-r--r--src/WebAssembly/Structure/Types/ExternTypes/Table.php16
-rw-r--r--src/WebAssembly/Structure/Types/FuncType.php20
-rw-r--r--src/WebAssembly/Structure/Types/GlobalType.php14
-rw-r--r--src/WebAssembly/Structure/Types/Limits.php24
-rw-r--r--src/WebAssembly/Structure/Types/MemType.php13
-rw-r--r--src/WebAssembly/Structure/Types/Mut.php11
-rw-r--r--src/WebAssembly/Structure/Types/NumType.php13
-rw-r--r--src/WebAssembly/Structure/Types/RefType.php11
-rw-r--r--src/WebAssembly/Structure/Types/ResultType.php31
-rw-r--r--src/WebAssembly/Structure/Types/TableType.php14
-rw-r--r--src/WebAssembly/Structure/Types/ValType.php25
-rw-r--r--src/WebAssembly/Structure/Types/ValTypes/NumType.php21
-rw-r--r--src/WebAssembly/Structure/Types/ValTypes/RefType.php21
-rw-r--r--src/WebAssembly/Structure/Types/ValTypes/VecType.php21
-rw-r--r--src/WebAssembly/Structure/Types/VecType.php10
255 files changed, 5377 insertions, 0 deletions
diff --git a/src/WebAssembly/Structure/Instructions/Instr.php b/src/WebAssembly/Structure/Instructions/Instr.php
new file mode 100644
index 0000000..18531c6
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instr.php
@@ -0,0 +1,971 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control\BlockType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Parametric;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Reference;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Variable;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\RefType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+
+abstract readonly class Instr
+{
+ // Numeric instructions
+ final public static function F32Abs(): Numeric\F32Abs
+ {
+ return new Numeric\F32Abs();
+ }
+ final public static function F32Add(): Numeric\F32Add
+ {
+ return new Numeric\F32Add();
+ }
+ final public static function F32Ceil(): Numeric\F32Ceil
+ {
+ return new Numeric\F32Ceil();
+ }
+ /**
+ * @param F32 $value
+ */
+ final public static function F32Const(float $value): Numeric\F32Const
+ {
+ return new Numeric\F32Const($value);
+ }
+ final public static function F32ConvertI32S(): Numeric\F32ConvertI32S
+ {
+ return new Numeric\F32ConvertI32S();
+ }
+ final public static function F32ConvertI32U(): Numeric\F32ConvertI32U
+ {
+ return new Numeric\F32ConvertI32U();
+ }
+ final public static function F32ConvertI64S(): Numeric\F32ConvertI64S
+ {
+ return new Numeric\F32ConvertI64S();
+ }
+ final public static function F32ConvertI64U(): Numeric\F32ConvertI64U
+ {
+ return new Numeric\F32ConvertI64U();
+ }
+ final public static function F32CopySign(): Numeric\F32CopySign
+ {
+ return new Numeric\F32CopySign();
+ }
+ final public static function F32DemoteF64(): Numeric\F32DemoteF64
+ {
+ return new Numeric\F32DemoteF64();
+ }
+ final public static function F32Div(): Numeric\F32Div
+ {
+ return new Numeric\F32Div();
+ }
+ final public static function F32Eq(): Numeric\F32Eq
+ {
+ return new Numeric\F32Eq();
+ }
+ final public static function F32Floor(): Numeric\F32Floor
+ {
+ return new Numeric\F32Floor();
+ }
+ final public static function F32Ge(): Numeric\F32Ge
+ {
+ return new Numeric\F32Ge();
+ }
+ final public static function F32Gt(): Numeric\F32Gt
+ {
+ return new Numeric\F32Gt();
+ }
+ final public static function F32Le(): Numeric\F32Le
+ {
+ return new Numeric\F32Le();
+ }
+ final public static function F32Lt(): Numeric\F32Lt
+ {
+ return new Numeric\F32Lt();
+ }
+ final public static function F32Max(): Numeric\F32Max
+ {
+ return new Numeric\F32Max();
+ }
+ final public static function F32Min(): Numeric\F32Min
+ {
+ return new Numeric\F32Min();
+ }
+ final public static function F32Mul(): Numeric\F32Mul
+ {
+ return new Numeric\F32Mul();
+ }
+ final public static function F32Ne(): Numeric\F32Ne
+ {
+ return new Numeric\F32Ne();
+ }
+ final public static function F32Nearest(): Numeric\F32Nearest
+ {
+ return new Numeric\F32Nearest();
+ }
+ final public static function F32Neg(): Numeric\F32Neg
+ {
+ return new Numeric\F32Neg();
+ }
+ final public static function F32ReinterpretI32(): Numeric\F32ReinterpretI32
+ {
+ return new Numeric\F32ReinterpretI32();
+ }
+ final public static function F32ReinterpretI64(): Numeric\F32ReinterpretI64
+ {
+ return new Numeric\F32ReinterpretI64();
+ }
+ final public static function F32Sqrt(): Numeric\F32Sqrt
+ {
+ return new Numeric\F32Sqrt();
+ }
+ final public static function F32Sub(): Numeric\F32Sub
+ {
+ return new Numeric\F32Sub();
+ }
+ final public static function F32Trunc(): Numeric\F32Trunc
+ {
+ return new Numeric\F32Trunc();
+ }
+ final public static function F64Abs(): Numeric\F64Abs
+ {
+ return new Numeric\F64Abs();
+ }
+ final public static function F64Add(): Numeric\F64Add
+ {
+ return new Numeric\F64Add();
+ }
+ final public static function F64Ceil(): Numeric\F64Ceil
+ {
+ return new Numeric\F64Ceil();
+ }
+ /**
+ * @param F64 $value
+ */
+ final public static function F64Const(float $value): Numeric\F64Const
+ {
+ return new Numeric\F64Const($value);
+ }
+ final public static function F64ConvertI32S(): Numeric\F64ConvertI32S
+ {
+ return new Numeric\F64ConvertI32S();
+ }
+ final public static function F64ConvertI32U(): Numeric\F64ConvertI32U
+ {
+ return new Numeric\F64ConvertI32U();
+ }
+ final public static function F64ConvertI64S(): Numeric\F64ConvertI64S
+ {
+ return new Numeric\F64ConvertI64S();
+ }
+ final public static function F64ConvertI64U(): Numeric\F64ConvertI64U
+ {
+ return new Numeric\F64ConvertI64U();
+ }
+ final public static function F64CopySign(): Numeric\F64CopySign
+ {
+ return new Numeric\F64CopySign();
+ }
+ final public static function F64Div(): Numeric\F64Div
+ {
+ return new Numeric\F64Div();
+ }
+ final public static function F64Eq(): Numeric\F64Eq
+ {
+ return new Numeric\F64Eq();
+ }
+ final public static function F64Floor(): Numeric\F64Floor
+ {
+ return new Numeric\F64Floor();
+ }
+ final public static function F64Ge(): Numeric\F64Ge
+ {
+ return new Numeric\F64Ge();
+ }
+ final public static function F64Gt(): Numeric\F64Gt
+ {
+ return new Numeric\F64Gt();
+ }
+ final public static function F64Le(): Numeric\F64Le
+ {
+ return new Numeric\F64Le();
+ }
+ final public static function F64Lt(): Numeric\F64Lt
+ {
+ return new Numeric\F64Lt();
+ }
+ final public static function F64Max(): Numeric\F64Max
+ {
+ return new Numeric\F64Max();
+ }
+ final public static function F64Min(): Numeric\F64Min
+ {
+ return new Numeric\F64Min();
+ }
+ final public static function F64Mul(): Numeric\F64Mul
+ {
+ return new Numeric\F64Mul();
+ }
+ final public static function F64Ne(): Numeric\F64Ne
+ {
+ return new Numeric\F64Ne();
+ }
+ final public static function F64Nearest(): Numeric\F64Nearest
+ {
+ return new Numeric\F64Nearest();
+ }
+ final public static function F64Neg(): Numeric\F64Neg
+ {
+ return new Numeric\F64Neg();
+ }
+ final public static function F64PromoteF32(): Numeric\F64PromoteF32
+ {
+ return new Numeric\F64PromoteF32();
+ }
+ final public static function F64ReinterpretI32(): Numeric\F64ReinterpretI32
+ {
+ return new Numeric\F64ReinterpretI32();
+ }
+ final public static function F64ReinterpretI64(): Numeric\F64ReinterpretI64
+ {
+ return new Numeric\F64ReinterpretI64();
+ }
+ final public static function F64Sqrt(): Numeric\F64Sqrt
+ {
+ return new Numeric\F64Sqrt();
+ }
+ final public static function F64Sub(): Numeric\F64Sub
+ {
+ return new Numeric\F64Sub();
+ }
+ final public static function F64Trunc(): Numeric\F64Trunc
+ {
+ return new Numeric\F64Trunc();
+ }
+ final public static function I32Add(): Numeric\I32Add
+ {
+ return new Numeric\I32Add();
+ }
+ final public static function I32And(): Numeric\I32And
+ {
+ return new Numeric\I32And();
+ }
+ final public static function I32Clz(): Numeric\I32Clz
+ {
+ return new Numeric\I32Clz();
+ }
+ /**
+ * @param S64 $value
+ */
+ final public static function I32Const(int $value): Numeric\I32Const
+ {
+ return new Numeric\I32Const($value);
+ }
+ final public static function I32Ctz(): Numeric\I32Ctz
+ {
+ return new Numeric\I32Ctz();
+ }
+ final public static function I32DivS(): Numeric\I32DivS
+ {
+ return new Numeric\I32DivS();
+ }
+ final public static function I32DivU(): Numeric\I32DivU
+ {
+ return new Numeric\I32DivU();
+ }
+ final public static function I32Eq(): Numeric\I32Eq
+ {
+ return new Numeric\I32Eq();
+ }
+ final public static function I32Eqz(): Numeric\I32Eqz
+ {
+ return new Numeric\I32Eqz();
+ }
+ final public static function I32Extend16S(): Numeric\I32Extend16S
+ {
+ return new Numeric\I32Extend16S();
+ }
+ final public static function I32Extend8S(): Numeric\I32Extend8S
+ {
+ return new Numeric\I32Extend8S();
+ }
+ final public static function I32GeS(): Numeric\I32GeS
+ {
+ return new Numeric\I32GeS();
+ }
+ final public static function I32GeU(): Numeric\I32GeU
+ {
+ return new Numeric\I32GeU();
+ }
+ final public static function I32GtS(): Numeric\I32GtS
+ {
+ return new Numeric\I32GtS();
+ }
+ final public static function I32GtU(): Numeric\I32GtU
+ {
+ return new Numeric\I32GtU();
+ }
+ final public static function I32LeS(): Numeric\I32LeS
+ {
+ return new Numeric\I32LeS();
+ }
+ final public static function I32LeU(): Numeric\I32LeU
+ {
+ return new Numeric\I32LeU();
+ }
+ final public static function I32LtS(): Numeric\I32LtS
+ {
+ return new Numeric\I32LtS();
+ }
+ final public static function I32LtU(): Numeric\I32LtU
+ {
+ return new Numeric\I32LtU();
+ }
+ final public static function I32Mul(): Numeric\I32Mul
+ {
+ return new Numeric\I32Mul();
+ }
+ final public static function I32Ne(): Numeric\I32Ne
+ {
+ return new Numeric\I32Ne();
+ }
+ final public static function I32Or(): Numeric\I32Or
+ {
+ return new Numeric\I32Or();
+ }
+ final public static function I32Popcnt(): Numeric\I32Popcnt
+ {
+ return new Numeric\I32Popcnt();
+ }
+ final public static function I32ReinterpretF32(): Numeric\I32ReinterpretF32
+ {
+ return new Numeric\I32ReinterpretF32();
+ }
+ final public static function I32ReinterpretF64(): Numeric\I32ReinterpretF64
+ {
+ return new Numeric\I32ReinterpretF64();
+ }
+ final public static function I32RemS(): Numeric\I32RemS
+ {
+ return new Numeric\I32RemS();
+ }
+ final public static function I32RemU(): Numeric\I32RemU
+ {
+ return new Numeric\I32RemU();
+ }
+ final public static function I32RotL(): Numeric\I32RotL
+ {
+ return new Numeric\I32RotL();
+ }
+ final public static function I32RotR(): Numeric\I32RotR
+ {
+ return new Numeric\I32RotR();
+ }
+ final public static function I32Shl(): Numeric\I32Shl
+ {
+ return new Numeric\I32Shl();
+ }
+ final public static function I32ShrS(): Numeric\I32ShrS
+ {
+ return new Numeric\I32ShrS();
+ }
+ final public static function I32ShrU(): Numeric\I32ShrU
+ {
+ return new Numeric\I32ShrU();
+ }
+ final public static function I32Sub(): Numeric\I32Sub
+ {
+ return new Numeric\I32Sub();
+ }
+ final public static function I32TruncF32S(): Numeric\I32TruncF32S
+ {
+ return new Numeric\I32TruncF32S();
+ }
+ final public static function I32TruncF32U(): Numeric\I32TruncF32U
+ {
+ return new Numeric\I32TruncF32U();
+ }
+ final public static function I32TruncF64S(): Numeric\I32TruncF64S
+ {
+ return new Numeric\I32TruncF64S();
+ }
+ final public static function I32TruncF64U(): Numeric\I32TruncF64U
+ {
+ return new Numeric\I32TruncF64U();
+ }
+ final public static function I32TruncSatF32S(): Numeric\I32TruncSatF32S
+ {
+ return new Numeric\I32TruncSatF32S();
+ }
+ final public static function I32TruncSatF32U(): Numeric\I32TruncSatF32U
+ {
+ return new Numeric\I32TruncSatF32U();
+ }
+ final public static function I32TruncSatF64S(): Numeric\I32TruncSatF64S
+ {
+ return new Numeric\I32TruncSatF64S();
+ }
+ final public static function I32TruncSatF64U(): Numeric\I32TruncSatF64U
+ {
+ return new Numeric\I32TruncSatF64U();
+ }
+ final public static function I32WrapI64(): Numeric\I32WrapI64
+ {
+ return new Numeric\I32WrapI64();
+ }
+ final public static function I32Xor(): Numeric\I32Xor
+ {
+ return new Numeric\I32Xor();
+ }
+ final public static function I64Add(): Numeric\I64Add
+ {
+ return new Numeric\I64Add();
+ }
+ final public static function I64And(): Numeric\I64And
+ {
+ return new Numeric\I64And();
+ }
+ final public static function I64Clz(): Numeric\I64Clz
+ {
+ return new Numeric\I64Clz();
+ }
+ /**
+ * @param S64 $value
+ */
+ final public static function I64Const(int $value): Numeric\I64Const
+ {
+ return new Numeric\I64Const($value);
+ }
+ final public static function I64Ctz(): Numeric\I64Ctz
+ {
+ return new Numeric\I64Ctz();
+ }
+ final public static function I64DivS(): Numeric\I64DivS
+ {
+ return new Numeric\I64DivS();
+ }
+ final public static function I64DivU(): Numeric\I64DivU
+ {
+ return new Numeric\I64DivU();
+ }
+ final public static function I64Eq(): Numeric\I64Eq
+ {
+ return new Numeric\I64Eq();
+ }
+ final public static function I64Eqz(): Numeric\I64Eqz
+ {
+ return new Numeric\I64Eqz();
+ }
+ final public static function I64Extend16S(): Numeric\I64Extend16S
+ {
+ return new Numeric\I64Extend16S();
+ }
+ final public static function I64Extend32S(): Numeric\I64Extend32S
+ {
+ return new Numeric\I64Extend32S();
+ }
+ final public static function I64Extend8S(): Numeric\I64Extend8S
+ {
+ return new Numeric\I64Extend8S();
+ }
+ final public static function I64ExtendI32S(): Numeric\I64ExtendI32S
+ {
+ return new Numeric\I64ExtendI32S();
+ }
+ final public static function I64ExtendI32U(): Numeric\I64ExtendI32U
+ {
+ return new Numeric\I64ExtendI32U();
+ }
+ final public static function I64GeS(): Numeric\I64GeS
+ {
+ return new Numeric\I64GeS();
+ }
+ final public static function I64GeU(): Numeric\I64GeU
+ {
+ return new Numeric\I64GeU();
+ }
+ final public static function I64GtS(): Numeric\I64GtS
+ {
+ return new Numeric\I64GtS();
+ }
+ final public static function I64GtU(): Numeric\I64GtU
+ {
+ return new Numeric\I64GtU();
+ }
+ final public static function I64LeS(): Numeric\I64LeS
+ {
+ return new Numeric\I64LeS();
+ }
+ final public static function I64LeU(): Numeric\I64LeU
+ {
+ return new Numeric\I64LeU();
+ }
+ final public static function I64LtS(): Numeric\I64LtS
+ {
+ return new Numeric\I64LtS();
+ }
+ final public static function I64LtU(): Numeric\I64LtU
+ {
+ return new Numeric\I64LtU();
+ }
+ final public static function I64Mul(): Numeric\I64Mul
+ {
+ return new Numeric\I64Mul();
+ }
+ final public static function I64Ne(): Numeric\I64Ne
+ {
+ return new Numeric\I64Ne();
+ }
+ final public static function I64Or(): Numeric\I64Or
+ {
+ return new Numeric\I64Or();
+ }
+ final public static function I64Popcnt(): Numeric\I64Popcnt
+ {
+ return new Numeric\I64Popcnt();
+ }
+ final public static function I64ReinterpretF32(): Numeric\I64ReinterpretF32
+ {
+ return new Numeric\I64ReinterpretF32();
+ }
+ final public static function I64ReinterpretF64(): Numeric\I64ReinterpretF64
+ {
+ return new Numeric\I64ReinterpretF64();
+ }
+ final public static function I64RemS(): Numeric\I64RemS
+ {
+ return new Numeric\I64RemS();
+ }
+ final public static function I64RemU(): Numeric\I64RemU
+ {
+ return new Numeric\I64RemU();
+ }
+ final public static function I64RotL(): Numeric\I64RotL
+ {
+ return new Numeric\I64RotL();
+ }
+ final public static function I64RotR(): Numeric\I64RotR
+ {
+ return new Numeric\I64RotR();
+ }
+ final public static function I64Shl(): Numeric\I64Shl
+ {
+ return new Numeric\I64Shl();
+ }
+ final public static function I64ShrS(): Numeric\I64ShrS
+ {
+ return new Numeric\I64ShrS();
+ }
+ final public static function I64ShrU(): Numeric\I64ShrU
+ {
+ return new Numeric\I64ShrU();
+ }
+ final public static function I64Sub(): Numeric\I64Sub
+ {
+ return new Numeric\I64Sub();
+ }
+ final public static function I64TruncF32S(): Numeric\I64TruncF32S
+ {
+ return new Numeric\I64TruncF32S();
+ }
+ final public static function I64TruncF32U(): Numeric\I64TruncF32U
+ {
+ return new Numeric\I64TruncF32U();
+ }
+ final public static function I64TruncF64S(): Numeric\I64TruncF64S
+ {
+ return new Numeric\I64TruncF64S();
+ }
+ final public static function I64TruncF64U(): Numeric\I64TruncF64U
+ {
+ return new Numeric\I64TruncF64U();
+ }
+ final public static function I64TruncSatF32S(): Numeric\I64TruncSatF32S
+ {
+ return new Numeric\I64TruncSatF32S();
+ }
+ final public static function I64TruncSatF32U(): Numeric\I64TruncSatF32U
+ {
+ return new Numeric\I64TruncSatF32U();
+ }
+ final public static function I64TruncSatF64S(): Numeric\I64TruncSatF64S
+ {
+ return new Numeric\I64TruncSatF64S();
+ }
+ final public static function I64TruncSatF64U(): Numeric\I64TruncSatF64U
+ {
+ return new Numeric\I64TruncSatF64U();
+ }
+ final public static function I64Xor(): Numeric\I64Xor
+ {
+ return new Numeric\I64Xor();
+ }
+
+ // Reference instructions
+ final public static function RefFunc(int $func): Reference\RefFunc
+ {
+ return new Reference\RefFunc($func);
+ }
+ final public static function RefIsNull(): Reference\RefIsNull
+ {
+ return new Reference\RefIsNull();
+ }
+ final public static function RefNull(RefType $type): Reference\RefNull
+ {
+ return new Reference\RefNull($type);
+ }
+
+ // Parametric instructions
+ final public static function Drop(): Parametric\Drop
+ {
+ return new Parametric\Drop();
+ }
+ /**
+ * @param list<ValType> $types
+ */
+ final public static function Select(array $types): Parametric\Select
+ {
+ return new Parametric\Select($types);
+ }
+
+ // Variable instructions
+ final public static function GlobalGet(int $var): Variable\GlobalGet
+ {
+ return new Variable\GlobalGet($var);
+ }
+ final public static function GlobalSet(int $var): Variable\GlobalSet
+ {
+ return new Variable\GlobalSet($var);
+ }
+ final public static function LocalGet(int $var): Variable\LocalGet
+ {
+ return new Variable\LocalGet($var);
+ }
+ final public static function LocalSet(int $var): Variable\LocalSet
+ {
+ return new Variable\LocalSet($var);
+ }
+ final public static function LocalTee(int $var): Variable\LocalTee
+ {
+ return new Variable\LocalTee($var);
+ }
+
+ // Table instructions
+ final public static function ElemDrop(int $elem): Table\ElemDrop
+ {
+ return new Table\ElemDrop($elem);
+ }
+ final public static function TableCopy(int $to, int $from): Table\TableCopy
+ {
+ return new Table\TableCopy($to, $from);
+ }
+ final public static function TableFill(int $table): Table\TableFill
+ {
+ return new Table\TableFill($table);
+ }
+ final public static function TableGet(int $table): Table\TableGet
+ {
+ return new Table\TableGet($table);
+ }
+ final public static function TableGrow(int $table): Table\TableGrow
+ {
+ return new Table\TableGrow($table);
+ }
+ final public static function TableInit(int $to, int $from): Table\TableInit
+ {
+ return new Table\TableInit($to, $from);
+ }
+ final public static function TableSet(int $table): Table\TableSet
+ {
+ return new Table\TableSet($table);
+ }
+ final public static function TableSize(int $table): Table\TableSize
+ {
+ return new Table\TableSize($table);
+ }
+
+ // Memory instructions
+ final public static function DataDrop(int $data): Memory\DataDrop
+ {
+ return new Memory\DataDrop($data);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function F32Load(int $offset, int $align): Memory\F32Load
+ {
+ return new Memory\F32Load($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function F32Store(int $offset, int $align): Memory\F32Store
+ {
+ return new Memory\F32Store($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function F64Load(int $offset, int $align): Memory\F64Load
+ {
+ return new Memory\F64Load($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function F64Store(int $offset, int $align): Memory\F64Store
+ {
+ return new Memory\F64Store($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Load(int $offset, int $align): Memory\I32Load
+ {
+ return new Memory\I32Load($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Load16S(int $offset, int $align): Memory\I32Load16S
+ {
+ return new Memory\I32Load16S($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Load16U(int $offset, int $align): Memory\I32Load16U
+ {
+ return new Memory\I32Load16U($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Load8S(int $offset, int $align): Memory\I32Load8S
+ {
+ return new Memory\I32Load8S($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Load8U(int $offset, int $align): Memory\I32Load8U
+ {
+ return new Memory\I32Load8U($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Store(int $offset, int $align): Memory\I32Store
+ {
+ return new Memory\I32Store($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Store16(int $offset, int $align): Memory\I32Store16
+ {
+ return new Memory\I32Store16($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I32Store8(int $offset, int $align): Memory\I32Store8
+ {
+ return new Memory\I32Store8($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load(int $offset, int $align): Memory\I64Load
+ {
+ return new Memory\I64Load($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load16S(int $offset, int $align): Memory\I64Load16S
+ {
+ return new Memory\I64Load16S($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load16U(int $offset, int $align): Memory\I64Load16U
+ {
+ return new Memory\I64Load16U($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load32S(int $offset, int $align): Memory\I64Load32S
+ {
+ return new Memory\I64Load32S($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load32U(int $offset, int $align): Memory\I64Load32U
+ {
+ return new Memory\I64Load32U($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load8S(int $offset, int $align): Memory\I64Load8S
+ {
+ return new Memory\I64Load8S($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Load8U(int $offset, int $align): Memory\I64Load8U
+ {
+ return new Memory\I64Load8U($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Store(int $offset, int $align): Memory\I64Store
+ {
+ return new Memory\I64Store($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Store16(int $offset, int $align): Memory\I64Store16
+ {
+ return new Memory\I64Store16($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Store32(int $offset, int $align): Memory\I64Store32
+ {
+ return new Memory\I64Store32($offset, $align);
+ }
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ final public static function I64Store8(int $offset, int $align): Memory\I64Store8
+ {
+ return new Memory\I64Store8($offset, $align);
+ }
+ final public static function MemoryCopy(): Memory\MemoryCopy
+ {
+ return new Memory\MemoryCopy();
+ }
+ final public static function MemoryFill(): Memory\MemoryFill
+ {
+ return new Memory\MemoryFill();
+ }
+ final public static function MemoryGrow(): Memory\MemoryGrow
+ {
+ return new Memory\MemoryGrow();
+ }
+ final public static function MemoryInit(int $data): Memory\MemoryInit
+ {
+ return new Memory\MemoryInit($data);
+ }
+ final public static function MemorySize(): Memory\MemorySize
+ {
+ return new Memory\MemorySize();
+ }
+
+ // Control instructions
+ /**
+ * @param list<Instr> $body
+ */
+ final public static function Block(BlockType $type, array $body): Control\Block
+ {
+ return new Control\Block($type, $body);
+ }
+ final public static function Br(int $label): Control\Br
+ {
+ return new Control\Br($label);
+ }
+ final public static function BrIf(int $label): Control\BrIf
+ {
+ return new Control\BrIf($label);
+ }
+ /**
+ * @param list<int> $labelTable
+ */
+ final public static function BrTable(array $labelTable, int $defaultLabel): Control\BrTable
+ {
+ return new Control\BrTable($labelTable, $defaultLabel);
+ }
+ final public static function Call(int $func): Control\Call
+ {
+ return new Control\Call($func);
+ }
+ final public static function CallIndirect(int $funcTable, int $type): Control\CallIndirect
+ {
+ return new Control\CallIndirect($funcTable, $type);
+ }
+ final public static function Else_(): Control\Else_
+ {
+ return new Control\Else_();
+ }
+ final public static function End(): Control\End
+ {
+ return new Control\End();
+ }
+ /**
+ * @param list<Instr> $thenBody
+ * @param list<Instr> $elseBody
+ */
+ final public static function If_(BlockType $type, array $thenBody, array $elseBody): Control\If_
+ {
+ return new Control\If_($type, $thenBody, $elseBody);
+ }
+ /**
+ * @param list<Instr> $body
+ */
+ final public static function Loop(BlockType $type, array $body): Control\Loop
+ {
+ return new Control\Loop($type, $body);
+ }
+ final public static function Nop(): Control\Nop
+ {
+ return new Control\Nop();
+ }
+ final public static function Return_(): Control\Return_
+ {
+ return new Control\Return_();
+ }
+ final public static function Unreachable(): Control\Unreachable
+ {
+ return new Control\Unreachable();
+ }
+
+ abstract public static function opName(): string;
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Block.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Block.php
new file mode 100644
index 0000000..af2c97f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Block.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Block extends Instr
+{
+ /**
+ * @param list<Instr> $body
+ */
+ protected function __construct(
+ public BlockType $type,
+ public array $body,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "block";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockType.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockType.php
new file mode 100644
index 0000000..1188625
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockType.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+
+abstract readonly class BlockType
+{
+ final public static function TypeIdx(int $type): BlockTypes\TypeIdx
+ {
+ return new BlockTypes\TypeIdx($type);
+ }
+
+ final public static function ValType(?ValType $type): BlockTypes\ValType
+ {
+ return new BlockTypes\ValType($type);
+ }
+
+ public static function opName(): string
+ {
+ return "hoge";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/TypeIdx.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/TypeIdx.php
new file mode 100644
index 0000000..2ed694b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/TypeIdx.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control\BlockTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control\BlockType;
+
+final readonly class TypeIdx extends BlockType
+{
+ protected function __construct(public int $inner)
+ {
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/ValType.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/ValType.php
new file mode 100644
index 0000000..e7caa3f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/BlockTypes/ValType.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control\BlockTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control\BlockType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType as OrigValType;
+
+final readonly class ValType extends BlockType
+{
+ protected function __construct(public ?OrigValType $inner)
+ {
+ }
+
+ public static function opName(): string
+ {
+ return "hoge";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Br.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Br.php
new file mode 100644
index 0000000..6235a36
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Br.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Br extends Instr
+{
+ protected function __construct(
+ public int $label,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "br";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/BrIf.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/BrIf.php
new file mode 100644
index 0000000..7c8a896
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/BrIf.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class BrIf extends Instr
+{
+ protected function __construct(
+ public int $label,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "br_if";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/BrTable.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/BrTable.php
new file mode 100644
index 0000000..2841814
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/BrTable.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class BrTable extends Instr
+{
+ /**
+ * @param list<int> $labelTable
+ */
+ protected function __construct(
+ public array $labelTable,
+ public int $defaultLabel,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "br_table";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Call.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Call.php
new file mode 100644
index 0000000..461f561
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Call.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Call extends Instr
+{
+ protected function __construct(
+ public int $func,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "call";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/CallIndirect.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/CallIndirect.php
new file mode 100644
index 0000000..7017723
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/CallIndirect.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class CallIndirect extends Instr
+{
+ protected function __construct(
+ public int $funcTable,
+ public int $type,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "call_indirect";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Else_.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Else_.php
new file mode 100644
index 0000000..1407543
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Else_.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Else_ extends Instr
+{
+ public static function opName(): string
+ {
+ return "else";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/End.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/End.php
new file mode 100644
index 0000000..5bdb8b9
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/End.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class End extends Instr
+{
+ public static function opName(): string
+ {
+ return "end";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/If_.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/If_.php
new file mode 100644
index 0000000..8afdc8b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/If_.php
@@ -0,0 +1,26 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class If_ extends Instr
+{
+ /**
+ * @param list<Instr> $thenBody
+ * @param list<Instr> $elseBody
+ */
+ protected function __construct(
+ public BlockType $type,
+ public array $thenBody,
+ public array $elseBody,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "if";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Loop.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Loop.php
new file mode 100644
index 0000000..ca48ca1
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Loop.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Loop extends Instr
+{
+ /**
+ * @param list<Instr> $body
+ */
+ protected function __construct(
+ public BlockType $type,
+ public array $body,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "loop";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Nop.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Nop.php
new file mode 100644
index 0000000..50a3773
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Nop.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Nop extends Instr
+{
+ public static function opName(): string
+ {
+ return "nop";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Return_.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Return_.php
new file mode 100644
index 0000000..b80fdfe
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Return_.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Return_ extends Instr
+{
+ public static function opName(): string
+ {
+ return "return";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Control/Unreachable.php b/src/WebAssembly/Structure/Instructions/Instrs/Control/Unreachable.php
new file mode 100644
index 0000000..e43ade8
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Control/Unreachable.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Control;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Unreachable extends Instr
+{
+ public static function opName(): string
+ {
+ return "unreachable";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/DataDrop.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/DataDrop.php
new file mode 100644
index 0000000..3525b80
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/DataDrop.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class DataDrop extends Instr
+{
+ protected function __construct(
+ public int $data,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "data.drop";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Load.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Load.php
new file mode 100644
index 0000000..82b7cf4
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Load.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Load extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "f32.load";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Store.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Store.php
new file mode 100644
index 0000000..06d9055
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F32Store.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Store extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "f32.store";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Load.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Load.php
new file mode 100644
index 0000000..13e2385
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Load.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Load extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "f64.load";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Store.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Store.php
new file mode 100644
index 0000000..261b276
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/F64Store.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Store extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "f64.store";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load.php
new file mode 100644
index 0000000..4554a77
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Load extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.load";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16S.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16S.php
new file mode 100644
index 0000000..56bdb3f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16S.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Load16S extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.load16_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16U.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16U.php
new file mode 100644
index 0000000..1cc243c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load16U.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Load16U extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.load16_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8S.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8S.php
new file mode 100644
index 0000000..a76607f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8S.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Load8S extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.load8_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8U.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8U.php
new file mode 100644
index 0000000..7cab471
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Load8U.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Load8U extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.load8_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store.php
new file mode 100644
index 0000000..3021639
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Store extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.store";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store16.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store16.php
new file mode 100644
index 0000000..3463fdf
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store16.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Store16 extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.store16";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store8.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store8.php
new file mode 100644
index 0000000..5298ad5
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I32Store8.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Store8 extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.store8";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load.php
new file mode 100644
index 0000000..33fa4e1
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16S.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16S.php
new file mode 100644
index 0000000..47ef776
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16S.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load16S extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load16_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16U.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16U.php
new file mode 100644
index 0000000..8825b89
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load16U.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load16U extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load16_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32S.php
new file mode 100644
index 0000000..bd2575b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32S.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load32S extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32U.php
new file mode 100644
index 0000000..404bc8a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load32U.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load32U extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8S.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8S.php
new file mode 100644
index 0000000..f28bad9
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8S.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load8S extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load8_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8U.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8U.php
new file mode 100644
index 0000000..66b5575
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Load8U.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Load8U extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.load8_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store.php
new file mode 100644
index 0000000..0b4778b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Store extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.store";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store16.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store16.php
new file mode 100644
index 0000000..984ecd2
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store16.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Store16 extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.store16";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store32.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store32.php
new file mode 100644
index 0000000..e486308
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store32.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Store32 extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.store32";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store8.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store8.php
new file mode 100644
index 0000000..7897197
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/I64Store8.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Store8 extends Instr
+{
+ /**
+ * @param U32 $offset
+ * @param U32 $align
+ */
+ protected function __construct(
+ public int $offset,
+ public int $align,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.store8";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryCopy.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryCopy.php
new file mode 100644
index 0000000..5ef7106
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryCopy.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class MemoryCopy extends Instr
+{
+ public static function opName(): string
+ {
+ return "memory.copy";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryFill.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryFill.php
new file mode 100644
index 0000000..be388ff
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryFill.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class MemoryFill extends Instr
+{
+ public static function opName(): string
+ {
+ return "memory.fill";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryGrow.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryGrow.php
new file mode 100644
index 0000000..9e6c320
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryGrow.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class MemoryGrow extends Instr
+{
+ public static function opName(): string
+ {
+ return "memory.grow";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryInit.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryInit.php
new file mode 100644
index 0000000..7843ff1
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemoryInit.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class MemoryInit extends Instr
+{
+ protected function __construct(
+ public int $data,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "memory.init";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemorySize.php b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemorySize.php
new file mode 100644
index 0000000..075878a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Memory/MemorySize.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Memory;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class MemorySize extends Instr
+{
+ public static function opName(): string
+ {
+ return "memory.size";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Abs.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Abs.php
new file mode 100644
index 0000000..7711f7f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Abs.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Abs extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.abs";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Add.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Add.php
new file mode 100644
index 0000000..5f92829
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Add.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Add extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.add";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ceil.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ceil.php
new file mode 100644
index 0000000..be6f11e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ceil.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Ceil extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.ceil";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Const.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Const.php
new file mode 100644
index 0000000..fd2670e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Const.php
@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Const extends Instr
+{
+ /**
+ * @param F32 $value
+ */
+ protected function __construct(
+ public float $value,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "f32.const";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32S.php
new file mode 100644
index 0000000..5e68989
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32ConvertI32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.convert_i32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32U.php
new file mode 100644
index 0000000..fdaa709
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32ConvertI32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.convert_i32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64S.php
new file mode 100644
index 0000000..b6444cc
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32ConvertI64S extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.convert_i64_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64U.php
new file mode 100644
index 0000000..4b0f578
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ConvertI64U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32ConvertI64U extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.convert_i64_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32CopySign.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32CopySign.php
new file mode 100644
index 0000000..539682a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32CopySign.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32CopySign extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.copy_sign";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32DemoteF64.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32DemoteF64.php
new file mode 100644
index 0000000..24cff4f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32DemoteF64.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32DemoteF64 extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.demote_f64";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Div.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Div.php
new file mode 100644
index 0000000..3cdafb0
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Div.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Div extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.div";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Eq.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Eq.php
new file mode 100644
index 0000000..cae6c2e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Eq.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Eq extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.eq";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Floor.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Floor.php
new file mode 100644
index 0000000..9c1b23f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Floor.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Floor extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.floor";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ge.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ge.php
new file mode 100644
index 0000000..ef75922
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ge.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Ge extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.ge";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Gt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Gt.php
new file mode 100644
index 0000000..0efda96
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Gt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Gt extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.gt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Le.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Le.php
new file mode 100644
index 0000000..50cbb71
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Le.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Le extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.le";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Lt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Lt.php
new file mode 100644
index 0000000..e4b490a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Lt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Lt extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.lt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Max.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Max.php
new file mode 100644
index 0000000..81f9b3e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Max.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Max extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.max";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Min.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Min.php
new file mode 100644
index 0000000..20518ea
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Min.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Min extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.min";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Mul.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Mul.php
new file mode 100644
index 0000000..8282273
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Mul.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Mul extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.mul";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ne.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ne.php
new file mode 100644
index 0000000..8b5db5e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Ne.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Ne extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.ne";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Nearest.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Nearest.php
new file mode 100644
index 0000000..ae51359
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Nearest.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Nearest extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.nearest";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Neg.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Neg.php
new file mode 100644
index 0000000..82b72c3
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Neg.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Neg extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.neg";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI32.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI32.php
new file mode 100644
index 0000000..3cd93c4
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI32.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32ReinterpretI32 extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.reinterpret_i32";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI64.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI64.php
new file mode 100644
index 0000000..dd0f66f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32ReinterpretI64.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32ReinterpretI64 extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.reinterpret_i64";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sqrt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sqrt.php
new file mode 100644
index 0000000..9cdeba2
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sqrt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Sqrt extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.sqrt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sub.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sub.php
new file mode 100644
index 0000000..54b5991
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Sub.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Sub extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.sub";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Trunc.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Trunc.php
new file mode 100644
index 0000000..627406e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F32Trunc.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F32Trunc extends Instr
+{
+ public static function opName(): string
+ {
+ return "f32.trunc";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Abs.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Abs.php
new file mode 100644
index 0000000..a985933
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Abs.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Abs extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.abs";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Add.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Add.php
new file mode 100644
index 0000000..60a6a05
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Add.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Add extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.add";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ceil.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ceil.php
new file mode 100644
index 0000000..3c88a4b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ceil.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Ceil extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.ceil";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Const.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Const.php
new file mode 100644
index 0000000..46c61fe
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Const.php
@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Const extends Instr
+{
+ /**
+ * @param F64 $value
+ */
+ protected function __construct(
+ public float $value,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "f64.const";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32S.php
new file mode 100644
index 0000000..5deaec0
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64ConvertI32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.convert_i32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32U.php
new file mode 100644
index 0000000..657e8e2
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64ConvertI32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.convert_i32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64S.php
new file mode 100644
index 0000000..af7d5af
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64ConvertI64S extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.convert_i64_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64U.php
new file mode 100644
index 0000000..575c8e5
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ConvertI64U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64ConvertI64U extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.convert_i64_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64CopySign.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64CopySign.php
new file mode 100644
index 0000000..bab91f2
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64CopySign.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64CopySign extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.copy_sign";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Div.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Div.php
new file mode 100644
index 0000000..7304a8d
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Div.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Div extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.div";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Eq.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Eq.php
new file mode 100644
index 0000000..1c9e31c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Eq.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Eq extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.eq";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Floor.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Floor.php
new file mode 100644
index 0000000..8c76753
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Floor.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Floor extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.floor";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ge.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ge.php
new file mode 100644
index 0000000..28f6da1
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ge.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Ge extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.ge";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Gt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Gt.php
new file mode 100644
index 0000000..9b6e91e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Gt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Gt extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.gt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Le.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Le.php
new file mode 100644
index 0000000..1852d66
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Le.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Le extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.le";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Lt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Lt.php
new file mode 100644
index 0000000..fb96301
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Lt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Lt extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.lt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Max.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Max.php
new file mode 100644
index 0000000..da79a2e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Max.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Max extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.max";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Min.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Min.php
new file mode 100644
index 0000000..79bb77b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Min.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Min extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.min";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Mul.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Mul.php
new file mode 100644
index 0000000..f0932ea
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Mul.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Mul extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.mul";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ne.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ne.php
new file mode 100644
index 0000000..226b1e4
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Ne.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Ne extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.ne";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Nearest.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Nearest.php
new file mode 100644
index 0000000..0863099
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Nearest.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Nearest extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.nearest";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Neg.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Neg.php
new file mode 100644
index 0000000..c4e0ce7
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Neg.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Neg extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.neg";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64PromoteF32.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64PromoteF32.php
new file mode 100644
index 0000000..8692806
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64PromoteF32.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64PromoteF32 extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.promote_f32";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI32.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI32.php
new file mode 100644
index 0000000..4721e07
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI32.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64ReinterpretI32 extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.reinterpret_i32";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI64.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI64.php
new file mode 100644
index 0000000..22faa67
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64ReinterpretI64.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64ReinterpretI64 extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.reinterpret_i64";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sqrt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sqrt.php
new file mode 100644
index 0000000..77d708a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sqrt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Sqrt extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.sqrt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sub.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sub.php
new file mode 100644
index 0000000..b20c0c9
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Sub.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Sub extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.sub";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Trunc.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Trunc.php
new file mode 100644
index 0000000..62d6c12
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/F64Trunc.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class F64Trunc extends Instr
+{
+ public static function opName(): string
+ {
+ return "f64.trunc";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Add.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Add.php
new file mode 100644
index 0000000..429dfdf
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Add.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Add extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.add";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32And.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32And.php
new file mode 100644
index 0000000..135f038
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32And.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32And extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.and";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Clz.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Clz.php
new file mode 100644
index 0000000..7bdfa52
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Clz.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Clz extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.clz";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Const.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Const.php
new file mode 100644
index 0000000..4900a1c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Const.php
@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Const extends Instr
+{
+ /**
+ * @param U32 $value
+ */
+ protected function __construct(
+ public int $value,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i32.const";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ctz.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ctz.php
new file mode 100644
index 0000000..4577729
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ctz.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Ctz extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.ctz";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivS.php
new file mode 100644
index 0000000..bbc0f08
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32DivS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.div_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivU.php
new file mode 100644
index 0000000..3db3fa0
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32DivU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32DivU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.div_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eq.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eq.php
new file mode 100644
index 0000000..eb24aad
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eq.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Eq extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.eq";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eqz.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eqz.php
new file mode 100644
index 0000000..b99341a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Eqz.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Eqz extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.eqz";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend16S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend16S.php
new file mode 100644
index 0000000..50e3951
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend16S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Extend16S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.extend16_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend8S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend8S.php
new file mode 100644
index 0000000..9f5aa4b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Extend8S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Extend8S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.extend8_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeS.php
new file mode 100644
index 0000000..7f2746f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32GeS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.ge_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeU.php
new file mode 100644
index 0000000..3018605
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GeU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32GeU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.ge_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtS.php
new file mode 100644
index 0000000..093f47d
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32GtS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.gt_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtU.php
new file mode 100644
index 0000000..e7c07e3
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32GtU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32GtU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.gt_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeS.php
new file mode 100644
index 0000000..078535a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32LeS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.le_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeU.php
new file mode 100644
index 0000000..0fe2ae2
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LeU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32LeU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.le_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtS.php
new file mode 100644
index 0000000..6070881
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32LtS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.lt_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtU.php
new file mode 100644
index 0000000..ccb520e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32LtU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32LtU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.lt_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Mul.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Mul.php
new file mode 100644
index 0000000..7ddf1e6
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Mul.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Mul extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.mul";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ne.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ne.php
new file mode 100644
index 0000000..7624909
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Ne.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Ne extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.ne";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Or.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Or.php
new file mode 100644
index 0000000..4d985a7
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Or.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Or extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.or";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Popcnt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Popcnt.php
new file mode 100644
index 0000000..ea2e5af
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Popcnt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Popcnt extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.popcnt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF32.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF32.php
new file mode 100644
index 0000000..3ca1a3c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF32.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32ReinterpretF32 extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.reinterpret_f32";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF64.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF64.php
new file mode 100644
index 0000000..2990a21
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ReinterpretF64.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32ReinterpretF64 extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.reinterpret_f64";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemS.php
new file mode 100644
index 0000000..0814085
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32RemS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.rem_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemU.php
new file mode 100644
index 0000000..b945e4e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RemU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32RemU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.rem_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotL.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotL.php
new file mode 100644
index 0000000..509a39e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotL.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32RotL extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.rot_l";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotR.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotR.php
new file mode 100644
index 0000000..7104869
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32RotR.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32RotR extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.rot_r";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Shl.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Shl.php
new file mode 100644
index 0000000..199cace
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Shl.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Shl extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.shl";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrS.php
new file mode 100644
index 0000000..5645907
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32ShrS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.shr_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrU.php
new file mode 100644
index 0000000..c5435cd
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32ShrU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32ShrU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.shr_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Sub.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Sub.php
new file mode 100644
index 0000000..5ca4dec
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Sub.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Sub extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.sub";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32S.php
new file mode 100644
index 0000000..31ab093
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncF32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_f32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32U.php
new file mode 100644
index 0000000..afeda9c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncF32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_f32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64S.php
new file mode 100644
index 0000000..8b27805
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncF64S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_f64_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64U.php
new file mode 100644
index 0000000..5b7550c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncF64U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncF64U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_f64_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32S.php
new file mode 100644
index 0000000..c2fbdf1
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncSatF32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_sat_f32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32U.php
new file mode 100644
index 0000000..0ae1090
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncSatF32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_sat_f32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64S.php
new file mode 100644
index 0000000..38731db
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncSatF64S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_sat_f64_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64U.php
new file mode 100644
index 0000000..22f5335
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32TruncSatF64U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32TruncSatF64U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.trunc_sat_f64_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32WrapI64.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32WrapI64.php
new file mode 100644
index 0000000..9c7ed4b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32WrapI64.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32WrapI64 extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.wrap_i64";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Xor.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Xor.php
new file mode 100644
index 0000000..804b881
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I32Xor.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I32Xor extends Instr
+{
+ public static function opName(): string
+ {
+ return "i32.xor";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Add.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Add.php
new file mode 100644
index 0000000..9d81af7
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Add.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Add extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.add";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64And.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64And.php
new file mode 100644
index 0000000..4c1f4b3
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64And.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64And extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.and";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Clz.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Clz.php
new file mode 100644
index 0000000..eb03da7
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Clz.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Clz extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.clz";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Const.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Const.php
new file mode 100644
index 0000000..01e9e72
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Const.php
@@ -0,0 +1,23 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Const extends Instr
+{
+ /**
+ * @param U64 $value
+ */
+ protected function __construct(
+ public int $value,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "i64.const";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ctz.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ctz.php
new file mode 100644
index 0000000..3c6fdaa
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ctz.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Ctz extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.ctz";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivS.php
new file mode 100644
index 0000000..8a8759b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64DivS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.div_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivU.php
new file mode 100644
index 0000000..67f50f7
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64DivU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64DivU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.div_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eq.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eq.php
new file mode 100644
index 0000000..5480197
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eq.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Eq extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.eq";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eqz.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eqz.php
new file mode 100644
index 0000000..8bd7f04
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Eqz.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Eqz extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.eqz";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend16S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend16S.php
new file mode 100644
index 0000000..8733d84
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend16S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Extend16S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.extend16_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend32S.php
new file mode 100644
index 0000000..3594cf4
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Extend32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.extend32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend8S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend8S.php
new file mode 100644
index 0000000..8579635
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Extend8S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Extend8S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.extend8_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32S.php
new file mode 100644
index 0000000..9db4c55
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64ExtendI32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.extend_i32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32U.php
new file mode 100644
index 0000000..9219f97
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ExtendI32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64ExtendI32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.extend_i32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeS.php
new file mode 100644
index 0000000..bddbffb
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64GeS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.ge_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeU.php
new file mode 100644
index 0000000..9b5df84
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GeU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64GeU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.ge_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtS.php
new file mode 100644
index 0000000..4ac4063
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64GtS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.gt_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtU.php
new file mode 100644
index 0000000..4cd0f84
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64GtU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64GtU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.gt_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeS.php
new file mode 100644
index 0000000..259cc99
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64LeS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.le_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeU.php
new file mode 100644
index 0000000..69c880b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LeU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64LeU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.le_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtS.php
new file mode 100644
index 0000000..9c8d434
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64LtS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.lt_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtU.php
new file mode 100644
index 0000000..8142792
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64LtU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64LtU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.lt_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Mul.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Mul.php
new file mode 100644
index 0000000..1a69448
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Mul.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Mul extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.mul";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ne.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ne.php
new file mode 100644
index 0000000..4cf363e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Ne.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Ne extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.ne";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Or.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Or.php
new file mode 100644
index 0000000..c09caab
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Or.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Or extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.or";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Popcnt.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Popcnt.php
new file mode 100644
index 0000000..3db978b
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Popcnt.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Popcnt extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.popcnt";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF32.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF32.php
new file mode 100644
index 0000000..6446e50
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF32.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64ReinterpretF32 extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.reinterpret_f32";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF64.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF64.php
new file mode 100644
index 0000000..b570008
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ReinterpretF64.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64ReinterpretF64 extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.reinterpret_f64";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemS.php
new file mode 100644
index 0000000..7833dcd
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64RemS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.rem_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemU.php
new file mode 100644
index 0000000..97117dc
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RemU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64RemU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.rem_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotL.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotL.php
new file mode 100644
index 0000000..b39a2ac
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotL.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64RotL extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.rot_l";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotR.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotR.php
new file mode 100644
index 0000000..aa62ee8
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64RotR.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64RotR extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.rot_r";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Shl.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Shl.php
new file mode 100644
index 0000000..f43018a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Shl.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Shl extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.shl";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrS.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrS.php
new file mode 100644
index 0000000..f8da95e
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrS.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64ShrS extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.shr_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrU.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrU.php
new file mode 100644
index 0000000..7ea2b3a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64ShrU.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64ShrU extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.shr_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Sub.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Sub.php
new file mode 100644
index 0000000..7cb6f26
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Sub.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Sub extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.sub";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32S.php
new file mode 100644
index 0000000..9f6ed66
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncF32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_f32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32U.php
new file mode 100644
index 0000000..9724897
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncF32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_f32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64S.php
new file mode 100644
index 0000000..70c235c
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncF64S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_f64_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64U.php
new file mode 100644
index 0000000..f787fe3
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncF64U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncF64U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_f64_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32S.php
new file mode 100644
index 0000000..98082e5
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncSatF32S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_sat_f32_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32U.php
new file mode 100644
index 0000000..6b0b833
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF32U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncSatF32U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_sat_f32_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64S.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64S.php
new file mode 100644
index 0000000..2291eab
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64S.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncSatF64S extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_sat_f64_s";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64U.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64U.php
new file mode 100644
index 0000000..90c1f49
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64TruncSatF64U.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64TruncSatF64U extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.trunc_sat_f64_u";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Xor.php b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Xor.php
new file mode 100644
index 0000000..994e47f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Numeric/I64Xor.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Numeric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class I64Xor extends Instr
+{
+ public static function opName(): string
+ {
+ return "i64.xor";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Parametric/Drop.php b/src/WebAssembly/Structure/Instructions/Instrs/Parametric/Drop.php
new file mode 100644
index 0000000..5a5ed18
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Parametric/Drop.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Parametric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Drop extends Instr
+{
+ public static function opName(): string
+ {
+ return "drop";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Parametric/Select.php b/src/WebAssembly/Structure/Instructions/Instrs/Parametric/Select.php
new file mode 100644
index 0000000..2562764
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Parametric/Select.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Parametric;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+
+final readonly class Select extends Instr
+{
+ /**
+ * @param list<ValType> $types
+ */
+ protected function __construct(
+ public array $types,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "select";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefFunc.php b/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefFunc.php
new file mode 100644
index 0000000..3539ede
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefFunc.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Reference;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class RefFunc extends Instr
+{
+ protected function __construct(
+ public int $func,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "ref.func";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefIsNull.php b/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefIsNull.php
new file mode 100644
index 0000000..21c9a26
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefIsNull.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Reference;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class RefIsNull extends Instr
+{
+ public static function opName(): string
+ {
+ return "ref.is_null";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefNull.php b/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefNull.php
new file mode 100644
index 0000000..39d0f8f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Reference/RefNull.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Reference;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\RefType;
+
+final readonly class RefNull extends Instr
+{
+ protected function __construct(
+ public RefType $type,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "ref.null";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/ElemDrop.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/ElemDrop.php
new file mode 100644
index 0000000..4ead3cb
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/ElemDrop.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class ElemDrop extends Instr
+{
+ protected function __construct(
+ public int $elem,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "elem.drop";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableCopy.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableCopy.php
new file mode 100644
index 0000000..ca4e01a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableCopy.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableCopy extends Instr
+{
+ protected function __construct(
+ public int $to,
+ public int $from,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.copy";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableFill.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableFill.php
new file mode 100644
index 0000000..8a8fba4
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableFill.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableFill extends Instr
+{
+ protected function __construct(
+ public int $table,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.fill";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableGet.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableGet.php
new file mode 100644
index 0000000..0a562cb
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableGet.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableGet extends Instr
+{
+ protected function __construct(
+ public int $table,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.get";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableGrow.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableGrow.php
new file mode 100644
index 0000000..fae1bd0
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableGrow.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableGrow extends Instr
+{
+ protected function __construct(
+ public int $table,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.grow";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableInit.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableInit.php
new file mode 100644
index 0000000..221c938
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableInit.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableInit extends Instr
+{
+ protected function __construct(
+ public int $to,
+ public int $from,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.init";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableSet.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableSet.php
new file mode 100644
index 0000000..46ce56f
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableSet.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableSet extends Instr
+{
+ protected function __construct(
+ public int $table,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.set";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Table/TableSize.php b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableSize.php
new file mode 100644
index 0000000..8a1625a
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Table/TableSize.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Table;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class TableSize extends Instr
+{
+ protected function __construct(
+ public int $table,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "table.size";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalGet.php b/src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalGet.php
new file mode 100644
index 0000000..2358325
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalGet.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Variable;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class GlobalGet extends Instr
+{
+ protected function __construct(
+ public int $var,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "global.get";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalSet.php b/src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalSet.php
new file mode 100644
index 0000000..a8d2cf4
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Variable/GlobalSet.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Variable;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class GlobalSet extends Instr
+{
+ protected function __construct(
+ public int $var,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "global.set";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalGet.php b/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalGet.php
new file mode 100644
index 0000000..de610d3
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalGet.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Variable;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class LocalGet extends Instr
+{
+ protected function __construct(
+ public int $var,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "local.get";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalSet.php b/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalSet.php
new file mode 100644
index 0000000..350c6bd
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalSet.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Variable;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class LocalSet extends Instr
+{
+ protected function __construct(
+ public int $var,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "local.set";
+ }
+}
diff --git a/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalTee.php b/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalTee.php
new file mode 100644
index 0000000..62d42c5
--- /dev/null
+++ b/src/WebAssembly/Structure/Instructions/Instrs/Variable/LocalTee.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instrs\Variable;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class LocalTee extends Instr
+{
+ protected function __construct(
+ public int $var,
+ ) {
+ }
+
+ public static function opName(): string
+ {
+ return "local.tee";
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Data.php b/src/WebAssembly/Structure/Modules/Data.php
new file mode 100644
index 0000000..3994a01
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Data.php
@@ -0,0 +1,17 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+final readonly class Data
+{
+ /**
+ * @param list<Byte> $init
+ */
+ public function __construct(
+ public array $init,
+ public DataMode $mode,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/DataMode.php b/src/WebAssembly/Structure/Modules/DataMode.php
new file mode 100644
index 0000000..37205bc
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/DataMode.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+abstract readonly class DataMode
+{
+ final public static function Passive(): DataModes\Passive
+ {
+ return new DataModes\Passive();
+ }
+
+ /**
+ * @param list<Instr> $offset
+ */
+ final public static function Active(
+ int $memory,
+ array $offset,
+ ): DataModes\Active {
+ return new DataModes\Active($memory, $offset);
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/DataModes/Active.php b/src/WebAssembly/Structure/Modules/DataModes/Active.php
new file mode 100644
index 0000000..41cc9c7
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/DataModes/Active.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\DataModes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\DataMode;
+
+final readonly class Active extends DataMode
+{
+ /**
+ * @param list<Instr> $offset
+ */
+ protected function __construct(
+ public int $memory,
+ public array $offset,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/DataModes/Passive.php b/src/WebAssembly/Structure/Modules/DataModes/Passive.php
new file mode 100644
index 0000000..6ef6ba9
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/DataModes/Passive.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\DataModes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\DataMode;
+
+final readonly class Passive extends DataMode
+{
+ protected function __construct()
+ {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Elem.php b/src/WebAssembly/Structure/Modules/Elem.php
new file mode 100644
index 0000000..1b9831f
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Elem.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\RefType;
+
+final readonly class Elem
+{
+ /**
+ * @param list<list<Instr>> $init
+ */
+ public function __construct(
+ public RefType $type,
+ public array $init,
+ public ElemMode $mode,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ElemMode.php b/src/WebAssembly/Structure/Modules/ElemMode.php
new file mode 100644
index 0000000..0777bd4
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ElemMode.php
@@ -0,0 +1,30 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+abstract readonly class ElemMode
+{
+ final public static function Passive(): ElemModes\Passive
+ {
+ return new ElemModes\Passive();
+ }
+
+ /**
+ * @param list<Instr> $offset
+ */
+ final public static function Active(
+ int $table,
+ array $offset,
+ ): ElemModes\Active {
+ return new ElemModes\Active($table, $offset);
+ }
+
+ final public static function Declarative(): ElemModes\Declarative
+ {
+ return new ElemModes\Declarative();
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ElemModes/Active.php b/src/WebAssembly/Structure/Modules/ElemModes/Active.php
new file mode 100644
index 0000000..e66e080
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ElemModes/Active.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ElemModes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ElemMode;
+
+final readonly class Active extends ElemMode
+{
+ /**
+ * @param list<Instr> $offset
+ */
+ protected function __construct(
+ public int $table,
+ public array $offset,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ElemModes/Declarative.php b/src/WebAssembly/Structure/Modules/ElemModes/Declarative.php
new file mode 100644
index 0000000..28f917a
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ElemModes/Declarative.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ElemModes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ElemMode;
+
+final readonly class Declarative extends ElemMode
+{
+ protected function __construct()
+ {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ElemModes/Passive.php b/src/WebAssembly/Structure/Modules/ElemModes/Passive.php
new file mode 100644
index 0000000..5fb323e
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ElemModes/Passive.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ElemModes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ElemMode;
+
+final readonly class Passive extends ElemMode
+{
+ protected function __construct()
+ {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Export.php b/src/WebAssembly/Structure/Modules/Export.php
new file mode 100644
index 0000000..fea3f04
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Export.php
@@ -0,0 +1,17 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+final readonly class Export
+{
+ /**
+ * @param Name $name
+ */
+ public function __construct(
+ public string $name,
+ public ExportDesc $desc,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ExportDesc.php b/src/WebAssembly/Structure/Modules/ExportDesc.php
new file mode 100644
index 0000000..3462569
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ExportDesc.php
@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+abstract readonly class ExportDesc
+{
+ final public static function Func(int $func): ExportDescs\Func
+ {
+ return new ExportDescs\Func($func);
+ }
+
+ final public static function Table(int $table): ExportDescs\Table
+ {
+ return new ExportDescs\Table($table);
+ }
+
+ final public static function Mem(int $mem): ExportDescs\Mem
+ {
+ return new ExportDescs\Mem($mem);
+ }
+
+ final public static function Global(int $global): ExportDescs\Global_
+ {
+ return new ExportDescs\Global_($global);
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ExportDescs/Func.php b/src/WebAssembly/Structure/Modules/ExportDescs/Func.php
new file mode 100644
index 0000000..85926c6
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ExportDescs/Func.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDesc;
+
+final readonly class Func extends ExportDesc
+{
+ protected function __construct(
+ public int $func,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ExportDescs/Global_.php b/src/WebAssembly/Structure/Modules/ExportDescs/Global_.php
new file mode 100644
index 0000000..9e1d481
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ExportDescs/Global_.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDesc;
+
+final readonly class Global_ extends ExportDesc
+{
+ protected function __construct(
+ public int $global,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ExportDescs/Mem.php b/src/WebAssembly/Structure/Modules/ExportDescs/Mem.php
new file mode 100644
index 0000000..9212f45
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ExportDescs/Mem.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDesc;
+
+final readonly class Mem extends ExportDesc
+{
+ protected function __construct(
+ public int $mem,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ExportDescs/Table.php b/src/WebAssembly/Structure/Modules/ExportDescs/Table.php
new file mode 100644
index 0000000..e89f2d8
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ExportDescs/Table.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ExportDesc;
+
+final readonly class Table extends ExportDesc
+{
+ protected function __construct(
+ public int $table,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Func.php b/src/WebAssembly/Structure/Modules/Func.php
new file mode 100644
index 0000000..f1c305e
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Func.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+
+final readonly class Func
+{
+ /**
+ * @param list<Local> $locals
+ * @param list<Instr> $body
+ */
+ public function __construct(
+ public int $type,
+ public array $locals,
+ public array $body,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Global_.php b/src/WebAssembly/Structure/Modules/Global_.php
new file mode 100644
index 0000000..04ffbc6
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Global_.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Instructions\Instr;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\GlobalType;
+
+final readonly class Global_
+{
+ /**
+ * @param list<Instr> $init
+ */
+ public function __construct(
+ public GlobalType $type,
+ public array $init,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Import.php b/src/WebAssembly/Structure/Modules/Import.php
new file mode 100644
index 0000000..e764fcb
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Import.php
@@ -0,0 +1,19 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+final readonly class Import
+{
+ /**
+ * @param Name $module
+ * @param Name $name
+ */
+ public function __construct(
+ public string $module,
+ public string $name,
+ public ImportDesc $desc,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ImportDesc.php b/src/WebAssembly/Structure/Modules/ImportDesc.php
new file mode 100644
index 0000000..240ad2b
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ImportDesc.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\GlobalType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\MemType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\TableType;
+
+abstract readonly class ImportDesc
+{
+ final public static function Func(int $func): ImportDescs\Func
+ {
+ return new ImportDescs\Func($func);
+ }
+
+ final public static function Table(TableType $table): ImportDescs\Table
+ {
+ return new ImportDescs\Table($table);
+ }
+
+ final public static function Mem(MemType $mem): ImportDescs\Mem
+ {
+ return new ImportDescs\Mem($mem);
+ }
+
+ final public static function Global(GlobalType $global): ImportDescs\Global_
+ {
+ return new ImportDescs\Global_($global);
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ImportDescs/Func.php b/src/WebAssembly/Structure/Modules/ImportDescs/Func.php
new file mode 100644
index 0000000..4b5da18
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ImportDescs/Func.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDesc;
+
+final readonly class Func extends ImportDesc
+{
+ protected function __construct(
+ public int $func,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ImportDescs/Global_.php b/src/WebAssembly/Structure/Modules/ImportDescs/Global_.php
new file mode 100644
index 0000000..bab51b9
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ImportDescs/Global_.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDesc;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\GlobalType;
+
+final readonly class Global_ extends ImportDesc
+{
+ protected function __construct(
+ public GlobalType $global,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ImportDescs/Mem.php b/src/WebAssembly/Structure/Modules/ImportDescs/Mem.php
new file mode 100644
index 0000000..934d1c9
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ImportDescs/Mem.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDesc;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\MemType;
+
+final readonly class Mem extends ImportDesc
+{
+ protected function __construct(
+ public MemType $mem,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/ImportDescs/Table.php b/src/WebAssembly/Structure/Modules/ImportDescs/Table.php
new file mode 100644
index 0000000..f8b2fa3
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/ImportDescs/Table.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDescs;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Modules\ImportDesc;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\TableType;
+
+final readonly class Table extends ImportDesc
+{
+ protected function __construct(
+ public TableType $table,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Local.php b/src/WebAssembly/Structure/Modules/Local.php
new file mode 100644
index 0000000..699d7a3
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Local.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+
+final readonly class Local
+{
+ public function __construct(
+ public ValType $type,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Mem.php b/src/WebAssembly/Structure/Modules/Mem.php
new file mode 100644
index 0000000..45f0066
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Mem.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\MemType;
+
+final readonly class Mem
+{
+ public function __construct(
+ public MemType $type,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Module.php b/src/WebAssembly/Structure/Modules/Module.php
new file mode 100644
index 0000000..a6ce2c8
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Module.php
@@ -0,0 +1,35 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\FuncType;
+
+final readonly class Module
+{
+ /**
+ * @param list<FuncType> $types
+ * @param list<Func> $funcs
+ * @param list<Table> $tables
+ * @param list<Mem> $mems
+ * @param list<Global_> $globals
+ * @param list<Elem> $elems
+ * @param list<Data> $datas
+ * @param list<Import> $imports
+ * @param list<Export> $exports
+ */
+ public function __construct(
+ public array $types,
+ public array $funcs,
+ public array $tables,
+ public array $mems,
+ public array $globals,
+ public array $elems,
+ public array $datas,
+ public ?Start $start,
+ public array $imports,
+ public array $exports,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Start.php b/src/WebAssembly/Structure/Modules/Start.php
new file mode 100644
index 0000000..6659929
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Start.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+final readonly class Start
+{
+ public function __construct(
+ public int $func,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Modules/Table.php b/src/WebAssembly/Structure/Modules/Table.php
new file mode 100644
index 0000000..f0125a2
--- /dev/null
+++ b/src/WebAssembly/Structure/Modules/Table.php
@@ -0,0 +1,15 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Modules;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\TableType;
+
+final readonly class Table
+{
+ public function __construct(
+ public TableType $type,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ExternType.php b/src/WebAssembly/Structure/Types/ExternType.php
new file mode 100644
index 0000000..bffeacf
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ExternType.php
@@ -0,0 +1,28 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+abstract readonly class ExternType
+{
+ final public static function Func(FuncType $type): ExternTypes\Func
+ {
+ return new ExternTypes\Func($type);
+ }
+
+ final public static function Table(TableType $type): ExternTypes\Table
+ {
+ return new ExternTypes\Table($type);
+ }
+
+ final public static function Mem(MemType $type): ExternTypes\Mem
+ {
+ return new ExternTypes\Mem($type);
+ }
+
+ final public static function Global(GlobalType $type): ExternTypes\Global_
+ {
+ return new ExternTypes\Global_($type);
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ExternTypes/Func.php b/src/WebAssembly/Structure/Types/ExternTypes/Func.php
new file mode 100644
index 0000000..d41ed61
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ExternTypes/Func.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\FuncType;
+
+final readonly class Func extends ExternType
+{
+ protected function __construct(
+ public FuncType $inner,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ExternTypes/Global_.php b/src/WebAssembly/Structure/Types/ExternTypes/Global_.php
new file mode 100644
index 0000000..1e78370
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ExternTypes/Global_.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\GlobalType;
+
+final readonly class Global_ extends ExternType
+{
+ protected function __construct(
+ public GlobalType $inner,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ExternTypes/Mem.php b/src/WebAssembly/Structure/Types/ExternTypes/Mem.php
new file mode 100644
index 0000000..92f1a39
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ExternTypes/Mem.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\MemType;
+
+final readonly class Mem extends ExternType
+{
+ protected function __construct(
+ public MemType $inner,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ExternTypes/Table.php b/src/WebAssembly/Structure/Types/ExternTypes/Table.php
new file mode 100644
index 0000000..034d9a8
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ExternTypes/Table.php
@@ -0,0 +1,16 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ExternType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\TableType;
+
+final readonly class Table extends ExternType
+{
+ protected function __construct(
+ public TableType $inner,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/FuncType.php b/src/WebAssembly/Structure/Types/FuncType.php
new file mode 100644
index 0000000..6c53519
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/FuncType.php
@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+final readonly class FuncType
+{
+ public function __construct(
+ public ResultType $params,
+ public ResultType $results,
+ ) {
+ }
+
+ public function equals(FuncType $other): bool
+ {
+ return $this->params->equals($other->params)
+ && $this->results->equals($other->results);
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/GlobalType.php b/src/WebAssembly/Structure/Types/GlobalType.php
new file mode 100644
index 0000000..3e8ab6c
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/GlobalType.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+final readonly class GlobalType
+{
+ public function __construct(
+ public Mut $mut,
+ public ValType $valType,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/Limits.php b/src/WebAssembly/Structure/Types/Limits.php
new file mode 100644
index 0000000..e60b842
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/Limits.php
@@ -0,0 +1,24 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+final readonly class Limits
+{
+ /**
+ * @param U32 $min
+ * @param ?U32 $max
+ */
+ public function __construct(
+ public int $min,
+ public ?int $max,
+ ) {
+ }
+
+ public function isValid(): bool
+ {
+ return 0 <= $this->min &&
+ ($this->max === null || $this->min <= $this->max);
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/MemType.php b/src/WebAssembly/Structure/Types/MemType.php
new file mode 100644
index 0000000..8d01150
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/MemType.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+final readonly class MemType
+{
+ public function __construct(
+ public Limits $limits,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/Mut.php b/src/WebAssembly/Structure/Types/Mut.php
new file mode 100644
index 0000000..5bf366c
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/Mut.php
@@ -0,0 +1,11 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+enum Mut
+{
+ case Const;
+ case Var;
+}
diff --git a/src/WebAssembly/Structure/Types/NumType.php b/src/WebAssembly/Structure/Types/NumType.php
new file mode 100644
index 0000000..2d5a3b1
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/NumType.php
@@ -0,0 +1,13 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+enum NumType
+{
+ case I32;
+ case I64;
+ case F32;
+ case F64;
+}
diff --git a/src/WebAssembly/Structure/Types/RefType.php b/src/WebAssembly/Structure/Types/RefType.php
new file mode 100644
index 0000000..2225f56
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/RefType.php
@@ -0,0 +1,11 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+enum RefType
+{
+ case FuncRef;
+ case ExternRef;
+}
diff --git a/src/WebAssembly/Structure/Types/ResultType.php b/src/WebAssembly/Structure/Types/ResultType.php
new file mode 100644
index 0000000..dff2e59
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ResultType.php
@@ -0,0 +1,31 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+use function count;
+
+final readonly class ResultType
+{
+ /**
+ * @param list<ValType> $types
+ */
+ public function __construct(
+ public array $types,
+ ) {
+ }
+
+ public function equals(ResultType $other): bool
+ {
+ if (count($this->types) !== count($other->types)) {
+ return false;
+ }
+ foreach ($this->types as $i => $type) {
+ if (!$type->equals($other->types[$i])) {
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/TableType.php b/src/WebAssembly/Structure/Types/TableType.php
new file mode 100644
index 0000000..7e4b957
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/TableType.php
@@ -0,0 +1,14 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+final readonly class TableType
+{
+ public function __construct(
+ public Limits $limits,
+ public RefType $refType,
+ ) {
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ValType.php b/src/WebAssembly/Structure/Types/ValType.php
new file mode 100644
index 0000000..f6f3111
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ValType.php
@@ -0,0 +1,25 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+abstract readonly class ValType
+{
+ final public static function NumType(NumType $type): ValTypes\NumType
+ {
+ return new ValTypes\NumType($type);
+ }
+
+ final public static function VecType(VecType $type): ValTypes\VecType
+ {
+ return new ValTypes\VecType($type);
+ }
+
+ final public static function RefType(RefType $type): ValTypes\RefType
+ {
+ return new ValTypes\RefType($type);
+ }
+
+ abstract public function equals(ValType $other): bool;
+}
diff --git a/src/WebAssembly/Structure/Types/ValTypes/NumType.php b/src/WebAssembly/Structure/Types/ValTypes/NumType.php
new file mode 100644
index 0000000..1836679
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ValTypes/NumType.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\NumType as OrigNumType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+
+final readonly class NumType extends ValType
+{
+ protected function __construct(public OrigNumType $inner)
+ {
+ }
+
+ public function equals(ValType $other): bool
+ {
+ return $other instanceof self
+ && $this->inner === $other->inner;
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ValTypes/RefType.php b/src/WebAssembly/Structure/Types/ValTypes/RefType.php
new file mode 100644
index 0000000..a31b7c3
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ValTypes/RefType.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\RefType as OrigRefType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+
+final readonly class RefType extends ValType
+{
+ protected function __construct(public OrigRefType $inner)
+ {
+ }
+
+ public function equals(ValType $other): bool
+ {
+ return $other instanceof self
+ && $this->inner === $other->inner;
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/ValTypes/VecType.php b/src/WebAssembly/Structure/Types/ValTypes/VecType.php
new file mode 100644
index 0000000..03cc95e
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/ValTypes/VecType.php
@@ -0,0 +1,21 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValTypes;
+
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\ValType;
+use Nsfisis\Waddiwasi\WebAssembly\Structure\Types\VecType as OrigVecType;
+
+final readonly class VecType extends ValType
+{
+ protected function __construct(public OrigVecType $inner)
+ {
+ }
+
+ public function equals(ValType $other): bool
+ {
+ return $other instanceof self
+ && $this->inner === $other->inner; // @phpstan-ignore-line
+ }
+}
diff --git a/src/WebAssembly/Structure/Types/VecType.php b/src/WebAssembly/Structure/Types/VecType.php
new file mode 100644
index 0000000..dcf7d68
--- /dev/null
+++ b/src/WebAssembly/Structure/Types/VecType.php
@@ -0,0 +1,10 @@
+<?php
+
+declare(strict_types=1);
+
+namespace Nsfisis\Waddiwasi\WebAssembly\Structure\Types;
+
+enum VecType
+{
+ case V128;
+}