diff options
Diffstat (limited to 'src/wasm-traversal.h')
-rw-r--r-- | src/wasm-traversal.h | 17 |
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); |