diff options
author | lizhengxing <unixhaha@gmail.com> | 2017-12-19 16:27:34 -0800 |
---|---|---|
committer | Ben Smith <binjimin@gmail.com> | 2017-12-19 16:27:34 -0800 |
commit | 59341472102801d2ccb9d7d955af46729e6cd2ae (patch) | |
tree | 7705fe13c5d4966cb872267a85736c8660bdf8e1 /src/binary-reader-objdump.cc | |
parent | 73341ef674cb5df3aaa67dcb5bbfd7db52e3c483 (diff) | |
download | wabt-59341472102801d2ccb9d7d955af46729e6cd2ae.tar.gz wabt-59341472102801d2ccb9d7d955af46729e6cd2ae.tar.bz2 wabt-59341472102801d2ccb9d7d955af46729e6cd2ae.zip |
Wabt simd v128.const instruction PR (Part 2): (#702)
This is a sequential PR of Wabt simd v128.const instruction initial PR (096f7ab84749b5725a5780671111434c34cc17ea)
The PR implement wasm interp, objdump and validate functions for v128.const.
Diffstat (limited to 'src/binary-reader-objdump.cc')
-rw-r--r-- | src/binary-reader-objdump.cc | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/binary-reader-objdump.cc b/src/binary-reader-objdump.cc index 19e9f56d..5f3295ff 100644 --- a/src/binary-reader-objdump.cc +++ b/src/binary-reader-objdump.cc @@ -402,6 +402,9 @@ const char* type_name(Type type) { case Type::F64: return "f64"; + case Type::V128: + return "v128"; + default: assert(0); return "INVALID TYPE"; @@ -424,6 +427,7 @@ enum class InitExprType { F32, I64, F64, + V128, Global, }; @@ -435,6 +439,7 @@ struct InitExpr { uint32_t f32; uint64_t i64; uint64_t f64; + v128 v128_v; } value; }; @@ -918,6 +923,11 @@ void BinaryReaderObjdump::PrintInitExpr(const InitExpr& expr) { PrintDetails(" - init f32=%s\n", buffer); break; } + case InitExprType::V128: { + PrintDetails(" - init v128=0x%08x 0x%08x 0x%08x 0x%08x \n", expr.value.v128_v.v[0],\ + expr.value.v128_v.v[1], expr.value.v128_v.v[2], expr.value.v128_v.v[3]); + break; + } case InitExprType::Global: PrintDetails(" - init global=%" PRIindex "\n", expr.value.global); break; @@ -952,7 +962,14 @@ Result BinaryReaderObjdump::OnInitExprF64ConstExpr(Index index, Result BinaryReaderObjdump::OnInitExprV128ConstExpr(Index index, v128 value) { - /*TODO (zhengxing)*/ + InitExpr expr; + expr.type = InitExprType::V128; + expr.value.v128_v = value; + if (in_data_section_) { + data_init_expr_ = expr; + } else { + PrintInitExpr(expr); + } return Result::Ok; } @@ -1042,6 +1059,7 @@ Result BinaryReaderObjdump::OnDataSegmentData(Index index, case InitExprType::I64: case InitExprType::F32: case InitExprType::F64: + case InitExprType::V128: fprintf(stderr, "Segment offset must be an i32 init expr"); return Result::Error; break; |