Add several vision models for Tosa Benchmarking
diff --git a/benchmarks/TFLite/CMakeLists.txt b/benchmarks/TFLite/CMakeLists.txt
new file mode 100644
index 0000000..0b076be
--- /dev/null
+++ b/benchmarks/TFLite/CMakeLists.txt
@@ -0,0 +1,176 @@
+# Copyright 2021 The IREE Authors
+#
+# Licensed under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+
+################################################################################
+# #
+# Benchmark models for Tosa #
+# #
+# Each module specification should be a list that contains the following #
+# fields: MODULE_NAME, MODULE_TAGS, MLIR_SOURCE, ENTRY_FUNCTION, #
+# FUNCTION_INPUTS. See iree_mlir_benchmark_suite definition for details about #
+# these fields. #
+# #
+################################################################################
+
+set(MOBILESSD_FP32_MODULE
+ "MobileSSD" # MODULE_NAME
+ "fp32" # MODULE_TAGS
+ "https://storage.googleapis.com/iree-model-artifacts/MobileSSD-2bcafb1.tar.gz" # MLIR_SOURCE
+ "main" # ENTRY_FUNCTION
+ "1x320x320x3xf32" # FUNCTION_INPUTS
+)
+
+set(POSENET_FP32_MODULE
+ "PoseNet" # MODULE_NAME
+ "fp32" # MODULE_TAGS
+ "https://storage.googleapis.com/iree-model-artifacts/PoseNet-2bcafb1.tar.gz" # MLIR_SOURCE
+ "main" # ENTRY_FUNCTION
+ "1x353x257x3xf32" # FUNCTION_INPUTS
+)
+
+set(DEEPLABV3_FP32_MODULE
+ "DeepLabV3" # MODULE_NAME
+ "fp32" # MODULE_TAGS
+ "https://storage.googleapis.com/iree-model-artifacts/DeepLabV3-2bcafb1.tar.gz" # MLIR_SOURCE
+ "main" # ENTRY_FUNCTION
+ "1x257x257x3xf32" # FUNCTION_INPUTS
+)
+
+################################################################################
+# #
+# Common benchmark configurations #
+# #
+# Each suite benchmarks a list of modules with some specific configuration, #
+# typically involving different translation/runtime flags and targeting #
+# different IREE drivers and hardware architectures. #
+# #
+################################################################################
+
+# CPU, Dylib-Sync, big/little-core, full-inference
+iree_mlir_benchmark_suite(
+ MODULES
+ ${MOBILENETSSD_FP32_MODULE}
+ ${POSENET_FP32_MODULE}
+ ${DEEPLABV3_FP32_MODULE}
+
+ BENCHMARK_MODES
+ "big-core,full-inference"
+ "little-core,full-inference"
+ TARGET_BACKEND
+ "dylib-llvm-aot"
+ TARGET_ARCHITECTURE
+ "CPU-ARM64-v8A"
+ TRANSLATION_FLAGS
+ "--iree-input-type=tosa"
+ "--iree-llvm-target-triple=aarch64-none-linux-android29"
+ "--iree-flow-inline-constants-max-byte-length=2048"
+ #"--iree-flow-dispatch-formation-enable-operand-fusion"
+ "--iree-llvm-loop-unrolling=true"
+ DRIVER
+ "dylib-sync"
+)
+
+# CPU, Dylib, 1-thread, big/little-core, full-inference
+iree_mlir_benchmark_suite(
+ MODULES
+ ${MOBILESSD_FP32_MODULE}
+ ${POSENET_FP32_MODULE}
+ ${DEEPLABV3_FP32_MODULE}
+
+ BENCHMARK_MODES
+ "1-thread,big-core,full-inference"
+ "1-thread,little-core,full-inference"
+ TARGET_BACKEND
+ "dylib-llvm-aot"
+ TARGET_ARCHITECTURE
+ "CPU-ARM64-v8A"
+ TRANSLATION_FLAGS
+ "--iree-input-type=tosa"
+ "--iree-llvm-target-triple=aarch64-none-linux-android29"
+ "--iree-flow-inline-constants-max-byte-length=2048"
+ #"--iree-flow-dispatch-formation-enable-operand-fusion"
+ "--iree-llvm-loop-unrolling=true"
+ DRIVER
+ "dylib"
+ RUNTIME_FLAGS
+ "--task_topology_group_count=1"
+)
+
+# GPU, Vulkan, Mali, full-inference
+iree_mlir_benchmark_suite(
+ MODULES
+ ${MOBILESSD_FP32_MODULE}
+ ${POSENET_FP32_MODULE}
+ ${DEEPLABV3_FP32_MODULE}
+
+ BENCHMARK_MODES
+ "1-thread,big-core,full-inference"
+ "1-thread,little-core,full-inference"
+ TARGET_BACKEND
+ "dylib-llvm-aot"
+ TARGET_ARCHITECTURE
+ "CPU-ARM64-v8A"
+ TRANSLATION_FLAGS
+ "--iree-input-type=tosa"
+ "--iree-llvm-target-triple=aarch64-none-linux-android29"
+ "--iree-flow-inline-constants-max-byte-length=2048"
+ #"--iree-flow-dispatch-formation-enable-operand-fusion"
+ "--iree-llvm-loop-unrolling=true"
+ DRIVER
+ "dylib"
+ RUNTIME_FLAGS
+ "--task_topology_group_count=1"
+)
+
+# GPU, Vulkan, Mali, full-inference
+iree_mlir_benchmark_suite(
+ MODULES
+ ${MOBILESSD_FP32_MODULE}
+ ${POSENET_FP32_MODULE}
+ ${DEEPLABV3_FP32_MODULE}
+
+ BENCHMARK_MODES
+ "full-inference"
+ TARGET_BACKEND
+ "vulkan-spirv"
+ TARGET_ARCHITECTURE
+ "GPU-Mali-Valhall"
+ TRANSLATION_FLAGS
+ "--iree-input-type=tosa"
+ "--iree-vulkan-target-triple=valhall-unknown-android11"
+ "--iree-flow-inline-constants-max-byte-length=16"
+ #"--iree-flow-dispatch-formation-enable-operand-fusion"
+ "--iree-enable-fusion-with-reduction-ops"
+ DRIVER
+ "vulkan"
+)
+
+# GPU, Vulkan, Mali, kernel-execution
+iree_mlir_benchmark_suite(
+ MODULES
+ ${MOBILESSD_FP32_MODULE}
+ ${POSENET_FP32_MODULE}
+ ${DEEPLABV3_FP32_MODULE}
+
+ BENCHMARK_MODES
+ "kernel-execution"
+ TARGET_BACKEND
+ "vulkan-spirv"
+ TARGET_ARCHITECTURE
+ "GPU-Mali-Valhall"
+ TRANSLATION_FLAGS
+ "--iree-input-type=tosa"
+ "--iree-vulkan-target-triple=valhall-unknown-android11"
+ "--iree-flow-inline-constants-max-byte-length=16"
+ #"--iree-flow-dispatch-formation-enable-operand-fusion"
+ "--iree-enable-fusion-with-reduction-ops"
+ "--iree-hal-benchmark-dispatch-repeat-count=32"
+ DRIVER
+ "vulkan"
+ RUNTIME_FLAGS
+ "--batch_size=32"
+)