Porting buffer view parse/format to C.
diff --git a/build_tools/cmake/iree_copts.cmake b/build_tools/cmake/iree_copts.cmake
index a107ee8..b48fe40 100644
--- a/build_tools/cmake/iree_copts.cmake
+++ b/build_tools/cmake/iree_copts.cmake
@@ -322,6 +322,7 @@
CLANG_OR_GCC
# Required by all modern software, effectively:
"-ldl"
+ "-lm"
${_IREE_PTHREADS_LINKOPTS}
${_IREE_LOGGING_LINKOPTS}
)
diff --git a/iree/base/string_view.h b/iree/base/string_view.h
index 23a4fcc..f72d6ce 100644
--- a/iree/base/string_view.h
+++ b/iree/base/string_view.h
@@ -123,7 +123,7 @@
iree_string_view_trim(iree_string_view_t value);
// Returns a substring of the string view at offset |pos| and length |n|.
-// Use |n| == INTPTR_MAX to take the remaineder of the string after |pos|.
+// Use |n| == INTPTR_MAX to take the remainder of the string after |pos|.
// Returns empty string on failure.
IREE_API_EXPORT iree_string_view_t iree_string_view_substr(
iree_string_view_t value, iree_host_size_t pos, iree_host_size_t n);
diff --git a/iree/hal/BUILD b/iree/hal/BUILD
index efe53aa..bfdc925 100644
--- a/iree/hal/BUILD
+++ b/iree/hal/BUILD
@@ -37,7 +37,6 @@
"buffer_heap.c",
"buffer_heap_impl.h",
"buffer_view.c",
- "buffer_view.cc",
"buffer_view.h",
"command_buffer.c",
"command_buffer.h",
diff --git a/iree/hal/CMakeLists.txt b/iree/hal/CMakeLists.txt
index 4ca5f10..ba0c44a 100644
--- a/iree/hal/CMakeLists.txt
+++ b/iree/hal/CMakeLists.txt
@@ -24,7 +24,6 @@
"buffer_heap.c"
"buffer_heap_impl.h"
"buffer_view.c"
- "buffer_view.cc"
"buffer_view.h"
"command_buffer.c"
"command_buffer.h"
diff --git a/iree/hal/buffer_view.c b/iree/hal/buffer_view.c
index 5a02fb8..d69ea68 100644
--- a/iree/hal/buffer_view.c
+++ b/iree/hal/buffer_view.c
@@ -16,9 +16,11 @@
#include <inttypes.h>
+#include "iree/base/api.h"
#include "iree/base/tracing.h"
#include "iree/hal/allocator.h"
#include "iree/hal/detail.h"
+#include "iree/hal/string_util.h"
struct iree_hal_buffer_view_s {
iree_atomic_ref_count_t ref_count;
@@ -358,3 +360,213 @@
*out_length = subspan_length;
return iree_ok_status();
}
+
+static iree_status_t iree_hal_buffer_view_parse_impl(
+ iree_string_view_t value, iree_hal_allocator_t* buffer_allocator,
+ iree_hal_buffer_view_t** out_buffer_view) {
+ // Strip whitespace that may come along (linefeeds/etc).
+ value = iree_string_view_trim(value);
+ value = iree_string_view_strip_prefix(value, IREE_SV("\""));
+ value = iree_string_view_strip_suffix(value, IREE_SV("\""));
+ if (iree_string_view_is_empty(value)) {
+ // Empty lines are invalid; need at least the shape/type information.
+ *out_buffer_view = NULL;
+ return iree_make_status(IREE_STATUS_INVALID_ARGUMENT, "empty string input");
+ }
+
+ // The part of the string corresponding to the shape, e.g. 1x2x3.
+ iree_string_view_t shape_str = iree_string_view_empty();
+ // The part of the string corresponding to the type, e.g. f32
+ iree_string_view_t type_str = iree_string_view_empty();
+ // The part of the string corresponding to the buffer data, e.g. 1 2 3 4 5 6
+ iree_string_view_t data_str = iree_string_view_empty();
+
+ iree_string_view_t shape_and_type_str = value;
+ iree_string_view_split(value, '=', &shape_and_type_str, &data_str);
+ iree_host_size_t last_x_index = iree_string_view_find_last_of(
+ shape_and_type_str, IREE_SV("x"), IREE_STRING_VIEW_NPOS);
+ if (last_x_index == IREE_STRING_VIEW_NPOS) {
+ // Scalar.
+ type_str = shape_and_type_str;
+ } else {
+ // Has a shape.
+ shape_str = iree_string_view_substr(shape_and_type_str, 0, last_x_index);
+ type_str = iree_string_view_substr(shape_and_type_str, last_x_index + 1,
+ IREE_STRING_VIEW_NPOS);
+ }
+
+ // f32, i32, etc
+ iree_hal_element_type_t element_type = IREE_HAL_ELEMENT_TYPE_NONE;
+ IREE_RETURN_IF_ERROR(iree_hal_parse_element_type(type_str, &element_type));
+
+ // AxBxC...
+ iree_host_size_t shape_rank = 0;
+ iree_status_t shape_result =
+ iree_hal_parse_shape(shape_str, 0, NULL, &shape_rank);
+ if (!iree_status_is_ok(shape_result) &&
+ !iree_status_is_out_of_range(shape_result)) {
+ return shape_result;
+ } else if (shape_rank > 128) {
+ return iree_make_status(
+ IREE_STATUS_RESOURCE_EXHAUSTED,
+ "a shape rank of %zu is just a little bit excessive, eh?", shape_rank);
+ }
+ shape_result = iree_status_ignore(shape_result);
+ iree_hal_dim_t* shape =
+ (iree_hal_dim_t*)iree_alloca(shape_rank * sizeof(iree_hal_dim_t));
+ IREE_RETURN_IF_ERROR(
+ iree_hal_parse_shape(shape_str, shape_rank, shape, &shape_rank));
+
+ // Allocate the buffer we will parse into from the provided allocator.
+ iree_device_size_t buffer_length = 0;
+ IREE_RETURN_IF_ERROR(iree_hal_buffer_compute_view_size(
+ shape, shape_rank, element_type, &buffer_length));
+ iree_hal_buffer_t* buffer = NULL;
+ IREE_RETURN_IF_ERROR(iree_hal_allocator_allocate_buffer(
+ buffer_allocator,
+ IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE,
+ IREE_HAL_BUFFER_USAGE_TRANSFER | IREE_HAL_BUFFER_USAGE_MAPPING |
+ IREE_HAL_BUFFER_USAGE_DISPATCH,
+ buffer_length, &buffer));
+
+ // Parse the elements directly into the buffer.
+ iree_hal_buffer_mapping_t buffer_mapping;
+ iree_status_t status =
+ iree_hal_buffer_map_range(buffer, IREE_HAL_MEMORY_ACCESS_DISCARD_WRITE, 0,
+ buffer_length, &buffer_mapping);
+ if (!iree_status_is_ok(status)) {
+ iree_hal_buffer_release(buffer);
+ return status;
+ }
+ status = iree_hal_parse_buffer_elements(data_str, element_type,
+ buffer_mapping.contents);
+ iree_hal_buffer_unmap_range(&buffer_mapping);
+ if (!iree_status_is_ok(status)) {
+ iree_hal_buffer_release(buffer);
+ return status;
+ }
+
+ // Wrap and pass ownership of the buffer to the buffer view.
+ status = iree_hal_buffer_view_create(buffer, element_type, shape, shape_rank,
+ out_buffer_view);
+ iree_hal_buffer_release(buffer);
+ return status;
+}
+
+IREE_API_EXPORT iree_status_t iree_hal_buffer_view_parse(
+ iree_string_view_t value, iree_hal_allocator_t* buffer_allocator,
+ iree_hal_buffer_view_t** out_buffer_view) {
+ IREE_ASSERT_ARGUMENT(buffer_allocator);
+ IREE_ASSERT_ARGUMENT(out_buffer_view);
+ *out_buffer_view = NULL;
+ IREE_TRACE_ZONE_BEGIN(z0);
+ iree_status_t status =
+ iree_hal_buffer_view_parse_impl(value, buffer_allocator, out_buffer_view);
+ IREE_TRACE_ZONE_END(z0);
+ return status;
+}
+
+#define APPEND_CHAR(c) \
+ { \
+ if (buffer) { \
+ if (buffer_length < buffer_capacity - 1) { \
+ buffer[buffer_length] = c; \
+ buffer[buffer_length + 1] = '\0'; \
+ } else { \
+ buffer = NULL; \
+ } \
+ } \
+ ++buffer_length; \
+ }
+
+static iree_status_t iree_hal_buffer_view_format_impl(
+ const iree_hal_buffer_view_t* buffer_view,
+ iree_host_size_t max_element_count, iree_host_size_t buffer_capacity,
+ char* buffer, iree_host_size_t* out_buffer_length) {
+ if (out_buffer_length) {
+ *out_buffer_length = 0;
+ }
+ if (buffer && buffer_capacity) {
+ buffer[0] = 0;
+ }
+
+ iree_host_size_t buffer_length = 0;
+ if (iree_hal_buffer_view_shape_rank(buffer_view) > 0) {
+ // Shape: 1x2x3
+ iree_host_size_t shape_length = 0;
+ iree_status_t status = iree_hal_format_shape(
+ iree_hal_buffer_view_shape_dims(buffer_view),
+ iree_hal_buffer_view_shape_rank(buffer_view),
+ buffer ? buffer_capacity - buffer_length : 0,
+ buffer ? buffer + buffer_length : NULL, &shape_length);
+ buffer_length += shape_length;
+ if (iree_status_is_out_of_range(status)) {
+ status = iree_status_ignore(status);
+ buffer = NULL;
+ } else if (!iree_status_is_ok(status)) {
+ return status;
+ }
+
+ // Separator: <shape>x<format>
+ APPEND_CHAR('x');
+ }
+
+ // Element type: f32
+ iree_host_size_t element_type_length = 0;
+ iree_status_t status = iree_hal_format_element_type(
+ iree_hal_buffer_view_element_type(buffer_view),
+ buffer ? buffer_capacity - buffer_length : 0,
+ buffer ? buffer + buffer_length : NULL, &element_type_length);
+ buffer_length += element_type_length;
+ if (iree_status_is_out_of_range(status)) {
+ status = iree_status_ignore(status);
+ buffer = NULL;
+ } else if (!iree_status_is_ok(status)) {
+ return status;
+ }
+
+ // Separator: <meta>=<value>
+ APPEND_CHAR('=');
+
+ // Buffer contents: 0 1 2 3 ...
+ iree_hal_buffer_mapping_t buffer_mapping;
+ IREE_RETURN_IF_ERROR(iree_hal_buffer_map_range(
+ iree_hal_buffer_view_buffer(buffer_view), IREE_HAL_MEMORY_ACCESS_READ, 0,
+ IREE_WHOLE_BUFFER, &buffer_mapping));
+ iree_host_size_t elements_length = 0;
+ status = iree_hal_format_buffer_elements(
+ iree_make_const_byte_span(buffer_mapping.contents.data,
+ buffer_mapping.contents.data_length),
+ iree_hal_buffer_view_shape_dims(buffer_view),
+ iree_hal_buffer_view_shape_rank(buffer_view),
+ iree_hal_buffer_view_element_type(buffer_view), max_element_count,
+ buffer ? buffer_capacity - buffer_length : 0,
+ buffer ? buffer + buffer_length : NULL, &elements_length);
+ buffer_length += elements_length;
+ iree_hal_buffer_unmap_range(&buffer_mapping);
+ if (iree_status_is_out_of_range(status)) {
+ status = iree_status_ignore(status);
+ buffer = NULL;
+ } else if (!iree_status_is_ok(status)) {
+ return status;
+ }
+
+ if (out_buffer_length) {
+ *out_buffer_length = buffer_length;
+ }
+ return buffer ? iree_ok_status()
+ : iree_status_from_code(IREE_STATUS_OUT_OF_RANGE);
+}
+
+IREE_API_EXPORT iree_status_t iree_hal_buffer_view_format(
+ const iree_hal_buffer_view_t* buffer_view,
+ iree_host_size_t max_element_count, iree_host_size_t buffer_capacity,
+ char* buffer, iree_host_size_t* out_buffer_length) {
+ IREE_ASSERT_ARGUMENT(buffer_view);
+ IREE_TRACE_ZONE_BEGIN(z0);
+ iree_status_t status = iree_hal_buffer_view_format_impl(
+ buffer_view, max_element_count, buffer_capacity, buffer,
+ out_buffer_length);
+ IREE_TRACE_ZONE_END(z0);
+ return status;
+}
diff --git a/iree/hal/buffer_view.cc b/iree/hal/buffer_view.cc
deleted file mode 100644
index 52b8485..0000000
--- a/iree/hal/buffer_view.cc
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright 2019 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include "iree/hal/buffer_view.h"
-
-#include <cctype>
-#include <cinttypes>
-#include <cstdio>
-#include <vector>
-
-#include "absl/strings/string_view.h"
-#include "iree/base/api.h"
-#include "iree/base/tracing.h"
-#include "iree/hal/allocator.h"
-#include "iree/hal/string_util.h"
-
-IREE_API_EXPORT iree_status_t iree_hal_buffer_view_parse(
- iree_string_view_t value, iree_hal_allocator_t* buffer_allocator,
- iree_allocator_t allocator, iree_hal_buffer_view_t** out_buffer_view) {
- IREE_TRACE_SCOPE0("iree_hal_buffer_view_parse");
- IREE_ASSERT_ARGUMENT(buffer_allocator);
-
- // Strip whitespace that may come along (linefeeds/etc).
- value = iree_string_view_trim(value);
- value = iree_string_view_strip_prefix(value, IREE_SV("\""));
- value = iree_string_view_strip_suffix(value, IREE_SV("\""));
- if (iree_string_view_is_empty(value)) {
- // Empty lines are invalid; need at least the shape/type information.
- *out_buffer_view = nullptr;
- return iree_make_status(IREE_STATUS_INVALID_ARGUMENT, "empty string input");
- }
-
- // The part of the string corresponding to the shape, e.g. 1x2x3.
- absl::string_view shape_str;
- // The part of the string corresponding to the type, e.g. f32
- absl::string_view type_str;
- // The part of the string corresponding to the buffer data, e.g. 1 2 3 4 5 6
- absl::string_view data_str;
-
- // TODO(#3848): replace with iree_string_view_split, which does all of this.
- auto string_view = absl::string_view(value.data, value.size);
- absl::string_view shape_and_type_str;
- auto equal_index = string_view.find('=');
- if (equal_index == std::string::npos) {
- // Treat a lack of = as defaulting the data to zeros.
- shape_and_type_str = string_view;
- } else {
- shape_and_type_str = string_view.substr(0, equal_index);
- data_str = string_view.substr(equal_index + 1);
- }
- auto last_x_index = shape_and_type_str.rfind('x');
- if (last_x_index == std::string::npos) {
- // Scalar.
- type_str = shape_and_type_str;
- } else {
- // Has a shape.
- shape_str = shape_and_type_str.substr(0, last_x_index);
- type_str = shape_and_type_str.substr(last_x_index + 1);
- }
-
- // AxBxC...
- std::vector<iree_hal_dim_t> shape(6);
- iree_host_size_t shape_rank = 0;
- iree_status_t shape_result =
- iree_hal_parse_shape({shape_str.data(), shape_str.length()}, shape.size(),
- shape.data(), &shape_rank);
- if (iree_status_is_ok(shape_result)) {
- shape.resize(shape_rank);
- } else if (iree_status_is_out_of_range(shape_result)) {
- shape.resize(shape_rank);
- IREE_RETURN_IF_ERROR(
- iree_hal_parse_shape({shape_str.data(), shape_str.length()},
- shape.size(), shape.data(), &shape_rank));
- } else {
- return shape_result;
- }
-
- // f32, i32, etc
- iree_hal_element_type_t element_type = IREE_HAL_ELEMENT_TYPE_NONE;
- IREE_RETURN_IF_ERROR(iree_hal_parse_element_type(
- {type_str.data(), type_str.length()}, &element_type));
-
- // Allocate the buffer we will parse into from the provided allocator.
- iree_device_size_t buffer_length = 0;
- IREE_RETURN_IF_ERROR(iree_hal_buffer_compute_view_size(
- shape.data(), shape.size(), element_type, &buffer_length));
- iree_hal_buffer_t* buffer = nullptr;
- IREE_RETURN_IF_ERROR(iree_hal_allocator_allocate_buffer(
- buffer_allocator,
- IREE_HAL_MEMORY_TYPE_HOST_LOCAL | IREE_HAL_MEMORY_TYPE_DEVICE_VISIBLE,
- IREE_HAL_BUFFER_USAGE_TRANSFER | IREE_HAL_BUFFER_USAGE_MAPPING |
- IREE_HAL_BUFFER_USAGE_DISPATCH,
- buffer_length, &buffer));
-
- iree_status_t status;
-
- // Parse the elements directly into the buffer.
- iree_hal_buffer_mapping_t buffer_mapping;
- status =
- iree_hal_buffer_map_range(buffer, IREE_HAL_MEMORY_ACCESS_DISCARD_WRITE, 0,
- buffer_length, &buffer_mapping);
- if (!iree_status_is_ok(status)) {
- iree_hal_buffer_release(buffer);
- return status;
- }
- status =
- iree_hal_parse_buffer_elements({data_str.data(), data_str.length()},
- element_type, buffer_mapping.contents);
- iree_hal_buffer_unmap_range(&buffer_mapping);
- if (!iree_status_is_ok(status)) {
- iree_hal_buffer_release(buffer);
- return status;
- }
-
- // Wrap and pass ownership of the buffer to the buffer view.
- status = iree_hal_buffer_view_create(buffer, element_type, shape.data(),
- shape.size(), out_buffer_view);
- iree_hal_buffer_release(buffer);
- return status;
-}
-
-IREE_API_EXPORT iree_status_t iree_hal_buffer_view_format(
- const iree_hal_buffer_view_t* buffer_view,
- iree_host_size_t max_element_count, iree_host_size_t buffer_capacity,
- char* buffer, iree_host_size_t* out_buffer_length) {
- IREE_TRACE_SCOPE0("iree_hal_buffer_view_format");
- IREE_ASSERT_ARGUMENT(buffer_view);
- if (out_buffer_length) {
- *out_buffer_length = 0;
- }
- if (buffer && buffer_capacity) {
- buffer[0] = 0;
- }
-
- iree_status_t status;
- iree_host_size_t buffer_length = 0;
- auto append_char = [&](char c) {
- if (buffer) {
- if (buffer_length < buffer_capacity - 1) {
- buffer[buffer_length] = c;
- buffer[buffer_length + 1] = '\0';
- } else {
- buffer = nullptr;
- }
- }
- ++buffer_length;
- };
-
- if (iree_hal_buffer_view_shape_rank(buffer_view) > 0) {
- // Shape: 1x2x3
- iree_host_size_t shape_length = 0;
- status = iree_hal_format_shape(iree_hal_buffer_view_shape_dims(buffer_view),
- iree_hal_buffer_view_shape_rank(buffer_view),
- buffer ? buffer_capacity - buffer_length : 0,
- buffer ? buffer + buffer_length : nullptr,
- &shape_length);
- buffer_length += shape_length;
- if (iree_status_is_out_of_range(status)) {
- status = iree_status_ignore(status);
- buffer = nullptr;
- } else if (!iree_status_is_ok(status)) {
- return status;
- }
-
- // Separator: <shape>x<format>
- append_char('x');
- }
-
- // Element type: f32
- iree_host_size_t element_type_length = 0;
- status = iree_hal_format_element_type(
- iree_hal_buffer_view_element_type(buffer_view),
- buffer ? buffer_capacity - buffer_length : 0,
- buffer ? buffer + buffer_length : nullptr, &element_type_length);
- buffer_length += element_type_length;
- if (iree_status_is_out_of_range(status)) {
- status = iree_status_ignore(status);
- buffer = nullptr;
- } else if (!iree_status_is_ok(status)) {
- return status;
- }
-
- // Separator: <meta>=<value>
- append_char('=');
-
- // Buffer contents: 0 1 2 3 ...
- iree_hal_buffer_mapping_t buffer_mapping;
- IREE_RETURN_IF_ERROR(iree_hal_buffer_map_range(
- iree_hal_buffer_view_buffer(buffer_view), IREE_HAL_MEMORY_ACCESS_READ, 0,
- IREE_WHOLE_BUFFER, &buffer_mapping));
- iree_host_size_t elements_length = 0;
- status = iree_hal_format_buffer_elements(
- iree_const_byte_span_t{buffer_mapping.contents.data,
- buffer_mapping.contents.data_length},
- iree_hal_buffer_view_shape_dims(buffer_view),
- iree_hal_buffer_view_shape_rank(buffer_view),
- iree_hal_buffer_view_element_type(buffer_view), max_element_count,
- buffer ? buffer_capacity - buffer_length : 0,
- buffer ? buffer + buffer_length : nullptr, &elements_length);
- buffer_length += elements_length;
- iree_hal_buffer_unmap_range(&buffer_mapping);
- if (iree_status_is_out_of_range(status)) {
- status = iree_status_ignore(status);
- buffer = nullptr;
- } else if (!iree_status_is_ok(status)) {
- return status;
- }
-
- if (out_buffer_length) {
- *out_buffer_length = buffer_length;
- }
- return buffer ? iree_ok_status()
- : iree_status_from_code(IREE_STATUS_OUT_OF_RANGE);
-}
diff --git a/iree/hal/buffer_view.h b/iree/hal/buffer_view.h
index 3d35407..2f920ae 100644
--- a/iree/hal/buffer_view.h
+++ b/iree/hal/buffer_view.h
@@ -221,7 +221,7 @@
// buffer.
IREE_API_EXPORT iree_status_t iree_hal_buffer_view_parse(
iree_string_view_t value, iree_hal_allocator_t* buffer_allocator,
- iree_allocator_t allocator, iree_hal_buffer_view_t** out_buffer_view);
+ iree_hal_buffer_view_t** out_buffer_view);
// Converts buffer view elements into a fully-specified string-form format like
// `2x4xi16=[[1 2][3 4]]`.
diff --git a/iree/hal/local/executable_library_benchmark.c b/iree/hal/local/executable_library_benchmark.c
index 8c9a148..02dc927 100644
--- a/iree/hal/local/executable_library_benchmark.c
+++ b/iree/hal/local/executable_library_benchmark.c
@@ -253,9 +253,8 @@
void* binding_ptrs[IREE_HAL_LOCAL_MAX_TOTAL_BINDING_COUNT];
size_t binding_lengths[IREE_HAL_LOCAL_MAX_TOTAL_BINDING_COUNT];
for (iree_host_size_t i = 0; i < dispatch_params.binding_count; ++i) {
- IREE_RETURN_IF_ERROR(
- iree_hal_buffer_view_parse(dispatch_params.bindings[i], heap_allocator,
- host_allocator, &buffer_views[i]));
+ IREE_RETURN_IF_ERROR(iree_hal_buffer_view_parse(
+ dispatch_params.bindings[i], heap_allocator, &buffer_views[i]));
iree_hal_buffer_t* buffer = iree_hal_buffer_view_buffer(buffer_views[i]);
iree_device_size_t buffer_length =
iree_hal_buffer_view_byte_length(buffer_views[i]);
diff --git a/iree/hal/string_util_test.cc b/iree/hal/string_util_test.cc
index e60585f..db3f7f2 100644
--- a/iree/hal/string_util_test.cc
+++ b/iree/hal/string_util_test.cc
@@ -483,7 +483,7 @@
BufferView buffer_view;
iree_status_t status = iree_hal_buffer_view_parse(
iree_string_view_t{value.data(), value.size()}, allocator,
- iree_allocator_system(), &buffer_view);
+ &buffer_view);
IREE_RETURN_IF_ERROR(std::move(status));
return std::move(buffer_view);
}
diff --git a/iree/samples/custom_modules/native_module.cc b/iree/samples/custom_modules/native_module.cc
index 66ddb62..7bb992b 100644
--- a/iree/samples/custom_modules/native_module.cc
+++ b/iree/samples/custom_modules/native_module.cc
@@ -178,7 +178,7 @@
vm::ref<iree_hal_buffer_view_t> buffer_view;
IREE_RETURN_IF_ERROR(
iree_hal_buffer_view_parse(message->value, host_local_allocator_.get(),
- allocator_, &buffer_view),
+ &buffer_view),
"parsing value '%.*s'", (int)message->value.size, message->value.data);
return std::move(buffer_view);
}
diff --git a/iree/tools/utils/vm_util.cc b/iree/tools/utils/vm_util.cc
index 5307af0..33a5d5e 100644
--- a/iree/tools/utils/vm_util.cc
+++ b/iree/tools/utils/vm_util.cc
@@ -192,7 +192,7 @@
IREE_RETURN_IF_ERROR(
iree_hal_buffer_view_parse(
iree_string_view_t{input_string.data(), input_string.size()},
- allocator, iree_allocator_system(), &buffer_view),
+ allocator, &buffer_view),
"parsing value '%.*s'", (int)input_string.size(),
input_string.data());
auto buffer_view_ref = iree_hal_buffer_view_move_ref(buffer_view);