summaryrefslogtreecommitdiff
path: root/src/binary-reader-objdump.cc
diff options
context:
space:
mode:
authorlizhengxing <unixhaha@gmail.com>2017-12-19 16:27:34 -0800
committerBen Smith <binjimin@gmail.com>2017-12-19 16:27:34 -0800
commit59341472102801d2ccb9d7d955af46729e6cd2ae (patch)
tree7705fe13c5d4966cb872267a85736c8660bdf8e1 /src/binary-reader-objdump.cc
parent73341ef674cb5df3aaa67dcb5bbfd7db52e3c483 (diff)
downloadwabt-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.cc20
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;