Removing redundant hal.buffer_view.byte_length.
diff --git a/compiler/src/iree/compiler/Dialect/HAL/Conversion/HALToVM/ConvertBufferViewOps.cpp b/compiler/src/iree/compiler/Dialect/HAL/Conversion/HALToVM/ConvertBufferViewOps.cpp
index 17bebcf..209d7c5 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/Conversion/HALToVM/ConvertBufferViewOps.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/Conversion/HALToVM/ConvertBufferViewOps.cpp
@@ -21,8 +21,6 @@
       context, importSymbols, typeConverter, "hal.buffer_view.assert");
   patterns.insert<VMImportOpConversion<IREE::HAL::BufferViewBufferOp>>(
       context, importSymbols, typeConverter, "hal.buffer_view.buffer");
-  patterns.insert<VMImportOpConversion<IREE::HAL::BufferViewByteLengthOp>>(
-      context, importSymbols, typeConverter, "hal.buffer_view.byte_length");
   patterns.insert<VMImportOpConversion<IREE::HAL::BufferViewElementTypeOp>>(
       context, importSymbols, typeConverter, "hal.buffer_view.element_type");
   patterns.insert<VMImportOpConversion<IREE::HAL::BufferViewEncodingTypeOp>>(
diff --git a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp
index 5091c3f..6b2c8f6 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.cpp
@@ -408,21 +408,6 @@
 }
 
 //===----------------------------------------------------------------------===//
-// hal.buffer_view.byte_length
-//===----------------------------------------------------------------------===//
-
-void BufferViewByteLengthOp::build(OpBuilder &builder, OperationState &state,
-                                   Value bufferView) {
-  state.addOperands({bufferView});
-  state.addTypes({builder.getIndexType()});
-}
-
-void BufferViewByteLengthOp::getAsmResultNames(
-    function_ref<void(Value, StringRef)> setNameFn) {
-  setNameFn(result(), "len");
-}
-
-//===----------------------------------------------------------------------===//
 // hal.command_buffer.create
 //===----------------------------------------------------------------------===//
 
diff --git a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td
index 93a220e..3f478e9 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td
+++ b/compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td
@@ -527,36 +527,6 @@
   let hasCanonicalizer = 1;
 }
 
