diff options
Diffstat (limited to 'src/ir/ExpressionAnalyzer.cpp')
-rw-r--r-- | src/ir/ExpressionAnalyzer.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/ir/ExpressionAnalyzer.cpp b/src/ir/ExpressionAnalyzer.cpp index 0efc7b888..cd2946253 100644 --- a/src/ir/ExpressionAnalyzer.cpp +++ b/src/ir/ExpressionAnalyzer.cpp @@ -280,6 +280,29 @@ bool ExpressionAnalyzer::flexibleEqual(Expression* left, Expression* right, Expr PUSH(SIMDShift, shift); break; } + case Expression::Id::MemoryInitId: { + CHECK(MemoryInit, segment); + PUSH(MemoryInit, dest); + PUSH(MemoryInit, offset); + PUSH(MemoryInit, size); + break; + } + case Expression::Id::DataDropId: { + CHECK(DataDrop, segment); + break; + } + case Expression::Id::MemoryCopyId: { + PUSH(MemoryCopy, dest); + PUSH(MemoryCopy, source); + PUSH(MemoryCopy, size); + break; + } + case Expression::Id::MemoryFillId: { + PUSH(MemoryFill, dest); + PUSH(MemoryFill, value); + PUSH(MemoryFill, size); + break; + } case Expression::Id::ConstId: { if (left->cast<Const>()->value != right->cast<Const>()->value) { return false; @@ -561,6 +584,29 @@ HashType ExpressionAnalyzer::hash(Expression* curr) { PUSH(SIMDShift, shift); break; } + case Expression::Id::MemoryInitId: { + HASH(MemoryInit, segment); + PUSH(MemoryInit, dest); + PUSH(MemoryInit, offset); + PUSH(MemoryInit, size); + break; + } + case Expression::Id::DataDropId: { + HASH(DataDrop, segment); + break; + } + case Expression::Id::MemoryCopyId: { + PUSH(MemoryCopy, dest); + PUSH(MemoryCopy, source); + PUSH(MemoryCopy, size); + break; + } + case Expression::Id::MemoryFillId: { + PUSH(MemoryFill, dest); + PUSH(MemoryFill, value); + PUSH(MemoryFill, size); + break; + } case Expression::Id::ConstId: { auto* c = curr->cast<Const>(); hash(c->type); |