summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2022-10-20 14:24:11 -0500
committerGitHub <noreply@github.com>2022-10-20 12:24:11 -0700
commit7144c922f1cd19a4c55c603c7f57f224e9ec4975 (patch)
tree8cd37df44eefbb492a528f50cfdb1afc4b5a2a5a /scripts
parentaeed16c568700a5340138cc4c43e5818e8a413fb (diff)
downloadbinaryen-7144c922f1cd19a4c55c603c7f57f224e9ec4975.tar.gz
binaryen-7144c922f1cd19a4c55c603c7f57f224e9ec4975.tar.bz2
binaryen-7144c922f1cd19a4c55c603c7f57f224e9ec4975.zip
[NFC] Avoid re-parsing instruction names (#5171)
Since gen-s-parser.py is essentially a giant table mapping instruction names to the information necessary to construct the corresponding IR nodes, there should be no need to further parse instruction names after the code generated by gen-s-parser.py runs. However, memory instruction parsing still parsed instruction names to get information such as size and default alignment. The new parser does not have the ability to parse that information out of instruction names, so put it in the gen-s-parser.py table instead.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/gen-s-parser.py176
1 files changed, 88 insertions, 88 deletions
diff --git a/scripts/gen-s-parser.py b/scripts/gen-s-parser.py
index 4a701680d..e2759b2eb 100755
--- a/scripts/gen-s-parser.py
+++ b/scripts/gen-s-parser.py
@@ -43,29 +43,29 @@ instructions = [
("data.drop", "makeDataDrop(s)"),
("memory.copy", "makeMemoryCopy(s)"),
("memory.fill", "makeMemoryFill(s)"),
- ("i32.load", "makeLoad(s, Type::i32, /*isAtomic=*/false)"),
- ("i64.load", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("f32.load", "makeLoad(s, Type::f32, /*isAtomic=*/false)"),
- ("f64.load", "makeLoad(s, Type::f64, /*isAtomic=*/false)"),
- ("i32.load8_s", "makeLoad(s, Type::i32, /*isAtomic=*/false)"),
- ("i32.load8_u", "makeLoad(s, Type::i32, /*isAtomic=*/false)"),
- ("i32.load16_s", "makeLoad(s, Type::i32, /*isAtomic=*/false)"),
- ("i32.load16_u", "makeLoad(s, Type::i32, /*isAtomic=*/false)"),
- ("i64.load8_s", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.load8_u", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.load16_s", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.load16_u", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.load32_s", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.load32_u", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
- ("i32.store", "makeStore(s, Type::i32, /*isAtomic=*/false)"),
- ("i64.store", "makeStore(s, Type::i64, /*isAtomic=*/false)"),
- ("f32.store", "makeStore(s, Type::f32, /*isAtomic=*/false)"),
- ("f64.store", "makeStore(s, Type::f64, /*isAtomic=*/false)"),
- ("i32.store8", "makeStore(s, Type::i32, /*isAtomic=*/false)"),
- ("i32.store16", "makeStore(s, Type::i32, /*isAtomic=*/false)"),
- ("i64.store8", "makeStore(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.store16", "makeStore(s, Type::i64, /*isAtomic=*/false)"),
- ("i64.store32", "makeStore(s, Type::i64, /*isAtomic=*/false)"),
+ ("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)"),
@@ -205,69 +205,69 @@ instructions = [
("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, /*isAtomic=*/true)"),
- ("i32.atomic.load16_u", "makeLoad(s, Type::i32, /*isAtomic=*/true)"),
- ("i32.atomic.load", "makeLoad(s, Type::i32, /*isAtomic=*/true)"),
- ("i64.atomic.load8_u", "makeLoad(s, Type::i64, /*isAtomic=*/true)"),
- ("i64.atomic.load16_u", "makeLoad(s, Type::i64, /*isAtomic=*/true)"),
- ("i64.atomic.load32_u", "makeLoad(s, Type::i64, /*isAtomic=*/true)"),
- ("i64.atomic.load", "makeLoad(s, Type::i64, /*isAtomic=*/true)"),
- ("i32.atomic.store8", "makeStore(s, Type::i32, /*isAtomic=*/true)"),
- ("i32.atomic.store16", "makeStore(s, Type::i32, /*isAtomic=*/true)"),
- ("i32.atomic.store", "makeStore(s, Type::i32, /*isAtomic=*/true)"),
- ("i64.atomic.store8", "makeStore(s, Type::i64, /*isAtomic=*/true)"),
- ("i64.atomic.store16", "makeStore(s, Type::i64, /*isAtomic=*/true)"),
- ("i64.atomic.store32", "makeStore(s, Type::i64, /*isAtomic=*/true)"),
- ("i64.atomic.store", "makeStore(s, Type::i64, /*isAtomic=*/true)"),
- ("i32.atomic.rmw8.add_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.add_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.add", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.add_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.add_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.add_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.add", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i32.atomic.rmw8.sub_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.sub_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.sub", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.sub_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.sub_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.sub_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.sub", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i32.atomic.rmw8.and_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.and_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.and", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.and_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.and_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.and_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.and", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i32.atomic.rmw8.or_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.or_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.or", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.or_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.or_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.or_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.or", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i32.atomic.rmw8.xor_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.xor_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.xor", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.xor_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.xor_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.xor_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.xor", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i32.atomic.rmw8.xchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.xchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.xchg", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.xchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.xchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.xchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.xchg", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i32.atomic.rmw8.cmpxchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw16.cmpxchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i32.atomic.rmw.cmpxchg", "makeAtomicRMWOrCmpxchg(s, Type::i32)"),
- ("i64.atomic.rmw8.cmpxchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw16.cmpxchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw32.cmpxchg_u", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
- ("i64.atomic.rmw.cmpxchg", "makeAtomicRMWOrCmpxchg(s, Type::i64)"),
+ ("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)"),
# nontrapping float-to-int instructions
("i32.trunc_sat_f32_s", "makeUnary(s, UnaryOp::TruncSatSFloat32ToInt32)"),
("i32.trunc_sat_f32_u", "makeUnary(s, UnaryOp::TruncSatUFloat32ToInt32)"),
@@ -278,8 +278,8 @@ instructions = [
("i64.trunc_sat_f64_s", "makeUnary(s, UnaryOp::TruncSatSFloat64ToInt64)"),
("i64.trunc_sat_f64_u", "makeUnary(s, UnaryOp::TruncSatUFloat64ToInt64)"),
# SIMD ops
- ("v128.load", "makeLoad(s, Type::v128, /*isAtomic=*/false)"),
- ("v128.store", "makeStore(s, Type::v128, /*isAtomic=*/false)"),
+ ("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)"),