-def HAL_BufferViewByteLengthOp : HAL_PureOp<"buffer_view.byte_length", [
-    DeclareOpInterfaceMethods<OpAsmOpInterface, ["getAsmResultNames"]>,
-  ]> {
-  let summary = [{buffer view buffer byte length accessor}];
-  let description = [{
-    Returns the allocated size of a shaped buffer view in bytes.
-    This may exceed the logical size of the buffer view; for example sparse
-    tensors will have an allocation size that may be for the maximum possible
-    size of the tensor when fully dense.
-  }];
-
-  let arguments = (ins
-    HAL_BufferView:$buffer_view
-  );
-  let results = (outs
-    HAL_DeviceSize:$result
-  );
-
-  let assemblyFormat = [{
-    `<` $buffer_view `:` type($buffer_view) `>`
-    `:` type($result)
-    attr-dict-with-keyword
-  }];
-
-  let skipDefaultBuilders = 1;
-  let builders = [
-    OpBuilder<(ins "Value":$bufferView)>,
-  ];
-}
-
 def HAL_BufferViewElementTypeOp : HAL_PureOp<"buffer_view.element_type"> {
   let summary = [{buffer view element type query}];
   let description = [{
diff --git a/compiler/src/iree/compiler/Dialect/HAL/IR/HALTypes.cpp b/compiler/src/iree/compiler/Dialect/HAL/IR/HALTypes.cpp
index 0c646df..132f301 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/IR/HALTypes.cpp
+++ b/compiler/src/iree/compiler/Dialect/HAL/IR/HALTypes.cpp
@@ -148,7 +148,10 @@
 
 Value BufferViewType::inferSizeFromValue(Location loc, Value value,
                                          OpBuilder &builder) const {
-  return builder.createOrFold<BufferViewByteLengthOp>(loc, value);
+  return builder.createOrFold<BufferLengthOp>(
+      loc, builder.getIndexType(),
+      builder.createOrFold<BufferViewBufferOp>(
+          loc, builder.getType<IREE::HAL::BufferType>(), value));
 }
 
 //===----------------------------------------------------------------------===//
diff --git a/compiler/src/iree/compiler/Dialect/HAL/IR/test/buffer_view_ops.mlir b/compiler/src/iree/compiler/Dialect/HAL/IR/test/buffer_view_ops.mlir
index d14ca66..fa74f3f 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/IR/test/buffer_view_ops.mlir
+++ b/compiler/src/iree/compiler/Dialect/HAL/IR/test/buffer_view_ops.mlir
@@ -27,15 +27,6 @@
 
 // -----
 
-// CHECK-LABEL: @buffer_view_byte_length
-func.func @buffer_view_byte_length(%arg0: !hal.buffer_view) -> index {
-  // CHECK: %len = hal.buffer_view.byte_length<%arg0 : !hal.buffer_view> : index
-  %len = hal.buffer_view.byte_length<%arg0 : !hal.buffer_view> : index
-  return %len : index
-}
-
-// -----
-
 // CHECK-LABEL: @buffer_view_shape_queries
 func.func @buffer_view_shape_queries(%arg0: !hal.buffer_view) -> (index, index, index, index) {
   // CHECK: %{{.+}} = hal.buffer_view.rank<%arg0 : !hal.buffer_view> : index
diff --git a/compiler/src/iree/compiler/Dialect/HAL/hal.imports.mlir b/compiler/src/iree/compiler/Dialect/HAL/hal.imports.mlir
index 0331d03..e95e1c4 100644
--- a/compiler/src/iree/compiler/Dialect/HAL/hal.imports.mlir
+++ b/compiler/src/iree/compiler/Dialect/HAL/hal.imports.mlir
@@ -128,12 +128,6 @@
 ) -> !vm.ref<!hal.buffer>
 attributes {nosideeffects}
 
-// Returns the allocated size of a shaped buffer view in bytes.
-vm.import @buffer_view.byte_length(
-  %buffer_view : !vm.ref<!hal.buffer_view>
-) -> i64
-attributes {nosideeffects}
-
 // Returns the element type of the buffer view.
 vm.import @buffer_view.element_type(
   %buffer_view : !vm.ref<!hal.buffer_view>,
diff --git a/runtime/src/iree/modules/hal/exports.inl b/runtime/src/iree/modules/hal/exports.inl
index 12119dd..96208f6 100644
--- a/runtime/src/iree/modules/hal/exports.inl
+++ b/runtime/src/iree/modules/hal/exports.inl
@@ -36,7 +36,6 @@
 
 EXPORT_FN("buffer_view.assert", iree_hal_module_buffer_view_assert, rriiCID, v)
 EXPORT_FN("buffer_view.buffer", iree_hal_module_buffer_view_buffer, r, r)
-EXPORT_FN("buffer_view.byte_length", iree_hal_module_buffer_view_byte_length, r, I)
 EXPORT_FN("buffer_view.create", iree_hal_module_buffer_view_create, riiCID, r)
 EXPORT_FN("buffer_view.dim", iree_hal_module_buffer_view_dim, ri, I)
 EXPORT_FN("buffer_view.element_type", iree_hal_module_buffer_view_element_type, r, i)
diff --git a/runtime/src/iree/modules/hal/module.c b/runtime/src/iree/modules/hal/module.c
index d51be33..f6c7387 100644
--- a/runtime/src/iree/modules/hal/module.c
+++ b/runtime/src/iree/modules/hal/module.c
@@ -776,16 +776,6 @@
   return iree_ok_status();
 }
 
-IREE_VM_ABI_EXPORT(iree_hal_module_buffer_view_byte_length,  //
-                   iree_hal_module_state_t,                  //
-                   r, I) {
-  iree_hal_buffer_view_t* buffer_view = NULL;
-  IREE_RETURN_IF_ERROR(
-      iree_hal_buffer_view_check_deref(args->r0, &buffer_view));
-  rets->i0 = (int64_t)iree_hal_buffer_view_byte_length(buffer_view);
-  return iree_ok_status();
-}
-
 IREE_VM_ABI_EXPORT(iree_hal_module_buffer_view_element_type,  //
                    iree_hal_module_state_t,                   //
                    r, i) {