From 40c8b8cdfd8dd4eca18a255f8b7b71e916ed6a38 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 3 Aug 2019 23:26:39 +0800 Subject: Standalone MIRI - u8/u16 arithmatic --- tools/standalone_miri/miri.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/standalone_miri/miri.cpp b/tools/standalone_miri/miri.cpp index 67023205..9468303c 100644 --- a/tools/standalone_miri/miri.cpp +++ b/tools/standalone_miri/miri.cpp @@ -107,6 +107,20 @@ struct PrimitiveU32: public PrimitiveUInt tgt.write_u32(ofs, this->v); } }; +struct PrimitiveU16: public PrimitiveUInt +{ + PrimitiveU16(uint16_t v): PrimitiveUInt(v) {} + void write_to_value(ValueCommonWrite& tgt, size_t ofs) const override { + tgt.write_u16(ofs, this->v); + } +}; +struct PrimitiveU8: public PrimitiveUInt +{ + PrimitiveU8(uint8_t v): PrimitiveUInt(v) {} + void write_to_value(ValueCommonWrite& tgt, size_t ofs) const override { + tgt.write_u8(ofs, this->v); + } +}; template struct PrimitiveSInt: public PrimitiveValue @@ -189,6 +203,12 @@ public: LOG_ASSERT(t.get_wrapper() == nullptr, "PrimitiveValueVirt::from_value: " << t); switch(t.inner_type) { + case RawType::U8: + new(&rv.buf) PrimitiveU8(v.read_u8(0)); + break; + case RawType::U16: + new(&rv.buf) PrimitiveU16(v.read_u16(0)); + break; case RawType::U32: new(&rv.buf) PrimitiveU32(v.read_u32(0)); break; -- cgit v1.2.3