diff options
Diffstat (limited to 'src/binary-reader-ir.cc')
-rw-r--r-- | src/binary-reader-ir.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/binary-reader-ir.cc b/src/binary-reader-ir.cc index 70dc4fbf..f37b4ddb 100644 --- a/src/binary-reader-ir.cc +++ b/src/binary-reader-ir.cc @@ -116,6 +116,18 @@ class BinaryReaderIR : public BinaryReaderNop { Result BeginFunctionBody(Index index) override; Result OnLocalDecl(Index decl_index, Index count, Type type) override; + Result OnAtomicLoadExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) override; + Result OnAtomicStoreExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) override; + Result OnAtomicRmwExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) override; + Result OnAtomicRmwCmpxchgExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) override; Result OnBinaryExpr(Opcode opcode) override; Result OnBlockExpr(Index num_types, Type* sig_types) override; Result OnBrExpr(Index depth) override; @@ -509,6 +521,34 @@ Result BinaryReaderIR::OnLocalDecl(Index decl_index, Index count, Type type) { return Result::Ok; } +Result BinaryReaderIR::OnAtomicLoadExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) { + return AppendExpr( + MakeUnique<AtomicLoadExpr>(opcode, 1 << alignment_log2, offset)); +} + +Result BinaryReaderIR::OnAtomicStoreExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) { + return AppendExpr( + MakeUnique<AtomicStoreExpr>(opcode, 1 << alignment_log2, offset)); +} + +Result BinaryReaderIR::OnAtomicRmwExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) { + return AppendExpr( + MakeUnique<AtomicRmwExpr>(opcode, 1 << alignment_log2, offset)); +} + +Result BinaryReaderIR::OnAtomicRmwCmpxchgExpr(Opcode opcode, + uint32_t alignment_log2, + Address offset) { + return AppendExpr( + MakeUnique<AtomicRmwCmpxchgExpr>(opcode, 1 << alignment_log2, offset)); +} + Result BinaryReaderIR::OnBinaryExpr(Opcode opcode) { return AppendExpr(MakeUnique<BinaryExpr>(opcode, GetLocation())); } |