Move delegate providers into a separate directory as they are used for both evaluation tools and benchmark tools.

PiperOrigin-RevId: 307549889
Change-Id: I9234d5e187155b52a7518586dff01266fb426168
diff --git a/tensorflow/lite/tools/benchmark/BUILD b/tensorflow/lite/tools/benchmark/BUILD
index 0e0c3ab..3570722 100644
--- a/tensorflow/lite/tools/benchmark/BUILD
+++ b/tensorflow/lite/tools/benchmark/BUILD
@@ -98,13 +98,13 @@
     deps = [
         ":benchmark_performance_options",
         ":benchmark_tflite_model_lib",
-        ":delegate_provider_hdr",
         "//tensorflow/lite:framework",
         "//tensorflow/lite:string_util",
         "//tensorflow/lite/c:common",
         "//tensorflow/lite/testing:util",
         "//tensorflow/lite/tools:command_line_flags",
         "//tensorflow/lite/tools:logging",
+        "//tensorflow/lite/tools/delegates:delegate_provider_hdr",
         "@com_google_absl//absl/algorithm",
         "@com_google_absl//absl/memory",
         "@com_google_absl//absl/strings:str_format",
@@ -139,10 +139,7 @@
     deps = [
         ":benchmark_model_lib",
         ":benchmark_utils",
-        ":coreml_delegate_provider",
-        ":delegate_provider_hdr",
         ":profiling_listener",
-        ":tflite_execution_providers",
         "//tensorflow/lite:framework",
         "//tensorflow/lite:string_util",
         "//tensorflow/lite/kernels:builtin_ops",
@@ -150,6 +147,8 @@
         "//tensorflow/lite/profiling:profile_summary_formatter",
         "//tensorflow/lite/profiling:profiler",
         "//tensorflow/lite/tools:logging",
+        "//tensorflow/lite/tools/delegates:delegate_provider_hdr",
+        "//tensorflow/lite/tools/delegates:tflite_execution_providers",
         "//tensorflow/lite/tools/evaluation:utils",
         "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/strings",
@@ -211,152 +210,6 @@
 )
 
 cc_library(
-    name = "delegate_provider_hdr",
-    hdrs = [
-        "delegate_provider.h",
-    ],
-    copts = common_copts,
-    deps = [
-        ":benchmark_params",
-        "//tensorflow/lite/c:common",
-        "//tensorflow/lite/tools:command_line_flags",
-        "//tensorflow/lite/tools:logging",
-    ],
-)
-
-# A convenient library for all inference execution providers.
-cc_library(
-    name = "tflite_execution_providers",
-    copts = tflite_copts(),
-    deps = [
-        ":default_execution_provider",
-        ":external_delegate_provider",
-        ":gpu_delegate_provider",
-        ":hexagon_delegate_provider",
-        ":nnapi_delegate_provider",
-    ] + select({
-        "//tensorflow:fuchsia": [],
-        "//tensorflow:windows": [],
-        "//conditions:default": [
-            ":xnnpack_delegate_provider",
-        ],
-    }),
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "default_execution_provider",
-    srcs = ["default_execution_provider.cc"],
-    copts = tflite_copts(),
-    linkstatic = True,
-    visibility = ["//visibility:public"],
-    deps = [
-        ":delegate_provider_hdr",
-    ],
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "gpu_delegate_provider",
-    srcs = ["gpu_delegate_provider.cc"],
-    copts = common_copts + select({
-        "//tensorflow:ios": [
-            "-xobjective-c++",
-        ],
-        "//conditions:default": [],
-    }),
-    deps = [
-        ":delegate_provider_hdr",
-        "//tensorflow/lite/tools/evaluation:utils",
-    ] + select({
-        "//tensorflow:android": [
-            "//tensorflow/lite/delegates/gpu:delegate",
-        ],
-        "//tensorflow:ios": [
-            "//tensorflow/lite/delegates/gpu:metal_delegate",
-        ],
-        "//conditions:default": [],
-    }),
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "nnapi_delegate_provider",
-    srcs = ["nnapi_delegate_provider.cc"],
-    copts = common_copts,
-    deps = [
-        ":delegate_provider_hdr",
-        "//tensorflow/lite/tools/evaluation:utils",
-    ],
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "hexagon_delegate_provider",
-    srcs = ["hexagon_delegate_provider.cc"],
-    copts = common_copts,
-    deps = [
-        ":delegate_provider_hdr",
-        "//tensorflow/lite/tools/evaluation:utils",
-    ] + select({
-        "//tensorflow:android_arm": [
-            "//tensorflow/lite/experimental/delegates/hexagon:hexagon_delegate",
-        ],
-        "//tensorflow:android_arm64": [
-            "//tensorflow/lite/experimental/delegates/hexagon:hexagon_delegate",
-        ],
-        "//conditions:default": [],
-    }),
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "coreml_delegate_provider",
-    srcs = ["coreml_delegate_provider.cc"],
-    copts = common_copts + select({
-        "//tensorflow:ios": [
-            "-xobjective-c++",
-        ],
-        "//conditions:default": [],
-    }),
-    deps = [
-        ":delegate_provider_hdr",
-        "//tensorflow/lite/tools/evaluation:utils",
-    ] + select({
-        "//tensorflow:ios": [
-            "//tensorflow/lite/experimental/delegates/coreml:coreml_delegate",
-        ],
-        "//conditions:default": [],
-    }),
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "xnnpack_delegate_provider",
-    srcs = ["xnnpack_delegate_provider.cc"],
-    copts = tflite_copts(),
-    linkstatic = True,
-    visibility = ["//visibility:public"],
-    deps = [
-        ":delegate_provider_hdr",
-        "//tensorflow/lite/tools/evaluation:utils",
-    ],
-    alwayslink = 1,
-)
-
-cc_library(
-    name = "external_delegate_provider",
-    srcs = ["external_delegate_provider.cc"],
-    copts = tflite_copts(),
-    linkstatic = True,
-    visibility = ["//visibility:public"],
-    deps = [
-        ":delegate_provider_hdr",
-    ],
-    alwayslink = 1,
-)
-
-cc_library(
     name = "benchmark_utils",
     srcs = [
         "benchmark_utils.cc",
diff --git a/tensorflow/lite/tools/benchmark/benchmark_test.cc b/tensorflow/lite/tools/benchmark/benchmark_test.cc
index 8d7fa8d..33ccacc 100644
--- a/tensorflow/lite/tools/benchmark/benchmark_test.cc
+++ b/tensorflow/lite/tools/benchmark/benchmark_test.cc
@@ -29,8 +29,8 @@
 #include "tensorflow/lite/testing/util.h"
 #include "tensorflow/lite/tools/benchmark/benchmark_performance_options.h"
 #include "tensorflow/lite/tools/benchmark/benchmark_tflite_model.h"
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
 #include "tensorflow/lite/tools/command_line_flags.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/logging.h"
 
 namespace {
@@ -88,7 +88,8 @@
   params.AddParam("enable_platform_tracing",
                   BenchmarkParam::Create<bool>(false));
 
-  for (const auto& delegate_provider : GetRegisteredDelegateProviders()) {
+  for (const auto& delegate_provider :
+       tools::GetRegisteredDelegateProviders()) {
     params.Merge(delegate_provider->DefaultParams());
   }
   return params;
diff --git a/tensorflow/lite/tools/benchmark/benchmark_tflite_model.cc b/tensorflow/lite/tools/benchmark/benchmark_tflite_model.cc
index dc158c1..489780e 100644
--- a/tensorflow/lite/tools/benchmark/benchmark_tflite_model.cc
+++ b/tensorflow/lite/tools/benchmark/benchmark_tflite_model.cc
@@ -36,8 +36,8 @@
 #include "tensorflow/lite/profiling/profile_summary_formatter.h"
 #include "tensorflow/lite/string_util.h"
 #include "tensorflow/lite/tools/benchmark/benchmark_utils.h"
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
 #include "tensorflow/lite/tools/benchmark/profiling_listener.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/logging.h"
 
 void RegisterSelectedOps(::tflite::MutableOpResolver* resolver);
@@ -272,8 +272,9 @@
   default_params.AddParam("enable_platform_tracing",
                           BenchmarkParam::Create<bool>(false));
 
-  for (const auto& delegate_util : GetRegisteredDelegateProviders()) {
-    default_params.Merge(delegate_util->DefaultParams());
+  for (const auto& delegate_provider :
+       tools::GetRegisteredDelegateProviders()) {
+    default_params.Merge(delegate_provider->DefaultParams());
   }
 
   return default_params;
@@ -332,8 +333,9 @@
 
   flags.insert(flags.end(), specific_flags.begin(), specific_flags.end());
 
-  for (const auto& delegate_util : GetRegisteredDelegateProviders()) {
-    auto delegate_flags = delegate_util->CreateFlags(&params_);
+  for (const auto& delegate_provider :
+       tools::GetRegisteredDelegateProviders()) {
+    auto delegate_flags = delegate_provider->CreateFlags(&params_);
     flags.insert(flags.end(), delegate_flags.begin(), delegate_flags.end());
   }
 
@@ -372,8 +374,9 @@
   TFLITE_LOG(INFO) << "Enable platform-wide tracing: ["
                    << params_.Get<bool>("enable_platform_tracing") << "]";
 
-  for (const auto& delegate_util : GetRegisteredDelegateProviders()) {
-    delegate_util->LogParams(params_);
+  for (const auto& delegate_provider :
+       tools::GetRegisteredDelegateProviders()) {
+    delegate_provider->LogParams(params_);
   }
 }
 
@@ -615,7 +618,8 @@
   interpreter_->SetAllowFp16PrecisionForFp32(params_.Get<bool>("allow_fp16"));
 
   owned_delegates_.clear();
-  for (const auto& delegate_provider : GetRegisteredDelegateProviders()) {
+  for (const auto& delegate_provider :
+       tools::GetRegisteredDelegateProviders()) {
     auto delegate = delegate_provider->CreateTfLiteDelegate(params_);
     // It's possible that a delegate of certain type won't be created as
     // user-specified benchmark params tells not to.
diff --git a/tensorflow/lite/tools/delegates/BUILD b/tensorflow/lite/tools/delegates/BUILD
new file mode 100644
index 0000000..d2eac9d
--- /dev/null
+++ b/tensorflow/lite/tools/delegates/BUILD
@@ -0,0 +1,152 @@
+load("//tensorflow/lite:build_def.bzl", "tflite_copts")
+
+package(
+    default_visibility = [
+        "//visibility:public",
+    ],
+    licenses = ["notice"],  # Apache 2.0
+)
+
+common_copts = ["-Wall"] + tflite_copts()
+
+cc_library(
+    name = "delegate_provider_hdr",
+    hdrs = [
+        "delegate_provider.h",
+    ],
+    copts = common_copts,
+    deps = [
+        "//tensorflow/lite/c:common",
+        "//tensorflow/lite/tools:command_line_flags",
+        "//tensorflow/lite/tools:logging",
+        "//tensorflow/lite/tools:tool_params",
+    ],
+)
+
+# A convenient library for all inference execution providers.
+cc_library(
+    name = "tflite_execution_providers",
+    copts = tflite_copts(),
+    deps = [
+        ":coreml_delegate_provider",
+        ":default_execution_provider",
+        ":external_delegate_provider",
+        ":gpu_delegate_provider",
+        ":hexagon_delegate_provider",
+        ":nnapi_delegate_provider",
+        ":xnnpack_delegate_provider",
+    ],
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "default_execution_provider",
+    srcs = ["default_execution_provider.cc"],
+    copts = tflite_copts(),
+    linkstatic = True,
+    visibility = ["//visibility:public"],
+    deps = [
+        ":delegate_provider_hdr",
+    ],
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "gpu_delegate_provider",
+    srcs = ["gpu_delegate_provider.cc"],
+    copts = common_copts + select({
+        "//tensorflow:ios": [
+            "-xobjective-c++",
+        ],
+        "//conditions:default": [],
+    }),
+    deps = [
+        ":delegate_provider_hdr",
+        "//tensorflow/lite/tools/evaluation:utils",
+    ] + select({
+        "//tensorflow:android": [
+            "//tensorflow/lite/delegates/gpu:delegate",
+        ],
+        "//tensorflow:ios": [
+            "//tensorflow/lite/delegates/gpu:metal_delegate",
+        ],
+        "//conditions:default": [],
+    }),
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "nnapi_delegate_provider",
+    srcs = ["nnapi_delegate_provider.cc"],
+    copts = common_copts,
+    deps = [
+        ":delegate_provider_hdr",
+        "//tensorflow/lite/tools/evaluation:utils",
+    ],
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "hexagon_delegate_provider",
+    srcs = ["hexagon_delegate_provider.cc"],
+    copts = common_copts,
+    deps = [
+        ":delegate_provider_hdr",
+        "//tensorflow/lite/tools/evaluation:utils",
+    ] + select({
+        "//tensorflow:android_arm": [
+            "//tensorflow/lite/experimental/delegates/hexagon:hexagon_delegate",
+        ],
+        "//tensorflow:android_arm64": [
+            "//tensorflow/lite/experimental/delegates/hexagon:hexagon_delegate",
+        ],
+        "//conditions:default": [],
+    }),
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "coreml_delegate_provider",
+    srcs = ["coreml_delegate_provider.cc"],
+    copts = common_copts + select({
+        "//tensorflow:ios": [
+            "-xobjective-c++",
+        ],
+        "//conditions:default": [],
+    }),
+    deps = [
+        ":delegate_provider_hdr",
+        "//tensorflow/lite/tools/evaluation:utils",
+    ] + select({
+        "//tensorflow:ios": [
+            "//tensorflow/lite/experimental/delegates/coreml:coreml_delegate",
+        ],
+        "//conditions:default": [],
+    }),
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "xnnpack_delegate_provider",
+    srcs = ["xnnpack_delegate_provider.cc"],
+    copts = tflite_copts(),
+    linkstatic = True,
+    visibility = ["//visibility:public"],
+    deps = [
+        ":delegate_provider_hdr",
+        "//tensorflow/lite/tools/evaluation:utils",
+    ],
+    alwayslink = 1,
+)
+
+cc_library(
+    name = "external_delegate_provider",
+    srcs = ["external_delegate_provider.cc"],
+    copts = tflite_copts(),
+    linkstatic = True,
+    visibility = ["//visibility:public"],
+    deps = [
+        ":delegate_provider_hdr",
+    ],
+    alwayslink = 1,
+)
diff --git a/tensorflow/lite/tools/benchmark/coreml_delegate_provider.cc b/tensorflow/lite/tools/delegates/coreml_delegate_provider.cc
similarity index 80%
rename from tensorflow/lite/tools/benchmark/coreml_delegate_provider.cc
rename to tensorflow/lite/tools/delegates/coreml_delegate_provider.cc
index ee95f7f..0d1a8ad 100644
--- a/tensorflow/lite/tools/benchmark/coreml_delegate_provider.cc
+++ b/tensorflow/lite/tools/delegates/coreml_delegate_provider.cc
@@ -14,7 +14,7 @@
 ==============================================================================*/
 #include <string>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/evaluation/utils.h"
 #if defined(__APPLE__)
 #if TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
@@ -25,28 +25,27 @@
 #endif
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 class CoreMlDelegateProvider : public DelegateProvider {
  public:
   CoreMlDelegateProvider() {
 #if defined(REAL_IPHONE_DEVICE)
-    default_params_.AddParam("use_coreml", BenchmarkParam::Create<bool>(true));
+    default_params_.AddParam("use_coreml", ToolParam::Create<bool>(true));
 #endif
   }
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
 
-  void LogParams(const BenchmarkParams& params) const final;
+  void LogParams(const ToolParams& params) const final;
 
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
 
   std::string GetName() const final { return "COREML"; }
 };
 REGISTER_DELEGATE_PROVIDER(CoreMlDelegateProvider);
 
 std::vector<Flag> CoreMlDelegateProvider::CreateFlags(
-    BenchmarkParams* params) const {
+    ToolParams* params) const {
 #if defined(REAL_IPHONE_DEVICE)
   std::vector<Flag> flags = {
       CreateFlag<bool>("use_coreml", params, "use Core ML"),
@@ -57,7 +56,7 @@
 #endif
 }
 
-void CoreMlDelegateProvider::LogParams(const BenchmarkParams& params) const {
+void CoreMlDelegateProvider::LogParams(const ToolParams& params) const {
 #if defined(REAL_IPHONE_DEVICE)
   TFLITE_LOG(INFO) << "Use Core ML : [" << params.Get<bool>("use_coreml")
                    << "]";
@@ -65,7 +64,7 @@
 }
 
 TfLiteDelegatePtr CoreMlDelegateProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   TfLiteDelegatePtr delegate(nullptr, [](TfLiteDelegate*) {});
 
 #if defined(REAL_IPHONE_DEVICE)
@@ -88,5 +87,5 @@
   return delegate;
 }
 
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/benchmark/default_execution_provider.cc b/tensorflow/lite/tools/delegates/default_execution_provider.cc
similarity index 77%
rename from tensorflow/lite/tools/benchmark/default_execution_provider.cc
rename to tensorflow/lite/tools/delegates/default_execution_provider.cc
index 1dd8aeb..f75fd79 100644
--- a/tensorflow/lite/tools/benchmark/default_execution_provider.cc
+++ b/tensorflow/lite/tools/delegates/default_execution_provider.cc
@@ -14,10 +14,10 @@
 ==============================================================================*/
 #include <string>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 // This class actually doesn't provide any TFLite delegate instances, it simply
 // provides common params and flags that are common to all actual delegate
@@ -25,23 +25,22 @@
 class DefaultExecutionProvider : public DelegateProvider {
  public:
   DefaultExecutionProvider() {
-    default_params_.AddParam("num_threads", BenchmarkParam::Create<int32_t>(1));
+    default_params_.AddParam("num_threads", ToolParam::Create<int32_t>(1));
     default_params_.AddParam("max_delegated_partitions",
-                             BenchmarkParam::Create<int32_t>(0));
+                             ToolParam::Create<int32_t>(0));
     default_params_.AddParam("min_nodes_per_partition",
-                             BenchmarkParam::Create<int32_t>(0));
+                             ToolParam::Create<int32_t>(0));
   }
 
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
-  void LogParams(const BenchmarkParams& params) const final;
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
+  void LogParams(const ToolParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
   std::string GetName() const final { return "Default-NoDelegate"; }
 };
 REGISTER_DELEGATE_PROVIDER(DefaultExecutionProvider);
 
 std::vector<Flag> DefaultExecutionProvider::CreateFlags(
-    BenchmarkParams* params) const {
+    ToolParams* params) const {
   std::vector<Flag> flags = {
       CreateFlag<int32_t>("num_threads", params,
                           "number of threads used for inference on CPU."),
@@ -55,7 +54,7 @@
   return flags;
 }
 
-void DefaultExecutionProvider::LogParams(const BenchmarkParams& params) const {
+void DefaultExecutionProvider::LogParams(const ToolParams& params) const {
   TFLITE_LOG(INFO) << "#threads used for CPU inference: ["
                    << params.Get<int32_t>("num_threads") << "]";
   TFLITE_LOG(INFO) << "Max number of delegated partitions : ["
@@ -65,9 +64,9 @@
 }
 
 TfLiteDelegatePtr DefaultExecutionProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   return TfLiteDelegatePtr(nullptr, [](TfLiteDelegate*) {});
 }
 
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/benchmark/delegate_provider.h b/tensorflow/lite/tools/delegates/delegate_provider.h
similarity index 75%
rename from tensorflow/lite/tools/benchmark/delegate_provider.h
rename to tensorflow/lite/tools/delegates/delegate_provider.h
index 5a635c8..91dd3b1 100644
--- a/tensorflow/lite/tools/benchmark/delegate_provider.h
+++ b/tensorflow/lite/tools/delegates/delegate_provider.h
@@ -13,19 +13,19 @@
 limitations under the License.
 ==============================================================================*/
 
-#ifndef TENSORFLOW_LITE_TOOLS_BENCHMARK_DELEGATE_PROVIDER_H_
-#define TENSORFLOW_LITE_TOOLS_BENCHMARK_DELEGATE_PROVIDER_H_
+#ifndef TENSORFLOW_LITE_TOOLS_DELEGATES_DELEGATE_PROVIDER_H_
+#define TENSORFLOW_LITE_TOOLS_DELEGATES_DELEGATE_PROVIDER_H_
 
 #include <string>
 #include <vector>
 
 #include "tensorflow/lite/c/common.h"
-#include "tensorflow/lite/tools/benchmark/benchmark_params.h"
 #include "tensorflow/lite/tools/command_line_flags.h"
 #include "tensorflow/lite/tools/logging.h"
+#include "tensorflow/lite/tools/tool_params.h"
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 // Same w/ Interpreter::TfLiteDelegatePtr to avoid pulling
 // tensorflow/lite/interpreter.h dependency
@@ -36,31 +36,30 @@
  public:
   virtual ~DelegateProvider() {}
 
-  // Create a list of command-line parsable flags based on benchmark params
-  // inside 'params' whose value will be set to the corresponding runtime flag
-  // value.
-  virtual std::vector<Flag> CreateFlags(BenchmarkParams* params) const = 0;
+  // Create a list of command-line parsable flags based on tool params inside
+  // 'params' whose value will be set to the corresponding runtime flag value.
+  virtual std::vector<Flag> CreateFlags(ToolParams* params) const = 0;
 
-  // Log benchmark params.
-  virtual void LogParams(const BenchmarkParams& params) const = 0;
+  // Log tool params.
+  virtual void LogParams(const ToolParams& params) const = 0;
 
-  // Create a TfLiteDelegate based on benchmark params.
+  // Create a TfLiteDelegate based on tool params.
   virtual TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const = 0;
+      const ToolParams& params) const = 0;
 
   virtual std::string GetName() const = 0;
 
-  const BenchmarkParams& DefaultParams() const { return default_params_; }
+  const ToolParams& DefaultParams() const { return default_params_; }
 
  protected:
   template <typename T>
-  Flag CreateFlag(const char* name, BenchmarkParams* params,
+  Flag CreateFlag(const char* name, ToolParams* params,
                   const std::string& usage) const {
     return Flag(
         name, [params, name](const T& val) { params->Set<T>(name, val); },
         default_params_.Get<T>(name), usage, Flag::kOptional);
   }
-  BenchmarkParams default_params_;
+  ToolParams default_params_;
 };
 
 using DelegateProviderPtr = std::unique_ptr<DelegateProvider>;
@@ -102,7 +101,7 @@
 inline const DelegateProviderList& GetRegisteredDelegateProviders() {
   return DelegateProviderRegistrar::GetProviders();
 }
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
 
-#endif  // TENSORFLOW_LITE_TOOLS_BENCHMARK_DELEGATE_PROVIDER_H_
+#endif  // TENSORFLOW_LITE_TOOLS_DELEGATES_DELEGATE_PROVIDER_H_
diff --git a/tensorflow/lite/tools/benchmark/external_delegate_provider.cc b/tensorflow/lite/tools/delegates/external_delegate_provider.cc
similarity index 89%
rename from tensorflow/lite/tools/benchmark/external_delegate_provider.cc
rename to tensorflow/lite/tools/delegates/external_delegate_provider.cc
index a5d8a94..95b0e42 100644
--- a/tensorflow/lite/tools/benchmark/external_delegate_provider.cc
+++ b/tensorflow/lite/tools/delegates/external_delegate_provider.cc
@@ -12,7 +12,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 ==============================================================================*/
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 
 #if defined(_WIN32)
 #include <Windows.h>
@@ -25,7 +25,7 @@
 #include <vector>
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 namespace {
 // Library Support construct to handle dynamic library operations
 #if defined(_WIN32)
@@ -97,24 +97,23 @@
  public:
   ExternalDelegateProvider() {
     default_params_.AddParam("external_delegate_path",
-                             BenchmarkParam::Create<std::string>(""));
+                             ToolParam::Create<std::string>(""));
     default_params_.AddParam("external_delegate_options",
-                             BenchmarkParam::Create<std::string>(""));
+                             ToolParam::Create<std::string>(""));
   }
 
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
 
-  void LogParams(const BenchmarkParams& params) const final;
+  void LogParams(const ToolParams& params) const final;
 
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
 
   std::string GetName() const final { return "EXTERNAL"; }
 };
 REGISTER_DELEGATE_PROVIDER(ExternalDelegateProvider);
 
 std::vector<Flag> ExternalDelegateProvider::CreateFlags(
-    BenchmarkParams* params) const {
+    ToolParams* params) const {
   std::vector<Flag> flags = {
       CreateFlag<std::string>("external_delegate_path", params,
                               "The library path for the underlying external."),
@@ -124,7 +123,7 @@
   return flags;
 }
 
-void ExternalDelegateProvider::LogParams(const BenchmarkParams& params) const {
+void ExternalDelegateProvider::LogParams(const ToolParams& params) const {
   TFLITE_LOG(INFO) << "External delegate path : ["
                    << params.Get<std::string>("external_delegate_path") << "]";
   TFLITE_LOG(INFO) << "External delegate options : ["
@@ -133,7 +132,7 @@
 }
 
 TfLiteDelegatePtr ExternalDelegateProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   TfLiteDelegatePtr delegate(nullptr, [](TfLiteDelegate*) {});
   std::string lib_path = params.Get<std::string>("external_delegate_path");
   if (!lib_path.empty()) {
@@ -167,5 +166,5 @@
   }
   return delegate;
 }
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/benchmark/gpu_delegate_provider.cc b/tensorflow/lite/tools/delegates/gpu_delegate_provider.cc
similarity index 84%
rename from tensorflow/lite/tools/benchmark/gpu_delegate_provider.cc
rename to tensorflow/lite/tools/delegates/gpu_delegate_provider.cc
index 96e86d1..d4b0eae 100644
--- a/tensorflow/lite/tools/benchmark/gpu_delegate_provider.cc
+++ b/tensorflow/lite/tools/delegates/gpu_delegate_provider.cc
@@ -14,7 +14,7 @@
 ==============================================================================*/
 #include <string>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/evaluation/utils.h"
 #if defined(__ANDROID__)
 #include "tensorflow/lite/delegates/gpu/delegate.h"
@@ -28,39 +28,37 @@
 #endif
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 class GpuDelegateProvider : public DelegateProvider {
  public:
   GpuDelegateProvider() {
-    default_params_.AddParam("use_gpu", BenchmarkParam::Create<bool>(false));
+    default_params_.AddParam("use_gpu", ToolParam::Create<bool>(false));
 #if defined(__ANDROID__) || defined(REAL_IPHONE_DEVICE)
     default_params_.AddParam("gpu_precision_loss_allowed",
-                             BenchmarkParam::Create<bool>(true));
+                             ToolParam::Create<bool>(true));
 #endif
 #if defined(__ANDROID__)
     default_params_.AddParam("gpu_experimental_enable_quant",
-                             BenchmarkParam::Create<bool>(true));
+                             ToolParam::Create<bool>(true));
 #endif
 #if defined(REAL_IPHONE_DEVICE)
     default_params_.AddParam("gpu_wait_type",
-                             BenchmarkParam::Create<std::string>(""));
+                             ToolParam::Create<std::string>(""));
 #endif
   }
 
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
 
-  void LogParams(const BenchmarkParams& params) const final;
+  void LogParams(const ToolParams& params) const final;
 
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
 
   std::string GetName() const final { return "GPU"; }
 };
 REGISTER_DELEGATE_PROVIDER(GpuDelegateProvider);
 
-std::vector<Flag> GpuDelegateProvider::CreateFlags(
-    BenchmarkParams* params) const {
+std::vector<Flag> GpuDelegateProvider::CreateFlags(ToolParams* params) const {
   std::vector<Flag> flags = {
     CreateFlag<bool>("use_gpu", params, "use gpu"),
 #if defined(__ANDROID__) || defined(REAL_IPHONE_DEVICE)
@@ -83,7 +81,7 @@
   return flags;
 }
 
-void GpuDelegateProvider::LogParams(const BenchmarkParams& params) const {
+void GpuDelegateProvider::LogParams(const ToolParams& params) const {
   TFLITE_LOG(INFO) << "Use gpu : [" << params.Get<bool>("use_gpu") << "]";
 #if defined(__ANDROID__) || defined(REAL_IPHONE_DEVICE)
   TFLITE_LOG(INFO) << "Allow lower precision in gpu : ["
@@ -100,7 +98,7 @@
 }
 
 TfLiteDelegatePtr GpuDelegateProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   TfLiteDelegatePtr delegate(nullptr, [](TfLiteDelegate*) {});
 
   if (params.Get<bool>("use_gpu")) {
@@ -139,8 +137,8 @@
     delegate = TfLiteDelegatePtr(TFLGpuDelegateCreate(&gpu_opts),
                                  &TFLGpuDelegateDelete);
 #else
-    TFLITE_LOG(WARN) << "The GPU delegate compile options are only supported "
-                        "to be benchmarked on Android or iOS platforms.";
+    TFLITE_LOG(WARN) << "The GPU delegate compile options are only supported on"
+                        "Android or iOS platforms.";
     delegate = evaluation::CreateGPUDelegate();
 #endif
 
@@ -151,5 +149,5 @@
   return delegate;
 }
 
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/benchmark/hexagon_delegate_provider.cc b/tensorflow/lite/tools/delegates/hexagon_delegate_provider.cc
similarity index 79%
rename from tensorflow/lite/tools/benchmark/hexagon_delegate_provider.cc
rename to tensorflow/lite/tools/delegates/hexagon_delegate_provider.cc
index 1904dd5..0afb0b2 100644
--- a/tensorflow/lite/tools/benchmark/hexagon_delegate_provider.cc
+++ b/tensorflow/lite/tools/delegates/hexagon_delegate_provider.cc
@@ -14,7 +14,7 @@
 ==============================================================================*/
 #include <string>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/evaluation/utils.h"
 
 #if (defined(ANDROID) || defined(__ANDROID__)) && \
@@ -27,35 +27,32 @@
 #endif
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 class HexagonDelegateProvider : public DelegateProvider {
  public:
   HexagonDelegateProvider() {
 #if defined(TFLITE_ENABLE_HEXAGON)
-    default_params_.AddParam("use_hexagon",
-                             BenchmarkParam::Create<bool>(false));
-    default_params_.AddParam(
-        "hexagon_lib_path",
-        BenchmarkParam::Create<std::string>("/data/local/tmp"));
+    default_params_.AddParam("use_hexagon", ToolParam::Create<bool>(false));
+    default_params_.AddParam("hexagon_lib_path",
+                             ToolParam::Create<std::string>("/data/local/tmp"));
     default_params_.AddParam("hexagon_profiling",
-                             BenchmarkParam::Create<bool>(false));
+                             ToolParam::Create<bool>(false));
 #endif
   }
 
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
 
-  void LogParams(const BenchmarkParams& params) const final;
+  void LogParams(const ToolParams& params) const final;
 
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
 
   std::string GetName() const final { return "Hexagon"; }
 };
 REGISTER_DELEGATE_PROVIDER(HexagonDelegateProvider);
 
 std::vector<Flag> HexagonDelegateProvider::CreateFlags(
-    BenchmarkParams* params) const {
+    ToolParams* params) const {
 #if defined(TFLITE_ENABLE_HEXAGON)
   std::vector<Flag> flags = {
       CreateFlag<bool>("use_hexagon", params, "Use Hexagon delegate"),
@@ -70,7 +67,7 @@
 #endif
 }
 
-void HexagonDelegateProvider::LogParams(const BenchmarkParams& params) const {
+void HexagonDelegateProvider::LogParams(const ToolParams& params) const {
 #if defined(TFLITE_ENABLE_HEXAGON)
   TFLITE_LOG(INFO) << "Use Hexagon : [" << params.Get<bool>("use_hexagon")
                    << "]";
@@ -82,7 +79,7 @@
 }
 
 TfLiteDelegatePtr HexagonDelegateProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   TfLiteDelegatePtr delegate(nullptr, [](TfLiteDelegate*) {});
 #if defined(TFLITE_ENABLE_HEXAGON)
   if (params.Get<bool>("use_hexagon")) {
@@ -105,5 +102,5 @@
   return delegate;
 }
 
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/benchmark/nnapi_delegate_provider.cc b/tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc
similarity index 87%
rename from tensorflow/lite/tools/benchmark/nnapi_delegate_provider.cc
rename to tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc
index 04aa318..f3ed874 100644
--- a/tensorflow/lite/tools/benchmark/nnapi_delegate_provider.cc
+++ b/tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc
@@ -14,40 +14,38 @@
 ==============================================================================*/
 #include <string>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/evaluation/utils.h"
 #if defined(__ANDROID__)
 #include "tensorflow/lite/nnapi/nnapi_util.h"
 #endif
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 class NnapiDelegateProvider : public DelegateProvider {
  public:
   NnapiDelegateProvider() {
-    default_params_.AddParam("use_nnapi", BenchmarkParam::Create<bool>(false));
+    default_params_.AddParam("use_nnapi", ToolParam::Create<bool>(false));
     default_params_.AddParam("nnapi_execution_preference",
-                             BenchmarkParam::Create<std::string>(""));
+                             ToolParam::Create<std::string>(""));
     default_params_.AddParam("nnapi_accelerator_name",
-                             BenchmarkParam::Create<std::string>(""));
+                             ToolParam::Create<std::string>(""));
     default_params_.AddParam("disable_nnapi_cpu",
-                             BenchmarkParam::Create<bool>(false));
+                             ToolParam::Create<bool>(false));
   }
 
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
 
-  void LogParams(const BenchmarkParams& params) const final;
+  void LogParams(const ToolParams& params) const final;
 
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
 
   std::string GetName() const final { return "NNAPI"; }
 };
 REGISTER_DELEGATE_PROVIDER(NnapiDelegateProvider);
 
-std::vector<Flag> NnapiDelegateProvider::CreateFlags(
-    BenchmarkParams* params) const {
+std::vector<Flag> NnapiDelegateProvider::CreateFlags(ToolParams* params) const {
   std::vector<Flag> flags = {
       CreateFlag<bool>("use_nnapi", params, "use nnapi delegate api"),
       CreateFlag<std::string>("nnapi_execution_preference", params,
@@ -63,7 +61,7 @@
   return flags;
 }
 
-void NnapiDelegateProvider::LogParams(const BenchmarkParams& params) const {
+void NnapiDelegateProvider::LogParams(const ToolParams& params) const {
 #if defined(__ANDROID__)
   TFLITE_LOG(INFO) << "Use nnapi : [" << params.Get<bool>("use_nnapi") << "]";
   if (params.Get<bool>("use_nnapi")) {
@@ -90,7 +88,7 @@
 }
 
 TfLiteDelegatePtr NnapiDelegateProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   TfLiteDelegatePtr delegate(nullptr, [](TfLiteDelegate*) {});
   if (params.Get<bool>("use_nnapi")) {
     StatefulNnApiDelegate::Options options;
@@ -150,5 +148,5 @@
   return delegate;
 }
 
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/benchmark/xnnpack_delegate_provider.cc b/tensorflow/lite/tools/delegates/xnnpack_delegate_provider.cc
similarity index 71%
rename from tensorflow/lite/tools/benchmark/xnnpack_delegate_provider.cc
rename to tensorflow/lite/tools/delegates/xnnpack_delegate_provider.cc
index 7222639..e9bdfb4 100644
--- a/tensorflow/lite/tools/benchmark/xnnpack_delegate_provider.cc
+++ b/tensorflow/lite/tools/delegates/xnnpack_delegate_provider.cc
@@ -14,44 +14,42 @@
 ==============================================================================*/
 #include <string>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/evaluation/utils.h"
 
 namespace tflite {
-namespace benchmark {
+namespace tools {
 
 class XnnpackDelegateProvider : public DelegateProvider {
  public:
   XnnpackDelegateProvider() {
-    default_params_.AddParam("use_xnnpack",
-                             BenchmarkParam::Create<bool>(false));
+    default_params_.AddParam("use_xnnpack", ToolParam::Create<bool>(false));
   }
 
-  std::vector<Flag> CreateFlags(BenchmarkParams* params) const final;
+  std::vector<Flag> CreateFlags(ToolParams* params) const final;
 
-  void LogParams(const BenchmarkParams& params) const final;
+  void LogParams(const ToolParams& params) const final;
 
-  TfLiteDelegatePtr CreateTfLiteDelegate(
-      const BenchmarkParams& params) const final;
+  TfLiteDelegatePtr CreateTfLiteDelegate(const ToolParams& params) const final;
 
   std::string GetName() const final { return "XNNPACK"; }
 };
 REGISTER_DELEGATE_PROVIDER(XnnpackDelegateProvider);
 
 std::vector<Flag> XnnpackDelegateProvider::CreateFlags(
-    BenchmarkParams* params) const {
+    ToolParams* params) const {
   std::vector<Flag> flags = {
       CreateFlag<bool>("use_xnnpack", params, "use XNNPack")};
   return flags;
 }
 
-void XnnpackDelegateProvider::LogParams(const BenchmarkParams& params) const {
+void XnnpackDelegateProvider::LogParams(const ToolParams& params) const {
   TFLITE_LOG(INFO) << "Use xnnpack : [" << params.Get<bool>("use_xnnpack")
                    << "]";
 }
 
 TfLiteDelegatePtr XnnpackDelegateProvider::CreateTfLiteDelegate(
-    const BenchmarkParams& params) const {
+    const ToolParams& params) const {
   if (params.Get<bool>("use_xnnpack")) {
     return evaluation::CreateXNNPACKDelegate(
         params.Get<int32_t>("num_threads"));
@@ -59,5 +57,5 @@
   return TfLiteDelegatePtr(nullptr, [](TfLiteDelegate*) {});
 }
 
-}  // namespace benchmark
+}  // namespace tools
 }  // namespace tflite
diff --git a/tensorflow/lite/tools/evaluation/BUILD b/tensorflow/lite/tools/evaluation/BUILD
index 0955b6d..1bc3521 100644
--- a/tensorflow/lite/tools/evaluation/BUILD
+++ b/tensorflow/lite/tools/evaluation/BUILD
@@ -57,6 +57,7 @@
         "//conditions:default": [],
     }) + select({
         "//tensorflow:fuchsia": [],
+        "//tensorflow:windows": [],
         "//conditions:default": [
             "//tensorflow/lite/delegates/xnnpack:xnnpack_delegate",
         ],
@@ -73,8 +74,8 @@
         "//tensorflow/lite/tools:command_line_flags",
         "//tensorflow/lite/tools:logging",
         "//tensorflow/lite/tools:tool_params",
-        "//tensorflow/lite/tools/benchmark:delegate_provider_hdr",
-        "//tensorflow/lite/tools/benchmark:tflite_execution_providers",
+        "//tensorflow/lite/tools/delegates:delegate_provider_hdr",
+        "//tensorflow/lite/tools/delegates:tflite_execution_providers",
         "//tensorflow/lite/tools/evaluation/proto:evaluation_stages_cc_proto",
     ],
 )
diff --git a/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.cc b/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.cc
index b4ccbf4..42f2666 100644
--- a/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.cc
+++ b/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.cc
@@ -78,7 +78,7 @@
 }
 
 DelegateProviders::DelegateProviders()
-    : delegates_list_(benchmark::GetRegisteredDelegateProviders()),
+    : delegates_list_(tools::GetRegisteredDelegateProviders()),
       delegates_map_([=]() -> std::unordered_map<std::string, int> {
         std::unordered_map<std::string, int> delegates_map;
         for (int i = 0; i < delegates_list_.size(); ++i) {
diff --git a/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.h b/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.h
index 9afba41..36f8046 100644
--- a/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.h
+++ b/tensorflow/lite/tools/evaluation/evaluation_delegate_provider.h
@@ -20,7 +20,7 @@
 #include <unordered_map>
 #include <vector>
 
-#include "tensorflow/lite/tools/benchmark/delegate_provider.h"
+#include "tensorflow/lite/tools/delegates/delegate_provider.h"
 #include "tensorflow/lite/tools/evaluation/proto/evaluation_stages.pb.h"
 #include "tensorflow/lite/tools/evaluation/utils.h"
 #include "tensorflow/lite/tools/tool_params.h"
@@ -73,7 +73,7 @@
   // flags.
   tools::ToolParams params_;
 
-  const benchmark::DelegateProviderList& delegates_list_;
+  const tools::DelegateProviderList& delegates_list_;
   // Key is the delegate name, and the value is the index to the
   // 'delegates_list_'.
   const std::unordered_map<std::string, int> delegates_map_;
diff --git a/tensorflow/lite/tools/make/Makefile b/tensorflow/lite/tools/make/Makefile
index 426ed63..26d3ce9 100644
--- a/tensorflow/lite/tools/make/Makefile
+++ b/tensorflow/lite/tools/make/Makefile
@@ -212,7 +212,7 @@
 
 # Benchmark sources
 BENCHMARK_SRCS_DIR := tensorflow/lite/tools/benchmark
-DELEGATE_PROVIDER_SRCS_DIR := tensorflow/lite/tools/benchmark
+DELEGATE_PROVIDER_SRCS_DIR := tensorflow/lite/tools/delegates
 EVALUATION_UTILS_SRCS := \
   tensorflow/lite/tools/evaluation/utils.cc
 BENCHMARK_ALL_SRCS := \