Implementing runtime HAL buffer subspan/fill.
diff --git a/iree/modules/hal/hal_module.cc b/iree/modules/hal/hal_module.cc
index 446137e..b0ac0ef 100644
--- a/iree/modules/hal/hal_module.cc
+++ b/iree/modules/hal/hal_module.cc
@@ -285,13 +285,22 @@
       const vm::ref<iree_hal_buffer_t>& source_buffer, int32_t source_offset,
       int32_t length) {
     IREE_TRACE_SCOPE0("HALModuleState::BufferSubspan");
-    return UnimplementedErrorBuilder(IREE_LOC) << "BufferSubspan";
+    vm::ref<iree_hal_buffer_t> target_buffer;
+    IREE_RETURN_IF_ERROR(iree_hal_buffer_subspan(
+        source_buffer.get(), source_offset, length, allocator_, &target_buffer))
+        << "Subspan of an existing buffer (source_offset=" << source_offset
+        << ", length=" << length << ")";
+    return target_buffer;
   }
 
   Status BufferFill(const vm::ref<iree_hal_buffer_t>& target_buffer,
                     int32_t target_offset, int32_t length, int32_t pattern) {
     IREE_TRACE_SCOPE0("HALModuleState::BufferFill");
-    return UnimplementedErrorBuilder(IREE_LOC) << "BufferFill";
+    IREE_RETURN_IF_ERROR(iree_hal_buffer_fill(
+        target_buffer.get(), target_offset, length, &pattern, sizeof(pattern)))
+        << "Fill range failed (target_offset=" << target_offset
+        << ", length=" << length << ")";
+    return OkStatus();
   }
 
   Status BufferReadData(const vm::ref<iree_hal_buffer_t>& source_buffer,