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.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index b32babf74..25988598a 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -61,6 +61,9 @@ template<typename SubType, typename ReturnType = void> struct Visitor {
ReturnType visitSIMDTernary(SIMDTernary* curr) { return ReturnType(); }
ReturnType visitSIMDShift(SIMDShift* curr) { return ReturnType(); }
ReturnType visitSIMDLoad(SIMDLoad* curr) { return ReturnType(); }
+ ReturnType visitSIMDLoadStoreLane(SIMDLoadStoreLane* curr) {
+ return ReturnType();
+ }
ReturnType visitMemoryInit(MemoryInit* curr) { return ReturnType(); }
ReturnType visitDataDrop(DataDrop* curr) { return ReturnType(); }
ReturnType visitMemoryCopy(MemoryCopy* curr) { return ReturnType(); }
@@ -290,6 +293,7 @@ struct OverriddenVisitor {
UNIMPLEMENTED(SIMDTernary);
UNIMPLEMENTED(SIMDShift);
UNIMPLEMENTED(SIMDLoad);
+ UNIMPLEMENTED(SIMDLoadStoreLane);
UNIMPLEMENTED(MemoryInit);
UNIMPLEMENTED(DataDrop);
UNIMPLEMENTED(MemoryCopy);
@@ -395,6 +399,8 @@ struct OverriddenVisitor {
DELEGATE(SIMDShift);
case Expression::Id::SIMDLoadId:
DELEGATE(SIMDLoad);
+ case Expression::Id::SIMDLoadStoreLaneId:
+ DELEGATE(SIMDLoadStoreLane);
case Expression::Id::MemoryInitId:
DELEGATE(MemoryInit);
case Expression::Id::DataDropId:
@@ -925,6 +931,9 @@ struct Walker : public VisitorType {
static void doVisitSIMDLoad(SubType* self, Expression** currp) {
self->visitSIMDLoad((*currp)->cast<SIMDLoad>());
}
+ static void doVisitSIMDLoadStoreLane(SubType* self, Expression** currp) {
+ self->visitSIMDLoadStoreLane((*currp)->cast<SIMDLoadStoreLane>());
+ }
static void doVisitMemoryInit(SubType* self, Expression** currp) {
self->visitMemoryInit((*currp)->cast<MemoryInit>());
}
@@ -1211,6 +1220,12 @@ struct PostWalker : public Walker<SubType, VisitorType> {
self->pushTask(SubType::scan, &curr->cast<SIMDLoad>()->ptr);
break;
}
+ case Expression::Id::SIMDLoadStoreLaneId: {
+ self->pushTask(SubType::doVisitSIMDLoadStoreLane, currp);
+ self->pushTask(SubType::scan, &curr->cast<SIMDLoadStoreLane>()->vec);
+ self->pushTask(SubType::scan, &curr->cast<SIMDLoadStoreLane>()->ptr);
+ break;
+ }
case Expression::Id::MemoryInitId: {
self->pushTask(SubType::doVisitMemoryInit, currp);
self->pushTask(SubType::scan, &curr->cast<MemoryInit>()->size);