Skip to content

Commit f475fe6

Browse files
Switch representation
1 parent cb10047 commit f475fe6

27 files changed

Lines changed: 92 additions & 89 deletions

scripts/gen-s-parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@
146146
("i64.shr_u", "makeBinary(BinaryOp::ShrUInt64)"),
147147
("i64.rotl", "makeBinary(BinaryOp::RotLInt64)"),
148148
("i64.rotr", "makeBinary(BinaryOp::RotRInt64)"),
149-
("i64.add128", "makeWideIntBinary(WideIntBinaryOp::AddInt128)"),
149+
("i64.add128", "makeWideIntAddSub(WideIntAddSubOp::AddInt128)"),
150150
("f32.abs", "makeUnary(UnaryOp::AbsFloat32)"),
151151
("f32.neg", "makeUnary(UnaryOp::NegFloat32)"),
152152
("f32.ceil", "makeUnary(UnaryOp::CeilFloat32)"),

src/gen-s-parser.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3415,7 +3415,7 @@ switch (buf[0]) {
34153415
goto parse_error;
34163416
case '1':
34173417
if (op == "i64.add128"sv) {
3418-
CHECK_ERR(makeWideIntBinary(ctx, pos, annotations, WideIntBinaryOp::AddInt128));
3418+
CHECK_ERR(makeWideIntAddSub(ctx, pos, annotations, WideIntAddSubOp::AddInt128));
34193419
return Ok{};
34203420
}
34213421
goto parse_error;

src/interpreter/interpreter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ struct ExpressionInterpreter : OverriddenVisitor<ExpressionInterpreter, Flow> {
217217
}
218218
}
219219
Flow visitSelect(Select* curr) { WASM_UNREACHABLE("TODO"); }
220-
Flow visitWideIntBinary(WideIntBinary* curr) {
220+
Flow visitWideIntAddSub(WideIntAddSub* curr) {
221221
if (curr->op == AddInt128) {
222222
uint64_t highRHS = pop().geti64();
223223
uint64_t lowRHS = pop().geti64();

src/ir/ReFinalize.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void ReFinalize::visitMemoryFill(MemoryFill* curr) { curr->finalize(); }
109109
void ReFinalize::visitConst(Const* curr) { curr->finalize(); }
110110
void ReFinalize::visitUnary(Unary* curr) { curr->finalize(); }
111111
void ReFinalize::visitBinary(Binary* curr) { curr->finalize(); }
112-
void ReFinalize::visitWideIntBinary(WideIntBinary* curr) { curr->finalize(); }
112+
void ReFinalize::visitWideIntAddSub(WideIntAddSub* curr) { curr->finalize(); }
113113
void ReFinalize::visitSelect(Select* curr) { curr->finalize(); }
114114
void ReFinalize::visitDrop(Drop* curr) { curr->finalize(); }
115115
void ReFinalize::visitReturn(Return* curr) { curr->finalize(); }

src/ir/child-typer.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -703,12 +703,11 @@ template<typename Subtype> struct ChildTyper : OverriddenVisitor<Subtype> {
703703
}
704704
}
705705

706-
void visitWideIntBinary(WideIntBinary* curr) {
707-
size_t num = 4;
708-
curr->operands.resize(num);
709-
for (size_t i = 0; i < num; ++i) {
710-
note(&curr->operands[i], Type::i64);
711-
}
706+
void visitWideIntAddSub(WideIntAddSub* curr) {
707+
note(&curr->leftLow, Type::i64);
708+
note(&curr->leftHigh, Type::i64);
709+
note(&curr->rightLow, Type::i64);
710+
note(&curr->rightHigh, Type::i64);
712711
}
713712

714713
void visitSelect(Select* curr, std::optional<Type> type = std::nullopt) {

src/ir/cost.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -573,12 +573,9 @@ struct CostAnalyzer : public OverriddenVisitor<CostAnalyzer, CostType> {
573573
}
574574
return ret + visit(curr->left) + visit(curr->right);
575575
}
576-
CostType visitWideIntBinary(WideIntBinary* curr) {
577-
CostType ret = 1;
578-
for (auto* child : curr->operands) {
579-
ret += visit(child);
580-
}
581-
return ret;
576+
CostType visitWideIntAddSub(WideIntAddSub* curr) {
577+
return 1 + visit(curr->leftLow) + visit(curr->leftHigh) +
578+
visit(curr->rightLow) + visit(curr->rightHigh);
582579
}
583580
CostType visitSelect(Select* curr) {
584581
return 1 + visit(curr->condition) + visit(curr->ifTrue) +

src/ir/effects.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ class EffectAnalyzer {
945945
}
946946
}
947947
}
948-
void visitWideIntBinary(WideIntBinary* curr) {}
948+
void visitWideIntAddSub(WideIntAddSub* curr) {}
949949
void visitSelect(Select* curr) {}
950950
void visitDrop(Drop* curr) {}
951951
void visitReturn(Return* curr) { parent.branchesOut = true; }

src/ir/possible-contents.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ struct InfoCollector
634634
addRoot(curr);
635635
}
636636
void visitBinary(Binary* curr) { addRoot(curr); }
637-
void visitWideIntBinary(WideIntBinary* curr) { addRoot(curr); }
637+
void visitWideIntAddSub(WideIntAddSub* curr) { addRoot(curr); }
638638
void visitSelect(Select* curr) {
639639
receiveChildValue(curr->ifTrue, curr);
640640
receiveChildValue(curr->ifFalse, curr);

src/ir/subtype-exprs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ struct SubtypingDiscoverer : public OverriddenVisitor<SubType> {
213213
void visitConst(Const* curr) {}
214214
void visitUnary(Unary* curr) {}
215215
void visitBinary(Binary* curr) {}
216-
void visitWideIntBinary(WideIntBinary* curr) {}
216+
void visitWideIntAddSub(WideIntAddSub* curr) {}
217217
void visitSelect(Select* curr) {
218218
self()->noteSubtype(curr->ifTrue, curr);
219219
self()->noteSubtype(curr->ifFalse, curr);

src/parser/contexts.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -477,9 +477,10 @@ struct NullInstrParserCtx {
477477
return Ok{};
478478
}
479479
Result<>
480-
makeWideIntBinary(Index, const std::vector<Annotation>&, WideIntBinaryOp) {
480+
makeWideIntAddSub(Index, const std::vector<Annotation>&, WideIntAddSubOp) {
481481
return Ok{};
482482
}
483+
483484
Result<> makeUnary(Index, const std::vector<Annotation>&, UnaryOp) {
484485
return Ok{};
485486
}
@@ -2163,10 +2164,10 @@ struct ParseDefsCtx : TypeParserCtx<ParseDefsCtx>, AnnotationParserCtx {
21632164
return withLoc(pos, irBuilder.makeBinary(op));
21642165
}
21652166

2166-
Result<> makeWideIntBinary(Index pos,
2167+
Result<> makeWideIntAddSub(Index pos,
21672168
const std::vector<Annotation>& annotations,
2168-
WideIntBinaryOp op) {
2169-
return withLoc(pos, irBuilder.makeWideIntBinary(op));
2169+
WideIntAddSubOp op) {
2170+
return withLoc(pos, irBuilder.makeWideIntAddSub(op));
21702171
}
21712172

21722173
Result<>

0 commit comments

Comments
 (0)