summaryrefslogtreecommitdiff
path: root/src/wasm-traversal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-traversal.h')
-rw-r--r--src/wasm-traversal.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index 06ab69615..8f4fb5922 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -60,6 +60,7 @@ template<typename SubType, typename ReturnType = void> struct Visitor {
ReturnType visitSIMDShuffle(SIMDShuffle* curr) { return ReturnType(); }
ReturnType visitSIMDTernary(SIMDTernary* curr) { return ReturnType(); }
ReturnType visitSIMDShift(SIMDShift* curr) { return ReturnType(); }
+ ReturnType visitSIMDLoad(SIMDLoad* curr) { return ReturnType(); }
ReturnType visitMemoryInit(MemoryInit* curr) { return ReturnType(); }
ReturnType visitDataDrop(DataDrop* curr) { return ReturnType(); }
ReturnType visitMemoryCopy(MemoryCopy* curr) { return ReturnType(); }
@@ -143,6 +144,8 @@ template<typename SubType, typename ReturnType = void> struct Visitor {
DELEGATE(SIMDTernary);
case Expression::Id::SIMDShiftId:
DELEGATE(SIMDShift);
+ case Expression::Id::SIMDLoadId:
+ DELEGATE(SIMDLoad);
case Expression::Id::MemoryInitId:
DELEGATE(MemoryInit);
case Expression::Id::DataDropId:
@@ -227,6 +230,7 @@ struct OverriddenVisitor {
UNIMPLEMENTED(SIMDShuffle);
UNIMPLEMENTED(SIMDTernary);
UNIMPLEMENTED(SIMDShift);
+ UNIMPLEMENTED(SIMDLoad);
UNIMPLEMENTED(MemoryInit);
UNIMPLEMENTED(DataDrop);
UNIMPLEMENTED(MemoryCopy);
@@ -311,6 +315,8 @@ struct OverriddenVisitor {
DELEGATE(SIMDTernary);
case Expression::Id::SIMDShiftId:
DELEGATE(SIMDShift);
+ case Expression::Id::SIMDLoadId:
+ DELEGATE(SIMDLoad);
case Expression::Id::MemoryInitId:
DELEGATE(MemoryInit);
case Expression::Id::DataDropId:
@@ -436,6 +442,9 @@ struct UnifiedExpressionVisitor : public Visitor<SubType, ReturnType> {
ReturnType visitSIMDShift(SIMDShift* curr) {
return static_cast<SubType*>(this)->visitExpression(curr);
}
+ ReturnType visitSIMDLoad(SIMDLoad* curr) {
+ return static_cast<SubType*>(this)->visitExpression(curr);
+ }
ReturnType visitMemoryInit(MemoryInit* curr) {
return static_cast<SubType*>(this)->visitExpression(curr);
}
@@ -738,6 +747,9 @@ struct Walker : public VisitorType {
static void doVisitSIMDShift(SubType* self, Expression** currp) {
self->visitSIMDShift((*currp)->cast<SIMDShift>());
}
+ static void doVisitSIMDLoad(SubType* self, Expression** currp) {
+ self->visitSIMDLoad((*currp)->cast<SIMDLoad>());
+ }
static void doVisitMemoryInit(SubType* self, Expression** currp) {
self->visitMemoryInit((*currp)->cast<MemoryInit>());
}
@@ -959,6 +971,11 @@ struct PostWalker : public Walker<SubType, VisitorType> {
self->pushTask(SubType::scan, &curr->cast<SIMDShift>()->vec);
break;
}
+ case Expression::Id::SIMDLoadId: {
+ self->pushTask(SubType::doVisitSIMDLoad, currp);
+ self->pushTask(SubType::scan, &curr->cast<SIMDLoad>()->ptr);
+ break;
+ }
case Expression::Id::MemoryInitId: {
self->pushTask(SubType::doVisitMemoryInit, currp);
self->pushTask(SubType::scan, &curr->cast<MemoryInit>()->size);