summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2024-05-29 11:32:26 -0700
committerGitHub <noreply@github.com>2024-05-29 11:32:26 -0700
commitd844d2e77b402d562ade8cf8fd96759b587bf09d (patch)
tree0bb0dedf7efb8b90e43340292a2c8f4f7fb063a0 /scripts
parentf622b8e47c69dcbdf2666c795fb3658dc4da52af (diff)
downloadbinaryen-d844d2e77b402d562ade8cf8fd96759b587bf09d.tar.gz
binaryen-d844d2e77b402d562ade8cf8fd96759b587bf09d.tar.bz2
binaryen-d844d2e77b402d562ade8cf8fd96759b587bf09d.zip
Remove obsolete parser code (#6607)
Remove `SExpressionParser`, `SExpressionWasmBuilder`, and `cashew::Parser`. Simplify gen-s-parser.py. Remove the --new-wat-parser and --deprecated-wat-parser flags.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/gen-s-parser.py1215
1 files changed, 598 insertions, 617 deletions
diff --git a/scripts/gen-s-parser.py b/scripts/gen-s-parser.py
index 4cf2e8ee9..d75be7635 100755
--- a/scripts/gen-s-parser.py
+++ b/scripts/gen-s-parser.py
@@ -19,608 +19,608 @@ import sys
instructions = [
("unreachable", "makeUnreachable()"),
("nop", "makeNop()"),
- ("block", "makeBlock(s)"),
- ("loop", "makeLoop(s)"),
- ("if", "makeIf(s)"),
- ("then", "makeThenOrElse(s)"),
- ("else", "makeThenOrElse(s)"),
- ("br", "makeBreak(s, false)"),
- ("br_if", "makeBreak(s, true)"),
- ("br_table", "makeBreakTable(s)"),
- ("return", "makeReturn(s)"),
- ("call", "makeCall(s, /*isReturn=*/false)"),
- ("call_indirect", "makeCallIndirect(s, /*isReturn=*/false)"),
- ("return_call", "makeCall(s, /*isReturn=*/true)"),
- ("return_call_indirect", "makeCallIndirect(s, /*isReturn=*/true)"),
- ("drop", "makeDrop(s)"),
- ("select", "makeSelect(s)"),
- ("local.get", "makeLocalGet(s)"),
- ("local.set", "makeLocalSet(s)"),
- ("local.tee", "makeLocalTee(s)"),
- ("global.get", "makeGlobalGet(s)"),
- ("global.set", "makeGlobalSet(s)"),
- ("memory.init", "makeMemoryInit(s)"),
- ("data.drop", "makeDataDrop(s)"),
- ("memory.copy", "makeMemoryCopy(s)"),
- ("memory.fill", "makeMemoryFill(s)"),
- ("i32.load", "makeLoad(s, Type::i32, /*signed=*/false, 4, /*isAtomic=*/false)"),
- ("i64.load", "makeLoad(s, Type::i64, /*signed=*/false, 8, /*isAtomic=*/false)"),
- ("f32.load", "makeLoad(s, Type::f32, /*signed=*/false, 4, /*isAtomic=*/false)"),
- ("f64.load", "makeLoad(s, Type::f64, /*signed=*/false, 8, /*isAtomic=*/false)"),
- ("i32.load8_s", "makeLoad(s, Type::i32, /*signed=*/true, 1, /*isAtomic=*/false)"),
- ("i32.load8_u", "makeLoad(s, Type::i32, /*signed=*/false, 1, /*isAtomic=*/false)"),
- ("i32.load16_s", "makeLoad(s, Type::i32, /*signed=*/true, 2, /*isAtomic=*/false)"),
- ("i32.load16_u", "makeLoad(s, Type::i32, /*signed=*/false, 2, /*isAtomic=*/false)"),
- ("i64.load8_s", "makeLoad(s, Type::i64, /*signed=*/true, 1, /*isAtomic=*/false)"),
- ("i64.load8_u", "makeLoad(s, Type::i64, /*signed=*/false, 1, /*isAtomic=*/false)"),
- ("i64.load16_s", "makeLoad(s, Type::i64, /*signed=*/true, 2, /*isAtomic=*/false)"),
- ("i64.load16_u", "makeLoad(s, Type::i64, /*signed=*/false, 2, /*isAtomic=*/false)"),
- ("i64.load32_s", "makeLoad(s, Type::i64, /*signed=*/true, 4, /*isAtomic=*/false)"),
- ("i64.load32_u", "makeLoad(s, Type::i64, /*signed=*/false, 4, /*isAtomic=*/false)"),
- ("i32.store", "makeStore(s, Type::i32, 4, /*isAtomic=*/false)"),
- ("i64.store", "makeStore(s, Type::i64, 8, /*isAtomic=*/false)"),
- ("f32.store", "makeStore(s, Type::f32, 4, /*isAtomic=*/false)"),
- ("f64.store", "makeStore(s, Type::f64, 8, /*isAtomic=*/false)"),
- ("i32.store8", "makeStore(s, Type::i32, 1, /*isAtomic=*/false)"),
- ("i32.store16", "makeStore(s, Type::i32, 2, /*isAtomic=*/false)"),
- ("i64.store8", "makeStore(s, Type::i64, 1, /*isAtomic=*/false)"),
- ("i64.store16", "makeStore(s, Type::i64, 2, /*isAtomic=*/false)"),
- ("i64.store32", "makeStore(s, Type::i64, 4, /*isAtomic=*/false)"),
- ("memory.size", "makeMemorySize(s)"),
- ("memory.grow", "makeMemoryGrow(s)"),
- ("i32.const", "makeConst(s, Type::i32)"),
- ("i64.const", "makeConst(s, Type::i64)"),
- ("f32.const", "makeConst(s, Type::f32)"),
- ("f64.const", "makeConst(s, Type::f64)"),
- ("i32.eqz", "makeUnary(s, UnaryOp::EqZInt32)"),
- ("i32.eq", "makeBinary(s, BinaryOp::EqInt32)"),
- ("i32.ne", "makeBinary(s, BinaryOp::NeInt32)"),
- ("i32.lt_s", "makeBinary(s, BinaryOp::LtSInt32)"),
- ("i32.lt_u", "makeBinary(s, BinaryOp::LtUInt32)"),
- ("i32.gt_s", "makeBinary(s, BinaryOp::GtSInt32)"),
- ("i32.gt_u", "makeBinary(s, BinaryOp::GtUInt32)"),
- ("i32.le_s", "makeBinary(s, BinaryOp::LeSInt32)"),
- ("i32.le_u", "makeBinary(s, BinaryOp::LeUInt32)"),
- ("i32.ge_s", "makeBinary(s, BinaryOp::GeSInt32)"),
- ("i32.ge_u", "makeBinary(s, BinaryOp::GeUInt32)"),
- ("i64.eqz", "makeUnary(s, UnaryOp::EqZInt64)"),
- ("i64.eq", "makeBinary(s, BinaryOp::EqInt64)"),
- ("i64.ne", "makeBinary(s, BinaryOp::NeInt64)"),
- ("i64.lt_s", "makeBinary(s, BinaryOp::LtSInt64)"),
- ("i64.lt_u", "makeBinary(s, BinaryOp::LtUInt64)"),
- ("i64.gt_s", "makeBinary(s, BinaryOp::GtSInt64)"),
- ("i64.gt_u", "makeBinary(s, BinaryOp::GtUInt64)"),
- ("i64.le_s", "makeBinary(s, BinaryOp::LeSInt64)"),
- ("i64.le_u", "makeBinary(s, BinaryOp::LeUInt64)"),
- ("i64.ge_s", "makeBinary(s, BinaryOp::GeSInt64)"),
- ("i64.ge_u", "makeBinary(s, BinaryOp::GeUInt64)"),
- ("f32.eq", "makeBinary(s, BinaryOp::EqFloat32)"),
- ("f32.ne", "makeBinary(s, BinaryOp::NeFloat32)"),
- ("f32.lt", "makeBinary(s, BinaryOp::LtFloat32)"),
- ("f32.gt", "makeBinary(s, BinaryOp::GtFloat32)"),
- ("f32.le", "makeBinary(s, BinaryOp::LeFloat32)"),
- ("f32.ge", "makeBinary(s, BinaryOp::GeFloat32)"),
- ("f64.eq", "makeBinary(s, BinaryOp::EqFloat64)"),
- ("f64.ne", "makeBinary(s, BinaryOp::NeFloat64)"),
- ("f64.lt", "makeBinary(s, BinaryOp::LtFloat64)"),
- ("f64.gt", "makeBinary(s, BinaryOp::GtFloat64)"),
- ("f64.le", "makeBinary(s, BinaryOp::LeFloat64)"),
- ("f64.ge", "makeBinary(s, BinaryOp::GeFloat64)"),
- ("i32.clz", "makeUnary(s, UnaryOp::ClzInt32)"),
- ("i32.ctz", "makeUnary(s, UnaryOp::CtzInt32)"),
- ("i32.popcnt", "makeUnary(s, UnaryOp::PopcntInt32)"),
- ("i32.add", "makeBinary(s, BinaryOp::AddInt32)"),
- ("i32.sub", "makeBinary(s, BinaryOp::SubInt32)"),
- ("i32.mul", "makeBinary(s, BinaryOp::MulInt32)"),
- ("i32.div_s", "makeBinary(s, BinaryOp::DivSInt32)"),
- ("i32.div_u", "makeBinary(s, BinaryOp::DivUInt32)"),
- ("i32.rem_s", "makeBinary(s, BinaryOp::RemSInt32)"),
- ("i32.rem_u", "makeBinary(s, BinaryOp::RemUInt32)"),
- ("i32.and", "makeBinary(s, BinaryOp::AndInt32)"),
- ("i32.or", "makeBinary(s, BinaryOp::OrInt32)"),
- ("i32.xor", "makeBinary(s, BinaryOp::XorInt32)"),
- ("i32.shl", "makeBinary(s, BinaryOp::ShlInt32)"),
- ("i32.shr_s", "makeBinary(s, BinaryOp::ShrSInt32)"),
- ("i32.shr_u", "makeBinary(s, BinaryOp::ShrUInt32)"),
- ("i32.rotl", "makeBinary(s, BinaryOp::RotLInt32)"),
- ("i32.rotr", "makeBinary(s, BinaryOp::RotRInt32)"),
- ("i64.clz", "makeUnary(s, UnaryOp::ClzInt64)"),
- ("i64.ctz", "makeUnary(s, UnaryOp::CtzInt64)"),
- ("i64.popcnt", "makeUnary(s, UnaryOp::PopcntInt64)"),
- ("i64.add", "makeBinary(s, BinaryOp::AddInt64)"),
- ("i64.sub", "makeBinary(s, BinaryOp::SubInt64)"),
- ("i64.mul", "makeBinary(s, BinaryOp::MulInt64)"),
- ("i64.div_s", "makeBinary(s, BinaryOp::DivSInt64)"),
- ("i64.div_u", "makeBinary(s, BinaryOp::DivUInt64)"),
- ("i64.rem_s", "makeBinary(s, BinaryOp::RemSInt64)"),
- ("i64.rem_u", "makeBinary(s, BinaryOp::RemUInt64)"),
- ("i64.and", "makeBinary(s, BinaryOp::AndInt64)"),
- ("i64.or", "makeBinary(s, BinaryOp::OrInt64)"),
- ("i64.xor", "makeBinary(s, BinaryOp::XorInt64)"),
- ("i64.shl", "makeBinary(s, BinaryOp::ShlInt64)"),
- ("i64.shr_s", "makeBinary(s, BinaryOp::ShrSInt64)"),
- ("i64.shr_u", "makeBinary(s, BinaryOp::ShrUInt64)"),
- ("i64.rotl", "makeBinary(s, BinaryOp::RotLInt64)"),
- ("i64.rotr", "makeBinary(s, BinaryOp::RotRInt64)"),
- ("f32.abs", "makeUnary(s, UnaryOp::AbsFloat32)"),
- ("f32.neg", "makeUnary(s, UnaryOp::NegFloat32)"),
- ("f32.ceil", "makeUnary(s, UnaryOp::CeilFloat32)"),
- ("f32.floor", "makeUnary(s, UnaryOp::FloorFloat32)"),
- ("f32.trunc", "makeUnary(s, UnaryOp::TruncFloat32)"),
- ("f32.nearest", "makeUnary(s, UnaryOp::NearestFloat32)"),
- ("f32.sqrt", "makeUnary(s, UnaryOp::SqrtFloat32)"),
- ("f32.add", "makeBinary(s, BinaryOp::AddFloat32)"),
- ("f32.sub", "makeBinary(s, BinaryOp::SubFloat32)"),
- ("f32.mul", "makeBinary(s, BinaryOp::MulFloat32)"),
- ("f32.div", "makeBinary(s, BinaryOp::DivFloat32)"),
- ("f32.min", "makeBinary(s, BinaryOp::MinFloat32)"),
- ("f32.max", "makeBinary(s, BinaryOp::MaxFloat32)"),
- ("f32.copysign", "makeBinary(s, BinaryOp::CopySignFloat32)"),
- ("f64.abs", "makeUnary(s, UnaryOp::AbsFloat64)"),
- ("f64.neg", "makeUnary(s, UnaryOp::NegFloat64)"),
- ("f64.ceil", "makeUnary(s, UnaryOp::CeilFloat64)"),
- ("f64.floor", "makeUnary(s, UnaryOp::FloorFloat64)"),
- ("f64.trunc", "makeUnary(s, UnaryOp::TruncFloat64)"),
- ("f64.nearest", "makeUnary(s, UnaryOp::NearestFloat64)"),
- ("f64.sqrt", "makeUnary(s, UnaryOp::SqrtFloat64)"),
- ("f64.add", "makeBinary(s, BinaryOp::AddFloat64)"),
- ("f64.sub", "makeBinary(s, BinaryOp::SubFloat64)"),
- ("f64.mul", "makeBinary(s, BinaryOp::MulFloat64)"),
- ("f64.div", "makeBinary(s, BinaryOp::DivFloat64)"),
- ("f64.min", "makeBinary(s, BinaryOp::MinFloat64)"),
- ("f64.max", "makeBinary(s, BinaryOp::MaxFloat64)"),
- ("f64.copysign", "makeBinary(s, BinaryOp::CopySignFloat64)"),
- ("i32.wrap_i64", "makeUnary(s, UnaryOp::WrapInt64)"),
- ("i32.trunc_f32_s", "makeUnary(s, UnaryOp::TruncSFloat32ToInt32)"),
- ("i32.trunc_f32_u", "makeUnary(s, UnaryOp::TruncUFloat32ToInt32)"),
- ("i32.trunc_f64_s", "makeUnary(s, UnaryOp::TruncSFloat64ToInt32)"),
- ("i32.trunc_f64_u", "makeUnary(s, UnaryOp::TruncUFloat64ToInt32)"),
- ("i64.extend_i32_s", "makeUnary(s, UnaryOp::ExtendSInt32)"),
- ("i64.extend_i32_u", "makeUnary(s, UnaryOp::ExtendUInt32)"),
- ("i64.trunc_f32_s", "makeUnary(s, UnaryOp::TruncSFloat32ToInt64)"),
- ("i64.trunc_f32_u", "makeUnary(s, UnaryOp::TruncUFloat32ToInt64)"),
- ("i64.trunc_f64_s", "makeUnary(s, UnaryOp::TruncSFloat64ToInt64)"),
- ("i64.trunc_f64_u", "makeUnary(s, UnaryOp::TruncUFloat64ToInt64)"),
- ("f32.convert_i32_s", "makeUnary(s, UnaryOp::ConvertSInt32ToFloat32)"),
- ("f32.convert_i32_u", "makeUnary(s, UnaryOp::ConvertUInt32ToFloat32)"),
- ("f32.convert_i64_s", "makeUnary(s, UnaryOp::ConvertSInt64ToFloat32)"),
- ("f32.convert_i64_u", "makeUnary(s, UnaryOp::ConvertUInt64ToFloat32)"),
- ("f32.demote_f64", "makeUnary(s, UnaryOp::DemoteFloat64)"),
- ("f64.convert_i32_s", "makeUnary(s, UnaryOp::ConvertSInt32ToFloat64)"),
- ("f64.convert_i32_u", "makeUnary(s, UnaryOp::ConvertUInt32ToFloat64)"),
- ("f64.convert_i64_s", "makeUnary(s, UnaryOp::ConvertSInt64ToFloat64)"),
- ("f64.convert_i64_u", "makeUnary(s, UnaryOp::ConvertUInt64ToFloat64)"),
- ("f64.promote_f32", "makeUnary(s, UnaryOp::PromoteFloat32)"),
- ("i32.reinterpret_f32", "makeUnary(s, UnaryOp::ReinterpretFloat32)"),
- ("i64.reinterpret_f64", "makeUnary(s, UnaryOp::ReinterpretFloat64)"),
- ("f32.reinterpret_i32", "makeUnary(s, UnaryOp::ReinterpretInt32)"),
- ("f64.reinterpret_i64", "makeUnary(s, UnaryOp::ReinterpretInt64)"),
- ("i32.extend8_s", "makeUnary(s, UnaryOp::ExtendS8Int32)"),
- ("i32.extend16_s", "makeUnary(s, UnaryOp::ExtendS16Int32)"),
- ("i64.extend8_s", "makeUnary(s, UnaryOp::ExtendS8Int64)"),
- ("i64.extend16_s", "makeUnary(s, UnaryOp::ExtendS16Int64)"),
- ("i64.extend32_s", "makeUnary(s, UnaryOp::ExtendS32Int64)"),
+ ("block", "makeBlock()"),
+ ("loop", "makeLoop()"),
+ ("if", "makeIf()"),
+ ("then", "makeThenOrElse()"),
+ ("else", "makeThenOrElse()"),
+ ("br", "makeBreak(false)"),
+ ("br_if", "makeBreak(true)"),
+ ("br_table", "makeBreakTable()"),
+ ("return", "makeReturn()"),
+ ("call", "makeCall(/*isReturn=*/false)"),
+ ("call_indirect", "makeCallIndirect(/*isReturn=*/false)"),
+ ("return_call", "makeCall(/*isReturn=*/true)"),
+ ("return_call_indirect", "makeCallIndirect(/*isReturn=*/true)"),
+ ("drop", "makeDrop()"),
+ ("select", "makeSelect()"),
+ ("local.get", "makeLocalGet()"),
+ ("local.set", "makeLocalSet()"),
+ ("local.tee", "makeLocalTee()"),
+ ("global.get", "makeGlobalGet()"),
+ ("global.set", "makeGlobalSet()"),
+ ("memory.init", "makeMemoryInit()"),
+ ("data.drop", "makeDataDrop()"),
+ ("memory.copy", "makeMemoryCopy()"),
+ ("memory.fill", "makeMemoryFill()"),
+ ("i32.load", "makeLoad(Type::i32, /*signed=*/false, 4, /*isAtomic=*/false)"),
+ ("i64.load", "makeLoad(Type::i64, /*signed=*/false, 8, /*isAtomic=*/false)"),
+ ("f32.load", "makeLoad(Type::f32, /*signed=*/false, 4, /*isAtomic=*/false)"),
+ ("f64.load", "makeLoad(Type::f64, /*signed=*/false, 8, /*isAtomic=*/false)"),
+ ("i32.load8_s", "makeLoad(Type::i32, /*signed=*/true, 1, /*isAtomic=*/false)"),
+ ("i32.load8_u", "makeLoad(Type::i32, /*signed=*/false, 1, /*isAtomic=*/false)"),
+ ("i32.load16_s", "makeLoad(Type::i32, /*signed=*/true, 2, /*isAtomic=*/false)"),
+ ("i32.load16_u", "makeLoad(Type::i32, /*signed=*/false, 2, /*isAtomic=*/false)"),
+ ("i64.load8_s", "makeLoad(Type::i64, /*signed=*/true, 1, /*isAtomic=*/false)"),
+ ("i64.load8_u", "makeLoad(Type::i64, /*signed=*/false, 1, /*isAtomic=*/false)"),
+ ("i64.load16_s", "makeLoad(Type::i64, /*signed=*/true, 2, /*isAtomic=*/false)"),
+ ("i64.load16_u", "makeLoad(Type::i64, /*signed=*/false, 2, /*isAtomic=*/false)"),
+ ("i64.load32_s", "makeLoad(Type::i64, /*signed=*/true, 4, /*isAtomic=*/false)"),
+ ("i64.load32_u", "makeLoad(Type::i64, /*signed=*/false, 4, /*isAtomic=*/false)"),
+ ("i32.store", "makeStore(Type::i32, 4, /*isAtomic=*/false)"),
+ ("i64.store", "makeStore(Type::i64, 8, /*isAtomic=*/false)"),
+ ("f32.store", "makeStore(Type::f32, 4, /*isAtomic=*/false)"),
+ ("f64.store", "makeStore(Type::f64, 8, /*isAtomic=*/false)"),
+ ("i32.store8", "makeStore(Type::i32, 1, /*isAtomic=*/false)"),
+ ("i32.store16", "makeStore(Type::i32, 2, /*isAtomic=*/false)"),
+ ("i64.store8", "makeStore(Type::i64, 1, /*isAtomic=*/false)"),
+ ("i64.store16", "makeStore(Type::i64, 2, /*isAtomic=*/false)"),
+ ("i64.store32", "makeStore(Type::i64, 4, /*isAtomic=*/false)"),
+ ("memory.size", "makeMemorySize()"),
+ ("memory.grow", "makeMemoryGrow()"),
+ ("i32.const", "makeConst(Type::i32)"),
+ ("i64.const", "makeConst(Type::i64)"),
+ ("f32.const", "makeConst(Type::f32)"),
+ ("f64.const", "makeConst(Type::f64)"),
+ ("i32.eqz", "makeUnary(UnaryOp::EqZInt32)"),
+ ("i32.eq", "makeBinary(BinaryOp::EqInt32)"),
+ ("i32.ne", "makeBinary(BinaryOp::NeInt32)"),
+ ("i32.lt_s", "makeBinary(BinaryOp::LtSInt32)"),
+ ("i32.lt_u", "makeBinary(BinaryOp::LtUInt32)"),
+ ("i32.gt_s", "makeBinary(BinaryOp::GtSInt32)"),
+ ("i32.gt_u", "makeBinary(BinaryOp::GtUInt32)"),
+ ("i32.le_s", "makeBinary(BinaryOp::LeSInt32)"),
+ ("i32.le_u", "makeBinary(BinaryOp::LeUInt32)"),
+ ("i32.ge_s", "makeBinary(BinaryOp::GeSInt32)"),
+ ("i32.ge_u", "makeBinary(BinaryOp::GeUInt32)"),
+ ("i64.eqz", "makeUnary(UnaryOp::EqZInt64)"),
+ ("i64.eq", "makeBinary(BinaryOp::EqInt64)"),
+ ("i64.ne", "makeBinary(BinaryOp::NeInt64)"),
+ ("i64.lt_s", "makeBinary(BinaryOp::LtSInt64)"),
+ ("i64.lt_u", "makeBinary(BinaryOp::LtUInt64)"),
+ ("i64.gt_s", "makeBinary(BinaryOp::GtSInt64)"),
+ ("i64.gt_u", "makeBinary(BinaryOp::GtUInt64)"),
+ ("i64.le_s", "makeBinary(BinaryOp::LeSInt64)"),
+ ("i64.le_u", "makeBinary(BinaryOp::LeUInt64)"),
+ ("i64.ge_s", "makeBinary(BinaryOp::GeSInt64)"),
+ ("i64.ge_u", "makeBinary(BinaryOp::GeUInt64)"),
+ ("f32.eq", "makeBinary(BinaryOp::EqFloat32)"),
+ ("f32.ne", "makeBinary(BinaryOp::NeFloat32)"),
+ ("f32.lt", "makeBinary(BinaryOp::LtFloat32)"),
+ ("f32.gt", "makeBinary(BinaryOp::GtFloat32)"),
+ ("f32.le", "makeBinary(BinaryOp::LeFloat32)"),
+ ("f32.ge", "makeBinary(BinaryOp::GeFloat32)"),
+ ("f64.eq", "makeBinary(BinaryOp::EqFloat64)"),
+ ("f64.ne", "makeBinary(BinaryOp::NeFloat64)"),
+ ("f64.lt", "makeBinary(BinaryOp::LtFloat64)"),
+ ("f64.gt", "makeBinary(BinaryOp::GtFloat64)"),
+ ("f64.le", "makeBinary(BinaryOp::LeFloat64)"),
+ ("f64.ge", "makeBinary(BinaryOp::GeFloat64)"),
+ ("i32.clz", "makeUnary(UnaryOp::ClzInt32)"),
+ ("i32.ctz", "makeUnary(UnaryOp::CtzInt32)"),
+ ("i32.popcnt", "makeUnary(UnaryOp::PopcntInt32)"),
+ ("i32.add", "makeBinary(BinaryOp::AddInt32)"),
+ ("i32.sub", "makeBinary(BinaryOp::SubInt32)"),
+ ("i32.mul", "makeBinary(BinaryOp::MulInt32)"),
+ ("i32.div_s", "makeBinary(BinaryOp::DivSInt32)"),
+ ("i32.div_u", "makeBinary(BinaryOp::DivUInt32)"),
+ ("i32.rem_s", "makeBinary(BinaryOp::RemSInt32)"),
+ ("i32.rem_u", "makeBinary(BinaryOp::RemUInt32)"),
+ ("i32.and", "makeBinary(BinaryOp::AndInt32)"),
+ ("i32.or", "makeBinary(BinaryOp::OrInt32)"),
+ ("i32.xor", "makeBinary(BinaryOp::XorInt32)"),
+ ("i32.shl", "makeBinary(BinaryOp::ShlInt32)"),
+ ("i32.shr_s", "makeBinary(BinaryOp::ShrSInt32)"),
+ ("i32.shr_u", "makeBinary(BinaryOp::ShrUInt32)"),
+ ("i32.rotl", "makeBinary(BinaryOp::RotLInt32)"),
+ ("i32.rotr", "makeBinary(BinaryOp::RotRInt32)"),
+ ("i64.clz", "makeUnary(UnaryOp::ClzInt64)"),
+ ("i64.ctz", "makeUnary(UnaryOp::CtzInt64)"),
+ ("i64.popcnt", "makeUnary(UnaryOp::PopcntInt64)"),
+ ("i64.add", "makeBinary(BinaryOp::AddInt64)"),
+ ("i64.sub", "makeBinary(BinaryOp::SubInt64)"),
+ ("i64.mul", "makeBinary(BinaryOp::MulInt64)"),
+ ("i64.div_s", "makeBinary(BinaryOp::DivSInt64)"),
+ ("i64.div_u", "makeBinary(BinaryOp::DivUInt64)"),
+ ("i64.rem_s", "makeBinary(BinaryOp::RemSInt64)"),
+ ("i64.rem_u", "makeBinary(BinaryOp::RemUInt64)"),
+ ("i64.and", "makeBinary(BinaryOp::AndInt64)"),
+ ("i64.or", "makeBinary(BinaryOp::OrInt64)"),
+ ("i64.xor", "makeBinary(BinaryOp::XorInt64)"),
+ ("i64.shl", "makeBinary(BinaryOp::ShlInt64)"),
+ ("i64.shr_s", "makeBinary(BinaryOp::ShrSInt64)"),
+ ("i64.shr_u", "makeBinary(BinaryOp::ShrUInt64)"),
+ ("i64.rotl", "makeBinary(BinaryOp::RotLInt64)"),
+ ("i64.rotr", "makeBinary(BinaryOp::RotRInt64)"),
+ ("f32.abs", "makeUnary(UnaryOp::AbsFloat32)"),
+ ("f32.neg", "makeUnary(UnaryOp::NegFloat32)"),
+ ("f32.ceil", "makeUnary(UnaryOp::CeilFloat32)"),
+ ("f32.floor", "makeUnary(UnaryOp::FloorFloat32)"),
+ ("f32.trunc", "makeUnary(UnaryOp::TruncFloat32)"),
+ ("f32.nearest", "makeUnary(UnaryOp::NearestFloat32)"),
+ ("f32.sqrt", "makeUnary(UnaryOp::SqrtFloat32)"),
+ ("f32.add", "makeBinary(BinaryOp::AddFloat32)"),
+ ("f32.sub", "makeBinary(BinaryOp::SubFloat32)"),
+ ("f32.mul", "makeBinary(BinaryOp::MulFloat32)"),
+ ("f32.div", "makeBinary(BinaryOp::DivFloat32)"),
+ ("f32.min", "makeBinary(BinaryOp::MinFloat32)"),
+ ("f32.max", "makeBinary(BinaryOp::MaxFloat32)"),
+ ("f32.copysign", "makeBinary(BinaryOp::CopySignFloat32)"),
+ ("f64.abs", "makeUnary(UnaryOp::AbsFloat64)"),
+ ("f64.neg", "makeUnary(UnaryOp::NegFloat64)"),
+ ("f64.ceil", "makeUnary(UnaryOp::CeilFloat64)"),
+ ("f64.floor", "makeUnary(UnaryOp::FloorFloat64)"),
+ ("f64.trunc", "makeUnary(UnaryOp::TruncFloat64)"),
+ ("f64.nearest", "makeUnary(UnaryOp::NearestFloat64)"),
+ ("f64.sqrt", "makeUnary(UnaryOp::SqrtFloat64)"),
+ ("f64.add", "makeBinary(BinaryOp::AddFloat64)"),
+ ("f64.sub", "makeBinary(BinaryOp::SubFloat64)"),
+ ("f64.mul", "makeBinary(BinaryOp::MulFloat64)"),
+ ("f64.div", "makeBinary(BinaryOp::DivFloat64)"),
+ ("f64.min", "makeBinary(BinaryOp::MinFloat64)"),
+ ("f64.max", "makeBinary(BinaryOp::MaxFloat64)"),
+ ("f64.copysign", "makeBinary(BinaryOp::CopySignFloat64)"),
+ ("i32.wrap_i64", "makeUnary(UnaryOp::WrapInt64)"),
+ ("i32.trunc_f32_s", "makeUnary(UnaryOp::TruncSFloat32ToInt32)"),
+ ("i32.trunc_f32_u", "makeUnary(UnaryOp::TruncUFloat32ToInt32)"),
+ ("i32.trunc_f64_s", "makeUnary(UnaryOp::TruncSFloat64ToInt32)"),
+ ("i32.trunc_f64_u", "makeUnary(UnaryOp::TruncUFloat64ToInt32)"),
+ ("i64.extend_i32_s", "makeUnary(UnaryOp::ExtendSInt32)"),
+ ("i64.extend_i32_u", "makeUnary(UnaryOp::ExtendUInt32)"),
+ ("i64.trunc_f32_s", "makeUnary(UnaryOp::TruncSFloat32ToInt64)"),
+ ("i64.trunc_f32_u", "makeUnary(UnaryOp::TruncUFloat32ToInt64)"),
+ ("i64.trunc_f64_s", "makeUnary(UnaryOp::TruncSFloat64ToInt64)"),
+ ("i64.trunc_f64_u", "makeUnary(UnaryOp::TruncUFloat64ToInt64)"),
+ ("f32.convert_i32_s", "makeUnary(UnaryOp::ConvertSInt32ToFloat32)"),
+ ("f32.convert_i32_u", "makeUnary(UnaryOp::ConvertUInt32ToFloat32)"),
+ ("f32.convert_i64_s", "makeUnary(UnaryOp::ConvertSInt64ToFloat32)"),
+ ("f32.convert_i64_u", "makeUnary(UnaryOp::ConvertUInt64ToFloat32)"),
+ ("f32.demote_f64", "makeUnary(UnaryOp::DemoteFloat64)"),
+ ("f64.convert_i32_s", "makeUnary(UnaryOp::ConvertSInt32ToFloat64)"),
+ ("f64.convert_i32_u", "makeUnary(UnaryOp::ConvertUInt32ToFloat64)"),
+ ("f64.convert_i64_s", "makeUnary(UnaryOp::ConvertSInt64ToFloat64)"),
+ ("f64.convert_i64_u", "makeUnary(UnaryOp::ConvertUInt64ToFloat64)"),
+ ("f64.promote_f32", "makeUnary(UnaryOp::PromoteFloat32)"),
+ ("i32.reinterpret_f32", "makeUnary(UnaryOp::ReinterpretFloat32)"),
+ ("i64.reinterpret_f64", "makeUnary(UnaryOp::ReinterpretFloat64)"),
+ ("f32.reinterpret_i32", "makeUnary(UnaryOp::ReinterpretInt32)"),
+ ("f64.reinterpret_i64", "makeUnary(UnaryOp::ReinterpretInt64)"),
+ ("i32.extend8_s", "makeUnary(UnaryOp::ExtendS8Int32)"),
+ ("i32.extend16_s", "makeUnary(UnaryOp::ExtendS16Int32)"),
+ ("i64.extend8_s", "makeUnary(UnaryOp::ExtendS8Int64)"),
+ ("i64.extend16_s", "makeUnary(UnaryOp::ExtendS16Int64)"),
+ ("i64.extend32_s", "makeUnary(UnaryOp::ExtendS32Int64)"),
# atomic instructions
- ("memory.atomic.notify", "makeAtomicNotify(s)"),
- ("memory.atomic.wait32", "makeAtomicWait(s, Type::i32)"),
- ("memory.atomic.wait64", "makeAtomicWait(s, Type::i64)"),
- ("atomic.fence", "makeAtomicFence(s)"),
- ("i32.atomic.load8_u", "makeLoad(s, Type::i32, /*signed=*/false, 1, /*isAtomic=*/true)"),
- ("i32.atomic.load16_u", "makeLoad(s, Type::i32, /*signed=*/false, 2, /*isAtomic=*/true)"),
- ("i32.atomic.load", "makeLoad(s, Type::i32, /*signed=*/false, 4, /*isAtomic=*/true)"),
- ("i64.atomic.load8_u", "makeLoad(s, Type::i64, /*signed=*/false, 1, /*isAtomic=*/true)"),
- ("i64.atomic.load16_u", "makeLoad(s, Type::i64, /*signed=*/false, 2, /*isAtomic=*/true)"),
- ("i64.atomic.load32_u", "makeLoad(s, Type::i64, /*signed=*/false, 4, /*isAtomic=*/true)"),
- ("i64.atomic.load", "makeLoad(s, Type::i64, /*signed=*/false, 8, /*isAtomic=*/true)"),
- ("i32.atomic.store8", "makeStore(s, Type::i32, 1, /*isAtomic=*/true)"),
- ("i32.atomic.store16", "makeStore(s, Type::i32, 2, /*isAtomic=*/true)"),
- ("i32.atomic.store", "makeStore(s, Type::i32, 4, /*isAtomic=*/true)"),
- ("i64.atomic.store8", "makeStore(s, Type::i64, 1, /*isAtomic=*/true)"),
- ("i64.atomic.store16", "makeStore(s, Type::i64, 2, /*isAtomic=*/true)"),
- ("i64.atomic.store32", "makeStore(s, Type::i64, 4, /*isAtomic=*/true)"),
- ("i64.atomic.store", "makeStore(s, Type::i64, 8, /*isAtomic=*/true)"),
- ("i32.atomic.rmw8.add_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i32, 1)"),
- ("i32.atomic.rmw16.add_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i32, 2)"),
- ("i32.atomic.rmw.add", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i32, 4)"),
- ("i64.atomic.rmw8.add_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i64, 1)"),
- ("i64.atomic.rmw16.add_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i64, 2)"),
- ("i64.atomic.rmw32.add_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i64, 4)"),
- ("i64.atomic.rmw.add", "makeAtomicRMW(s, AtomicRMWOp::RMWAdd, Type::i64, 8)"),
- ("i32.atomic.rmw8.sub_u", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i32, 1)"),
- ("i32.atomic.rmw16.sub_u", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i32, 2)"),
- ("i32.atomic.rmw.sub", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i32, 4)"),
- ("i64.atomic.rmw8.sub_u", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i64, 1)"),
- ("i64.atomic.rmw16.sub_u", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i64, 2)"),
- ("i64.atomic.rmw32.sub_u", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i64, 4)"),
- ("i64.atomic.rmw.sub", "makeAtomicRMW(s, AtomicRMWOp::RMWSub, Type::i64, 8)"),
- ("i32.atomic.rmw8.and_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i32, 1)"),
- ("i32.atomic.rmw16.and_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i32, 2)"),
- ("i32.atomic.rmw.and", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i32, 4)"),
- ("i64.atomic.rmw8.and_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i64, 1)"),
- ("i64.atomic.rmw16.and_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i64, 2)"),
- ("i64.atomic.rmw32.and_u", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i64, 4)"),
- ("i64.atomic.rmw.and", "makeAtomicRMW(s, AtomicRMWOp::RMWAnd, Type::i64, 8)"),
- ("i32.atomic.rmw8.or_u", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i32, 1)"),
- ("i32.atomic.rmw16.or_u", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i32, 2)"),
- ("i32.atomic.rmw.or", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i32, 4)"),
- ("i64.atomic.rmw8.or_u", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i64, 1)"),
- ("i64.atomic.rmw16.or_u", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i64, 2)"),
- ("i64.atomic.rmw32.or_u", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i64, 4)"),
- ("i64.atomic.rmw.or", "makeAtomicRMW(s, AtomicRMWOp::RMWOr, Type::i64, 8)"),
- ("i32.atomic.rmw8.xor_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i32, 1)"),
- ("i32.atomic.rmw16.xor_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i32, 2)"),
- ("i32.atomic.rmw.xor", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i32, 4)"),
- ("i64.atomic.rmw8.xor_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i64, 1)"),
- ("i64.atomic.rmw16.xor_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i64, 2)"),
- ("i64.atomic.rmw32.xor_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i64, 4)"),
- ("i64.atomic.rmw.xor", "makeAtomicRMW(s, AtomicRMWOp::RMWXor, Type::i64, 8)"),
- ("i32.atomic.rmw8.xchg_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i32, 1)"),
- ("i32.atomic.rmw16.xchg_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i32, 2)"),
- ("i32.atomic.rmw.xchg", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i32, 4)"),
- ("i64.atomic.rmw8.xchg_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i64, 1)"),
- ("i64.atomic.rmw16.xchg_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i64, 2)"),
- ("i64.atomic.rmw32.xchg_u", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i64, 4)"),
- ("i64.atomic.rmw.xchg", "makeAtomicRMW(s, AtomicRMWOp::RMWXchg, Type::i64, 8)"),
- ("i32.atomic.rmw8.cmpxchg_u", "makeAtomicCmpxchg(s, Type::i32, 1)"),
- ("i32.atomic.rmw16.cmpxchg_u", "makeAtomicCmpxchg(s, Type::i32, 2)"),
- ("i32.atomic.rmw.cmpxchg", "makeAtomicCmpxchg(s, Type::i32, 4)"),
- ("i64.atomic.rmw8.cmpxchg_u", "makeAtomicCmpxchg(s, Type::i64, 1)"),
- ("i64.atomic.rmw16.cmpxchg_u", "makeAtomicCmpxchg(s, Type::i64, 2)"),
- ("i64.atomic.rmw32.cmpxchg_u", "makeAtomicCmpxchg(s, Type::i64, 4)"),
- ("i64.atomic.rmw.cmpxchg", "makeAtomicCmpxchg(s, Type::i64, 8)"),
+ ("memory.atomic.notify", "makeAtomicNotify()"),
+ ("memory.atomic.wait32", "makeAtomicWait(Type::i32)"),
+ ("memory.atomic.wait64", "makeAtomicWait(Type::i64)"),
+ ("atomic.fence", "makeAtomicFence()"),
+ ("i32.atomic.load8_u", "makeLoad(Type::i32, /*signed=*/false, 1, /*isAtomic=*/true)"),
+ ("i32.atomic.load16_u", "makeLoad(Type::i32, /*signed=*/false, 2, /*isAtomic=*/true)"),
+ ("i32.atomic.load", "makeLoad(Type::i32, /*signed=*/false, 4, /*isAtomic=*/true)"),
+ ("i64.atomic.load8_u", "makeLoad(Type::i64, /*signed=*/false, 1, /*isAtomic=*/true)"),
+ ("i64.atomic.load16_u", "makeLoad(Type::i64, /*signed=*/false, 2, /*isAtomic=*/true)"),
+ ("i64.atomic.load32_u", "makeLoad(Type::i64, /*signed=*/false, 4, /*isAtomic=*/true)"),
+ ("i64.atomic.load", "makeLoad(Type::i64, /*signed=*/false, 8, /*isAtomic=*/true)"),
+ ("i32.atomic.store8", "makeStore(Type::i32, 1, /*isAtomic=*/true)"),
+ ("i32.atomic.store16", "makeStore(Type::i32, 2, /*isAtomic=*/true)"),
+ ("i32.atomic.store", "makeStore(Type::i32, 4, /*isAtomic=*/true)"),
+ ("i64.atomic.store8", "makeStore(Type::i64, 1, /*isAtomic=*/true)"),
+ ("i64.atomic.store16", "makeStore(Type::i64, 2, /*isAtomic=*/true)"),
+ ("i64.atomic.store32", "makeStore(Type::i64, 4, /*isAtomic=*/true)"),
+ ("i64.atomic.store", "makeStore(Type::i64, 8, /*isAtomic=*/true)"),
+ ("i32.atomic.rmw8.add_u", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i32, 1)"),
+ ("i32.atomic.rmw16.add_u", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i32, 2)"),
+ ("i32.atomic.rmw.add", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i32, 4)"),
+ ("i64.atomic.rmw8.add_u", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i64, 1)"),
+ ("i64.atomic.rmw16.add_u", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i64, 2)"),
+ ("i64.atomic.rmw32.add_u", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i64, 4)"),
+ ("i64.atomic.rmw.add", "makeAtomicRMW(AtomicRMWOp::RMWAdd, Type::i64, 8)"),
+ ("i32.atomic.rmw8.sub_u", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i32, 1)"),
+ ("i32.atomic.rmw16.sub_u", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i32, 2)"),
+ ("i32.atomic.rmw.sub", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i32, 4)"),
+ ("i64.atomic.rmw8.sub_u", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i64, 1)"),
+ ("i64.atomic.rmw16.sub_u", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i64, 2)"),
+ ("i64.atomic.rmw32.sub_u", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i64, 4)"),
+ ("i64.atomic.rmw.sub", "makeAtomicRMW(AtomicRMWOp::RMWSub, Type::i64, 8)"),
+ ("i32.atomic.rmw8.and_u", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i32, 1)"),
+ ("i32.atomic.rmw16.and_u", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i32, 2)"),
+ ("i32.atomic.rmw.and", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i32, 4)"),
+ ("i64.atomic.rmw8.and_u", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i64, 1)"),
+ ("i64.atomic.rmw16.and_u", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i64, 2)"),
+ ("i64.atomic.rmw32.and_u", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i64, 4)"),
+ ("i64.atomic.rmw.and", "makeAtomicRMW(AtomicRMWOp::RMWAnd, Type::i64, 8)"),
+ ("i32.atomic.rmw8.or_u", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i32, 1)"),
+ ("i32.atomic.rmw16.or_u", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i32, 2)"),
+ ("i32.atomic.rmw.or", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i32, 4)"),
+ ("i64.atomic.rmw8.or_u", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i64, 1)"),
+ ("i64.atomic.rmw16.or_u", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i64, 2)"),
+ ("i64.atomic.rmw32.or_u", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i64, 4)"),
+ ("i64.atomic.rmw.or", "makeAtomicRMW(AtomicRMWOp::RMWOr, Type::i64, 8)"),
+ ("i32.atomic.rmw8.xor_u", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i32, 1)"),
+ ("i32.atomic.rmw16.xor_u", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i32, 2)"),
+ ("i32.atomic.rmw.xor", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i32, 4)"),
+ ("i64.atomic.rmw8.xor_u", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i64, 1)"),
+ ("i64.atomic.rmw16.xor_u", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i64, 2)"),
+ ("i64.atomic.rmw32.xor_u", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i64, 4)"),
+ ("i64.atomic.rmw.xor", "makeAtomicRMW(AtomicRMWOp::RMWXor, Type::i64, 8)"),
+ ("i32.atomic.rmw8.xchg_u", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i32, 1)"),
+ ("i32.atomic.rmw16.xchg_u", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i32, 2)"),
+ ("i32.atomic.rmw.xchg", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i32, 4)"),
+ ("i64.atomic.rmw8.xchg_u", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i64, 1)"),
+ ("i64.atomic.rmw16.xchg_u", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i64, 2)"),
+ ("i64.atomic.rmw32.xchg_u", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i64, 4)"),
+ ("i64.atomic.rmw.xchg", "makeAtomicRMW(AtomicRMWOp::RMWXchg, Type::i64, 8)"),
+ ("i32.atomic.rmw8.cmpxchg_u", "makeAtomicCmpxchg(Type::i32, 1)"),
+ ("i32.atomic.rmw16.cmpxchg_u", "makeAtomicCmpxchg(Type::i32, 2)"),
+ ("i32.atomic.rmw.cmpxchg", "makeAtomicCmpxchg(Type::i32, 4)"),
+ ("i64.atomic.rmw8.cmpxchg_u", "makeAtomicCmpxchg(Type::i64, 1)"),
+ ("i64.atomic.rmw16.cmpxchg_u", "makeAtomicCmpxchg(Type::i64, 2)"),
+ ("i64.atomic.rmw32.cmpxchg_u", "makeAtomicCmpxchg(Type::i64, 4)"),
+ ("i64.atomic.rmw.cmpxchg", "makeAtomicCmpxchg(Type::i64, 8)"),
# nontrapping float-to-int instructions
- ("i32.trunc_sat_f32_s", "makeUnary(s, UnaryOp::TruncSatSFloat32ToInt32)"),
- ("i32.trunc_sat_f32_u", "makeUnary(s, UnaryOp::TruncSatUFloat32ToInt32)"),
- ("i32.trunc_sat_f64_s", "makeUnary(s, UnaryOp::TruncSatSFloat64ToInt32)"),
- ("i32.trunc_sat_f64_u", "makeUnary(s, UnaryOp::TruncSatUFloat64ToInt32)"),
- ("i64.trunc_sat_f32_s", "makeUnary(s, UnaryOp::TruncSatSFloat32ToInt64)"),
- ("i64.trunc_sat_f32_u", "makeUnary(s, UnaryOp::TruncSatUFloat32ToInt64)"),
- ("i64.trunc_sat_f64_s", "makeUnary(s, UnaryOp::TruncSatSFloat64ToInt64)"),
- ("i64.trunc_sat_f64_u", "makeUnary(s, UnaryOp::TruncSatUFloat64ToInt64)"),
+ ("i32.trunc_sat_f32_s", "makeUnary(UnaryOp::TruncSatSFloat32ToInt32)"),
+ ("i32.trunc_sat_f32_u", "makeUnary(UnaryOp::TruncSatUFloat32ToInt32)"),
+ ("i32.trunc_sat_f64_s", "makeUnary(UnaryOp::TruncSatSFloat64ToInt32)"),
+ ("i32.trunc_sat_f64_u", "makeUnary(UnaryOp::TruncSatUFloat64ToInt32)"),
+ ("i64.trunc_sat_f32_s", "makeUnary(UnaryOp::TruncSatSFloat32ToInt64)"),
+ ("i64.trunc_sat_f32_u", "makeUnary(UnaryOp::TruncSatUFloat32ToInt64)"),
+ ("i64.trunc_sat_f64_s", "makeUnary(UnaryOp::TruncSatSFloat64ToInt64)"),
+ ("i64.trunc_sat_f64_u", "makeUnary(UnaryOp::TruncSatUFloat64ToInt64)"),
# SIMD ops
- ("v128.load", "makeLoad(s, Type::v128, /*signed=*/false, 16, /*isAtomic=*/false)"),
- ("v128.store", "makeStore(s, Type::v128, 16, /*isAtomic=*/false)"),
- ("v128.const", "makeConst(s, Type::v128)"),
- ("i8x16.shuffle", "makeSIMDShuffle(s)"),
- ("i8x16.splat", "makeUnary(s, UnaryOp::SplatVecI8x16)"),
- ("i8x16.extract_lane_s", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneSVecI8x16, 16)"),
- ("i8x16.extract_lane_u", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneUVecI8x16, 16)"),
- ("i8x16.replace_lane", "makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI8x16, 16)"),
- ("i16x8.splat", "makeUnary(s, UnaryOp::SplatVecI16x8)"),
- ("i16x8.extract_lane_s", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneSVecI16x8, 8)"),
- ("i16x8.extract_lane_u", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneUVecI16x8, 8)"),
- ("i16x8.replace_lane", "makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI16x8, 8)"),
- ("i32x4.splat", "makeUnary(s, UnaryOp::SplatVecI32x4)"),
- ("i32x4.extract_lane", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecI32x4, 4)"),
- ("i32x4.replace_lane", "makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI32x4, 4)"),
- ("i64x2.splat", "makeUnary(s, UnaryOp::SplatVecI64x2)"),
- ("i64x2.extract_lane", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecI64x2, 2)"),
- ("i64x2.replace_lane", "makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecI64x2, 2)"),
- ("f32x4.splat", "makeUnary(s, UnaryOp::SplatVecF32x4)"),
- ("f32x4.extract_lane", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecF32x4, 4)"),
- ("f32x4.replace_lane", "makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecF32x4, 4)"),
- ("f64x2.splat", "makeUnary(s, UnaryOp::SplatVecF64x2)"),
- ("f64x2.extract_lane", "makeSIMDExtract(s, SIMDExtractOp::ExtractLaneVecF64x2, 2)"),
- ("f64x2.replace_lane", "makeSIMDReplace(s, SIMDReplaceOp::ReplaceLaneVecF64x2, 2)"),
- ("i8x16.eq", "makeBinary(s, BinaryOp::EqVecI8x16)"),
- ("i8x16.ne", "makeBinary(s, BinaryOp::NeVecI8x16)"),
- ("i8x16.lt_s", "makeBinary(s, BinaryOp::LtSVecI8x16)"),
- ("i8x16.lt_u", "makeBinary(s, BinaryOp::LtUVecI8x16)"),
- ("i8x16.gt_s", "makeBinary(s, BinaryOp::GtSVecI8x16)"),
- ("i8x16.gt_u", "makeBinary(s, BinaryOp::GtUVecI8x16)"),
- ("i8x16.le_s", "makeBinary(s, BinaryOp::LeSVecI8x16)"),
- ("i8x16.le_u", "makeBinary(s, BinaryOp::LeUVecI8x16)"),
- ("i8x16.ge_s", "makeBinary(s, BinaryOp::GeSVecI8x16)"),
- ("i8x16.ge_u", "makeBinary(s, BinaryOp::GeUVecI8x16)"),
- ("i16x8.eq", "makeBinary(s, BinaryOp::EqVecI16x8)"),
- ("i16x8.ne", "makeBinary(s, BinaryOp::NeVecI16x8)"),
- ("i16x8.lt_s", "makeBinary(s, BinaryOp::LtSVecI16x8)"),
- ("i16x8.lt_u", "makeBinary(s, BinaryOp::LtUVecI16x8)"),
- ("i16x8.gt_s", "makeBinary(s, BinaryOp::GtSVecI16x8)"),
- ("i16x8.gt_u", "makeBinary(s, BinaryOp::GtUVecI16x8)"),
- ("i16x8.le_s", "makeBinary(s, BinaryOp::LeSVecI16x8)"),
- ("i16x8.le_u", "makeBinary(s, BinaryOp::LeUVecI16x8)"),
- ("i16x8.ge_s", "makeBinary(s, BinaryOp::GeSVecI16x8)"),
- ("i16x8.ge_u", "makeBinary(s, BinaryOp::GeUVecI16x8)"),
- ("i32x4.eq", "makeBinary(s, BinaryOp::EqVecI32x4)"),
- ("i32x4.ne", "makeBinary(s, BinaryOp::NeVecI32x4)"),
- ("i32x4.lt_s", "makeBinary(s, BinaryOp::LtSVecI32x4)"),
- ("i32x4.lt_u", "makeBinary(s, BinaryOp::LtUVecI32x4)"),
- ("i32x4.gt_s", "makeBinary(s, BinaryOp::GtSVecI32x4)"),
- ("i32x4.gt_u", "makeBinary(s, BinaryOp::GtUVecI32x4)"),
- ("i32x4.le_s", "makeBinary(s, BinaryOp::LeSVecI32x4)"),
- ("i32x4.le_u", "makeBinary(s, BinaryOp::LeUVecI32x4)"),
- ("i32x4.ge_s", "makeBinary(s, BinaryOp::GeSVecI32x4)"),
- ("i32x4.ge_u", "makeBinary(s, BinaryOp::GeUVecI32x4)"),
- ("i64x2.eq", "makeBinary(s, BinaryOp::EqVecI64x2)"),
- ("i64x2.ne", "makeBinary(s, BinaryOp::NeVecI64x2)"),
- ("i64x2.lt_s", "makeBinary(s, BinaryOp::LtSVecI64x2)"),
- ("i64x2.gt_s", "makeBinary(s, BinaryOp::GtSVecI64x2)"),
- ("i64x2.le_s", "makeBinary(s, BinaryOp::LeSVecI64x2)"),
- ("i64x2.ge_s", "makeBinary(s, BinaryOp::GeSVecI64x2)"),
- ("f32x4.eq", "makeBinary(s, BinaryOp::EqVecF32x4)"),
- ("f32x4.ne", "makeBinary(s, BinaryOp::NeVecF32x4)"),
- ("f32x4.lt", "makeBinary(s, BinaryOp::LtVecF32x4)"),
- ("f32x4.gt", "makeBinary(s, BinaryOp::GtVecF32x4)"),
- ("f32x4.le", "makeBinary(s, BinaryOp::LeVecF32x4)"),
- ("f32x4.ge", "makeBinary(s, BinaryOp::GeVecF32x4)"),
- ("f64x2.eq", "makeBinary(s, BinaryOp::EqVecF64x2)"),
- ("f64x2.ne", "makeBinary(s, BinaryOp::NeVecF64x2)"),
- ("f64x2.lt", "makeBinary(s, BinaryOp::LtVecF64x2)"),
- ("f64x2.gt", "makeBinary(s, BinaryOp::GtVecF64x2)"),
- ("f64x2.le", "makeBinary(s, BinaryOp::LeVecF64x2)"),
- ("f64x2.ge", "makeBinary(s, BinaryOp::GeVecF64x2)"),
- ("v128.not", "makeUnary(s, UnaryOp::NotVec128)"),
- ("v128.and", "makeBinary(s, BinaryOp::AndVec128)"),
- ("v128.or", "makeBinary(s, BinaryOp::OrVec128)"),
- ("v128.xor", "makeBinary(s, BinaryOp::XorVec128)"),
- ("v128.andnot", "makeBinary(s, BinaryOp::AndNotVec128)"),
- ("v128.any_true", "makeUnary(s, UnaryOp::AnyTrueVec128)"),
- ("v128.bitselect", "makeSIMDTernary(s, SIMDTernaryOp::Bitselect)"),
- ("v128.load8_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Load8LaneVec128, 1)"),
- ("v128.load16_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Load16LaneVec128, 2)"),
- ("v128.load32_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Load32LaneVec128, 4)"),
- ("v128.load64_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Load64LaneVec128, 8)"),
- ("v128.store8_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Store8LaneVec128, 1)"),
- ("v128.store16_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Store16LaneVec128, 2)"),
- ("v128.store32_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Store32LaneVec128, 4)"),
- ("v128.store64_lane", "makeSIMDLoadStoreLane(s, SIMDLoadStoreLaneOp::Store64LaneVec128, 8)"),
- ("i8x16.popcnt", "makeUnary(s, UnaryOp::PopcntVecI8x16)"),
- ("i8x16.abs", "makeUnary(s, UnaryOp::AbsVecI8x16)"),
- ("i8x16.neg", "makeUnary(s, UnaryOp::NegVecI8x16)"),
- ("i8x16.all_true", "makeUnary(s, UnaryOp::AllTrueVecI8x16)"),
- ("i8x16.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI8x16)"),
- ("i8x16.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI8x16)"),
- ("i8x16.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI8x16)"),
- ("i8x16.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI8x16)"),
- ("i8x16.add", "makeBinary(s, BinaryOp::AddVecI8x16)"),
- ("i8x16.add_sat_s", "makeBinary(s, BinaryOp::AddSatSVecI8x16)"),
- ("i8x16.add_sat_u", "makeBinary(s, BinaryOp::AddSatUVecI8x16)"),
- ("i8x16.sub", "makeBinary(s, BinaryOp::SubVecI8x16)"),
- ("i8x16.sub_sat_s", "makeBinary(s, BinaryOp::SubSatSVecI8x16)"),
- ("i8x16.sub_sat_u", "makeBinary(s, BinaryOp::SubSatUVecI8x16)"),
- ("i8x16.min_s", "makeBinary(s, BinaryOp::MinSVecI8x16)"),
- ("i8x16.min_u", "makeBinary(s, BinaryOp::MinUVecI8x16)"),
- ("i8x16.max_s", "makeBinary(s, BinaryOp::MaxSVecI8x16)"),
- ("i8x16.max_u", "makeBinary(s, BinaryOp::MaxUVecI8x16)"),
- ("i8x16.avgr_u", "makeBinary(s, BinaryOp::AvgrUVecI8x16)"),
- ("i16x8.abs", "makeUnary(s, UnaryOp::AbsVecI16x8)"),
- ("i16x8.neg", "makeUnary(s, UnaryOp::NegVecI16x8)"),
- ("i16x8.all_true", "makeUnary(s, UnaryOp::AllTrueVecI16x8)"),
- ("i16x8.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI16x8)"),
- ("i16x8.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI16x8)"),
- ("i16x8.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI16x8)"),
- ("i16x8.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI16x8)"),
- ("i16x8.add", "makeBinary(s, BinaryOp::AddVecI16x8)"),
- ("i16x8.add_sat_s", "makeBinary(s, BinaryOp::AddSatSVecI16x8)"),
- ("i16x8.add_sat_u", "makeBinary(s, BinaryOp::AddSatUVecI16x8)"),
- ("i16x8.sub", "makeBinary(s, BinaryOp::SubVecI16x8)"),
- ("i16x8.sub_sat_s", "makeBinary(s, BinaryOp::SubSatSVecI16x8)"),
- ("i16x8.sub_sat_u", "makeBinary(s, BinaryOp::SubSatUVecI16x8)"),
- ("i16x8.mul", "makeBinary(s, BinaryOp::MulVecI16x8)"),
- ("i16x8.min_s", "makeBinary(s, BinaryOp::MinSVecI16x8)"),
- ("i16x8.min_u", "makeBinary(s, BinaryOp::MinUVecI16x8)"),
- ("i16x8.max_s", "makeBinary(s, BinaryOp::MaxSVecI16x8)"),
- ("i16x8.max_u", "makeBinary(s, BinaryOp::MaxUVecI16x8)"),
- ("i16x8.avgr_u", "makeBinary(s, BinaryOp::AvgrUVecI16x8)"),
- ("i16x8.q15mulr_sat_s", "makeBinary(s, BinaryOp::Q15MulrSatSVecI16x8)"),
- ("i16x8.extmul_low_i8x16_s", "makeBinary(s, BinaryOp::ExtMulLowSVecI16x8)"),
- ("i16x8.extmul_high_i8x16_s", "makeBinary(s, BinaryOp::ExtMulHighSVecI16x8)"),
- ("i16x8.extmul_low_i8x16_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI16x8)"),
- ("i16x8.extmul_high_i8x16_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI16x8)"),
- ("i32x4.abs", "makeUnary(s, UnaryOp::AbsVecI32x4)"),
- ("i32x4.neg", "makeUnary(s, UnaryOp::NegVecI32x4)"),
- ("i32x4.all_true", "makeUnary(s, UnaryOp::AllTrueVecI32x4)"),
- ("i32x4.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI32x4)"),
- ("i32x4.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI32x4)"),
- ("i32x4.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI32x4)"),
- ("i32x4.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI32x4)"),
- ("i32x4.add", "makeBinary(s, BinaryOp::AddVecI32x4)"),
- ("i32x4.sub", "makeBinary(s, BinaryOp::SubVecI32x4)"),
- ("i32x4.mul", "makeBinary(s, BinaryOp::MulVecI32x4)"),
- ("i32x4.min_s", "makeBinary(s, BinaryOp::MinSVecI32x4)"),
- ("i32x4.min_u", "makeBinary(s, BinaryOp::MinUVecI32x4)"),
- ("i32x4.max_s", "makeBinary(s, BinaryOp::MaxSVecI32x4)"),
- ("i32x4.max_u", "makeBinary(s, BinaryOp::MaxUVecI32x4)"),
- ("i32x4.dot_i16x8_s", "makeBinary(s, BinaryOp::DotSVecI16x8ToVecI32x4)"),
- ("i32x4.extmul_low_i16x8_s", "makeBinary(s, BinaryOp::ExtMulLowSVecI32x4)"),
- ("i32x4.extmul_high_i16x8_s", "makeBinary(s, BinaryOp::ExtMulHighSVecI32x4)"),
- ("i32x4.extmul_low_i16x8_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI32x4)"),
- ("i32x4.extmul_high_i16x8_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI32x4)"),
- ("i64x2.abs", "makeUnary(s, UnaryOp::AbsVecI64x2)"),
- ("i64x2.neg", "makeUnary(s, UnaryOp::NegVecI64x2)"),
- ("i64x2.all_true", "makeUnary(s, UnaryOp::AllTrueVecI64x2)"),
- ("i64x2.bitmask", "makeUnary(s, UnaryOp::BitmaskVecI64x2)"),
- ("i64x2.shl", "makeSIMDShift(s, SIMDShiftOp::ShlVecI64x2)"),
- ("i64x2.shr_s", "makeSIMDShift(s, SIMDShiftOp::ShrSVecI64x2)"),
- ("i64x2.shr_u", "makeSIMDShift(s, SIMDShiftOp::ShrUVecI64x2)"),
- ("i64x2.add", "makeBinary(s, BinaryOp::AddVecI64x2)"),
- ("i64x2.sub", "makeBinary(s, BinaryOp::SubVecI64x2)"),
- ("i64x2.mul", "makeBinary(s, BinaryOp::MulVecI64x2)"),
- ("i64x2.extmul_low_i32x4_s", "makeBinary(s, BinaryOp::ExtMulLowSVecI64x2)"),
- ("i64x2.extmul_high_i32x4_s", "makeBinary(s, BinaryOp::ExtMulHighSVecI64x2)"),
- ("i64x2.extmul_low_i32x4_u", "makeBinary(s, BinaryOp::ExtMulLowUVecI64x2)"),
- ("i64x2.extmul_high_i32x4_u", "makeBinary(s, BinaryOp::ExtMulHighUVecI64x2)"),
- ("f32x4.abs", "makeUnary(s, UnaryOp::AbsVecF32x4)"),
- ("f32x4.neg", "makeUnary(s, UnaryOp::NegVecF32x4)"),
- ("f32x4.sqrt", "makeUnary(s, UnaryOp::SqrtVecF32x4)"),
- ("f32x4.add", "makeBinary(s, BinaryOp::AddVecF32x4)"),
- ("f32x4.sub", "makeBinary(s, BinaryOp::SubVecF32x4)"),
- ("f32x4.mul", "makeBinary(s, BinaryOp::MulVecF32x4)"),
- ("f32x4.div", "makeBinary(s, BinaryOp::DivVecF32x4)"),
- ("f32x4.min", "makeBinary(s, BinaryOp::MinVecF32x4)"),
- ("f32x4.max", "makeBinary(s, BinaryOp::MaxVecF32x4)"),
- ("f32x4.pmin", "makeBinary(s, BinaryOp::PMinVecF32x4)"),
- ("f32x4.pmax", "makeBinary(s, BinaryOp::PMaxVecF32x4)"),
- ("f32x4.ceil", "makeUnary(s, UnaryOp::CeilVecF32x4)"),
- ("f32x4.floor", "makeUnary(s, UnaryOp::FloorVecF32x4)"),
- ("f32x4.trunc", "makeUnary(s, UnaryOp::TruncVecF32x4)"),
- ("f32x4.nearest", "makeUnary(s, UnaryOp::NearestVecF32x4)"),
- ("f64x2.abs", "makeUnary(s, UnaryOp::AbsVecF64x2)"),
- ("f64x2.neg", "makeUnary(s, UnaryOp::NegVecF64x2)"),
- ("f64x2.sqrt", "makeUnary(s, UnaryOp::SqrtVecF64x2)"),
- ("f64x2.add", "makeBinary(s, BinaryOp::AddVecF64x2)"),
- ("f64x2.sub", "makeBinary(s, BinaryOp::SubVecF64x2)"),
- ("f64x2.mul", "makeBinary(s, BinaryOp::MulVecF64x2)"),
- ("f64x2.div", "makeBinary(s, BinaryOp::DivVecF64x2)"),
- ("f64x2.min", "makeBinary(s, BinaryOp::MinVecF64x2)"),
- ("f64x2.max", "makeBinary(s, BinaryOp::MaxVecF64x2)"),
- ("f64x2.pmin", "makeBinary(s, BinaryOp::PMinVecF64x2)"),
- ("f64x2.pmax", "makeBinary(s, BinaryOp::PMaxVecF64x2)"),
- ("f64x2.ceil", "makeUnary(s, UnaryOp::CeilVecF64x2)"),
- ("f64x2.floor", "makeUnary(s, UnaryOp::FloorVecF64x2)"),
- ("f64x2.trunc", "makeUnary(s, UnaryOp::TruncVecF64x2)"),
- ("f64x2.nearest", "makeUnary(s, UnaryOp::NearestVecF64x2)"),
- ("i32x4.trunc_sat_f32x4_s", "makeUnary(s, UnaryOp::TruncSatSVecF32x4ToVecI32x4)"),
- ("i32x4.trunc_sat_f32x4_u", "makeUnary(s, UnaryOp::TruncSatUVecF32x4ToVecI32x4)"),
- ("f32x4.convert_i32x4_s", "makeUnary(s, UnaryOp::ConvertSVecI32x4ToVecF32x4)"),
- ("f32x4.convert_i32x4_u", "makeUnary(s, UnaryOp::ConvertUVecI32x4ToVecF32x4)"),
- ("v128.load8_splat", "makeSIMDLoad(s, SIMDLoadOp::Load8SplatVec128, 1)"),
- ("v128.load16_splat", "makeSIMDLoad(s, SIMDLoadOp::Load16SplatVec128, 2)"),
- ("v128.load32_splat", "makeSIMDLoad(s, SIMDLoadOp::Load32SplatVec128, 4)"),
- ("v128.load64_splat", "makeSIMDLoad(s, SIMDLoadOp::Load64SplatVec128, 8)"),
- ("v128.load8x8_s", "makeSIMDLoad(s, SIMDLoadOp::Load8x8SVec128, 8)"),
- ("v128.load8x8_u", "makeSIMDLoad(s, SIMDLoadOp::Load8x8UVec128, 8)"),
- ("v128.load16x4_s", "makeSIMDLoad(s, SIMDLoadOp::Load16x4SVec128, 8)"),
- ("v128.load16x4_u", "makeSIMDLoad(s, SIMDLoadOp::Load16x4UVec128, 8)"),
- ("v128.load32x2_s", "makeSIMDLoad(s, SIMDLoadOp::Load32x2SVec128, 8)"),
- ("v128.load32x2_u", "makeSIMDLoad(s, SIMDLoadOp::Load32x2UVec128, 8)"),
- ("v128.load32_zero", "makeSIMDLoad(s, SIMDLoadOp::Load32ZeroVec128, 4)"),
- ("v128.load64_zero", "makeSIMDLoad(s, SIMDLoadOp::Load64ZeroVec128, 8)"),
- ("i8x16.narrow_i16x8_s", "makeBinary(s, BinaryOp::NarrowSVecI16x8ToVecI8x16)"),
- ("i8x16.narrow_i16x8_u", "makeBinary(s, BinaryOp::NarrowUVecI16x8ToVecI8x16)"),
- ("i16x8.narrow_i32x4_s", "makeBinary(s, BinaryOp::NarrowSVecI32x4ToVecI16x8)"),
- ("i16x8.narrow_i32x4_u", "makeBinary(s, BinaryOp::NarrowUVecI32x4ToVecI16x8)"),
- ("i16x8.extend_low_i8x16_s", "makeUnary(s, UnaryOp::ExtendLowSVecI8x16ToVecI16x8)"),
- ("i16x8.extend_high_i8x16_s", "makeUnary(s, UnaryOp::ExtendHighSVecI8x16ToVecI16x8)"),
- ("i16x8.extend_low_i8x16_u", "makeUnary(s, UnaryOp::ExtendLowUVecI8x16ToVecI16x8)"),
- ("i16x8.extend_high_i8x16_u", "makeUnary(s, UnaryOp::ExtendHighUVecI8x16ToVecI16x8)"),
- ("i32x4.extend_low_i16x8_s", "makeUnary(s, UnaryOp::ExtendLowSVecI16x8ToVecI32x4)"),
- ("i32x4.extend_high_i16x8_s", "makeUnary(s, UnaryOp::ExtendHighSVecI16x8ToVecI32x4)"),
- ("i32x4.extend_low_i16x8_u", "makeUnary(s, UnaryOp::ExtendLowUVecI16x8ToVecI32x4)"),
- ("i32x4.extend_high_i16x8_u", "makeUnary(s, UnaryOp::ExtendHighUVecI16x8ToVecI32x4)"),
- ("i64x2.extend_low_i32x4_s", "makeUnary(s, UnaryOp::ExtendLowSVecI32x4ToVecI64x2)"),
- ("i64x2.extend_high_i32x4_s", "makeUnary(s, UnaryOp::ExtendHighSVecI32x4ToVecI64x2)"),
- ("i64x2.extend_low_i32x4_u", "makeUnary(s, UnaryOp::ExtendLowUVecI32x4ToVecI64x2)"),
- ("i64x2.extend_high_i32x4_u", "makeUnary(s, UnaryOp::ExtendHighUVecI32x4ToVecI64x2)"),
- ("i8x16.swizzle", "makeBinary(s, BinaryOp::SwizzleVecI8x16)"),
- ("i16x8.extadd_pairwise_i8x16_s", "makeUnary(s, UnaryOp::ExtAddPairwiseSVecI8x16ToI16x8)"),
- ("i16x8.extadd_pairwise_i8x16_u", "makeUnary(s, UnaryOp::ExtAddPairwiseUVecI8x16ToI16x8)"),
- ("i32x4.extadd_pairwise_i16x8_s", "makeUnary(s, UnaryOp::ExtAddPairwiseSVecI16x8ToI32x4)"),
- ("i32x4.extadd_pairwise_i16x8_u", "makeUnary(s, UnaryOp::ExtAddPairwiseUVecI16x8ToI32x4)"),
- ("f64x2.convert_low_i32x4_s", "makeUnary(s, UnaryOp::ConvertLowSVecI32x4ToVecF64x2)"),
- ("f64x2.convert_low_i32x4_u", "makeUnary(s, UnaryOp::ConvertLowUVecI32x4ToVecF64x2)"),
- ("i32x4.trunc_sat_f64x2_s_zero", "makeUnary(s, UnaryOp::TruncSatZeroSVecF64x2ToVecI32x4)"),
- ("i32x4.trunc_sat_f64x2_u_zero", "makeUnary(s, UnaryOp::TruncSatZeroUVecF64x2ToVecI32x4)"),
- ("f32x4.demote_f64x2_zero", "makeUnary(s, UnaryOp::DemoteZeroVecF64x2ToVecF32x4)"),
- ("f64x2.promote_low_f32x4", "makeUnary(s, UnaryOp::PromoteLowVecF32x4ToVecF64x2)"),
+ ("v128.load", "makeLoad(Type::v128, /*signed=*/false, 16, /*isAtomic=*/false)"),
+ ("v128.store", "makeStore(Type::v128, 16, /*isAtomic=*/false)"),
+ ("v128.const", "makeConst(Type::v128)"),
+ ("i8x16.shuffle", "makeSIMDShuffle()"),
+ ("i8x16.splat", "makeUnary(UnaryOp::SplatVecI8x16)"),
+ ("i8x16.extract_lane_s", "makeSIMDExtract(SIMDExtractOp::ExtractLaneSVecI8x16, 16)"),
+ ("i8x16.extract_lane_u", "makeSIMDExtract(SIMDExtractOp::ExtractLaneUVecI8x16, 16)"),
+ ("i8x16.replace_lane", "makeSIMDReplace(SIMDReplaceOp::ReplaceLaneVecI8x16, 16)"),
+ ("i16x8.splat", "makeUnary(UnaryOp::SplatVecI16x8)"),
+ ("i16x8.extract_lane_s", "makeSIMDExtract(SIMDExtractOp::ExtractLaneSVecI16x8, 8)"),
+ ("i16x8.extract_lane_u", "makeSIMDExtract(SIMDExtractOp::ExtractLaneUVecI16x8, 8)"),
+ ("i16x8.replace_lane", "makeSIMDReplace(SIMDReplaceOp::ReplaceLaneVecI16x8, 8)"),
+ ("i32x4.splat", "makeUnary(UnaryOp::SplatVecI32x4)"),
+ ("i32x4.extract_lane", "makeSIMDExtract(SIMDExtractOp::ExtractLaneVecI32x4, 4)"),
+ ("i32x4.replace_lane", "makeSIMDReplace(SIMDReplaceOp::ReplaceLaneVecI32x4, 4)"),
+ ("i64x2.splat", "makeUnary(UnaryOp::SplatVecI64x2)"),
+ ("i64x2.extract_lane", "makeSIMDExtract(SIMDExtractOp::ExtractLaneVecI64x2, 2)"),
+ ("i64x2.replace_lane", "makeSIMDReplace(SIMDReplaceOp::ReplaceLaneVecI64x2, 2)"),
+ ("f32x4.splat", "makeUnary(UnaryOp::SplatVecF32x4)"),
+ ("f32x4.extract_lane", "makeSIMDExtract(SIMDExtractOp::ExtractLaneVecF32x4, 4)"),
+ ("f32x4.replace_lane", "makeSIMDReplace(SIMDReplaceOp::ReplaceLaneVecF32x4, 4)"),
+ ("f64x2.splat", "makeUnary(UnaryOp::SplatVecF64x2)"),
+ ("f64x2.extract_lane", "makeSIMDExtract(SIMDExtractOp::ExtractLaneVecF64x2, 2)"),
+ ("f64x2.replace_lane", "makeSIMDReplace(SIMDReplaceOp::ReplaceLaneVecF64x2, 2)"),
+ ("i8x16.eq", "makeBinary(BinaryOp::EqVecI8x16)"),
+ ("i8x16.ne", "makeBinary(BinaryOp::NeVecI8x16)"),
+ ("i8x16.lt_s", "makeBinary(BinaryOp::LtSVecI8x16)"),
+ ("i8x16.lt_u", "makeBinary(BinaryOp::LtUVecI8x16)"),
+ ("i8x16.gt_s", "makeBinary(BinaryOp::GtSVecI8x16)"),
+ ("i8x16.gt_u", "makeBinary(BinaryOp::GtUVecI8x16)"),
+ ("i8x16.le_s", "makeBinary(BinaryOp::LeSVecI8x16)"),
+ ("i8x16.le_u", "makeBinary(BinaryOp::LeUVecI8x16)"),
+ ("i8x16.ge_s", "makeBinary(BinaryOp::GeSVecI8x16)"),
+ ("i8x16.ge_u", "makeBinary(BinaryOp::GeUVecI8x16)"),
+ ("i16x8.eq", "makeBinary(BinaryOp::EqVecI16x8)"),
+ ("i16x8.ne", "makeBinary(BinaryOp::NeVecI16x8)"),
+ ("i16x8.lt_s", "makeBinary(BinaryOp::LtSVecI16x8)"),
+ ("i16x8.lt_u", "makeBinary(BinaryOp::LtUVecI16x8)"),
+ ("i16x8.gt_s", "makeBinary(BinaryOp::GtSVecI16x8)"),
+ ("i16x8.gt_u", "makeBinary(BinaryOp::GtUVecI16x8)"),
+ ("i16x8.le_s", "makeBinary(BinaryOp::LeSVecI16x8)"),
+ ("i16x8.le_u", "makeBinary(BinaryOp::LeUVecI16x8)"),
+ ("i16x8.ge_s", "makeBinary(BinaryOp::GeSVecI16x8)"),
+ ("i16x8.ge_u", "makeBinary(BinaryOp::GeUVecI16x8)"),
+ ("i32x4.eq", "makeBinary(BinaryOp::EqVecI32x4)"),
+ ("i32x4.ne", "makeBinary(BinaryOp::NeVecI32x4)"),
+ ("i32x4.lt_s", "makeBinary(BinaryOp::LtSVecI32x4)"),
+ ("i32x4.lt_u", "makeBinary(BinaryOp::LtUVecI32x4)"),
+ ("i32x4.gt_s", "makeBinary(BinaryOp::GtSVecI32x4)"),
+ ("i32x4.gt_u", "makeBinary(BinaryOp::GtUVecI32x4)"),
+ ("i32x4.le_s", "makeBinary(BinaryOp::LeSVecI32x4)"),
+ ("i32x4.le_u", "makeBinary(BinaryOp::LeUVecI32x4)"),
+ ("i32x4.ge_s", "makeBinary(BinaryOp::GeSVecI32x4)"),
+ ("i32x4.ge_u", "makeBinary(BinaryOp::GeUVecI32x4)"),
+ ("i64x2.eq", "makeBinary(BinaryOp::EqVecI64x2)"),
+ ("i64x2.ne", "makeBinary(BinaryOp::NeVecI64x2)"),
+ ("i64x2.lt_s", "makeBinary(BinaryOp::LtSVecI64x2)"),
+ ("i64x2.gt_s", "makeBinary(BinaryOp::GtSVecI64x2)"),
+ ("i64x2.le_s", "makeBinary(BinaryOp::LeSVecI64x2)"),
+ ("i64x2.ge_s", "makeBinary(BinaryOp::GeSVecI64x2)"),
+ ("f32x4.eq", "makeBinary(BinaryOp::EqVecF32x4)"),
+ ("f32x4.ne", "makeBinary(BinaryOp::NeVecF32x4)"),
+ ("f32x4.lt", "makeBinary(BinaryOp::LtVecF32x4)"),
+ ("f32x4.gt", "makeBinary(BinaryOp::GtVecF32x4)"),
+ ("f32x4.le", "makeBinary(BinaryOp::LeVecF32x4)"),
+ ("f32x4.ge", "makeBinary(BinaryOp::GeVecF32x4)"),
+ ("f64x2.eq", "makeBinary(BinaryOp::EqVecF64x2)"),
+ ("f64x2.ne", "makeBinary(BinaryOp::NeVecF64x2)"),
+ ("f64x2.lt", "makeBinary(BinaryOp::LtVecF64x2)"),
+ ("f64x2.gt", "makeBinary(BinaryOp::GtVecF64x2)"),
+ ("f64x2.le", "makeBinary(BinaryOp::LeVecF64x2)"),
+ ("f64x2.ge", "makeBinary(BinaryOp::GeVecF64x2)"),
+ ("v128.not", "makeUnary(UnaryOp::NotVec128)"),
+ ("v128.and", "makeBinary(BinaryOp::AndVec128)"),
+ ("v128.or", "makeBinary(BinaryOp::OrVec128)"),
+ ("v128.xor", "makeBinary(BinaryOp::XorVec128)"),
+ ("v128.andnot", "makeBinary(BinaryOp::AndNotVec128)"),
+ ("v128.any_true", "makeUnary(UnaryOp::AnyTrueVec128)"),
+ ("v128.bitselect", "makeSIMDTernary(SIMDTernaryOp::Bitselect)"),
+ ("v128.load8_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Load8LaneVec128, 1)"),
+ ("v128.load16_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Load16LaneVec128, 2)"),
+ ("v128.load32_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Load32LaneVec128, 4)"),
+ ("v128.load64_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Load64LaneVec128, 8)"),
+ ("v128.store8_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Store8LaneVec128, 1)"),
+ ("v128.store16_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Store16LaneVec128, 2)"),
+ ("v128.store32_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Store32LaneVec128, 4)"),
+ ("v128.store64_lane", "makeSIMDLoadStoreLane(SIMDLoadStoreLaneOp::Store64LaneVec128, 8)"),
+ ("i8x16.popcnt", "makeUnary(UnaryOp::PopcntVecI8x16)"),
+ ("i8x16.abs", "makeUnary(UnaryOp::AbsVecI8x16)"),
+ ("i8x16.neg", "makeUnary(UnaryOp::NegVecI8x16)"),
+ ("i8x16.all_true", "makeUnary(UnaryOp::AllTrueVecI8x16)"),
+ ("i8x16.bitmask", "makeUnary(UnaryOp::BitmaskVecI8x16)"),
+ ("i8x16.shl", "makeSIMDShift(SIMDShiftOp::ShlVecI8x16)"),
+ ("i8x16.shr_s", "makeSIMDShift(SIMDShiftOp::ShrSVecI8x16)"),
+ ("i8x16.shr_u", "makeSIMDShift(SIMDShiftOp::ShrUVecI8x16)"),
+ ("i8x16.add", "makeBinary(BinaryOp::AddVecI8x16)"),
+ ("i8x16.add_sat_s", "makeBinary(BinaryOp::AddSatSVecI8x16)"),
+ ("i8x16.add_sat_u", "makeBinary(BinaryOp::AddSatUVecI8x16)"),
+ ("i8x16.sub", "makeBinary(BinaryOp::SubVecI8x16)"),
+ ("i8x16.sub_sat_s", "makeBinary(BinaryOp::SubSatSVecI8x16)"),
+ ("i8x16.sub_sat_u", "makeBinary(BinaryOp::SubSatUVecI8x16)"),
+ ("i8x16.min_s", "makeBinary(BinaryOp::MinSVecI8x16)"),
+ ("i8x16.min_u", "makeBinary(BinaryOp::MinUVecI8x16)"),
+ ("i8x16.max_s", "makeBinary(BinaryOp::MaxSVecI8x16)"),
+ ("i8x16.max_u", "makeBinary(BinaryOp::MaxUVecI8x16)"),
+ ("i8x16.avgr_u", "makeBinary(BinaryOp::AvgrUVecI8x16)"),
+ ("i16x8.abs", "makeUnary(UnaryOp::AbsVecI16x8)"),
+ ("i16x8.neg", "makeUnary(UnaryOp::NegVecI16x8)"),
+ ("i16x8.all_true", "makeUnary(UnaryOp::AllTrueVecI16x8)"),
+ ("i16x8.bitmask", "makeUnary(UnaryOp::BitmaskVecI16x8)"),
+ ("i16x8.shl", "makeSIMDShift(SIMDShiftOp::ShlVecI16x8)"),
+ ("i16x8.shr_s", "makeSIMDShift(SIMDShiftOp::ShrSVecI16x8)"),
+ ("i16x8.shr_u", "makeSIMDShift(SIMDShiftOp::ShrUVecI16x8)"),
+ ("i16x8.add", "makeBinary(BinaryOp::AddVecI16x8)"),
+ ("i16x8.add_sat_s", "makeBinary(BinaryOp::AddSatSVecI16x8)"),
+ ("i16x8.add_sat_u", "makeBinary(BinaryOp::AddSatUVecI16x8)"),
+ ("i16x8.sub", "makeBinary(BinaryOp::SubVecI16x8)"),
+ ("i16x8.sub_sat_s", "makeBinary(BinaryOp::SubSatSVecI16x8)"),
+ ("i16x8.sub_sat_u", "makeBinary(BinaryOp::SubSatUVecI16x8)"),
+ ("i16x8.mul", "makeBinary(BinaryOp::MulVecI16x8)"),
+ ("i16x8.min_s", "makeBinary(BinaryOp::MinSVecI16x8)"),
+ ("i16x8.min_u", "makeBinary(BinaryOp::MinUVecI16x8)"),
+ ("i16x8.max_s", "makeBinary(BinaryOp::MaxSVecI16x8)"),
+ ("i16x8.max_u", "makeBinary(BinaryOp::MaxUVecI16x8)"),
+ ("i16x8.avgr_u", "makeBinary(BinaryOp::AvgrUVecI16x8)"),
+ ("i16x8.q15mulr_sat_s", "makeBinary(BinaryOp::Q15MulrSatSVecI16x8)"),
+ ("i16x8.extmul_low_i8x16_s", "makeBinary(BinaryOp::ExtMulLowSVecI16x8)"),
+ ("i16x8.extmul_high_i8x16_s", "makeBinary(BinaryOp::ExtMulHighSVecI16x8)"),
+ ("i16x8.extmul_low_i8x16_u", "makeBinary(BinaryOp::ExtMulLowUVecI16x8)"),
+ ("i16x8.extmul_high_i8x16_u", "makeBinary(BinaryOp::ExtMulHighUVecI16x8)"),
+ ("i32x4.abs", "makeUnary(UnaryOp::AbsVecI32x4)"),
+ ("i32x4.neg", "makeUnary(UnaryOp::NegVecI32x4)"),
+ ("i32x4.all_true", "makeUnary(UnaryOp::AllTrueVecI32x4)"),
+ ("i32x4.bitmask", "makeUnary(UnaryOp::BitmaskVecI32x4)"),
+ ("i32x4.shl", "makeSIMDShift(SIMDShiftOp::ShlVecI32x4)"),
+ ("i32x4.shr_s", "makeSIMDShift(SIMDShiftOp::ShrSVecI32x4)"),
+ ("i32x4.shr_u", "makeSIMDShift(SIMDShiftOp::ShrUVecI32x4)"),
+ ("i32x4.add", "makeBinary(BinaryOp::AddVecI32x4)"),
+ ("i32x4.sub", "makeBinary(BinaryOp::SubVecI32x4)"),
+ ("i32x4.mul", "makeBinary(BinaryOp::MulVecI32x4)"),
+ ("i32x4.min_s", "makeBinary(BinaryOp::MinSVecI32x4)"),
+ ("i32x4.min_u", "makeBinary(BinaryOp::MinUVecI32x4)"),
+ ("i32x4.max_s", "makeBinary(BinaryOp::MaxSVecI32x4)"),
+ ("i32x4.max_u", "makeBinary(BinaryOp::MaxUVecI32x4)"),
+ ("i32x4.dot_i16x8_s", "makeBinary(BinaryOp::DotSVecI16x8ToVecI32x4)"),
+ ("i32x4.extmul_low_i16x8_s", "makeBinary(BinaryOp::ExtMulLowSVecI32x4)"),
+ ("i32x4.extmul_high_i16x8_s", "makeBinary(BinaryOp::ExtMulHighSVecI32x4)"),
+ ("i32x4.extmul_low_i16x8_u", "makeBinary(BinaryOp::ExtMulLowUVecI32x4)"),
+ ("i32x4.extmul_high_i16x8_u", "makeBinary(BinaryOp::ExtMulHighUVecI32x4)"),
+ ("i64x2.abs", "makeUnary(UnaryOp::AbsVecI64x2)"),
+ ("i64x2.neg", "makeUnary(UnaryOp::NegVecI64x2)"),
+ ("i64x2.all_true", "makeUnary(UnaryOp::AllTrueVecI64x2)"),
+ ("i64x2.bitmask", "makeUnary(UnaryOp::BitmaskVecI64x2)"),
+ ("i64x2.shl", "makeSIMDShift(SIMDShiftOp::ShlVecI64x2)"),
+ ("i64x2.shr_s", "makeSIMDShift(SIMDShiftOp::ShrSVecI64x2)"),
+ ("i64x2.shr_u", "makeSIMDShift(SIMDShiftOp::ShrUVecI64x2)"),
+ ("i64x2.add", "makeBinary(BinaryOp::AddVecI64x2)"),
+ ("i64x2.sub", "makeBinary(BinaryOp::SubVecI64x2)"),
+ ("i64x2.mul", "makeBinary(BinaryOp::MulVecI64x2)"),
+ ("i64x2.extmul_low_i32x4_s", "makeBinary(BinaryOp::ExtMulLowSVecI64x2)"),
+ ("i64x2.extmul_high_i32x4_s", "makeBinary(BinaryOp::ExtMulHighSVecI64x2)"),
+ ("i64x2.extmul_low_i32x4_u", "makeBinary(BinaryOp::ExtMulLowUVecI64x2)"),
+ ("i64x2.extmul_high_i32x4_u", "makeBinary(BinaryOp::ExtMulHighUVecI64x2)"),
+ ("f32x4.abs", "makeUnary(UnaryOp::AbsVecF32x4)"),
+ ("f32x4.neg", "makeUnary(UnaryOp::NegVecF32x4)"),
+ ("f32x4.sqrt", "makeUnary(UnaryOp::SqrtVecF32x4)"),
+ ("f32x4.add", "makeBinary(BinaryOp::AddVecF32x4)"),
+ ("f32x4.sub", "makeBinary(BinaryOp::SubVecF32x4)"),
+ ("f32x4.mul", "makeBinary(BinaryOp::MulVecF32x4)"),
+ ("f32x4.div", "makeBinary(BinaryOp::DivVecF32x4)"),
+ ("f32x4.min", "makeBinary(BinaryOp::MinVecF32x4)"),
+ ("f32x4.max", "makeBinary(BinaryOp::MaxVecF32x4)"),
+ ("f32x4.pmin", "makeBinary(BinaryOp::PMinVecF32x4)"),
+ ("f32x4.pmax", "makeBinary(BinaryOp::PMaxVecF32x4)"),
+ ("f32x4.ceil", "makeUnary(UnaryOp::CeilVecF32x4)"),
+ ("f32x4.floor", "makeUnary(UnaryOp::FloorVecF32x4)"),
+ ("f32x4.trunc", "makeUnary(UnaryOp::TruncVecF32x4)"),
+ ("f32x4.nearest", "makeUnary(UnaryOp::NearestVecF32x4)"),
+ ("f64x2.abs", "makeUnary(UnaryOp::AbsVecF64x2)"),
+ ("f64x2.neg", "makeUnary(UnaryOp::NegVecF64x2)"),
+ ("f64x2.sqrt", "makeUnary(UnaryOp::SqrtVecF64x2)"),
+ ("f64x2.add", "makeBinary(BinaryOp::AddVecF64x2)"),
+ ("f64x2.sub", "makeBinary(BinaryOp::SubVecF64x2)"),
+ ("f64x2.mul", "makeBinary(BinaryOp::MulVecF64x2)"),
+ ("f64x2.div", "makeBinary(BinaryOp::DivVecF64x2)"),
+ ("f64x2.min", "makeBinary(BinaryOp::MinVecF64x2)"),
+ ("f64x2.max", "makeBinary(BinaryOp::MaxVecF64x2)"),
+ ("f64x2.pmin", "makeBinary(BinaryOp::PMinVecF64x2)"),
+ ("f64x2.pmax", "makeBinary(BinaryOp::PMaxVecF64x2)"),
+ ("f64x2.ceil", "makeUnary(UnaryOp::CeilVecF64x2)"),
+ ("f64x2.floor", "makeUnary(UnaryOp::FloorVecF64x2)"),
+ ("f64x2.trunc", "makeUnary(UnaryOp::TruncVecF64x2)"),
+ ("f64x2.nearest", "makeUnary(UnaryOp::NearestVecF64x2)"),
+ ("i32x4.trunc_sat_f32x4_s", "makeUnary(UnaryOp::TruncSatSVecF32x4ToVecI32x4)"),
+ ("i32x4.trunc_sat_f32x4_u", "makeUnary(UnaryOp::TruncSatUVecF32x4ToVecI32x4)"),
+ ("f32x4.convert_i32x4_s", "makeUnary(UnaryOp::ConvertSVecI32x4ToVecF32x4)"),
+ ("f32x4.convert_i32x4_u", "makeUnary(UnaryOp::ConvertUVecI32x4ToVecF32x4)"),
+ ("v128.load8_splat", "makeSIMDLoad(SIMDLoadOp::Load8SplatVec128, 1)"),
+ ("v128.load16_splat", "makeSIMDLoad(SIMDLoadOp::Load16SplatVec128, 2)"),
+ ("v128.load32_splat", "makeSIMDLoad(SIMDLoadOp::Load32SplatVec128, 4)"),
+ ("v128.load64_splat", "makeSIMDLoad(SIMDLoadOp::Load64SplatVec128, 8)"),
+ ("v128.load8x8_s", "makeSIMDLoad(SIMDLoadOp::Load8x8SVec128, 8)"),
+ ("v128.load8x8_u", "makeSIMDLoad(SIMDLoadOp::Load8x8UVec128, 8)"),
+ ("v128.load16x4_s", "makeSIMDLoad(SIMDLoadOp::Load16x4SVec128, 8)"),
+ ("v128.load16x4_u", "makeSIMDLoad(SIMDLoadOp::Load16x4UVec128, 8)"),
+ ("v128.load32x2_s", "makeSIMDLoad(SIMDLoadOp::Load32x2SVec128, 8)"),
+ ("v128.load32x2_u", "makeSIMDLoad(SIMDLoadOp::Load32x2UVec128, 8)"),
+ ("v128.load32_zero", "makeSIMDLoad(SIMDLoadOp::Load32ZeroVec128, 4)"),
+ ("v128.load64_zero", "makeSIMDLoad(SIMDLoadOp::Load64ZeroVec128, 8)"),
+ ("i8x16.narrow_i16x8_s", "makeBinary(BinaryOp::NarrowSVecI16x8ToVecI8x16)"),
+ ("i8x16.narrow_i16x8_u", "makeBinary(BinaryOp::NarrowUVecI16x8ToVecI8x16)"),
+ ("i16x8.narrow_i32x4_s", "makeBinary(BinaryOp::NarrowSVecI32x4ToVecI16x8)"),
+ ("i16x8.narrow_i32x4_u", "makeBinary(BinaryOp::NarrowUVecI32x4ToVecI16x8)"),
+ ("i16x8.extend_low_i8x16_s", "makeUnary(UnaryOp::ExtendLowSVecI8x16ToVecI16x8)"),
+ ("i16x8.extend_high_i8x16_s", "makeUnary(UnaryOp::ExtendHighSVecI8x16ToVecI16x8)"),
+ ("i16x8.extend_low_i8x16_u", "makeUnary(UnaryOp::ExtendLowUVecI8x16ToVecI16x8)"),
+ ("i16x8.extend_high_i8x16_u", "makeUnary(UnaryOp::ExtendHighUVecI8x16ToVecI16x8)"),
+ ("i32x4.extend_low_i16x8_s", "makeUnary(UnaryOp::ExtendLowSVecI16x8ToVecI32x4)"),
+ ("i32x4.extend_high_i16x8_s", "makeUnary(UnaryOp::ExtendHighSVecI16x8ToVecI32x4)"),
+ ("i32x4.extend_low_i16x8_u", "makeUnary(UnaryOp::ExtendLowUVecI16x8ToVecI32x4)"),
+ ("i32x4.extend_high_i16x8_u", "makeUnary(UnaryOp::ExtendHighUVecI16x8ToVecI32x4)"),
+ ("i64x2.extend_low_i32x4_s", "makeUnary(UnaryOp::ExtendLowSVecI32x4ToVecI64x2)"),
+ ("i64x2.extend_high_i32x4_s", "makeUnary(UnaryOp::ExtendHighSVecI32x4ToVecI64x2)"),
+ ("i64x2.extend_low_i32x4_u", "makeUnary(UnaryOp::ExtendLowUVecI32x4ToVecI64x2)"),
+ ("i64x2.extend_high_i32x4_u", "makeUnary(UnaryOp::ExtendHighUVecI32x4ToVecI64x2)"),
+ ("i8x16.swizzle", "makeBinary(BinaryOp::SwizzleVecI8x16)"),
+ ("i16x8.extadd_pairwise_i8x16_s", "makeUnary(UnaryOp::ExtAddPairwiseSVecI8x16ToI16x8)"),
+ ("i16x8.extadd_pairwise_i8x16_u", "makeUnary(UnaryOp::ExtAddPairwiseUVecI8x16ToI16x8)"),
+ ("i32x4.extadd_pairwise_i16x8_s", "makeUnary(UnaryOp::ExtAddPairwiseSVecI16x8ToI32x4)"),
+ ("i32x4.extadd_pairwise_i16x8_u", "makeUnary(UnaryOp::ExtAddPairwiseUVecI16x8ToI32x4)"),
+ ("f64x2.convert_low_i32x4_s", "makeUnary(UnaryOp::ConvertLowSVecI32x4ToVecF64x2)"),
+ ("f64x2.convert_low_i32x4_u", "makeUnary(UnaryOp::ConvertLowUVecI32x4ToVecF64x2)"),
+ ("i32x4.trunc_sat_f64x2_s_zero", "makeUnary(UnaryOp::TruncSatZeroSVecF64x2ToVecI32x4)"),
+ ("i32x4.trunc_sat_f64x2_u_zero", "makeUnary(UnaryOp::TruncSatZeroUVecF64x2ToVecI32x4)"),
+ ("f32x4.demote_f64x2_zero", "makeUnary(UnaryOp::DemoteZeroVecF64x2ToVecF32x4)"),
+ ("f64x2.promote_low_f32x4", "makeUnary(UnaryOp::PromoteLowVecF32x4ToVecF64x2)"),
# relaxed SIMD ops
- ("i8x16.relaxed_swizzle", "makeBinary(s, BinaryOp::RelaxedSwizzleVecI8x16)"),
- ("i32x4.relaxed_trunc_f32x4_s", "makeUnary(s, UnaryOp::RelaxedTruncSVecF32x4ToVecI32x4)"),
- ("i32x4.relaxed_trunc_f32x4_u", "makeUnary(s, UnaryOp::RelaxedTruncUVecF32x4ToVecI32x4)"),
- ("i32x4.relaxed_trunc_f64x2_s_zero", "makeUnary(s, UnaryOp::RelaxedTruncZeroSVecF64x2ToVecI32x4)"),
- ("i32x4.relaxed_trunc_f64x2_u_zero", "makeUnary(s, UnaryOp::RelaxedTruncZeroUVecF64x2ToVecI32x4)"),
- ("f32x4.relaxed_fma", "makeSIMDTernary(s, SIMDTernaryOp::RelaxedFmaVecF32x4)"),
- ("f32x4.relaxed_fms", "makeSIMDTernary(s, SIMDTernaryOp::RelaxedFmsVecF32x4)"),
- ("f64x2.relaxed_fma", "makeSIMDTernary(s, SIMDTernaryOp::RelaxedFmaVecF64x2)"),
- ("f64x2.relaxed_fms", "makeSIMDTernary(s, SIMDTernaryOp::RelaxedFmsVecF64x2)"),
- ("i8x16.laneselect", "makeSIMDTernary(s, SIMDTernaryOp::LaneselectI8x16)"),
- ("i16x8.laneselect", "makeSIMDTernary(s, SIMDTernaryOp::LaneselectI16x8)"),
- ("i32x4.laneselect", "makeSIMDTernary(s, SIMDTernaryOp::LaneselectI32x4)"),
- ("i64x2.laneselect", "makeSIMDTernary(s, SIMDTernaryOp::LaneselectI64x2)"),
- ("f32x4.relaxed_min", "makeBinary(s, BinaryOp::RelaxedMinVecF32x4)"),
- ("f32x4.relaxed_max", "makeBinary(s, BinaryOp::RelaxedMaxVecF32x4)"),
- ("f64x2.relaxed_min", "makeBinary(s, BinaryOp::RelaxedMinVecF64x2)"),
- ("f64x2.relaxed_max", "makeBinary(s, BinaryOp::RelaxedMaxVecF64x2)"),
- ("i16x8.relaxed_q15mulr_s", "makeBinary(s, BinaryOp::RelaxedQ15MulrSVecI16x8)"),
- ("i16x8.dot_i8x16_i7x16_s", "makeBinary(s, BinaryOp::DotI8x16I7x16SToVecI16x8)"),
- ("i32x4.dot_i8x16_i7x16_add_s", "makeSIMDTernary(s, SIMDTernaryOp::DotI8x16I7x16AddSToVecI32x4)"),
+ ("i8x16.relaxed_swizzle", "makeBinary(BinaryOp::RelaxedSwizzleVecI8x16)"),
+ ("i32x4.relaxed_trunc_f32x4_s", "makeUnary(UnaryOp::RelaxedTruncSVecF32x4ToVecI32x4)"),
+ ("i32x4.relaxed_trunc_f32x4_u", "makeUnary(UnaryOp::RelaxedTruncUVecF32x4ToVecI32x4)"),
+ ("i32x4.relaxed_trunc_f64x2_s_zero", "makeUnary(UnaryOp::RelaxedTruncZeroSVecF64x2ToVecI32x4)"),
+ ("i32x4.relaxed_trunc_f64x2_u_zero", "makeUnary(UnaryOp::RelaxedTruncZeroUVecF64x2ToVecI32x4)"),
+ ("f32x4.relaxed_fma", "makeSIMDTernary(SIMDTernaryOp::RelaxedFmaVecF32x4)"),
+ ("f32x4.relaxed_fms", "makeSIMDTernary(SIMDTernaryOp::RelaxedFmsVecF32x4)"),
+ ("f64x2.relaxed_fma", "makeSIMDTernary(SIMDTernaryOp::RelaxedFmaVecF64x2)"),
+ ("f64x2.relaxed_fms", "makeSIMDTernary(SIMDTernaryOp::RelaxedFmsVecF64x2)"),
+ ("i8x16.laneselect", "makeSIMDTernary(SIMDTernaryOp::LaneselectI8x16)"),
+ ("i16x8.laneselect", "makeSIMDTernary(SIMDTernaryOp::LaneselectI16x8)"),
+ ("i32x4.laneselect", "makeSIMDTernary(SIMDTernaryOp::LaneselectI32x4)"),
+ ("i64x2.laneselect", "makeSIMDTernary(SIMDTernaryOp::LaneselectI64x2)"),
+ ("f32x4.relaxed_min", "makeBinary(BinaryOp::RelaxedMinVecF32x4)"),
+ ("f32x4.relaxed_max", "makeBinary(BinaryOp::RelaxedMaxVecF32x4)"),
+ ("f64x2.relaxed_min", "makeBinary(BinaryOp::RelaxedMinVecF64x2)"),
+ ("f64x2.relaxed_max", "makeBinary(BinaryOp::RelaxedMaxVecF64x2)"),
+ ("i16x8.relaxed_q15mulr_s", "makeBinary(BinaryOp::RelaxedQ15MulrSVecI16x8)"),
+ ("i16x8.dot_i8x16_i7x16_s", "makeBinary(BinaryOp::DotI8x16I7x16SToVecI16x8)"),
+ ("i32x4.dot_i8x16_i7x16_add_s", "makeSIMDTernary(SIMDTernaryOp::DotI8x16I7x16AddSToVecI32x4)"),
# reference types instructions
- ("ref.null", "makeRefNull(s)"),
- ("ref.is_null", "makeRefIsNull(s)"),
- ("ref.func", "makeRefFunc(s)"),
- ("ref.eq", "makeRefEq(s)"),
+ ("ref.null", "makeRefNull()"),
+ ("ref.is_null", "makeRefIsNull()"),
+ ("ref.func", "makeRefFunc()"),
+ ("ref.eq", "makeRefEq()"),
# table instructions
- ("table.get", "makeTableGet(s)"),
- ("table.set", "makeTableSet(s)"),
- ("table.size", "makeTableSize(s)"),
- ("table.grow", "makeTableGrow(s)"),
- ("table.fill", "makeTableFill(s)"),
- ("table.copy", "makeTableCopy(s)"),
+ ("table.get", "makeTableGet()"),
+ ("table.set", "makeTableSet()"),
+ ("table.size", "makeTableSize()"),
+ ("table.grow", "makeTableGrow()"),
+ ("table.fill", "makeTableFill()"),
+ ("table.copy", "makeTableCopy()"),
# TODO:
# table.init
#
# exception handling instructions
- ("try", "makeTry(s)"),
- ("try_table", "makeTryTable(s)"),
- ("throw", "makeThrow(s)"),
- ("rethrow", "makeRethrow(s)"),
- ("throw_ref", "makeThrowRef(s)"),
+ ("try", "makeTry()"),
+ ("try_table", "makeTryTable()"),
+ ("throw", "makeThrow()"),
+ ("rethrow", "makeRethrow()"),
+ ("throw_ref", "makeThrowRef()"),
# Multivalue pseudoinstructions
- ("tuple.make", "makeTupleMake(s)"),
- ("tuple.extract", "makeTupleExtract(s)"),
- ("tuple.drop", "makeTupleDrop(s)"),
- ("pop", "makePop(s)"),
+ ("tuple.make", "makeTupleMake()"),
+ ("tuple.extract", "makeTupleExtract()"),
+ ("tuple.drop", "makeTupleDrop()"),
+ ("pop", "makePop()"),
# Typed function references instructions
- ("call_ref", "makeCallRef(s, /*isReturn=*/false)"),
- ("return_call_ref", "makeCallRef(s, /*isReturn=*/true)"),
+ ("call_ref", "makeCallRef(/*isReturn=*/false)"),
+ ("return_call_ref", "makeCallRef(/*isReturn=*/true)"),
# Typed continuations instructions
- ("cont.new", "makeContNew(s)"),
- ("cont.bind", "makeContBind(s)"),
- ("resume", "makeResume(s)"),
- ("suspend", "makeSuspend(s)"),
+ ("cont.new", "makeContNew()"),
+ ("cont.bind", "makeContBind()"),
+ ("resume", "makeResume()"),
+ ("suspend", "makeSuspend()"),
# GC
- ("i31.new", "makeRefI31(s)"), # deprecated
- ("ref.i31", "makeRefI31(s)"),
- ("i31.get_s", "makeI31Get(s, true)"),
- ("i31.get_u", "makeI31Get(s, false)"),
- ("ref.test", "makeRefTest(s)"),
- ("ref.cast", "makeRefCast(s)"),
- ("br_on_null", "makeBrOnNull(s)"),
- ("br_on_non_null", "makeBrOnNull(s, true)"),
- ("br_on_cast", "makeBrOnCast(s)"),
- ("br_on_cast_fail", "makeBrOnCast(s, true)"),
- ("struct.new", "makeStructNew(s, false)"),
- ("struct.new_default", "makeStructNew(s, true)"),
- ("struct.get", "makeStructGet(s)"),
- ("struct.get_s", "makeStructGet(s, true)"),
- ("struct.get_u", "makeStructGet(s, false)"),
- ("struct.set", "makeStructSet(s)"),
- ("array.new", "makeArrayNew(s, false)"),
- ("array.new_default", "makeArrayNew(s, true)"),
- ("array.new_data", "makeArrayNewData(s)"),
- ("array.new_elem", "makeArrayNewElem(s)"),
- ("array.new_fixed", "makeArrayNewFixed(s)"),
- ("array.get", "makeArrayGet(s)"),
- ("array.get_s", "makeArrayGet(s, true)"),
- ("array.get_u", "makeArrayGet(s, false)"),
- ("array.set", "makeArraySet(s)"),
- ("array.len", "makeArrayLen(s)"),
- ("array.copy", "makeArrayCopy(s)"),
- ("array.fill", "makeArrayFill(s)"),
- ("array.init_data", "makeArrayInitData(s)"),
- ("array.init_elem", "makeArrayInitElem(s)"),
- ("ref.as_non_null", "makeRefAs(s, RefAsNonNull)"),
- ("extern.internalize", "makeRefAs(s, ExternInternalize)"),
- ("extern.externalize", "makeRefAs(s, ExternExternalize)"),
- ("string.new_lossy_utf8_array", "makeStringNew(s, StringNewLossyUTF8Array)"),
- ("string.new_wtf16_array", "makeStringNew(s, StringNewWTF16Array)"),
- ("string.from_code_point", "makeStringNew(s, StringNewFromCodePoint)"),
- ("string.const", "makeStringConst(s)"),
- ("string.measure_utf8", "makeStringMeasure(s, StringMeasureUTF8)"),
- ("string.measure_wtf16", "makeStringMeasure(s, StringMeasureWTF16)"),
- ("stringview_wtf16.length", "makeStringMeasure(s, StringMeasureWTF16)"),
- ("string.encode_lossy_utf8_array", "makeStringEncode(s, StringEncodeLossyUTF8Array)"),
- ("string.encode_wtf16_array", "makeStringEncode(s, StringEncodeWTF16Array)"),
- ("string.concat", "makeStringConcat(s)"),
- ("string.eq", "makeStringEq(s, StringEqEqual)"),
- ("string.compare", "makeStringEq(s, StringEqCompare)"),
- ("stringview_wtf16.get_codeunit", "makeStringWTF16Get(s)"),
- ("stringview_wtf16.slice", "makeStringSliceWTF(s)"),
+ ("i31.new", "makeRefI31()"), # deprecated
+ ("ref.i31", "makeRefI31()"),
+ ("i31.get_s", "makeI31Get(true)"),
+ ("i31.get_u", "makeI31Get(false)"),
+ ("ref.test", "makeRefTest()"),
+ ("ref.cast", "makeRefCast()"),
+ ("br_on_null", "makeBrOnNull()"),
+ ("br_on_non_null", "makeBrOnNull(true)"),
+ ("br_on_cast", "makeBrOnCast()"),
+ ("br_on_cast_fail", "makeBrOnCast(true)"),
+ ("struct.new", "makeStructNew(false)"),
+ ("struct.new_default", "makeStructNew(true)"),
+ ("struct.get", "makeStructGet()"),
+ ("struct.get_s", "makeStructGet(true)"),
+ ("struct.get_u", "makeStructGet(false)"),
+ ("struct.set", "makeStructSet()"),
+ ("array.new", "makeArrayNew(false)"),
+ ("array.new_default", "makeArrayNew(true)"),
+ ("array.new_data", "makeArrayNewData()"),
+ ("array.new_elem", "makeArrayNewElem()"),
+ ("array.new_fixed", "makeArrayNewFixed()"),
+ ("array.get", "makeArrayGet()"),
+ ("array.get_s", "makeArrayGet(true)"),
+ ("array.get_u", "makeArrayGet(false)"),
+ ("array.set", "makeArraySet()"),
+ ("array.len", "makeArrayLen()"),
+ ("array.copy", "makeArrayCopy()"),
+ ("array.fill", "makeArrayFill()"),
+ ("array.init_data", "makeArrayInitData()"),
+ ("array.init_elem", "makeArrayInitElem()"),
+ ("ref.as_non_null", "makeRefAs(RefAsNonNull)"),
+ ("extern.internalize", "makeRefAs(ExternInternalize)"),
+ ("extern.externalize", "makeRefAs(ExternExternalize)"),
+ ("string.new_lossy_utf8_array", "makeStringNew(StringNewLossyUTF8Array)"),
+ ("string.new_wtf16_array", "makeStringNew(StringNewWTF16Array)"),
+ ("string.from_code_point", "makeStringNew(StringNewFromCodePoint)"),
+ ("string.const", "makeStringConst()"),
+ ("string.measure_utf8", "makeStringMeasure(StringMeasureUTF8)"),
+ ("string.measure_wtf16", "makeStringMeasure(StringMeasureWTF16)"),
+ ("stringview_wtf16.length", "makeStringMeasure(StringMeasureWTF16)"),
+ ("string.encode_lossy_utf8_array", "makeStringEncode(StringEncodeLossyUTF8Array)"),
+ ("string.encode_wtf16_array", "makeStringEncode(StringEncodeWTF16Array)"),
+ ("string.concat", "makeStringConcat()"),
+ ("string.eq", "makeStringEq(StringEqEqual)"),
+ ("string.compare", "makeStringEq(StringEqCompare)"),
+ ("stringview_wtf16.get_codeunit", "makeStringWTF16Get()"),
+ ("stringview_wtf16.slice", "makeStringSliceWTF()"),
# Ignored in input
- ("string.as_wtf16", "ignore(s)"),
+ ("string.as_wtf16", "ignore()"),
]
@@ -690,14 +690,14 @@ class Node:
self.do_insert(inst, inst, expr)
-def instruction_parser(new_parser=False):
+def instruction_parser():
"""Build a trie out of all the instructions, then emit it as C++ code."""
global instructions
trie = Node()
inst_length = 0
for inst, expr in instructions:
- if new_parser and inst in {"block", "loop", "if", "try", "then",
- "else", "try_table"}:
+ if inst in {"block", "loop", "if", "try", "then",
+ "else", "try_table"}:
# These are either control flow handled manually or not real
# instructions. Skip them.
continue
@@ -706,27 +706,20 @@ def instruction_parser(new_parser=False):
printer = CodePrinter()
- if new_parser:
- printer.print_line("auto op = *keyword;")
- else:
- printer.print_line("using namespace std::string_view_literals;")
- printer.print_line("auto op = s[0]->str().str;")
-
+ printer.print_line("auto op = *keyword;")
printer.print_line("char buf[{}] = {{}};".format(inst_length + 1))
printer.print_line("memcpy(buf, op.data(), op.size());")
def print_leaf(expr, inst):
- if new_parser:
+ if "()" in expr:
expr = expr.replace("()", "(ctx, pos, annotations)")
- expr = expr.replace("(s", "(ctx, pos, annotations")
- printer.print_line("if (op == \"{inst}\"sv) {{".format(inst=inst))
- with printer.indent():
- printer.print_line("CHECK_ERR({expr});".format(expr=expr))
- printer.print_line("return Ok{};")
- printer.print_line("}")
else:
- printer.print_line("if (op == \"{inst}\"sv) {{ return {expr}; }}"
- .format(inst=inst, expr=expr))
+ expr = expr.replace("(", "(ctx, pos, annotations, ")
+ printer.print_line("if (op == \"{inst}\"sv) {{".format(inst=inst))
+ with printer.indent():
+ printer.print_line("CHECK_ERR({expr});".format(expr=expr))
+ printer.print_line("return Ok{};")
+ printer.print_line("}")
printer.print_line("goto parse_error;")
def emit(node, idx=0):
@@ -755,10 +748,7 @@ def instruction_parser(new_parser=False):
emit(trie)
printer.print_line("parse_error:")
with printer.indent():
- if new_parser:
- printer.print_line("return ctx.in.err(pos, \"unrecognized instruction\");")
- else:
- printer.print_line("throw ParseException(std::string(op), s.line, s.col);")
+ printer.print_line("return ctx.in.err(pos, \"unrecognized instruction\");")
def print_header():
@@ -770,22 +760,13 @@ def print_footer():
print("\n// clang-format on")
-def generate_with_guard(generator, guard):
- print("#ifdef {}".format(guard))
- print("#undef {}".format(guard))
- generator()
- print("#endif // {}".format(guard))
-
-
def main():
if sys.version_info.major != 3:
import datetime
print("It's " + str(datetime.datetime.now().year) + "! Use Python 3!")
sys.exit(1)
print_header()
- generate_with_guard(instruction_parser, "INSTRUCTION_PARSER")
- print()
- generate_with_guard(lambda: instruction_parser(True), "NEW_INSTRUCTION_PARSER")
+ instruction_parser()
print_footer()