Uncouples integrations/tensorflow from the CMake build. (#8078)
* Removes CMake files and options.
* Makes real Python packages for the projects.
* Moves a high value subset of the existing TF test suite to be lit-based with no build system integration:
* Uncategorized tests (includes mobilebert)
* Math tests
* Layer tests
* Excludes big, whole model TF tests. We will replace them with corresponding tflite tests in an (immediate) followup (just would like to not add new features to such a large patch).
* Updates CI to build/test the new configuration.
* Will require a bit of work on the release pipeline after this. Will do in a follow-up.
* Add test timeout
* Remove bindings/python dir
* Fix benchmark build so it can find iree-import-tflite.
* Delete e2e directory
* Deflake mobile bert squad test by not writing to global tmp dir
* Enables a bunch of tests that were asserting in debug builds (but passing in release builds) once restricting a buggy pattern to static shapes (which is all it was coded to handle). See: https://github.com/google/iree/issues/8083
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b4a0e3c..1edccca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,32 +42,16 @@
option(IREE_BUILD_SAMPLES "Builds IREE sample projects." ON)
option(IREE_BUILD_TRACY "Builds tracy server tools." OFF)
-option(IREE_BUILD_TENSORFLOW_ALL "Builds all TensorFlow compiler frontends." OFF)
-option(IREE_BUILD_TENSORFLOW_COMPILER "Builds TensorFlow compiler frontend." "${IREE_BUILD_TENSORFLOW_ALL}")
-option(IREE_BUILD_TFLITE_COMPILER "Builds the TFLite compiler frontend." "${IREE_BUILD_TENSORFLOW_ALL}")
-option(IREE_BUILD_XLA_COMPILER "Builds TensorFlow XLA compiler frontend." "${IREE_BUILD_TENSORFLOW_ALL}")
-
# Properties controlling version and naming of release artifacts.
set(IREE_RELEASE_PACKAGE_SUFFIX "" CACHE STRING "Suffix to append to distributed package names")
set(IREE_RELEASE_VERSION "0.1a1" CACHE STRING "Version to embed in distributed packages")
set(IREE_RELEASE_REVISION "HEAD" CACHE STRING "Version control revision information to embed in distributed packages")
-# Master enable for tensorflow build support.
-# Note that this is a normal CMake variable used to gate build features (not
-# a cache variable that is user-settable).
-set(IREE_ENABLE_TENSORFLOW OFF)
-if(${IREE_BUILD_TENSORFLOW_ALL} OR
- ${IREE_BUILD_TENSORFLOW_COMPILER} OR
- ${IREE_BUILD_TFLITE_COMPILER} OR
- ${IREE_BUILD_XLA_COMPILER})
- set(IREE_ENABLE_TENSORFLOW ON)
-endif()
-
option(IREE_BUILD_BINDINGS_TFLITE "Builds the IREE TFLite C API compatibility shim" ON)
option(IREE_BUILD_BINDINGS_TFLITE_JAVA "Builds the IREE TFLite Java bindings with the C API compatibility shim" ON)
# Default python bindings to enabled for some features.
-option(IREE_BUILD_PYTHON_BINDINGS "Builds the IREE python bindings" "${IREE_ENABLE_TENSORFLOW}")
+option(IREE_BUILD_PYTHON_BINDINGS "Builds the IREE python bindings" OFF)
#-------------------------------------------------------------------------------
# Experimental project flags
@@ -75,9 +59,6 @@
option(IREE_BUILD_EXPERIMENTAL_REMOTING "Builds experimental remoting support." OFF)
option(IREE_BUILD_EXPERIMENTAL_ROCM "Builds the experimental ROCm Backend." OFF)
-option(IREE_ENABLE_OLD_INTEGRATION_TESTS "Enables old integration tests." OFF)
-option(IREE_ENABLE_NEW_INTEGRATION_TESTS "Enables new integration tests." OFF)
-option(IREE_ENABLE_TFLITE_INTEGRATION_TESTS "Enables tflite integration tests." OFF)
#-------------------------------------------------------------------------------
# Derived flags based on primary options
@@ -502,6 +483,12 @@
add_subdirectory(iree/vm)
if(${IREE_BUILD_BENCHMARKS})
+ find_program(IREE_IMPORT_TFLITE_PATH iree-import-tflite)
+ if(IREE_IMPORT_TFLITE_PATH)
+ message(STATUS "Found ${IREE_IMPORT_TFLITE_PATH} to generate benchmark artifacts")
+ else()
+ message(STATUS "iree-import-tflite not found. Some benchmarks may not configure")
+ endif()
add_subdirectory(benchmarks)
endif()
@@ -551,10 +538,6 @@
add_subdirectory(experimental/remoting)
endif()
-if(${IREE_ENABLE_TENSORFLOW})
- add_subdirectory(integrations/tensorflow)
-endif()
-
set(IREE_PUBLIC_INCLUDE_DIRS "${IREE_COMMON_INCLUDE_DIRS}"
CACHE INTERNAL "IREE: Include Directories" FORCE)
diff --git a/build_tools/cmake/iree_benchmark_suite.cmake b/build_tools/cmake/iree_benchmark_suite.cmake
index 96ea40f..54a224d 100644
--- a/build_tools/cmake/iree_benchmark_suite.cmake
+++ b/build_tools/cmake/iree_benchmark_suite.cmake
@@ -133,9 +133,10 @@
# If the source is a TFLite file, import it.
if("${_MODULE_SOURCE}" MATCHES "\.tflite$")
- if (NOT IREE_BUILD_TFLITE_COMPILER)
+ if (NOT IREE_IMPORT_TFLITE_PATH)
message(SEND_ERROR "Benchmarks of ${_MODULE_SOURCE} require"
- " IREE_BUILD_TFLITE_COMPILER to be ON")
+ " that iree-import-tflite be available "
+ " (either on PATH or via IREE_IMPORT_TFLITE_PATH)")
endif()
set(_TFLITE_FILE "${_MODULE_SOURCE}")
set(_MODULE_SOURCE "${_TFLITE_FILE}.mlir")
@@ -145,11 +146,10 @@
add_custom_command(
OUTPUT "${_MODULE_SOURCE}"
COMMAND
- "$<TARGET_FILE:integrations::tensorflow::iree_tf_compiler::iree-import-tflite>"
+ "${IREE_IMPORT_TFLITE_PATH}"
"${_TFLITE_FILE}"
"-o=${_MODULE_SOURCE}"
DEPENDS
- integrations::tensorflow::iree_tf_compiler::iree-import-tflite
"${_TFLITE_FILE}"
COMMENT "Importing TFLite file ${_TFLITE_FILE_BASENAME}"
)
diff --git a/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-swiftshader/build.sh b/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-swiftshader/build.sh
index dfad1ab..5784e83 100755
--- a/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-swiftshader/build.sh
+++ b/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-swiftshader/build.sh
@@ -32,6 +32,7 @@
./scripts/git/submodule_versions.py init
# BUILD the integrations binaries with Bazel and run any lit tests
+IREE_SRC_DIR="$PWD"
pushd integrations/tensorflow
BAZEL_CMD=(bazel --noworkspace_rc --bazelrc=build_tools/bazel/iree-tf.bazelrc)
BAZEL_BINDIR="$(${BAZEL_CMD[@]?} info bazel-bin)"
@@ -45,6 +46,7 @@
--config=generic_clang \
--test_tag_filters="-nokokoro" \
--build_tag_filters="-nokokoro"
+bash ./symlink_binaries.sh
popd
CMAKE_BUILD_DIR="$HOME/iree/build/tf"
@@ -59,11 +61,7 @@
-DIREE_BUILD_COMPILER=ON \
-DIREE_BUILD_TESTS=ON \
-DIREE_BUILD_SAMPLES=OFF \
- -DIREE_BUILD_XLA_COMPILER=ON \
- -DIREE_BUILD_TFLITE_COMPILER=ON \
- -DIREE_BUILD_TENSORFLOW_COMPILER=ON \
- -DIREE_ENABLE_OLD_INTEGRATION_TESTS=ON \
- -DIREE_ENABLE_TFLITE_INTEGRATION_TESTS=ON \
+ -DIREE_BUILD_PYTHON_BINDINGS=ON \
.
echo "Building with Ninja"
@@ -72,7 +70,30 @@
export CTEST_PARALLEL_LEVEL=${CTEST_PARALLEL_LEVEL:-$(nproc)}
-echo "Testing with CTest"
-ctest --timeout 900 --output-on-failure \
+tests_passed=true
+
+echo "***** Testing with CTest *****"
+if ! ctest --timeout 900 --output-on-failure \
--tests-regex "^integrations/tensorflow/|^bindings/python/" \
--label-exclude "^nokokoro$|^vulkan_uses_vk_khr_shader_float16_int8$"
+then
+ tests_passed=false
+fi
+
+echo "***** Running TensorFlow integration tests *****"
+# TODO: Use "--timeout 900" instead of --max-time below. Requires that
+# `psutil` python package be installed in the VM for per test timeout.
+cd "$IREE_SRC_DIR"
+source "${CMAKE_BUILD_DIR?}/.env" && export PYTHONPATH
+LIT_SCRIPT="$IREE_SRC_DIR/third_party/llvm-project/llvm/utils/lit/lit.py"
+if ! python3 "$LIT_SCRIPT" -v integrations/tensorflow/test \
+ --max-time 1800 \
+ -D FEATURES=vulkan
+then
+ tests_passed=false
+fi
+
+if ! $tests_passed; then
+ echo "Some tests failed!!!"
+ exit 1
+fi
diff --git a/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-turing/build.sh b/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-turing/build.sh
index 4bf2f32..34e0efa 100755
--- a/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-turing/build.sh
+++ b/build_tools/kokoro/gcp_ubuntu/cmake-bazel/linux/x86-turing/build.sh
@@ -33,6 +33,7 @@
./scripts/git/submodule_versions.py init
# BUILD the integrations binaries with Bazel
+IREE_SRC_DIR="$PWD"
pushd integrations/tensorflow
BAZEL_CMD=(bazel --noworkspace_rc --bazelrc=build_tools/bazel/iree-tf.bazelrc)
BAZEL_BINDIR="$(${BAZEL_CMD[@]?} info bazel-bin)"
@@ -46,6 +47,7 @@
--config=generic_clang \
--config=remote_cache_bazel_ci \
//iree_tf_compiler:all
+bash ./symlink_binaries.sh
popd
@@ -62,9 +64,8 @@
-DIREE_BUILD_COMPILER=ON \
-DIREE_BUILD_TESTS=ON \
-DIREE_BUILD_SAMPLES=OFF \
- -DIREE_BUILD_XLA_COMPILER=ON \
- -DIREE_BUILD_TFLITE_COMPILER=ON \
- -DIREE_BUILD_TENSORFLOW_COMPILER=ON .
+ -DIREE_BUILD_PYTHON_BINDINGS=ON \
+ .
echo "Building with Ninja"
cd "${CMAKE_BUILD_DIR?}"
@@ -74,10 +75,34 @@
# TODO(#5162): Handle this more robustly
export CTEST_PARALLEL_LEVEL=${CTEST_PARALLEL_LEVEL:-1}
+tests_passed=true
+
# Only test drivers that use the GPU, since we run all tests on non-GPU machines
# as well.
-echo "Testing with CTest"
-ctest --timeout 900 --output-on-failure \
+echo "***** Testing with CTest *****"
+if ! ctest --timeout 900 --output-on-failure \
--tests-regex "^integrations/tensorflow/|^bindings/python/" \
--label-regex "^driver=vulkan$|^driver=cuda$" \
--label-exclude "^nokokoro$"
+then
+ tests_passed=false
+fi
+
+echo "***** Running TensorFlow integration tests *****"
+# TODO: Use "--timeout 900" instead of --max-time below. Requires that
+# `psutil` python package be installed in the VM for per test timeout.
+cd "$IREE_SRC_DIR"
+source "${CMAKE_BUILD_DIR?}/.env" && export PYTHONPATH
+LIT_SCRIPT="$IREE_SRC_DIR/third_party/llvm-project/llvm/utils/lit/lit.py"
+if ! python3 "$LIT_SCRIPT" -v integrations/tensorflow/test \
+ --max-time 1800 \
+ -D DISABLE_FEATURES=llvmaot \
+ -D FEATURES=vulkan
+then
+ tests_passed=false
+fi
+
+if ! $tests_passed; then
+ echo "Some tests failed!!!"
+ exit 1
+fi
diff --git a/build_tools/kokoro/gcp_ubuntu/cmake/android/build.sh b/build_tools/kokoro/gcp_ubuntu/cmake/android/build.sh
index dbcf06c..18611c6 100755
--- a/build_tools/kokoro/gcp_ubuntu/cmake/android/build.sh
+++ b/build_tools/kokoro/gcp_ubuntu/cmake/android/build.sh
@@ -48,6 +48,8 @@
"${BAZEL_CMD[@]}" build //iree_tf_compiler:iree-import-tflite \
--config=generic_clang \
--config=remote_cache_bazel_ci
+# So the benchmark build below can find the importer binaries that were built.
+export PATH="$PWD/bazel-bin/iree_tf_compiler:$PATH"
# --------------------------------------------------------------------------- #
# Build for the host.
@@ -70,8 +72,8 @@
-DIREE_BUILD_COMPILER=ON \
-DIREE_BUILD_TESTS=OFF \
-DIREE_BUILD_BENCHMARKS=ON \
- -DIREE_BUILD_TFLITE_COMPILER=ON \
-DIREE_BUILD_SAMPLES=OFF
+
"${CMAKE_BIN}" --build . --target install
# Also make sure that we can generate artifacts for benchmarking on Android.
"${CMAKE_BIN}" --build . --target iree-benchmark-suites
diff --git a/integrations/tensorflow/CMakeLists.txt b/integrations/tensorflow/CMakeLists.txt
deleted file mode 100644
index 6e8f443..0000000
--- a/integrations/tensorflow/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 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
-
-# TensorFlow builds through bazel, and IREE maintains all of its TensorFlow
-# dependent code under this directory tree. The CMake support is limited to
-# compiler binaries and python bindings.
-#
-# If this directory is included, then building TensorFlow is assumed (the
-# config option happens at the higher level).
-
-add_subdirectory(iree_tf_compiler)
-
-if(${IREE_BUILD_PYTHON_BINDINGS})
- add_subdirectory(bindings/python)
-endif()
-
-if(${IREE_BUILD_TESTS} AND ${IREE_BUILD_PYTHON_BINDINGS})
- add_subdirectory(test)
- if(${IREE_ENABLE_OLD_INTEGRATION_TESTS})
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/e2e/")
- include(iree_e2e_cartesian_product_test_suite)
- add_subdirectory(e2e)
- endif()
-endif()
diff --git a/integrations/tensorflow/README.md b/integrations/tensorflow/README.md
index 1fcad82..65abc4a 100644
--- a/integrations/tensorflow/README.md
+++ b/integrations/tensorflow/README.md
@@ -6,7 +6,6 @@
## Quick Development Setup
This assumes that you have an appropriate `bazel` installed.
-
Build the importer binaries:
```
@@ -19,9 +18,43 @@
bazel build iree_tf_compiler:iree-import-tf
```
-## Notes:
+Symlink binaries into python packages (only needs to be done once):
-This directory is in a transitional state to its own project. Currently it
-has its directory structure set up for that eventuality. Specifically,
-`iree-dialects` is a symlink to the directory from the main repo. When split,
-this will be a copy.
\ No newline at end of file
+```
+./symlink_binaries.sh
+```
+
+Pip install editable (recommend to do this in a virtual environment):
+
+```
+pip install -e python_projects/iree_tflite
+pip install -e python_projects/iree_xla
+pip install -e python_projects/iree_tf
+```
+
+Test installed:
+
+```
+iree-import-tflite -help
+iree-import-xla -help
+iree-import-tf -help
+```
+
+## Run test suite
+
+You need to make sure that the iree compiler and runtime are on your PYTHONPATH.
+The easiest way to do this is to install wheels with pip. For development,
+the following should do it:
+
+```
+source ~/path/to/iree-build/.env && export PYTHONPATH
+```
+
+Run the test suite with:
+
+```
+lit -v test/
+```
+
+Note that you can specify arbitrary sub-directories or individual files/globs
+as needed.
diff --git a/integrations/tensorflow/bindings/python/CMakeLists.txt b/integrations/tensorflow/bindings/python/CMakeLists.txt
deleted file mode 100644
index 788b527..0000000
--- a/integrations/tensorflow/bindings/python/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 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
-
-# Overlays a subdirectory into the main python bindings directory.
-function(_add_overlay_subdirectory dir)
- # Overlay binary directories onto the main bindings directory.
- set(_MAIN_PYTHON_DIR "${CMAKE_BINARY_DIR}/bindings/python")
- add_subdirectory(${dir} "${_MAIN_PYTHON_DIR}/${dir}")
-endfunction()
-
-if(${IREE_BUILD_TENSORFLOW_COMPILER} OR ${IREE_BUILD_TENSORFLOW_ALL})
- _add_overlay_subdirectory(iree/tools/tf)
-endif()
-
-if(${IREE_BUILD_TFLITE_COMPILER} OR ${IREE_BUILD_TENSORFLOW_ALL})
- _add_overlay_subdirectory(iree/tools/tflite)
-endif()
-
-if(${IREE_BUILD_XLA_COMPILER} OR ${IREE_BUILD_TENSORFLOW_ALL})
- _add_overlay_subdirectory(iree/tools/xla)
-endif()
-
-# TODO: Find another place for the TF support library.
-# Pure python so can just always be generated.
-_add_overlay_subdirectory(iree/tf/support)
diff --git a/integrations/tensorflow/bindings/python/build_requirements.txt b/integrations/tensorflow/bindings/python/build_requirements.txt
deleted file mode 100644
index 38547ff..0000000
--- a/integrations/tensorflow/bindings/python/build_requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-tf-nightly>=2.7.0.dev20210802
-tensorflow-model-optimization==0.5.1.dev0
-PyYAML
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/CMakeLists.txt b/integrations/tensorflow/bindings/python/iree/tf/support/CMakeLists.txt
deleted file mode 100644
index 0876d34..0000000
--- a/integrations/tensorflow/bindings/python/iree/tf/support/CMakeLists.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2020 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
-
-iree_py_library(
- NAME
- support
- SRCS
- "__init__.py"
- "module_utils.py"
- "tf_test_driver.py"
- "tf_test_utils.py"
- "tf_utils.py"
- "trace_utils.py"
-)
-
-# TODO(#5147): Replace the hack below with something more thought out.
-# Make the base dir that run_test.sh expects to exist. This dir doesn't exist
-# by default because we symlink these python files into bindings/python/iree.
-file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/integrations/tensorflow/bindings/python/iree/tf/support")
-
-iree_py_test(
- NAME
- module_utils_test
- SRCS
- "module_utils_test.py"
-)
-
-iree_py_test(
- NAME
- tf_test_utils_test
- SRCS
- "tf_test_utils_test.py"
-)
-
-iree_py_test(
- NAME
- tf_utils_test
- SRCS
- "tf_utils_test.py"
-)
-
-iree_py_test(
- NAME
- trace_utils_test
- SRCS
- "trace_utils_test.py"
-)
-
-iree_py_install_package(
- AUGMENT_EXISTING_PACKAGE
- COMPONENT IreePythonPackage-tools-tf
- PACKAGE_NAME iree_tools_tf
- MODULE_PATH iree/tf/support
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tf/CMakeLists.txt b/integrations/tensorflow/bindings/python/iree/tools/tf/CMakeLists.txt
deleted file mode 100644
index 77fd6c1..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/tf/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2020 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
-
-set(_srcs
- "__init__.py"
- "scripts/iree_import_tf/__main__.py"
-)
-
-iree_py_library(
- NAME
- tf
- SRCS ${_srcs}
- DEPS
- integrations::tensorflow::iree_tf_compiler::iree-import-tf
-)
-
-iree_symlink_tool(
- TARGET tf
- FROM_TOOL_TARGET integrations::tensorflow::iree_tf_compiler::iree-import-tf
- TO_EXE_NAME iree-import-tf
-)
-
-iree_py_install_package(
- COMPONENT IreePythonPackage-tools-tf
- PACKAGE_NAME iree_tools_tf
- MODULE_PATH iree/tools/tf
- FILES_MATCHING ${_srcs}
- DEPS
- integrations::tensorflow::iree_tf_compiler::iree-import-tf
-)
-
-# Since imported, need to resolve the TARGET_FILE ourselves instead of
-# install TARGETS form.
-install(
- PROGRAMS "$<TARGET_FILE:integrations::tensorflow::iree_tf_compiler::iree-import-tf>"
- DESTINATION "${PY_INSTALL_MODULE_DIR}"
- COMPONENT "${PY_INSTALL_COMPONENT}"
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tf/setup.py.in b/integrations/tensorflow/bindings/python/iree/tools/tf/setup.py.in
deleted file mode 100644
index df15598..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/tf/setup.py.in
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 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
-
-# Build platform specific wheel files for the iree.runtime package.
-# Built artifacts are per-platform and build out of the build tree.
-
-from distutils.command.install import install
-import os
-import platform
-from setuptools import setup, find_namespace_packages
-
-README = r'''
-TensorFlow XLA Compiler Tools
-'''
-
-exe_suffix = ".exe" if platform.system() == "Windows" else ""
-
-# Force platform specific wheel.
-# https://stackoverflow.com/questions/45150304
-try:
- from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
-
- class bdist_wheel(_bdist_wheel):
-
- def finalize_options(self):
- _bdist_wheel.finalize_options(self)
- self.root_is_pure = False
-
- def get_tag(self):
- python, abi, plat = _bdist_wheel.get_tag(self)
- # We don't contain any python extensions so are version agnostic
- # but still want to be platform specific.
- python, abi = 'py3', 'none'
- return python, abi, plat
-
-except ImportError:
- bdist_wheel = None
-
-
-# Force installation into platlib.
-# Since this is a pure-python library with platform binaries, it is
-# mis-detected as "pure", which fails audit. Usually, the presence of an
-# extension triggers non-pure install. We force it here.
-class platlib_install(install):
-
- def finalize_options(self):
- install.finalize_options(self)
- self.install_lib = self.install_platlib
-
-
-setup(
- name="iree-tools-tf@IREE_RELEASE_PACKAGE_SUFFIX@",
- version="@IREE_RELEASE_VERSION@",
- author="The IREE Team",
- author_email="iree-discuss@googlegroups.com",
- description="IREE TensorFlow Compiler Tools",
- long_description=README,
- long_description_content_type="text/markdown",
- license="Apache-2.0",
- classifiers=[
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- ],
- url="https://github.com/google/iree",
- python_requires=">=3.7",
- packages=find_namespace_packages(include=[
- "iree.tools.tf",
- "iree.tools.tf.*",
- "iree.tf.support",
- ]),
- package_data={
- "iree.tools.tf": [f"iree-import-tf{exe_suffix}",],
- },
- cmdclass={
- 'bdist_wheel': bdist_wheel,
- 'install': platlib_install,
- },
- entry_points={
- "console_scripts": [
- "iree-import-tf = iree.tools.tf.scripts.iree_import_tf.__main__:main",
- ],
- },
- zip_safe=False, # This package is fine but not zipping is more versatile.
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tf/version.py.in b/integrations/tensorflow/bindings/python/iree/tools/tf/version.py.in
deleted file mode 100644
index e69de29..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/tf/version.py.in
+++ /dev/null
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tflite/CMakeLists.txt b/integrations/tensorflow/bindings/python/iree/tools/tflite/CMakeLists.txt
deleted file mode 100644
index d5cbb65..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/tflite/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2020 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
-
-set(_srcs
- "__init__.py"
- "scripts/iree_import_tflite/__main__.py"
-)
-
-iree_py_library(
- NAME
- tflite
- SRCS ${_srcs}
- DEPS
- integrations::tensorflow::iree_tf_compiler::iree-import-tflite
-)
-
-iree_symlink_tool(
- TARGET tflite
- FROM_TOOL_TARGET integrations::tensorflow::iree_tf_compiler::iree-import-tflite
- TO_EXE_NAME iree-import-tflite
-)
-
-iree_py_install_package(
- COMPONENT IreePythonPackage-tools-tflite
- PACKAGE_NAME iree_tools_tflite
- MODULE_PATH iree/tools/tflite
- FILES_MATCHING ${_srcs}
- DEPS
- integrations::tensorflow::iree_tf_compiler::iree-import-tflite
-)
-
-# Since imported, need to resolve the TARGET_FILE ourselves instead of
-# install TARGETS form.
-install(
- PROGRAMS "$<TARGET_FILE:integrations::tensorflow::iree_tf_compiler::iree-import-tflite>"
- DESTINATION "${PY_INSTALL_MODULE_DIR}"
- COMPONENT "${PY_INSTALL_COMPONENT}"
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tflite/setup.py.in b/integrations/tensorflow/bindings/python/iree/tools/tflite/setup.py.in
deleted file mode 100644
index f26ad3e..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/tflite/setup.py.in
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 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
-
-# Build platform specific wheel files for the iree.runtime package.
-# Built artifacts are per-platform and build out of the build tree.
-
-from distutils.command.install import install
-import os
-import platform
-from setuptools import setup, find_namespace_packages
-
-README = r'''
-TensorFlow TFLite Compiler Tools
-'''
-
-exe_suffix = ".exe" if platform.system() == "Windows" else ""
-
-# Force platform specific wheel.
-# https://stackoverflow.com/questions/45150304
-try:
- from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
-
- class bdist_wheel(_bdist_wheel):
-
- def finalize_options(self):
- _bdist_wheel.finalize_options(self)
- self.root_is_pure = False
-
- def get_tag(self):
- python, abi, plat = _bdist_wheel.get_tag(self)
- # We don't contain any python extensions so are version agnostic
- # but still want to be platform specific.
- python, abi = 'py3', 'none'
- return python, abi, plat
-
-except ImportError:
- bdist_wheel = None
-
-
-# Force installation into platlib.
-# Since this is a pure-python library with platform binaries, it is
-# mis-detected as "pure", which fails audit. Usually, the presence of an
-# extension triggers non-pure install. We force it here.
-class platlib_install(install):
-
- def finalize_options(self):
- install.finalize_options(self)
- self.install_lib = self.install_platlib
-
-
-setup(
- name="iree-tools-tflite@IREE_RELEASE_PACKAGE_SUFFIX@",
- version="@IREE_RELEASE_VERSION@",
- author="The IREE Team",
- author_email="iree-discuss@googlegroups.com",
- description="IREE TFLite Compiler Tools",
- long_description=README,
- long_description_content_type="text/markdown",
- license="Apache-2.0",
- classifiers=[
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- ],
- url="https://github.com/google/iree",
- python_requires=">=3.7",
- packages=find_namespace_packages(include=[
- "iree.tools.tflite",
- "iree.tools.tflite.*",
- ]),
- package_data={
- "iree.tools.tflite": [f"iree-import-tflite{exe_suffix}",],
- },
- cmdclass={
- 'bdist_wheel': bdist_wheel,
- 'install': platlib_install,
- },
- entry_points={
- "console_scripts": [
- "iree-import-tflite = iree.tools.tflite.scripts.iree_import_tflite.__main__:main",
- ],
- },
- zip_safe=False, # This package is fine but not zipping is more versatile.
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tflite/version.py.in b/integrations/tensorflow/bindings/python/iree/tools/tflite/version.py.in
deleted file mode 100644
index e660b02..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/tflite/version.py.in
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2020 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
-
-PACKAGE_SUFFIX = "@IREE_RELEASE_PACKAGE_SUFFIX@"
-VERSION = "@IREE_RELEASE_VERSION@"
-REVISION = "@IREE_RELEASE_REVISION@"
diff --git a/integrations/tensorflow/bindings/python/iree/tools/xla/CMakeLists.txt b/integrations/tensorflow/bindings/python/iree/tools/xla/CMakeLists.txt
deleted file mode 100644
index 637bb81..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/xla/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2020 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
-
-set(_srcs
- "__init__.py"
- "scripts/iree_import_xla/__main__.py"
-)
-
-iree_py_library(
- NAME
- xla
- SRCS ${_srcs}
- DEPS
- integrations::tensorflow::iree_tf_compiler::iree-import-xla
-)
-
-iree_symlink_tool(
- TARGET xla
- FROM_TOOL_TARGET integrations::tensorflow::iree_tf_compiler::iree-import-xla
- TO_EXE_NAME iree-import-xla
-)
-
-iree_py_install_package(
- COMPONENT IreePythonPackage-tools-xla
- PACKAGE_NAME iree_tools_xla
- MODULE_PATH iree/tools/xla
- FILES_MATCHING ${_srcs}
- DEPS
- integrations::tensorflow::iree_tf_compiler::iree-import-xla
-)
-
-# Since imported, need to resolve the TARGET_FILE ourselves instead of
-# install TARGETS form.
-install(
- PROGRAMS "$<TARGET_FILE:integrations::tensorflow::iree_tf_compiler::iree-import-xla>"
- DESTINATION "${PY_INSTALL_MODULE_DIR}"
- COMPONENT "${PY_INSTALL_COMPONENT}"
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/xla/setup.py.in b/integrations/tensorflow/bindings/python/iree/tools/xla/setup.py.in
deleted file mode 100644
index 192824d..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/xla/setup.py.in
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/python3
-
-# Copyright 2020 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
-
-# Build platform specific wheel files for the iree.runtime package.
-# Built artifacts are per-platform and build out of the build tree.
-
-from distutils.command.install import install
-import os
-import platform
-from setuptools import setup, find_namespace_packages
-
-README = r'''
-TensorFlow XLA Compiler Tools
-'''
-
-exe_suffix = ".exe" if platform.system() == "Windows" else ""
-
-# Force platform specific wheel.
-# https://stackoverflow.com/questions/45150304
-try:
- from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
-
- class bdist_wheel(_bdist_wheel):
-
- def finalize_options(self):
- _bdist_wheel.finalize_options(self)
- self.root_is_pure = False
-
- def get_tag(self):
- python, abi, plat = _bdist_wheel.get_tag(self)
- # We don't contain any python extensions so are version agnostic
- # but still want to be platform specific.
- python, abi = 'py3', 'none'
- return python, abi, plat
-
-except ImportError:
- bdist_wheel = None
-
-
-# Force installation into platlib.
-# Since this is a pure-python library with platform binaries, it is
-# mis-detected as "pure", which fails audit. Usually, the presence of an
-# extension triggers non-pure install. We force it here.
-class platlib_install(install):
-
- def finalize_options(self):
- install.finalize_options(self)
- self.install_lib = self.install_platlib
-
-
-setup(
- name="iree-tools-xla@IREE_RELEASE_PACKAGE_SUFFIX@",
- version="@IREE_RELEASE_VERSION@",
- author="The IREE Team",
- author_email="iree-discuss@googlegroups.com",
- description="IREE XLA Compiler Tools",
- long_description=README,
- long_description_content_type="text/markdown",
- license="Apache-2.0",
- classifiers=[
- "Programming Language :: Python :: 3.7",
- "Programming Language :: Python :: 3.8",
- "Programming Language :: Python :: 3.9",
- ],
- url="https://github.com/google/iree",
- python_requires=">=3.7",
- packages=find_namespace_packages(include=[
- "iree.tools.xla",
- "iree.tools.xla.*",
- ]),
- package_data={
- "iree.tools.xla": [f"iree-import-xla{exe_suffix}",],
- },
- cmdclass={
- 'bdist_wheel': bdist_wheel,
- 'install': platlib_install,
- },
- entry_points={
- "console_scripts": [
- "iree-import-xla = iree.tools.xla.scripts.iree_import_xla.__main__:main",
- ],
- },
- zip_safe=False, # This package is fine but not zipping is more versatile.
-)
diff --git a/integrations/tensorflow/bindings/python/iree/tools/xla/version.py.in b/integrations/tensorflow/bindings/python/iree/tools/xla/version.py.in
deleted file mode 100644
index e660b02..0000000
--- a/integrations/tensorflow/bindings/python/iree/tools/xla/version.py.in
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright 2020 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
-
-PACKAGE_SUFFIX = "@IREE_RELEASE_PACKAGE_SUFFIX@"
-VERSION = "@IREE_RELEASE_VERSION@"
-REVISION = "@IREE_RELEASE_REVISION@"
diff --git a/integrations/tensorflow/e2e/BUILD b/integrations/tensorflow/e2e/BUILD
deleted file mode 100644
index c640bd7..0000000
--- a/integrations/tensorflow/e2e/BUILD
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright 2019 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load("//build_tools/bazel:enforce_glob.bzl", "enforce_glob")
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-# Create binaries for all test srcs to allow them to be run manually.
-[
- py_binary(
- name = src.replace(".py", "_manual"),
- srcs = [src],
- main = src,
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
- )
- for src in glob(["*_test.py"])
-]
-
-ALL_SRCS = [
- "batch_norm_test.py",
- "batch_to_space_nd_test.py",
- "broadcast_to_test.py",
- "broadcasting_test.py",
- "concat_test.py",
- "control_flow_test.py",
- "conv_test.py",
- "conv_transpose_test.py",
- "depth_conv_test.py",
- "dynamic_mlp_relu_test.py",
- "dynamic_mlp_test.py",
- "einsum_dynamic_test.py",
- "einsum_static_test.py",
- "einsum_vector_test.py",
- "fft_test.py",
- "fill_test.py",
- "gather_test.py",
- "image_resize_test.py",
- "linspace_test.py",
- "mandelbrot_test.py",
- "matrix_ops_dynamic_test.py",
- "matrix_ops_static_test.py",
- "pytree_test.py",
- "quantization_dyn_test.py",
- "quantization_test.py",
- "range_test.py",
- "resource_ops_test.py",
- "ring_buffer_test.py",
- "scatter_update_test.py",
- "simple_arithmetic_test.py",
- "simple_stateful_test.py",
- "sliding_window_test.py",
- "space_to_batch_nd_test.py",
-]
-
-# keep sorted
-TFLITE_FAILING = [
- "concat_test.py",
- "einsum_dynamic_test.py",
- "einsum_static_test.py",
- "einsum_vector_test.py",
- "fft_test.py",
- "image_resize_test.py",
- "mandelbrot_test.py",
- "pytree_test.py",
- "resource_ops_test.py",
- "ring_buffer_test.py",
- "scatter_update_test.py",
- "simple_stateful_test.py",
- "sliding_window_test.py",
-]
-
-# keep sorted
-LLVM_FAILING = [
- "broadcast_to_test.py",
- "broadcasting_test.py",
- "conv_transpose_test.py",
- "einsum_dynamic_test.py",
- "einsum_static_test.py",
- "einsum_vector_test.py",
- "fft_test.py", # TODO(natashaknk): Get this working after kernel is in.
- "fill_test.py", # TODO(jennik): Get this test working on IREE.
- "mandelbrot_test.py", # TODO(silvasean): Get this working on IREE.
- "matrix_ops_dynamic_test.py",
- "quantization_dyn_test.py",
- "range_test.py",
- "ring_buffer_test.py", # TODO(b/148747011)
- "scatter_update_test.py",
-]
-
-# keep sorted
-VULKAN_FAILING = [
- "broadcast_to_test.py",
- "broadcasting_test.py",
- "conv_transpose_test.py",
- "dynamic_mlp_relu_test.py",
- "dynamic_mlp_test.py",
- "einsum_dynamic_test.py",
- "einsum_static_test.py",
- "einsum_vector_test.py",
- "fft_test.py", # TODO(natashaknk): Get this working after kernel is in.
- "fill_test.py", # TODO(jennik): Get this test working on IREE.
- "mandelbrot_test.py", # TODO(silvasean): Get this working on IREE.
- "matrix_ops_dynamic_test.py",
- "quantization_dyn_test.py",
- "range_test.py",
- "ring_buffer_test.py", # TODO(b/148747011)
- "scatter_update_test.py",
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "e2e_tests",
- failing_configurations = [
- {
- "target_backends": "tflite",
- "src": TFLITE_FAILING,
- },
- {
- "target_backends": "iree_llvmaot",
- "src": LLVM_FAILING,
- },
- {
- "target_backends": "iree_vulkan",
- "src": VULKAN_FAILING,
- },
- ],
- matrix = {
- "src": enforce_glob(
- ALL_SRCS,
- include = ["*_test.py"],
- exclude = ["mobile_bert_squad_test.py"],
- ),
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- "reference_backend": "tf",
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-iree_e2e_cartesian_product_test_suite(
- name = "mobile_bert_squad_tests",
- size = "enormous",
- matrix = {
- "src": "mobile_bert_squad_test.py",
- "reference_backend": "tf",
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- tags = [
- "external",
- "guitar",
- "manual",
- "no-remote",
- "nokokoro",
- "notap",
- ],
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/CMakeLists.txt b/integrations/tensorflow/e2e/CMakeLists.txt
deleted file mode 100644
index 460c956..0000000
--- a/integrations/tensorflow/e2e/CMakeLists.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-file(GLOB _GLOB_X_TEST_PY LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS *_test.py)
-iree_e2e_cartesian_product_test_suite(
- NAME
- e2e_tests
- MATRIX_KEYS
- "src"
- "target_backends"
- "reference_backend"
- MATRIX_VALUES
- "batch_norm_test.py;batch_to_space_nd_test.py;broadcast_to_test.py;broadcasting_test.py;concat_test.py;control_flow_test.py;conv_test.py;conv_transpose_test.py;depth_conv_test.py;dynamic_mlp_relu_test.py;dynamic_mlp_test.py;einsum_dynamic_test.py;einsum_static_test.py;einsum_vector_test.py;fft_test.py;fill_test.py;gather_test.py;image_resize_test.py;linspace_test.py;mandelbrot_test.py;matrix_ops_dynamic_test.py;matrix_ops_static_test.py;pytree_test.py;quantization_dyn_test.py;quantization_test.py;range_test.py;resource_ops_test.py;ring_buffer_test.py;scatter_update_test.py;simple_arithmetic_test.py;simple_stateful_test.py;sliding_window_test.py;space_to_batch_nd_test.py"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- "tf"
- FAILING_CONFIGURATIONS
- "concat_test.py,tflite,"
- "einsum_dynamic_test.py,tflite,"
- "einsum_static_test.py,tflite,"
- "einsum_vector_test.py,tflite,"
- "fft_test.py,tflite,"
- "image_resize_test.py,tflite,"
- "mandelbrot_test.py,tflite,"
- "pytree_test.py,tflite,"
- "resource_ops_test.py,tflite,"
- "ring_buffer_test.py,tflite,"
- "scatter_update_test.py,tflite,"
- "simple_stateful_test.py,tflite,"
- "sliding_window_test.py,tflite,"
- "broadcast_to_test.py,iree_llvmaot,"
- "broadcasting_test.py,iree_llvmaot,"
- "conv_transpose_test.py,iree_llvmaot,"
- "einsum_dynamic_test.py,iree_llvmaot,"
- "einsum_static_test.py,iree_llvmaot,"
- "einsum_vector_test.py,iree_llvmaot,"
- "fft_test.py,iree_llvmaot,"
- "fill_test.py,iree_llvmaot,"
- "mandelbrot_test.py,iree_llvmaot,"
- "matrix_ops_dynamic_test.py,iree_llvmaot,"
- "quantization_dyn_test.py,iree_llvmaot,"
- "range_test.py,iree_llvmaot,"
- "ring_buffer_test.py,iree_llvmaot,"
- "scatter_update_test.py,iree_llvmaot,"
- "broadcast_to_test.py,iree_vulkan,"
- "broadcasting_test.py,iree_vulkan,"
- "conv_transpose_test.py,iree_vulkan,"
- "dynamic_mlp_relu_test.py,iree_vulkan,"
- "dynamic_mlp_test.py,iree_vulkan,"
- "einsum_dynamic_test.py,iree_vulkan,"
- "einsum_static_test.py,iree_vulkan,"
- "einsum_vector_test.py,iree_vulkan,"
- "fft_test.py,iree_vulkan,"
- "fill_test.py,iree_vulkan,"
- "mandelbrot_test.py,iree_vulkan,"
- "matrix_ops_dynamic_test.py,iree_vulkan,"
- "quantization_dyn_test.py,iree_vulkan,"
- "range_test.py,iree_vulkan,"
- "ring_buffer_test.py,iree_vulkan,"
- "scatter_update_test.py,iree_vulkan,"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- mobile_bert_squad_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "target_backends"
- MATRIX_VALUES
- "mobile_bert_squad_test.py"
- "tf"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- LABELS
- "external"
- "guitar"
- "manual"
- "no-remote"
- "nokokoro"
- "notap"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/README.md b/integrations/tensorflow/e2e/README.md
deleted file mode 100644
index 9bf8f31..0000000
--- a/integrations/tensorflow/e2e/README.md
+++ /dev/null
@@ -1,366 +0,0 @@
-# TensorFlow e2e tests
-
-<!-- TODO(meadowlark): Update this doc once the API is stable. -->
-
-> Note:<br>
-> The TensorFlow integrations are currently being
- refactored. The `bazel` build is deprecated. Refer to
- https://google.github.io/iree/building-from-source/python-bindings-and-importers/ for a general
- overview of how to build and execute the e2e tests.
-
-This is a collection of e2e tests that compile a TensorFlow model with IREE (and
-potentially TFLite), run it on multiple backends, and crosscheck the results.
-
-## Pre-Requisites
-
-You will need a TensorFlow 2.0+ nightly installed in your python environment:
-the python binary in `$PYTHON_BIN` should be able to `import tensorflow` and
-that TensorFlow should be version 2.0+. This can be checked with
-`tensorflow.version`.
-
-See [Install TensorFlow with pip](https://www.tensorflow.org/install/pip) for
-instructions.
-
-## Vulkan Setup
-
-If you do not have your environment setup to use IREE with Vulkan (see
-[this doc](https://google.github.io/iree/deployment-configurations/gpu-vulkan/)),
-then you can run the manual test targets with
-`--target_backends=tf,iree_vmvx,iree_llvmaot` (that is, by omitting
-`iree_vulkan` from the list of backends to run the tests on).
-
-The test suites can be run excluding Vulkan by specifying
-`--test_tag_filters="-driver=vulkan"` in the `bazel test` invocation, or by
-adding `test --test_tag_filters="-driver=vulkan"` to your `user.bazelrc`.
-
-## Compiling `tf.Module`s
-
-Compatible TensorFlow modules can be compiled to specific IREE backends using
-`IreeCompiledModule`. This also optionally saves compilation artifacts to a
-specified directory. These artifacts include MLIR across various lowerings and
-the compiled VM FlatBuffer. A basic example of creating and calling an
-`IreeCompiledModule` can be found in
-[`module_utils_test.py`](https://github.com/google/iree/blob/main/integrations/tensorflow/bindings/python/iree/tf/support/module_utils_test.py)
-
-When using Keras models or tf.Modules with functions that IREE can't compile,
-`exported_names` should be specified. For example:
-
-```python
-from iree.tf.support import module_utils
-vmvx_module = module_utils.IreeCompiledModule(
- module_class=KerasTFModuleClass,
- backend_info=module_utils.BackendInfo('iree_vmvx'),
- exported_names=['predict'])
-vmvx_module.predict(...)
-```
-
-## Running Tests
-
-For locally running tests and iterating on backend development, `bazel run` is
-preferred.
-
-```shell
-# Run conv_test on all backends.
-bazel run //integrations/tensorflow/e2e:conv_test_manual
-
-# Run conv_test comparing TensorFlow to itself (e.g. to debug randomization).
-bazel run //integrations/tensorflow/e2e:conv_test_manual -- --target_backends=tf
-
-# Run conv_test comparing the VMLA backend and TensorFlow.
-bazel run //integrations/tensorflow/e2e:conv_test_manual -- --target_backends=iree_vmvx
-
-# Run conv_test comparing the VMLA backend to itself multiple times.
-bazel run //integrations/tensorflow/e2e:conv_test_manual -- \
- --reference_backend=iree_vmvx --target_backends=iree_vmvx,iree_vmvx
-```
-
-For reproducibility of the unit tests `CompiledModule()` sets the random seeds
-of `tf`, `numpy` and `python` by calling `tf_utils.set_random_seed()` before
-model creation.
-
-## Writing Tests
-
-There are two ways to write tests – via `tf_test_utils.tf_function_unit_test` and
-via test methods on a child of `tf_test_utils.TracedModuleTestCase`.
-
-### Via `tf_test_utils.tf_function_unit_test`
-
-This is preferred in the cases where
-
-1. Only a single call to the module needs to be tested at once
-2. The inputs are simple to automatically generate or specify inline.
-3. The functions that you want to test are generated automatically from a
- configuration (e.g. in `.../e2e/keras/layers/layers_test.py`)
-
-Tests are specified by writing modules that inherit from
-`tf_test_utils.TestModule` (which is a thin wrapper around `tf.Module`) with
-methods decorated with `@tf_test_utils.tf_function_unit_test` (with is a thin
-wrapper around `tf.function`).
-
-#### Basic example
-
-We use part of `.../e2e/conv_test.py` as an example. The first component is
-the `TestModule` itself:
-
-```python
-class Conv2dModule(tf_test_utils.TestModule):
-
- # This decorator tells the testing infra to generate a unittest for this
- # function. The 'input_signature' is required. If no other arguments are
- # specified then uniform random data is generated from the input signature
- # to numerically test the function.
- @tf_test_utils.tf_function_unit_test(input_signature=[
- tf.TensorSpec([1, 4, 5, 1], tf.float32),
- tf.TensorSpec([1, 1, 1, 1], tf.float32),
- ])
- def conv2d_1451x1111_valid(self, img, kernel):
- return tf.nn.conv2d(img, kernel, [1, 1, 1, 1], "VALID", name="result")
-
- @tf_test_utils.tf_function_unit_test(input_signature=[
- tf.TensorSpec([2, 4, 5, 1], tf.float32),
- tf.TensorSpec([1, 1, 1, 1], tf.float32),
- ])
- def conv2d_2451x1111_valid(self, img, kernel):
- return tf.nn.conv2d(img, kernel, [1, 1, 1, 1], "VALID", name="result")
-```
-
-Second, you need to write a test case that inherits from
-`tf_test_utils.TracedModuleTestCase`. This is essentially boiler plate that
-tells `tf.test.main()` what `tf.Module` to test and allows us to generate
-the unittests we specified above.
-
-```python
-class ConvTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(Conv2dModule)
-```
-
-Finally, in the `main` function, you need to call
-`.generate_unit_tests(module_class)` on your `TestCase` to actually generate
-the unittests that we specified:
-
-```python
-def main(argv):
- del argv # Unused
- if hasattr(tf, 'enable_v2_behavior'):
- tf.enable_v2_behavior()
- # Generates unittests for all @tf_test_utils.tf_function_unit_test decorated
- # functions on the module class.
- # Note: if you are automatically generating functions to test they need to be
- # specified via a `classmethod` prior to this call _as well_ as via `__init__`
- # to properly handle stateful `tf.function`s.
- ConvTest.generate_unit_tests(Conv2dModule)
- tf.test.main()
-
-
-if __name__ == '__main__':
- app.run(main)
-```
-
-This generates two unittests: `test_conv2d_1451x1111_valid` and
-`test_conv2d_2451x1111_valid`.
-
-#### Configuring `@tf_test_utils.tf_function_unit_test`
-
-By default `@tf_test_utils.tf_function_unit_test` uses uniform random input data
-to numerically test the function, but you can specify an `input_generator` or
-`input_args` to test data-specific behaviors:
-
-- `input_generator` can be `tf_utils.uniform`, `tf_utils.ndarange`, or any
-function which takes an `shape` and `dtype` as positional args and returns an
-`np.ndarray`.
-- `input_args` is a list of `np.ndarray`s to use as positional arguments.
-
-The comparison `atol` and `rtol` can also be specified in the decorator.
-
-### Via test methods
-
-This is preferred in the cases where
-
-1. The `tf.function` that you want to test is already defined on the module
- (e.g. on a downloaded model like in `mobile_bert_test.py`)
-2. The inputs are difficult to specify inline and require multiple function
- calls / reshaping to create
-3. You want to test multiple consecutive calls to a `tf.function` (e.g. to test
- mutated state in `ring_buffer_test.py`)
-
-Our tests use a class `TracedModule` to capture and store all of the inputs and
-outputs of a `CompiledModule` in a `Trace`. Each unittest on a `TestCase` uses
-the `compare_backends` method. This method runs the function it is passed with a
-`TracedModule` once for each reference and target backend. The inputs and
-outputs to these modules are then checked for correctness, using the reference
-backend as a source of truth.
-
-We use `simple_arithmetic_test.py` as an example:
-
-```python
-# Create a tf.Module with one or more `@tf.function` decorated methods to test.
-class SimpleArithmeticModule(tf.Module):
-
- @tf.function(input_signature=[
- tf.TensorSpec([4], tf.float32),
- tf.TensorSpec([4], tf.float32)
- ])
- def simple_mul(self, a, b):
- return a * b
-
-# Inherit from `TracedModuleTestCase`.
-class SimpleArithmeticTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- # Compile a `tf.Module` named `SimpleArithmeticModule` into
- # `CompiledModule`s for each reference and target backend.
- self._modules = tf_test_utils.compile_tf_module(SimpleArithmeticModule)
-
- # Unit test.
- def test_simple_mul(self):
-
- # Trace function.
- def simple_mul(module):
- # A random seed is automatically set before each call to `simple_mul`.
- a = tf_utils.uniform([4])
- b = np.array([400., 5., 6., 7.], dtype=np.float32)
-
- # The inputs `a` and `b` are recorded along with the output `c`
- c = module.simple_mul(a, b)
-
- # The inputs `a` and `b` are recorded along with the (unnamed) output
- # module.simple_mul returns.
- module.simple_mul(a, c)
-
- # Calls `simple_mul` once for each backend, recording the inputs and outputs
- # to `module` and then comparing them.
- self.compare_backends(simple_mul, self._modules)
-```
-
-## Test Suites
-
-Test targets are automatically generated for each test file and for each backend
-to check numerical correctness against TensorFlow. Tests targets that pass are
-placed into the `e2e_tests` test suite. Tests that fail on particular backends
-are recorded in lists in the `BUILD` files. For example, if
-`experimental_new_test.py` fails on the `iree_llvmaot` and `iree_vulkan`
-backend then the following lines should be added to the `BUILD` file:
-
-```build
-LLVM_FAILING = [
- ...
- "experimental_new_test.py",
- ...
-]
-
-VULKAN_FAILING = [
- ...
- "experimental_new_test.py",
- ...
-]
-```
-
-Test targets for these backends are placed into the `e2e_tests_failing` test
-suite. Test targets in these test suites can be run as follows:
-
-```shell
-# Run all e2e tests that are expected to pass.
-bazel test //integrations/tensorflow/e2e:e2e_tests
-
-# Run all e2e tests that are expected to fail.
-bazel test //integrations/tensorflow/e2e:e2e_tests_failing
-
-# Run a specific failing e2e test target.
-# Note that generated test targets are prefixed with their test suite name.
-# Also, if broadcasting_test starts working on iree_vulkan after the time
-# of writing then this command will fail.
-bazel test //integrations/tensorflow/e2e:e2e_tests_failing_broadcasting_test__tf__iree_vulkan
-```
-
-## Generated Artifacts
-
-By default, running an E2E test generates a number of compilation, debugging and
-benchmarking artifacts. These artifacts will be saved
-
-- in `/tmp/iree/modules/` when using `bazel run` or `bazel_test` with
- `--test_arg=--artifacts_dir=/tmp/iree/modules/`.
-- in `bazel-testlogs/integrations/tensorflow/e2e/test_suite_target_name` when
- using `bazel test` without specifying `--artifacts_dir`.
-
-The generated directory structure for each module is as follows:
-
-```shell
-/tmp/iree/modules/ModuleName
- ├── reproducer__backend.mlir
- │ # If there is a compilation error, a MLIR file that reproduces the error
- │ # for a specific backend is included.
- ├── tf_input.mlir
- │ # MLIR for ModuleName in TF's input dialect.
- ├── iree_input.mlir
- │ # tf_input.mlir translated to IREE MLIR.
- ├── iree_vmvx
- │ # Or any other IREE backend.
- │ ├── compiled.vmfb
- │ │ # A flatbuffer containing IREE's compiled code.
- │ └── traces
- │ # Directory with a trace for each unittest in vision_model_test.py.
- │ ├── trace_function_1
- │ │ # Directory storing logs and serialization for a specific trace.
- │ │ │── flagfile
- │ │ │ # An Abseil flagfile containing arguments
- │ │ │ # iree-benchmark-module needs to benchmark this trace.
- │ │ └── log.txt
- │ │ # A more detailed version of the test logs.
- │ │── trace_function_2
- │ └── ...
- ├── tflite # If TFLite supports compiling ModuleName.
- │ ├── method_1.tflite # Methods on ModuleName compiled to bytes with TFLite
- │ │ # A method on ModuleName compiled to bytes with TFLite, which can
- │ │ # be ingested by TFLite's benchmark_model binary.
- │ ├── method_2.tflite
- │ └── traces
- │ └── ...
- └── tf_ref # Directory storing the tensorflow reference traces.
- └── traces
- └── ...
-```
-
-Traces for a particular test can be loaded via the `Trace.load(trace_dir)`
-method. For example:
-
-```python
-ref_trace = Trace.load("/tmp/iree/modules/ModuleName/tf_ref/traces/predict/")
-tar_trace = Trace.load("/tmp/iree/modules/ModuleName/iree_vmvx/traces/predict/")
-abs_diff = np.abs(ref_trace.calls[0].outputs[0] - tar_trace.calls[0].outputs[0])
-print(np.mean(abs_diff))
-```
-
-Traces are named after the trace functions defined in their unittests. So in the
-`SimpleArithmeticModule` example above, the `trace_dir` would be
-`/tmp/iree/modules/SimpleArithmeticModule/iree_vmvx/traces/simple_mul/`.
-
-## Benchmarking E2E Modules
-
-We use our end-to-end TensorFlow integrations tests to generate tested
-compilation and benchmarking artifacts. This allows us to validate that our
-benchmarks are behaving as we expect them to, and to run them using valid inputs
-for each model. An overview of how to run benchmarks on IREE and TFLite can be
-found in
-[this doc](https://github.com/google/iree/blob/main/docs/developers/developing_iree/e2e_benchmarking.md).
-
-## Debugging Tests
-
-If the compiler fails to compile the program, then it will create a crash
-reproducer (see
-[MLIR documentation](https://mlir.llvm.org/docs/PassManagement/#crash-and-failure-reproduction)),
-which then allows reproducing the bug with an appropriate "opt" tool. Further
-debugging iteration can happen in opt.
-
-TODO(silvasean): debugging miscompiles
-
-## Testing SignatureDef SavedModels
-
-TensorFlow 1.x SavedModels can be tested using
-`tf_test_utils.compile_tf_signature_def_saved_model` instead of
-`tf_test_utils.compile_tf_module`. See `mobile_bert_squad_test.py` for a
-concrete example. The compilation artifacts will be saved under whatever
-you specify for `module_name`.
diff --git a/integrations/tensorflow/e2e/iree_e2e_cartesian_product_test_suite.bzl b/integrations/tensorflow/e2e/iree_e2e_cartesian_product_test_suite.bzl
deleted file mode 100644
index 38f93b6..0000000
--- a/integrations/tensorflow/e2e/iree_e2e_cartesian_product_test_suite.bzl
+++ /dev/null
@@ -1,263 +0,0 @@
-# Copyright 2020 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced for reference for the Bazel->CMake conversion to maintain
-# test coverage of our integration tests in open source while we figure out a
-# long term plan for our integration testing.
-
-"""Macro for building e2e tests by expanding a matrix of test configurations."""
-
-load("@iree//build_tools/bazel:deep_copy.bzl", "deep_copy")
-
-def get_driver(backend):
- # TODO(#2175): Simplify this after backend names are standardized.
- driver = backend.replace("iree_", "") # "iree_<driver>" --> "<driver>"
- return driver
-
-def _normalize_dictionary(dictionary):
- """Wraps every value of dictionary in a list if it isn't one already."""
- for key, value in dictionary.items():
- if type(value) != type([]):
- dictionary[key] = [value]
- return dictionary
-
-def _dictionary_product(dictionary):
- """Returns a named cartesian product of dictionary's values."""
-
- # Converts {'a': [1, 2], 'b': [3, 4]} into
- # [{'a': 1, 'b': 3}, {'a': 1, 'b': 4}, {'a': 2, 'b': 3}, {'a': 2, 'b': 4}]
- product = [[]]
- for values in dictionary.values():
- # Iteratively grow the elements of the product.
- product = [element + [value] for element in product for value in values]
- dicts = [{k: v for k, v in zip(dictionary, element)} for element in product]
- return dicts
-
-def iree_e2e_cartesian_product_test_suite(
- name,
- matrix,
- failing_configurations = None,
- tags = None,
- data = None,
- deps = None,
- size = None,
- python_version = "PY3",
- **kwargs):
- """Creates a test for each configuration and bundles a succeeding and failing test suite.
-
- Computes the cartesian product of `matrix` and then creates a test for each
- element of that product. Tests specified in `failing_configurations` are
- bundled into a test suite suffixed with "_failing" and tagged to be excluded
- from CI and wildcard builds. All other tests are bundled into a suite with
- the same name as the macro.
-
- For example, given the following values
-
- matrix = {
- "src": "application_test.py"
- "use_external_weights": True,
- "model": [
- "ResNet50",
- "MobileBert",
- ],
- "target_backends": [
- "tf",
- "iree_vmvx"
- "iree_vulkan",
- ]
- }
- failing_configurations = [
- {
- "model": "MobileBert",
- "target_backends": "iree_vulkan",
- },
- {
- "model": ["ResNet50"],
- },
- ]
-
- the following passing and failing configurations would be generated:
- # Passing
- {src: application_test.py, use_exernal_weights: True, model: MobileBert, target_backends: tf}
- {src: application_test.py, use_exernal_weights: True, model: MobileBert, target_backends: iree_vmvx}
-
- # Failing
- {src: application_test.py, use_exernal_weights: True, model: ResNet50, target_backends: tf}
- {src: application_test.py, use_exernal_weights: True, model: ResNet50, target_backends: iree_vmvx}
- {src: application_test.py, use_exernal_weights: True, model: ResNet50, target_backends: iree_vulkan}
- {src: application_test.py, use_exernal_weights: True, model: MobileBert, target_backends: iree_vulkan}
-
- Args:
- name:
- name of the generated passing test suite. If failing_configurations
- is not `None` then a test suite named name_failing will also be
- generated.
- failing_configurations:
- an iterable of dictionaries specifying which matrix values the test is
- failing for. If a key is present in `matrix`, but not present in an
- entry of `failing_configurations`, then all of the values in
- `matrix[flag_name]` are included. (See `ResNet50` in the example above).
- matrix:
- a dictionary of strings to lists to take a cartesian product of. Values
- that are not lists are normalized to single-element lists. `src` is
- required and is extracted as the sole source file and main for the
- underlying python test. `target_backends` must be specified. All other
- keys are passed as command line flags to the test.
- tags:
- tags to apply to the test. Note that as in standard test suites, manual
- is treated specially and will also apply to the test suite itself.
- data:
- external data for py_test.
- deps:
- test dependencies for py_test.
- size:
- size of the tests for py_test.
- python_version:
- the python version to run the tests with. Uses python3 by default.
- **kwargs:
- any additional arguments that will be passed to the underlying tests and
- test_suite.
- """
- if not "target_backends" in matrix:
- fail("`target_backends` must be a key in `matrix`.")
- if not "src" in matrix:
- fail("`src` must be a key in `matrix`.")
-
- # Bazel will implictly mutate this variable's state if it is not copied.
- # This allows failing configurations to be reused in BUILD files.
- failing_configurations = deep_copy(failing_configurations)
-
- # Normalize matrix to always have lists as its values.
- # e.g. {use_external_data: True} -> {use_external_data: [True]}
- matrix = _normalize_dictionary(matrix)
-
- all_matrix_configurations = _dictionary_product(matrix)
-
- failing_matrix_configurations = []
- if failing_configurations != None:
- for failing_configuration in failing_configurations:
- failing_configuration = _normalize_dictionary(failing_configuration)
-
- for key in failing_configuration:
- if key not in matrix:
- fail("Encountered unexpected key \"{}\" ".format(key) +
- "in a failing configuration. Expected one of " +
- "{}.".format(list(matrix.keys())))
-
- # If a flag isn't specified in the failing configuration, assume it
- # is failing for all values of that flag.
- for key, values in matrix.items():
- if key not in failing_configuration:
- failing_configuration[key] = values
-
- failing_matrix_configurations.extend(
- _dictionary_product(failing_configuration),
- )
-
- tests = []
- for flags in all_matrix_configurations:
- # Check if this is a failing configuration.
- failing = flags in failing_matrix_configurations
-
- # These keys that are required and we have extra logic around.
- target_backend = flags.pop("target_backends")
- src = flags.pop("src")
-
- if len(target_backend.split(",")) > 1:
- fail("Multiple target backends cannot be specified at once, but " +
- "got `{}`".format(flags["target_backends"]))
-
- # Append "_failing" to name if this is a failing configuration.
- test_name = name if not failing else name + "_failing"
- test_name = [test_name]
-
- # Append the meaningful part of the source file name
- if len(matrix["src"]) > 1:
- src_name = src
- if src_name.endswith(".py"):
- src_name = src_name[:-len(".py")]
- if src_name.endswith("_test"):
- src_name = src_name[:-len("_test")]
- test_name.append(src_name)
-
- # Append the target backend
- test_name.append(target_backend)
-
- # For all other flags, append their key and value if the value isn't
- # always the same.
- for k, v in flags.items():
- if len(matrix[k]) > 1:
- test_name.append(k)
- test_name.append(str(v))
- test_name = "__".join(test_name)
- tests.append(test_name)
-
- # Need to add back target_backends, since we pulled it out above.
- args = ["--target_backends={}".format(target_backend)] + [
- "--{}={}".format(k, v)
- for k, v in flags.items()
- ]
- py_test_tags = ["driver={}".format(get_driver(target_backend))]
- if tags != None: # `is` is not supported.
- py_test_tags += tags
-
- # Add additional tags if this is a failing configuration.
- if failing:
- py_test_tags += [
- "failing",
- "manual",
- "nokokoro",
- "notap",
- ]
-
- native.py_test(
- name = test_name,
- main = src,
- srcs = [src],
- args = args,
- data = data,
- deps = deps,
- size = size,
- tags = py_test_tags,
- python_version = python_version,
- **kwargs
- )
-
- if tags == None:
- tags = []
-
- if len(all_matrix_configurations) > 1:
- native.test_suite(
- name = name,
- tests = tests,
- # Add "-failing" to exclude tests in `tests` that have the "failing"
- # tag.
- tags = tags + ["-failing"],
- # If there are kwargs that need to be passed here which only apply to
- # the generated tests and not to test_suite, they should be extracted
- # into separate named arguments.
- **kwargs
- )
-
- if failing_configurations != None:
- native.test_suite(
- name = name + "_failing",
- tests = tests,
- # Add "+failing" to only include tests in `tests` that have the
- # "failing" tag.
- tags = tags + [
- "+failing",
- "manual",
- "nokokoro",
- "notap",
- ],
- # If there are kwargs that need to be passed here which only apply
- # to the generated tests and not to test_suite, they should be
- # extracted into separate named arguments.
- **kwargs
- )
diff --git a/integrations/tensorflow/e2e/iree_e2e_cartesian_product_test_suite.cmake b/integrations/tensorflow/e2e/iree_e2e_cartesian_product_test_suite.cmake
deleted file mode 100644
index 5674c0c..0000000
--- a/integrations/tensorflow/e2e/iree_e2e_cartesian_product_test_suite.cmake
+++ /dev/null
@@ -1,274 +0,0 @@
-# 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
-
-# iree_e2e_cartesian_product_test_suite()
-#
-# Expands a testing matrix to create python test targets.
-#
-# Mirrors the bzl rule of the same name.
-#
-# This rule uses CMake in a way that it was never meant to be used. In
-# particular it uses custom hackery to enable nested data structures. The
-# original Starlark rule was written without the expectation that it would ever
-# need to be ported to CMake and so has some complex matrix expansion logic.
-# The author apologizes for what you are about to read.
-#
-# Parameters:
-# NAME: Base name of the test targets.
-# MATRIX_KEYS: Keys for the different dimensions of the matrix to be expanded.
-# One of the keys must be `src` and is expanded to the source files for
-# each test. One key must be `target_backends` and is expanded to the
-# target backends for the IREE integration test. It is also used to derive
-# a driver label to attach to the generated tests. All other keys are
-# assumed to correspond to flag names that should be passed to the
-# generated tests (with the corresponding values from MATRIX_VALUES).
-# MATRIX_VALUES: Lists of values for each key of the matrix. Each element of
-# this argument is interpreted as a list and the order of arguments must
-# match MATRIX_KEYS.
-# FAILING_CONFIGURATIONS: Configurations in the matrix expansion that are
-# expected to fail. Each element of this argument is a *comma*-separated
-# list of matrix values in the same order as MATRIX_KEYS (and having the
-# same number of elements. An empty element is interpreted to correspond
-# to all values for that key in the matrix.
-# LABELS: Additional labels to apply to the test. The package path and
-# "driver=${DRIVER}" based on the target_backends matrix key are added
-# automatically.
-#
-#
-# Example:
-# iree_e2e_cartesian_product_test_suite(
-# NAME
-# my_tests
-# MATRIX_KEYS
-# "src"
-# "target_backend"
-# "reference_backend"
-# "magic_flag"
-# MATRIX_VALUES
-# "concat_test.py;range_test.py"
-# "tf;tflite;iree_vmvx;iree_llvmaot;iree_vulkan"
-# "tf"
-# "true;false"
-# FAILING_CONFIGURATIONS
-# "concat_test.py,,,true"
-# "range_test.py,iree_vulkan,,"
-# )
-#
-# Would expand to the following tests:
-# DISABLED: python concat_test.py --target_backend=tf --reference_backend=tf --magic_flag=true
-# DISABLED: python concat_test.py --target_backend=tflite --reference_backend=tf --magic_flag=true
-# DISABLED: python concat_test.py --target_backend=iree_vmvx --reference_backend=tf --magic_flag=true
-# DISABLED: python concat_test.py --target_backend=iree_llvmaot --reference_backend=tf --magic_flag=true
-# DISABLED: python concat_test.py --target_backend=iree_vulkan --reference_backend=tf --magic_flag=true
-# python range_test.py --target_backend=tf --reference_backend=tf --magic_flag=true
-# python range_test.py --target_backend=tflite --reference_backend=tf --magic_flag=true
-# python range_test.py --target_backend=iree_vmvx --reference_backend=tf --magic_flag=true
-# python range_test.py --target_backend=iree_llvmaot --reference_backend=tf --magic_flag=true
-# DISABLED: python range_test.py --target_backend=iree_vulkan --reference_backend=tf --magic_flag=true
-# python concat_test.py --target_backend=tf --reference_backend=tf --magic_flag=false
-# python concat_test.py --target_backend=tflite --reference_backend=tf --magic_flag=false
-# python concat_test.py --target_backend=iree_vmvx --reference_backend=tf --magic_flag=false
-# python concat_test.py --target_backend=iree_llvmaot --reference_backend=tf --magic_flag=false
-# python concat_test.py --target_backend=iree_vulkan --reference_backend=tf --magic_flag=false
-# python range_test.py --target_backend=tf --reference_backend=tf --magic_flag=false
-# python range_test.py --target_backend=tflite --reference_backend=tf --magic_flag=false
-# python range_test.py --target_backend=iree_vmvx --reference_backend=tf --magic_flag=false
-# python range_test.py --target_backend=iree_llvmaot --reference_backend=tf --magic_flag=false
-# DISABLED: python range_test.py --target_backend=iree_vulkan --reference_backend=tf --magic_flag=false
-#
-function(iree_e2e_cartesian_product_test_suite)
- if(NOT IREE_BUILD_TESTS)
- return()
- endif()
-
- cmake_parse_arguments(
- PARSE_ARGV 0
- _RULE
- ""
- "NAME"
- "MATRIX_KEYS;MATRIX_VALUES;FAILING_CONFIGURATIONS;LABELS"
- )
-
- list(LENGTH _RULE_MATRIX_KEYS _MATRIX_KEYS_COUNT)
- list(LENGTH _RULE_MATRIX_VALUES _MATRIX_VALUES_COUNT)
-
- if(NOT _MATRIX_KEYS_COUNT EQUAL _MATRIX_VALUES_COUNT)
- message(
- SEND_ERROR
- "MATRIX_KEYS count ${_MATRIX_KEYS_COUNT} does not match MATRIX_VALUES"
- " count ${_MATRIX_VALUES_COUNT}"
- )
- endif()
- list(FIND _RULE_MATRIX_KEYS "src" _SRC_KEY_INDEX)
- if(_SRC_KEY_INDEX EQUAL -1)
- message(
- SEND_ERROR
- "Did not find key `src` in MATRIX_KEYS: ${_RULE_MATRIX_KEYS}"
- )
- endif()
-
- list(FIND _RULE_MATRIX_KEYS "target_backends" _TARGET_BACKENDS_KEY_INDEX)
- if(_TARGET_BACKENDS_KEY_INDEX EQUAL -1)
- message(
- SEND_ERROR
- "Did not find key `target_backends` in MATRIX_KEYS: ${_RULE_MATRIX_KEYS}"
- )
- endif()
- math(EXPR _MAX_INDEX "${_MATRIX_KEYS_COUNT} - 1")
-
- # Process failing configurations, expanding empty entries to be all entries
- # for that key.
- set(_FAILING_CONFIGURATIONS "")
- foreach(_FAILING_CONFIGURATION IN LISTS _RULE_FAILING_CONFIGURATIONS)
- # Convert comma-delimited string into a list. Lists in CMake are just
- # semicolon-delimited 🤢
- string(REPLACE "," ";" _CONFIGURATION_LIST "${_FAILING_CONFIGURATION}")
- list(LENGTH _CONFIGURATION_LIST _CONFIGURATION_KEY_COUNT)
- if(NOT _CONFIGURATION_KEY_COUNT EQUAL _MATRIX_KEYS_COUNT)
- message(
- SEND_ERROR
- "Failing configuration ${_FAILING_CONFIGURATION} does not have same"
- " number of entries (${_MATRIX_KEY_COUNT}) as MATRIX_KEYS")
- endif()
-
- # If the first value in this config entry is empty, it expands to all values
- # for the corresponding key. We have to seed the first entry to start off
- # the list because it is impossible to create a list in CMake where the only
- # entry is the empty string.
- list(GET _CONFIGURATION_LIST 0 _FIRST_CONFIG_VALUE)
- if("${_FIRST_CONFIG_VALUE}" STREQUAL "")
- list(GET _RULE_MATRIX_VALUES 0 _EXPANDED_CONFIGURATIONS)
- else()
- set(_EXPANDED_CONFIGURATIONS "${_FIRST_CONFIG_VALUE}")
- endif()
-
- # For the remaining entries, append them to configurations that are already
- # expanded.
- foreach(_INDEX RANGE 1 "${_MAX_INDEX}")
- list(GET _CONFIGURATION_LIST ${_INDEX} _CONFIG_VALUE)
- if("${_CONFIG_VALUE}" STREQUAL "")
- # If the value for this key is unset, it represents all possible values
- # for this key. For each such value, create a new list of configs that
- # is the current list with the value appended (comma-delimited).
- set(_KEY_CONFIGURATIONS "")
- list(GET _RULE_MATRIX_VALUES ${_INDEX} _MATRIX_VALUES)
- foreach(_MATRIX_VALUE IN LISTS _MATRIX_VALUES)
- list(TRANSFORM
- _EXPANDED_CONFIGURATIONS
- APPEND ",${_MATRIX_VALUE}"
- OUTPUT_VARIABLE _KEY_VALUE_CONFIGURATIONS)
- list(APPEND _KEY_CONFIGURATIONS ${_KEY_VALUE_CONFIGURATIONS})
- endforeach()
- set(_EXPANDED_CONFIGURATIONS "${_KEY_CONFIGURATIONS}")
- else()
- # If set, append it (comma-delimited) to every entry already existing.
- list(TRANSFORM
- _EXPANDED_CONFIGURATIONS
- APPEND ",${_CONFIG_VALUE}"
- OUTPUT_VARIABLE _EXPANDED_CONFIGURATIONS)
- endif()
- endforeach()
-
- # Add the configurations for this entry to the full list.
- list(APPEND _FAILING_CONFIGURATIONS ${_EXPANDED_CONFIGURATIONS})
- endforeach()
- list(REMOVE_DUPLICATES _FAILING_CONFIGURATIONS)
-
-
- # Build up all configurations, taking a cartesian product of the matrix
- # values. This is much like the processing of failing configurations except
- # that every key expands to all possible values for that key.
-
- # Seed configurations with the first list of matrix values.
- list(GET _RULE_MATRIX_VALUES 0 _ALL_CONFIGURATIONS)
-
- # For each value in each subsequent list of values, create a new list of
- # configs that is the current list with the new value appended
- # (comma-delimited).
- foreach(_INDEX RANGE 1 "${_MAX_INDEX}")
- list(GET _RULE_MATRIX_VALUES ${_INDEX} _MATRIX_VALUES)
- set(_KEY_CONFIGURATIONS "")
- foreach(_MATRIX_VALUE IN LISTS _MATRIX_VALUES)
- list(TRANSFORM
- _ALL_CONFIGURATIONS
- APPEND ",${_MATRIX_VALUE}"
- OUTPUT_VARIABLE _KEY_VALUE_CONFIGURATIONS)
- list(APPEND _KEY_CONFIGURATIONS ${_KEY_VALUE_CONFIGURATIONS})
- endforeach()
- set(_ALL_CONFIGURATIONS ${_KEY_CONFIGURATIONS})
- endforeach()
-
-
- # Now that we have all the configurations, iterate through them all, excluding
- # the failing configurations.
- foreach(_CONFIGURATION IN LISTS _ALL_CONFIGURATIONS)
- # Skip this configuration if it's failing.
- list(FIND _FAILING_CONFIGURATIONS "${_CONFIGURATION}" _FAILING_INDEX)
- if (NOT _FAILING_INDEX EQUAL -1)
- continue()
- endif()
-
- # Convert comma-delimited string into a list. Lists in CMake are just
- # semicolon-delimited 🤢
- string(REGEX MATCHALL "[^,]+" _CONFIGURATION_LIST "${_CONFIGURATION}")
-
- # Extract the special keys.
- list(GET _CONFIGURATION_LIST ${_SRC_KEY_INDEX} _TEST_SRC)
- list(GET _CONFIGURATION_LIST ${_TARGET_BACKENDS_KEY_INDEX} _TEST_TARGET_BACKENDS)
-
- # Construct the test name, which is the base name followed by the salient
- # part of the source file name, the target backend name, and finally the
- # other matrix keys and values if there is more than one value for a given
- # key.
- set(_TEST_NAME_LIST "${_RULE_NAME}")
- string(REGEX REPLACE "\.py$" "" _STRIPPED_SRC_NAME "${_TEST_SRC}")
- string(REGEX REPLACE "_test$" "" _STRIPPED_SRC_NAME "${_STRIPPED_SRC_NAME}")
- list(APPEND _TEST_NAME_LIST "${_STRIPPED_SRC_NAME}" "${_TEST_TARGET_BACKENDS}")
-
- # Append the key and value for all other matrix keys if there is more than
- # one value for the given key.
- foreach(_INDEX RANGE "${_MAX_INDEX}")
- list(GET _RULE_MATRIX_VALUES ${_INDEX} _KEY_MATRIX_VALUES)
- list(LENGTH _KEY_MATRIX_VALUES _KEY_MATRIX_VALUES_COUNT)
- if (NOT _INDEX EQUAL _SRC_KEY_INDEX AND
- NOT _INDEX EQUAL _TARGET_BACKENDS_KEY_INDEX AND
- NOT _KEY_MATRIX_VALUES_COUNT EQUAL 1)
- list(GET _RULE_MATRIX_KEYS ${_INDEX} _MATRIX_KEY)
- list(GET _CONFIGURATION_LIST ${_INDEX} _MATRIX_VALUE)
- list(APPEND _TEST_NAME_LIST "${_MATRIX_KEY}" "${_MATRIX_VALUE}")
- endif()
- endforeach()
- list(JOIN _TEST_NAME_LIST "__" _TEST_NAME)
-
- # Consruct the test args
- set(_TEST_ARGS "")
- foreach(_INDEX RANGE "${_MAX_INDEX}")
- if (NOT _INDEX EQUAL _SRC_KEY_INDEX)
- list(GET _RULE_MATRIX_KEYS ${_INDEX} _MATRIX_KEY)
- list(GET _CONFIGURATION_LIST ${_INDEX} _MATRIX_VALUE)
- list(APPEND _TEST_ARGS "--${_MATRIX_KEY}=${_MATRIX_VALUE}")
- endif()
- endforeach()
-
- # Extract the driver label
- # TODO(#2175): Get rid of this when we have a better specification for
- # backends.
- string(REPLACE "iree_" "" _DRIVER "${_TEST_TARGET_BACKENDS}")
- set(_TEST_LABELS "${_RULE_LABELS}")
- list(APPEND _TEST_LABELS "driver=${_DRIVER}")
-
- iree_py_test(
- NAME
- ${_TEST_NAME}
- SRCS
- "${_TEST_SRC}"
- ARGS
- ${_TEST_ARGS}
- LABELS
- ${_TEST_LABELS}
- )
- endforeach()
-endfunction()
diff --git a/integrations/tensorflow/e2e/keras/BUILD b/integrations/tensorflow/e2e/keras/BUILD
deleted file mode 100644
index 6536cb0..0000000
--- a/integrations/tensorflow/e2e/keras/BUILD
+++ /dev/null
@@ -1,219 +0,0 @@
-# Copyright 2020 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-[
- py_binary(
- name = src.replace(".py", "_manual"),
- srcs = [src],
- main = src,
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
- )
- for src in glob(
- ["*_test.py"],
- exclude = ["keyword_spotting_streaming_test.py"],
- )
-]
-
-# Keyword Spotting Tests:
-KEYWORD_SPOTTING_MODELS = [
- "svdf",
- "svdf_resnet",
- "ds_cnn",
- "gru",
- "lstm",
- "cnn_stride",
- "cnn",
- "tc_resnet",
- "crnn",
- "dnn",
- "att_rnn",
- "att_mh_rnn",
- "mobilenet",
- "mobilenet_v2",
- "xception",
- "inception",
- "inception_resnet",
- "ds_tc_resnet",
-]
-
-NON_STREAMING_KEYWORD_SPOTTING_MODELS = [
- "att_mh_rnn",
- "att_rnn",
- "ds_cnn",
- "inception",
- "inception_resnet",
- "mobilenet",
- "mobilenet_v2",
- "svdf_resnet",
- "tc_resnet",
- "xception",
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "keyword_spotting_tests",
- failing_configurations = [
- {
- "model": [
- # unrolling True: "Unrolling requires a fixed number of timesteps."
- # unrolling False: "error: 'tf.BatchMatMulV2' op : unlegalized TensorFlow op still exists"
- "att_mh_rnn",
- "att_rnn",
- ],
- "target_backends": [
- "iree_vulkan",
- "iree_llvmaot",
- ],
- },
- ],
- matrix = {
- "src": "keyword_spotting_streaming_test.py",
- "reference_backend": "tf",
- "mode": "non_streaming",
- "model": KEYWORD_SPOTTING_MODELS,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/google_research/google_research/kws_streaming/models:models_lib",
- "//third_party/google_research/google_research/kws_streaming/train:train_lib",
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-iree_e2e_cartesian_product_test_suite(
- name = "keyword_spotting_internal_streaming_tests",
- failing_configurations = [
- {
- # TFLite cannot compile variables.
- "target_backends": "tflite",
- },
- {
- # These models do not currently support streaming.
- "model": NON_STREAMING_KEYWORD_SPOTTING_MODELS,
- },
- {
- "model": [
- "crnn", # TODO(b/188221333): Get this test working.
- ],
- "target_backends": "iree_vulkan",
- },
- ],
- matrix = {
- "src": "keyword_spotting_streaming_test.py",
- "reference_backend": "tf",
- "mode": "internal_streaming",
- "model": KEYWORD_SPOTTING_MODELS,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/google_research/google_research/kws_streaming/models:models_lib",
- "//third_party/google_research/google_research/kws_streaming/train:train_lib",
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-iree_e2e_cartesian_product_test_suite(
- name = "keyword_spotting_external_streaming_tests",
- failing_configurations = [
- {
- # A bug in keras causes the external steraming conversion to fail
- # when TensorFlow 2.x is used.
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # These models do not currently support streaming.
- "model": NON_STREAMING_KEYWORD_SPOTTING_MODELS,
- },
- ],
- matrix = {
- "src": "keyword_spotting_streaming_test.py",
- "reference_backend": "tf",
- "mode": "external_streaming",
- "model": KEYWORD_SPOTTING_MODELS,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/google_research/google_research/kws_streaming/models:models_lib",
- "//third_party/google_research/google_research/kws_streaming/train:train_lib",
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-py_binary(
- name = "keyword_spotting_streaming_test_manual",
- srcs = ["keyword_spotting_streaming_test.py"],
- main = "keyword_spotting_streaming_test.py",
- python_version = "PY3",
- deps = [
- "//third_party/google_research/google_research/kws_streaming/models:models_lib",
- "//third_party/google_research/google_research/kws_streaming/train:train_lib",
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/keras/CMakeLists.txt b/integrations/tensorflow/e2e/keras/CMakeLists.txt
deleted file mode 100644
index 55698a8..0000000
--- a/integrations/tensorflow/e2e/keras/CMakeLists.txt
+++ /dev/null
@@ -1,100 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/keras/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-file(GLOB _GLOB_X_TEST_PY LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS *_test.py)
-file(GLOB _GLOB_KEYWORD_SPOTTING_STREAMING_TEST_PY LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS keyword_spotting_streaming_test.py)
-list(REMOVE_ITEM _GLOB_X_TEST_PY ${_GLOB_KEYWORD_SPOTTING_STREAMING_TEST_PY})
-iree_e2e_cartesian_product_test_suite(
- NAME
- keyword_spotting_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "mode"
- "model"
- "target_backends"
- MATRIX_VALUES
- "keyword_spotting_streaming_test.py"
- "tf"
- "non_streaming"
- "svdf;svdf_resnet;ds_cnn;gru;lstm;cnn_stride;cnn;tc_resnet;crnn;dnn;att_rnn;att_mh_rnn;mobilenet;mobilenet_v2;xception;inception;inception_resnet;ds_tc_resnet"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,att_mh_rnn,iree_vulkan"
- ",,,att_mh_rnn,iree_llvmaot"
- ",,,att_rnn,iree_vulkan"
- ",,,att_rnn,iree_llvmaot"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- keyword_spotting_internal_streaming_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "mode"
- "model"
- "target_backends"
- MATRIX_VALUES
- "keyword_spotting_streaming_test.py"
- "tf"
- "internal_streaming"
- "svdf;svdf_resnet;ds_cnn;gru;lstm;cnn_stride;cnn;tc_resnet;crnn;dnn;att_rnn;att_mh_rnn;mobilenet;mobilenet_v2;xception;inception;inception_resnet;ds_tc_resnet"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,,tflite"
- ",,,att_mh_rnn,"
- ",,,att_rnn,"
- ",,,ds_cnn,"
- ",,,inception,"
- ",,,inception_resnet,"
- ",,,mobilenet,"
- ",,,mobilenet_v2,"
- ",,,svdf_resnet,"
- ",,,tc_resnet,"
- ",,,xception,"
- ",,,crnn,iree_vulkan"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- keyword_spotting_external_streaming_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "mode"
- "model"
- "target_backends"
- MATRIX_VALUES
- "keyword_spotting_streaming_test.py"
- "tf"
- "external_streaming"
- "svdf;svdf_resnet;ds_cnn;gru;lstm;cnn_stride;cnn;tc_resnet;crnn;dnn;att_rnn;att_mh_rnn;mobilenet;mobilenet_v2;xception;inception;inception_resnet;ds_tc_resnet"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,,tf"
- ",,,,tflite"
- ",,,,iree_llvmaot"
- ",,,,iree_vulkan"
- ",,,att_mh_rnn,"
- ",,,att_rnn,"
- ",,,ds_cnn,"
- ",,,inception,"
- ",,,inception_resnet,"
- ",,,mobilenet,"
- ",,,mobilenet_v2,"
- ",,,svdf_resnet,"
- ",,,tc_resnet,"
- ",,,xception,"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/keras/applications/BUILD b/integrations/tensorflow/e2e/keras/applications/BUILD
deleted file mode 100644
index cd360b9..0000000
--- a/integrations/tensorflow/e2e/keras/applications/BUILD
+++ /dev/null
@@ -1,296 +0,0 @@
-# Copyright 2020 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-# @unused
-DOC = """
-applications_test_manual is for manual testing of all keras vision models.
-Test will run only manually with all parameters specified manually, for example:
-bazel run -c opt integrations/tensorflow/e2e/keras/applications:applications_test_manual -- \
---target_backends=tf,iree_llvmaot \
---data=imagenet \
---url=https://storage.googleapis.com/iree_models/ \
---model=ResNet50
-
-Command arguments description:
---target_backends: can be combination of these: tf,iree_llvmaot
---data: can be 'imagenet' or 'cifar10'.
- imagenet - input image size (1, 224, 224, 3)
- cifar10 - input image size (1, 32, 32, 3) - it is used for quick tests
- and needs pretrained weights, we pretrained models: ResNet50, MobileNet, MobileNetV2
---include_top: Whether or not to include the final (top) layers of the model.
---url: we need it only for cifar10 models to load weights from https://storage.googleapis.com/iree_models/
- imagenet pretrained weights url is specified by keras
---model: supports ResNet50, MobileNet, MobileNetV2, ResNet101, ResNet152,
- ResNet50V2, ResNet101V2, ResNet152V2, VGG16, VGG19, Xception,
- InceptionV3, InceptionResNetV2, DenseNet121, DenseNet169,
- DenseNet201, NASNetMobile, NASNetLarge
- All above models works with 'imagenet' data sets.
- ResNet50, MobileNet, MobileNetV2 work with both 'imagenet' and 'cifar10' data sets.
-"""
-
-[
- py_binary(
- name = src.replace(".py", "_manual"),
- srcs = [src],
- main = src,
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
- )
- for src in glob(["*_test.py"])
-]
-
-KERAS_APPLICATIONS_MODELS = [
- "DenseNet121",
- "DenseNet169",
- "DenseNet201",
- "EfficientNetB0",
- "EfficientNetB1",
- "EfficientNetB2",
- "EfficientNetB3",
- "EfficientNetB4",
- "EfficientNetB5",
- "EfficientNetB6",
- "EfficientNetB7",
- "InceptionResNetV2",
- "InceptionV3",
- "MobileNet",
- "MobileNetV2",
- "MobileNetV3Large",
- "MobileNetV3Small",
- "NASNetLarge",
- "NASNetMobile",
- "ResNet101",
- "ResNet101V2",
- "ResNet152",
- "ResNet152V2",
- "ResNet50",
- "ResNet50V2",
- "VGG16",
- "VGG19",
- "Xception",
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "large_cifar10_tests",
- size = "large",
- failing_configurations = [
- # Frequently OOMs
- {
- "target_backends": [
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- "model": [
- "VGG16",
- "VGG19",
- ],
- },
- ],
- matrix = {
- "src": "applications_test.py",
- "reference_backend": "tf",
- "data": "cifar10",
- "model": [
- # All models with runtime shorter than ResNet50.
- "MobileNet", # Max: Vulkan 61.0s
- "MobileNetV2", # Max: LLVM 96.3s
- "ResNet50", # Max: LLVM 145.6s
- "VGG16", # Max: LLVM 89.5s
- "VGG19", # Max: LLVM 94.7s
- ],
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- tags = ["manual"],
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-iree_e2e_cartesian_product_test_suite(
- name = "enormous_cifar10_tests",
- size = "enormous",
- matrix = {
- "src": "applications_test.py",
- "reference_backend": "tf",
- "data": "cifar10",
- "model": [
- "DenseNet121",
- "DenseNet169",
- "DenseNet201",
- "NASNetLarge",
- "NASNetMobile",
- "ResNet50V2",
- "ResNet101",
- "ResNet101V2",
- "ResNet152",
- "ResNet152V2",
- ],
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- tags = [
- "guitar",
- "manual",
- "nokokoro",
- "notap",
- ],
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# 'non_hermetic' tests use real model weights to test numerical correctness.
-iree_e2e_cartesian_product_test_suite(
- name = "cifar10_non_hermetic_tests",
- size = "large",
- matrix = {
- "src": "applications_test.py",
- "reference_backend": "tf",
- "data": "cifar10",
- "url": "https://storage.googleapis.com/iree_models/",
- "use_external_weights": True,
- "model": [
- "MobileNet",
- "MobileNetV2",
- "ResNet50",
- ],
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- tags = [
- "external",
- "guitar",
- "manual",
- "no-remote",
- "nokokoro",
- "notap",
- ],
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# 'non_hermetic' tests use real model weights to test numerical correctness.
-iree_e2e_cartesian_product_test_suite(
- name = "imagenet_non_hermetic_tests",
- size = "enormous",
- failing_configurations = [
- # TODO(b/186579218): Fix linalg-on-tensors failures in these.
- {
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- "model": [
- "InceptionResNetV2",
- "InceptionV3",
- "NASNetLarge",
- "NASNetMobile",
- "ResNet152V2",
- ],
- },
- ],
- matrix = {
- "src": "applications_test.py",
- "reference_backend": "tf",
- "data": "imagenet",
- "use_external_weights": True,
- "model": KERAS_APPLICATIONS_MODELS,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- tags = [
- "external",
- "guitar",
- "manual",
- "nokokoro",
- "notap",
- ],
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# It is used to produce weights for keras vision models with input image size
-# 32x32. These models are not optimized for accuracy or latency (they are for
-# debugging only). They have the same neural net topology with keras vision
-# models trained on imagenet data sets
-py_binary(
- name = "train_vision_models_on_cifar",
- srcs = ["train_vision_models_on_cifar.py"],
- python_version = "PY3",
- srcs_version = "PY2AND3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/keras/applications/CMakeLists.txt b/integrations/tensorflow/e2e/keras/applications/CMakeLists.txt
deleted file mode 100644
index 448e0e4..0000000
--- a/integrations/tensorflow/e2e/keras/applications/CMakeLists.txt
+++ /dev/null
@@ -1,126 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/keras/applications/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-file(GLOB _GLOB_X_TEST_PY LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS *_test.py)
-iree_e2e_cartesian_product_test_suite(
- NAME
- large_cifar10_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "data"
- "model"
- "target_backends"
- MATRIX_VALUES
- "applications_test.py"
- "tf"
- "cifar10"
- "MobileNet;MobileNetV2;ResNet50;VGG16;VGG19"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,VGG16,tflite"
- ",,,VGG19,tflite"
- ",,,VGG16,iree_llvmaot"
- ",,,VGG19,iree_llvmaot"
- ",,,VGG16,iree_vulkan"
- ",,,VGG19,iree_vulkan"
- LABELS
- "manual"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- enormous_cifar10_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "data"
- "model"
- "target_backends"
- MATRIX_VALUES
- "applications_test.py"
- "tf"
- "cifar10"
- "DenseNet121;DenseNet169;DenseNet201;NASNetLarge;NASNetMobile;ResNet50V2;ResNet101;ResNet101V2;ResNet152;ResNet152V2"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- LABELS
- "guitar"
- "manual"
- "nokokoro"
- "notap"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- cifar10_non_hermetic_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "data"
- "url"
- "use_external_weights"
- "model"
- "target_backends"
- MATRIX_VALUES
- "applications_test.py"
- "tf"
- "cifar10"
- "https://storage.googleapis.com/iree_models/"
- "True"
- "MobileNet;MobileNetV2;ResNet50"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- LABELS
- "external"
- "guitar"
- "manual"
- "no-remote"
- "nokokoro"
- "notap"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- imagenet_non_hermetic_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "data"
- "use_external_weights"
- "model"
- "target_backends"
- MATRIX_VALUES
- "applications_test.py"
- "tf"
- "imagenet"
- "True"
- "DenseNet121;DenseNet169;DenseNet201;EfficientNetB0;EfficientNetB1;EfficientNetB2;EfficientNetB3;EfficientNetB4;EfficientNetB5;EfficientNetB6;EfficientNetB7;InceptionResNetV2;InceptionV3;MobileNet;MobileNetV2;MobileNetV3Large;MobileNetV3Small;NASNetLarge;NASNetMobile;ResNet101;ResNet101V2;ResNet152;ResNet152V2;ResNet50;ResNet50V2;VGG16;VGG19;Xception"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,,InceptionResNetV2,iree_llvmaot"
- ",,,,InceptionV3,iree_llvmaot"
- ",,,,NASNetLarge,iree_llvmaot"
- ",,,,NASNetMobile,iree_llvmaot"
- ",,,,ResNet152V2,iree_llvmaot"
- ",,,,InceptionResNetV2,iree_vulkan"
- ",,,,InceptionV3,iree_vulkan"
- ",,,,NASNetLarge,iree_vulkan"
- ",,,,NASNetMobile,iree_vulkan"
- ",,,,ResNet152V2,iree_vulkan"
- LABELS
- "external"
- "guitar"
- "manual"
- "nokokoro"
- "notap"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/keras/applications/applications_test.py b/integrations/tensorflow/e2e/keras/applications/applications_test.py
deleted file mode 100644
index 6479c75..0000000
--- a/integrations/tensorflow/e2e/keras/applications/applications_test.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Lint as: python3
-# Copyright 2020 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
-"""Test all models in tf.keras.applications."""
-
-import os
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-from iree.tf.support import tf_utils
-import numpy as np
-import tensorflow.compat.v2 as tf
-
-FLAGS = flags.FLAGS
-
-# Testing all applications models automatically can take time
-# so we test it one by one, with argument --model=MobileNet
-flags.DEFINE_string("model", "ResNet50", "model name")
-flags.DEFINE_string(
- "url", "", "url with model weights "
- "for example https://storage.googleapis.com/iree_models/")
-flags.DEFINE_bool("use_external_weights", False,
- "Whether or not to load external weights from the web")
-flags.DEFINE_enum("data", "cifar10", ["cifar10", "imagenet"],
- "data sets on which model was trained: imagenet, cifar10")
-flags.DEFINE_bool(
- "include_top", True,
- "Whether or not to include the final (top) layers of the model.")
-
-BATCH_SIZE = 1
-IMAGE_DIM = 224
-
-
-def load_cifar10_weights(model):
- file_name = "cifar10" + FLAGS.model
- # get_file will download the model weights from a publicly available folder,
- # save them to cache_dir=~/.keras/models/ and return a path to them.
- url = os.path.join(
- FLAGS.url, f"cifar10_include_top_{FLAGS.include_top:d}_{FLAGS.model}.h5")
- weights_path = tf.keras.utils.get_file(file_name, url)
- model.load_weights(weights_path)
- return model
-
-
-def initialize_model():
- # If weights == "imagenet", the model will load the appropriate weights from
- # an external tf.keras URL.
- weights = None
- if FLAGS.use_external_weights and FLAGS.data == "imagenet":
- weights = "imagenet"
-
- model_class = getattr(tf.keras.applications, FLAGS.model)
- model = model_class(weights=weights, include_top=FLAGS.include_top)
-
- if FLAGS.use_external_weights and FLAGS.data == "cifar10":
- if not FLAGS.url:
- raise ValueError(
- "cifar10 weights cannot be loaded without the `--url` flag.")
- model = load_cifar10_weights(model)
- return model
-
-
-class ApplicationsModule(tf_test_utils.TestModule):
-
- def __init__(self):
- super().__init__()
- self.m = initialize_model()
-
- input_shape = list([BATCH_SIZE] + self.m.inputs[0].shape[1:])
-
- # Some models accept dynamic image dimensions by default, so we use
- # IMAGE_DIM as a stand-in.
- for i, dim in enumerate(input_shape):
- if dim is None:
- input_shape[i] = IMAGE_DIM
-
- # Specify input shape with a static batch size.
- # TODO(b/142948097): Add support for dynamic shapes in SPIR-V lowering.
- self.call = tf_test_utils.tf_function_unit_test(
- input_signature=[tf.TensorSpec(input_shape)],
- name="call",
- rtol=1e-5,
- atol=1e-5)(lambda x: self.m(x, training=False))
-
-
-class ApplicationsTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(
- ApplicationsModule,
- exported_names=ApplicationsModule.get_tf_function_unit_tests(),
- relative_artifacts_dir=os.path.join(FLAGS.model, FLAGS.data))
-
-
-def main(argv):
- del argv # Unused.
- if hasattr(tf, "enable_v2_behavior"):
- tf.enable_v2_behavior()
-
- if not hasattr(tf.keras.applications, FLAGS.model):
- raise ValueError(f"Unsupported model: {FLAGS.model}")
-
- ApplicationsTest.generate_unit_tests(ApplicationsModule)
- tf.test.main()
-
-
-if __name__ == "__main__":
- app.run(main)
diff --git a/integrations/tensorflow/e2e/keras/applications/train_vision_models_on_cifar.py b/integrations/tensorflow/e2e/keras/applications/train_vision_models_on_cifar.py
deleted file mode 100644
index bab64a2..0000000
--- a/integrations/tensorflow/e2e/keras/applications/train_vision_models_on_cifar.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Lint as: python3
-# Copyright 2020 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
-"""Train vision models on CIFAR10."""
-
-import os
-from absl import flags
-from absl import logging
-import numpy as np
-import tensorflow.compat.v1 as tf
-
-FLAGS = flags.FLAGS
-flags.DEFINE_string('model', 'MobileNet', 'keras vision model name')
-flags.DEFINE_string('model_path', '',
- 'Path to a location where model will be saved.')
-flags.DEFINE_bool(
- 'include_top', True,
- 'Whether or not to include the final (top) layers of the model.')
-
-# minimum size for keras vision models
-INPUT_SHAPE = [1, 32, 32, 3]
-
-
-def main(argv):
- del argv # Unused.
-
- # prepare training and testing data
- (train_images,
- train_labels), (test_images,
- test_labels) = tf.keras.datasets.cifar10.load_data()
- train_labels = np.array([x[0] for x in train_labels])
- test_labels = np.array([x[0] for x in test_labels])
-
- # Normalize image values to be between 0 and 1
- train_images, test_images = train_images / 255.0, test_images / 255.0
-
- # reduce training samples for quick training
- # we do not need to use all data for getting non zero output scores
- train_images = train_images[:4000]
- train_labels = train_labels[:4000]
-
- # It is a toy model for debugging (not optimized for accuracy or speed).
- model_class = getattr(tf.keras.applications, FLAGS.model)
- model = model_class(weights=None,
- include_top=FLAGS.include_top,
- input_shape=INPUT_SHAPE[1:])
- model.summary()
- model.compile(optimizer='adam',
- loss='sparse_categorical_crossentropy',
- metrics=['accuracy'])
-
- # train model
- model.fit(train_images,
- train_labels,
- epochs=1,
- validation_data=(test_images, test_labels))
-
- file_name = os.path.join(
- FLAGS.model_path,
- f'cifar10_include_top_{FLAGS.include_top:d}_{FLAGS.model}.h5')
- try:
- model.save_weights(file_name)
- except IOError as e:
- raise IOError(f'Failed to save model at: {file_name}, error: {e}')
-
- # test model
- _, test_acc = model.evaluate(test_images, test_labels, verbose=2)
- logging.info('Test accuracy: %f', test_acc)
-
-
-if __name__ == '__main__':
- tf.app.run(main=main)
diff --git a/integrations/tensorflow/e2e/keras/keyword_spotting_streaming_test.py b/integrations/tensorflow/e2e/keras/keyword_spotting_streaming_test.py
deleted file mode 100644
index 5c9f3c7..0000000
--- a/integrations/tensorflow/e2e/keras/keyword_spotting_streaming_test.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Lint as: python3
-# Copyright 2020 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
-"""Tests of streamable Keyword Spotting models implemented in Keras."""
-
-import os
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-from iree.tf.support import tf_utils
-import tensorflow.compat.v2 as tf
-
-from kws_streaming.layers import modes
-from kws_streaming.models import model_flags
-from kws_streaming.models import model_params
-from kws_streaming.models import models
-from kws_streaming.models import utils
-
-FLAGS = flags.FLAGS
-
-ALL_MODELS = list(model_params.HOTWORD_MODEL_PARAMS.keys())
-MODELS_HELP = [f"'{name}'" for name in ALL_MODELS]
-MODELS_HELP = f'{", ".join(MODELS_HELP[:-1])}, or {MODELS_HELP[-1]}'
-
-flags.DEFINE_string(
- 'model', 'svdf', f'Name of the model to compile. Either {MODELS_HELP}.\n'
- 'See https://github.com/google-research/google-research/blob/master/kws_streaming/models/models.py#L38-L58'
-)
-flags.DEFINE_enum('mode', 'non_streaming',
- ['non_streaming', 'internal_streaming', 'external_streaming'],
- 'Mode to execute the model in.')
-
-MODE_ENUM_TO_MODE = {
- 'non_streaming': modes.Modes.NON_STREAM_INFERENCE,
- 'internal_streaming': modes.Modes.STREAM_INTERNAL_STATE_INFERENCE,
- 'external_streaming': modes.Modes.STREAM_EXTERNAL_STATE_INFERENCE,
-}
-
-
-class KeywordSpottingModule(tf_test_utils.TestModule):
-
- def __init__(self):
- super().__init__()
- self.m = utils.get_model_with_default_params(FLAGS.model,
- MODE_ENUM_TO_MODE[FLAGS.mode])
-
- call = lambda *args: self.m(*args, training=False)
- input_signature = [tf.TensorSpec(tensor.shape) for tensor in self.m.inputs]
- self.call = tf_test_utils.tf_function_unit_test(
- input_signature=input_signature, name="call", atol=1e-5)(call)
-
-
-class KeywordSpottingTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(
- KeywordSpottingModule,
- exported_names=['call'],
- relative_artifacts_dir=os.path.join('kws_streaming', FLAGS.model,
- FLAGS.mode))
-
-
-def main(argv):
- del argv # Unused.
- if hasattr(tf, 'enable_v2_behavior'):
- tf.enable_v2_behavior()
-
- if FLAGS.model not in ALL_MODELS:
- raise ValueError(f'Unsupported model: {FLAGS.model}.\n'
- f'Expected one of {MODELS_HELP}.')
-
- KeywordSpottingTest.generate_unit_tests(KeywordSpottingModule)
- tf.test.main()
-
-
-if __name__ == '__main__':
- app.run(main)
diff --git a/integrations/tensorflow/e2e/keras/layers/BUILD b/integrations/tensorflow/e2e/keras/layers/BUILD
deleted file mode 100644
index f774694..0000000
--- a/integrations/tensorflow/e2e/keras/layers/BUILD
+++ /dev/null
@@ -1,570 +0,0 @@
-# Copyright 2020 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-[
- py_binary(
- name = src.replace(".py", "_manual"),
- srcs = [src],
- main = src,
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
- )
- for src in glob(["*_test.py"])
-]
-
-# These layers were selected by:
-# 1. Getting all subclasses of `tf.keras.layers.Layer`
-# 2. Removing deperacated layers based on the tf.keras docs
-# 3. Removing irrelevant layers
-# 4. Removing layers that don't fit in the testing framework (Wrappers, DenseFeatures, ...)
-LAYERS = [
- "Activation",
- "ActivityRegularization",
- "Add",
- "AdditiveAttention",
- "AlphaDropout",
- "Attention",
- "Average",
- "AveragePooling1D",
- "AveragePooling2D",
- "AveragePooling3D",
- "BatchNormalization",
- "Concatenate",
- "Conv1D",
- "Conv1DTranspose",
- "Conv2D",
- "Conv2DTranspose",
- "Conv3D",
- "Conv3DTranspose",
- # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
- "Cropping1D",
- "Cropping2D",
- "Cropping3D",
- "Dense",
- "DepthwiseConv2D",
- "Dot",
- "Dropout",
- "ELU",
- "Embedding",
- "Flatten",
- "GRU",
- "GaussianDropout",
- "GaussianNoise",
- "GlobalAveragePooling1D",
- "GlobalAveragePooling2D",
- "GlobalAveragePooling3D",
- "GlobalMaxPool1D",
- "GlobalMaxPool2D",
- "GlobalMaxPool3D",
- "InputLayer",
- "LSTM",
- "Lambda",
- "LayerNormalization",
- "LeakyReLU",
- "LocallyConnected1D",
- "LocallyConnected2D",
- "Masking",
- "MaxPool1D",
- "MaxPool2D",
- "MaxPool3D",
- "Maximum",
- "Minimum",
- "MultiHeadAttention",
- "Multiply",
- "PReLU",
- "Permute",
- "ReLU",
- "RepeatVector",
- "Reshape",
- "SeparableConv1D",
- "SeparableConv2D",
- # "SimpleRNN", # TODO(meadowlark): Debug flakiness.
- "Softmax",
- "SpatialDropout1D",
- "SpatialDropout2D",
- "SpatialDropout3D",
- "Subtract",
- "ThresholdedReLU",
- "UpSampling1D",
- "UpSampling2D",
- "UpSampling3D",
- "ZeroPadding1D",
- "ZeroPadding2D",
- "ZeroPadding3D",
-]
-
-FAILING_STATIC = [
- {
- # Failing on TFLite
- "layer": [
- "AveragePooling3D",
- "Conv3DTranspose",
- "ConvLSTM2D",
- "Softmax",
- "MaxPool3D",
- "ZeroPadding3D",
- ],
- "target_backends": "tflite",
- },
- {
- # Failing on IREE
- "layer": [
- "ConvLSTM2D",
- "GRU",
- "LSTM", # Failing unless 'return_sequences = True'
- "LayerNormalization",
- "LocallyConnected2D", # TODO(#4065): VMLA raises INVALID_ARGUMENT errors after DeviceQueue failure.
- "MultiHeadAttention",
- "UpSampling2D",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # Failing on LLVM and Vulkan
- "layer": [
- "AveragePooling3D",
- "Masking",
- "MaxPool3D",
- "LocallyConnected1D", # TODO(#5310): Enable the test.
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # Failing on Vulkan
- "layer": [
- "AveragePooling1D",
- "AveragePooling2D",
- "Lambda",
- "MaxPool1D",
- "MaxPool2D",
- "Conv3D", #TODO(#5150): Enable the test.
- "Conv3DTranspose", #TODO(#5150): Enable the test.
- "UpSampling3D", #TODO(#7481): rank-reducing memref folder generates invalid linalg.copy ops for SwiftShader.
- ],
- "target_backends": "iree_vulkan",
- },
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "layers_tests",
- failing_configurations = FAILING_STATIC,
- matrix = {
- "src": "layers_test.py",
- "reference_backend": "tf",
- "layer": LAYERS,
- "dynamic_dims": False,
- "training": False,
- "test_default_kwargs_only": True,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# A list of all layers with non-default api tests can be generated by running:
-# bazel run integrations/tensorflow/e2e/keras/layers:layers_test_manual -- \
-# --list_layers_with_full_api_tests
-LAYERS_WITH_FULL_API_TESTS = [
- "ActivityRegularization",
- "AdditiveAttention",
- "Attention",
- "AveragePooling1D",
- "AveragePooling2D",
- "AveragePooling3D",
- "BatchNormalization",
- "Concatenate",
- "Conv1D",
- "Conv1DTranspose",
- "Conv2D",
- "Conv2DTranspose",
- "Conv3D",
- "Conv3DTranspose",
- # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
- "Cropping1D",
- "Cropping2D",
- "Cropping3D",
- "DepthwiseConv2D",
- "GRU",
- "LSTM",
- "LocallyConnected1D",
- "LocallyConnected2D",
- "MaxPool1D",
- "MaxPool2D",
- "MaxPool3D",
- "SeparableConv1D",
- "SeparableConv2D",
- "SimpleRNN",
- # "SimpleRNN", # TODO(meadowlark): Debug flakiness.
-]
-
-FAILING_FULL_API = [
- {
- # Failing on TFLite
- # keep sorted
- "layer": [
- "AveragePooling3D",
- "Conv3D",
- "Conv3DTranspose",
- "ConvLSTM2D",
- "DepthwiseConv2D",
- "GRU",
- "LSTM",
- "LocallyConnected1D",
- "LocallyConnected2D",
- "MaxPool3D",
- "SeparableConv1D", # Failing on Kokoro.
- "SeparableConv2D",
- "SimpleRNN",
- ],
- "target_backends": "tflite",
- },
- {
- # Failing on IREE
- "layer": [
- "Conv3DTranspose",
- "ConvLSTM2D",
- "GRU",
- "LocallyConnected1D",
- "LocallyConnected2D",
- "LSTM",
- "SimpleRNN",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # Failing on LLVM and Vulakn
- "layer": [
- "AveragePooling1D",
- "AveragePooling2D",
- "AveragePooling3D",
- "Conv1DTranspose",
- "Conv2DTranspose",
- "Conv3D", #TODO(#5150): Enable the test.
- "MaxPool1D",
- "MaxPool2D",
- "MaxPool3D",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # Failing on Vulakn
- "layer": [
- "MaxPool1D",
- "MaxPool2D",
- ],
- "target_backends": [
- "iree_vulkan",
- ],
- },
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "layers_full_api_tests",
- size = "large",
- failing_configurations = FAILING_FULL_API,
- matrix = {
- "src": "layers_test.py",
- "reference_backend": "tf",
- "layer": LAYERS_WITH_FULL_API_TESTS,
- "dynamic_dims": False,
- "training": False,
- "test_default_kwargs_only": False,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-FAILING_DYNAMIC = [
- {
- "layer": [
- "Add",
- "Average",
- "AveragePooling3D",
- "BatchNormalization",
- "Conv3D",
- "Conv3DTranspose",
- "ConvLSTM2D",
- "Dense",
- "GRU",
- "LSTM",
- "Lambda",
- "LayerNormalization",
- "Masking",
- "MaxPool3D",
- "Multiply",
- "PReLU",
- "SimpleRNN",
- "Softmax",
- "ThresholdedReLU",
- "ZeroPadding3D",
- ],
- "target_backends": "tflite",
- },
- {
- # Failing on IREE
- # keep sorted
- "layer": [
- "AdditiveAttention",
- "AveragePooling1D",
- "AveragePooling2D",
- "AveragePooling3D",
- "BatchNormalization",
- "Concatenate",
- "Conv1D",
- "Conv1DTranspose",
- "Conv2D",
- "Conv2DTranspose",
- "Conv3D",
- "Conv3DTranspose",
- "ConvLSTM2D",
- "Cropping1D",
- "Cropping2D",
- "Cropping3D",
- "Dense",
- "DepthwiseConv2D",
- "Dot",
- "ELU",
- "Flatten",
- "GRU",
- "LSTM", # TODO(silvasean): Get this test working on IREE.
- "LayerNormalization",
- "LeakyReLU",
- "LocallyConnected1D",
- "LocallyConnected2D",
- "Masking",
- "MaxPool1D",
- "MaxPool2D",
- "MaxPool3D",
- "MultiHeadAttention",
- "RepeatVector",
- "Reshape",
- "SeparableConv1D",
- "SeparableConv2D",
- "SimpleRNN",
- "ThresholdedReLU",
- "UpSampling1D",
- "UpSampling2D",
- "UpSampling3D",
- "ZeroPadding1D",
- "ZeroPadding2D",
- "ZeroPadding3D",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # Failing on LLVM and Vulkan
- # keep sorted
- "layer": [
- "Activation",
- "Add",
- "Attention",
- "Average",
- "Embedding",
- "GlobalAveragePooling1D",
- "GlobalAveragePooling2D",
- "GlobalAveragePooling3D",
- "Lambda",
- "Maximum",
- "Minimum",
- "Multiply",
- "PReLU",
- "ReLU",
- "Softmax",
- "Subtract",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- {
- # Failing on Vulkan
- "layer": [
- "GlobalMaxPool1D",
- "GlobalMaxPool2D",
- "GlobalMaxPool3D",
- "Permute",
- ],
- "target_backends": "iree_vulkan",
- },
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "layers_dynamic_dims_tests",
- failing_configurations = FAILING_DYNAMIC,
- matrix = {
- "src": "layers_test.py",
- "reference_backend": "tf",
- "layer": LAYERS,
- "dynamic_dims": True,
- "training": False,
- "test_default_kwargs_only": True,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# Layers that mention a training kwarg in their doc.
-LAYERS_WITH_TRAINING_BEHAVIOR = [
- "AdditiveAttention",
- "AlphaDropout",
- "Attention",
- "BatchNormalization",
- # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
- "Dropout",
- "GRU",
- "GaussianDropout",
- "GaussianNoise",
- "LSTM",
- "MultiHeadAttention",
- # "SimpleRNN", # TODO(meadowlark): Debug flakiness.
- "SpatialDropout1D",
- "SpatialDropout2D",
- "SpatialDropout3D",
-]
-
-FAILING_TRAINING = [
- {
- # Failing on TFLite:
- "layer": [
- "AlphaDropout",
- "BatchNormalization",
- "ConvLSTM2D",
- "GaussianDropout",
- "GaussianNoise",
- "GRU",
- "LSTM",
- "SimpleRNN",
- ],
- "target_backends": "tflite",
- },
- {
- # Failing on IREE
- # keep sorted
- "layer": [
- "AdditiveAttention",
- "AlphaDropout",
- "Attention",
- "BatchNormalization",
- "ConvLSTM2D",
- "Dropout",
- "GRU",
- "GaussianDropout",
- "GaussianNoise",
- "LSTM",
- "MultiHeadAttention",
- "SimpleRNN",
- "SpatialDropout1D",
- "SpatialDropout2D",
- "SpatialDropout3D",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "layers_training_tests",
- failing_configurations = FAILING_TRAINING,
- matrix = {
- "src": "layers_test.py",
- "reference_backend": "tf",
- "layer": LAYERS_WITH_TRAINING_BEHAVIOR,
- "dynamic_dims": False,
- "training": True,
- "test_default_kwargs_only": True,
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/keras/layers/CMakeLists.txt b/integrations/tensorflow/e2e/keras/layers/CMakeLists.txt
deleted file mode 100644
index 4b76d63..0000000
--- a/integrations/tensorflow/e2e/keras/layers/CMakeLists.txt
+++ /dev/null
@@ -1,367 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/keras/layers/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-file(GLOB _GLOB_X_TEST_PY LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS *_test.py)
-iree_e2e_cartesian_product_test_suite(
- NAME
- layers_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "layer"
- "dynamic_dims"
- "training"
- "test_default_kwargs_only"
- "target_backends"
- MATRIX_VALUES
- "layers_test.py"
- "tf"
- "Activation;ActivityRegularization;Add;AdditiveAttention;AlphaDropout;Attention;Average;AveragePooling1D;AveragePooling2D;AveragePooling3D;BatchNormalization;Concatenate;Conv1D;Conv1DTranspose;Conv2D;Conv2DTranspose;Conv3D;Conv3DTranspose;Cropping1D;Cropping2D;Cropping3D;Dense;DepthwiseConv2D;Dot;Dropout;ELU;Embedding;Flatten;GRU;GaussianDropout;GaussianNoise;GlobalAveragePooling1D;GlobalAveragePooling2D;GlobalAveragePooling3D;GlobalMaxPool1D;GlobalMaxPool2D;GlobalMaxPool3D;InputLayer;LSTM;Lambda;LayerNormalization;LeakyReLU;LocallyConnected1D;LocallyConnected2D;Masking;MaxPool1D;MaxPool2D;MaxPool3D;Maximum;Minimum;MultiHeadAttention;Multiply;PReLU;Permute;ReLU;RepeatVector;Reshape;SeparableConv1D;SeparableConv2D;Softmax;SpatialDropout1D;SpatialDropout2D;SpatialDropout3D;Subtract;ThresholdedReLU;UpSampling1D;UpSampling2D;UpSampling3D;ZeroPadding1D;ZeroPadding2D;ZeroPadding3D"
- "False"
- "False"
- "True"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,AveragePooling3D,,,,tflite"
- ",,Conv3DTranspose,,,,tflite"
- ",,ConvLSTM2D,,,,tflite"
- ",,Softmax,,,,tflite"
- ",,MaxPool3D,,,,tflite"
- ",,ZeroPadding3D,,,,tflite"
- ",,ConvLSTM2D,,,,iree_llvmaot"
- ",,ConvLSTM2D,,,,iree_vulkan"
- ",,GRU,,,,iree_llvmaot"
- ",,GRU,,,,iree_vulkan"
- ",,LSTM,,,,iree_llvmaot"
- ",,LSTM,,,,iree_vulkan"
- ",,LayerNormalization,,,,iree_llvmaot"
- ",,LayerNormalization,,,,iree_vulkan"
- ",,LocallyConnected2D,,,,iree_llvmaot"
- ",,LocallyConnected2D,,,,iree_vulkan"
- ",,MultiHeadAttention,,,,iree_llvmaot"
- ",,MultiHeadAttention,,,,iree_vulkan"
- ",,UpSampling2D,,,,iree_llvmaot"
- ",,UpSampling2D,,,,iree_vulkan"
- ",,AveragePooling3D,,,,iree_llvmaot"
- ",,AveragePooling3D,,,,iree_vulkan"
- ",,Masking,,,,iree_llvmaot"
- ",,Masking,,,,iree_vulkan"
- ",,MaxPool3D,,,,iree_llvmaot"
- ",,MaxPool3D,,,,iree_vulkan"
- ",,LocallyConnected1D,,,,iree_llvmaot"
- ",,LocallyConnected1D,,,,iree_vulkan"
- ",,AveragePooling1D,,,,iree_vulkan"
- ",,AveragePooling2D,,,,iree_vulkan"
- ",,Lambda,,,,iree_vulkan"
- ",,MaxPool1D,,,,iree_vulkan"
- ",,MaxPool2D,,,,iree_vulkan"
- ",,Conv3D,,,,iree_vulkan"
- ",,Conv3DTranspose,,,,iree_vulkan"
- ",,UpSampling3D,,,,iree_vulkan"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- layers_full_api_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "layer"
- "dynamic_dims"
- "training"
- "test_default_kwargs_only"
- "target_backends"
- MATRIX_VALUES
- "layers_test.py"
- "tf"
- "ActivityRegularization;AdditiveAttention;Attention;AveragePooling1D;AveragePooling2D;AveragePooling3D;BatchNormalization;Concatenate;Conv1D;Conv1DTranspose;Conv2D;Conv2DTranspose;Conv3D;Conv3DTranspose;Cropping1D;Cropping2D;Cropping3D;DepthwiseConv2D;GRU;LSTM;LocallyConnected1D;LocallyConnected2D;MaxPool1D;MaxPool2D;MaxPool3D;SeparableConv1D;SeparableConv2D;SimpleRNN"
- "False"
- "False"
- "False"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,AveragePooling3D,,,,tflite"
- ",,Conv3D,,,,tflite"
- ",,Conv3DTranspose,,,,tflite"
- ",,ConvLSTM2D,,,,tflite"
- ",,DepthwiseConv2D,,,,tflite"
- ",,GRU,,,,tflite"
- ",,LSTM,,,,tflite"
- ",,LocallyConnected1D,,,,tflite"
- ",,LocallyConnected2D,,,,tflite"
- ",,MaxPool3D,,,,tflite"
- ",,SeparableConv1D,,,,tflite"
- ",,SeparableConv2D,,,,tflite"
- ",,SimpleRNN,,,,tflite"
- ",,Conv3DTranspose,,,,iree_llvmaot"
- ",,Conv3DTranspose,,,,iree_vulkan"
- ",,ConvLSTM2D,,,,iree_llvmaot"
- ",,ConvLSTM2D,,,,iree_vulkan"
- ",,GRU,,,,iree_llvmaot"
- ",,GRU,,,,iree_vulkan"
- ",,LocallyConnected1D,,,,iree_llvmaot"
- ",,LocallyConnected1D,,,,iree_vulkan"
- ",,LocallyConnected2D,,,,iree_llvmaot"
- ",,LocallyConnected2D,,,,iree_vulkan"
- ",,LSTM,,,,iree_llvmaot"
- ",,LSTM,,,,iree_vulkan"
- ",,SimpleRNN,,,,iree_llvmaot"
- ",,SimpleRNN,,,,iree_vulkan"
- ",,AveragePooling1D,,,,iree_llvmaot"
- ",,AveragePooling1D,,,,iree_vulkan"
- ",,AveragePooling2D,,,,iree_llvmaot"
- ",,AveragePooling2D,,,,iree_vulkan"
- ",,AveragePooling3D,,,,iree_llvmaot"
- ",,AveragePooling3D,,,,iree_vulkan"
- ",,Conv1DTranspose,,,,iree_llvmaot"
- ",,Conv1DTranspose,,,,iree_vulkan"
- ",,Conv2DTranspose,,,,iree_llvmaot"
- ",,Conv2DTranspose,,,,iree_vulkan"
- ",,Conv3D,,,,iree_llvmaot"
- ",,Conv3D,,,,iree_vulkan"
- ",,MaxPool1D,,,,iree_llvmaot"
- ",,MaxPool1D,,,,iree_vulkan"
- ",,MaxPool2D,,,,iree_llvmaot"
- ",,MaxPool2D,,,,iree_vulkan"
- ",,MaxPool3D,,,,iree_llvmaot"
- ",,MaxPool3D,,,,iree_vulkan"
- ",,MaxPool1D,,,,iree_vulkan"
- ",,MaxPool2D,,,,iree_vulkan"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- layers_dynamic_dims_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "layer"
- "dynamic_dims"
- "training"
- "test_default_kwargs_only"
- "target_backends"
- MATRIX_VALUES
- "layers_test.py"
- "tf"
- "Activation;ActivityRegularization;Add;AdditiveAttention;AlphaDropout;Attention;Average;AveragePooling1D;AveragePooling2D;AveragePooling3D;BatchNormalization;Concatenate;Conv1D;Conv1DTranspose;Conv2D;Conv2DTranspose;Conv3D;Conv3DTranspose;Cropping1D;Cropping2D;Cropping3D;Dense;DepthwiseConv2D;Dot;Dropout;ELU;Embedding;Flatten;GRU;GaussianDropout;GaussianNoise;GlobalAveragePooling1D;GlobalAveragePooling2D;GlobalAveragePooling3D;GlobalMaxPool1D;GlobalMaxPool2D;GlobalMaxPool3D;InputLayer;LSTM;Lambda;LayerNormalization;LeakyReLU;LocallyConnected1D;LocallyConnected2D;Masking;MaxPool1D;MaxPool2D;MaxPool3D;Maximum;Minimum;MultiHeadAttention;Multiply;PReLU;Permute;ReLU;RepeatVector;Reshape;SeparableConv1D;SeparableConv2D;Softmax;SpatialDropout1D;SpatialDropout2D;SpatialDropout3D;Subtract;ThresholdedReLU;UpSampling1D;UpSampling2D;UpSampling3D;ZeroPadding1D;ZeroPadding2D;ZeroPadding3D"
- "True"
- "False"
- "True"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,Add,,,,tflite"
- ",,Average,,,,tflite"
- ",,AveragePooling3D,,,,tflite"
- ",,BatchNormalization,,,,tflite"
- ",,Conv3D,,,,tflite"
- ",,Conv3DTranspose,,,,tflite"
- ",,ConvLSTM2D,,,,tflite"
- ",,Dense,,,,tflite"
- ",,GRU,,,,tflite"
- ",,LSTM,,,,tflite"
- ",,Lambda,,,,tflite"
- ",,LayerNormalization,,,,tflite"
- ",,Masking,,,,tflite"
- ",,MaxPool3D,,,,tflite"
- ",,Multiply,,,,tflite"
- ",,PReLU,,,,tflite"
- ",,SimpleRNN,,,,tflite"
- ",,Softmax,,,,tflite"
- ",,ThresholdedReLU,,,,tflite"
- ",,ZeroPadding3D,,,,tflite"
- ",,AdditiveAttention,,,,iree_llvmaot"
- ",,AdditiveAttention,,,,iree_vulkan"
- ",,AveragePooling1D,,,,iree_llvmaot"
- ",,AveragePooling1D,,,,iree_vulkan"
- ",,AveragePooling2D,,,,iree_llvmaot"
- ",,AveragePooling2D,,,,iree_vulkan"
- ",,AveragePooling3D,,,,iree_llvmaot"
- ",,AveragePooling3D,,,,iree_vulkan"
- ",,BatchNormalization,,,,iree_llvmaot"
- ",,BatchNormalization,,,,iree_vulkan"
- ",,Concatenate,,,,iree_llvmaot"
- ",,Concatenate,,,,iree_vulkan"
- ",,Conv1D,,,,iree_llvmaot"
- ",,Conv1D,,,,iree_vulkan"
- ",,Conv1DTranspose,,,,iree_llvmaot"
- ",,Conv1DTranspose,,,,iree_vulkan"
- ",,Conv2D,,,,iree_llvmaot"
- ",,Conv2D,,,,iree_vulkan"
- ",,Conv2DTranspose,,,,iree_llvmaot"
- ",,Conv2DTranspose,,,,iree_vulkan"
- ",,Conv3D,,,,iree_llvmaot"
- ",,Conv3D,,,,iree_vulkan"
- ",,Conv3DTranspose,,,,iree_llvmaot"
- ",,Conv3DTranspose,,,,iree_vulkan"
- ",,ConvLSTM2D,,,,iree_llvmaot"
- ",,ConvLSTM2D,,,,iree_vulkan"
- ",,Cropping1D,,,,iree_llvmaot"
- ",,Cropping1D,,,,iree_vulkan"
- ",,Cropping2D,,,,iree_llvmaot"
- ",,Cropping2D,,,,iree_vulkan"
- ",,Cropping3D,,,,iree_llvmaot"
- ",,Cropping3D,,,,iree_vulkan"
- ",,Dense,,,,iree_llvmaot"
- ",,Dense,,,,iree_vulkan"
- ",,DepthwiseConv2D,,,,iree_llvmaot"
- ",,DepthwiseConv2D,,,,iree_vulkan"
- ",,Dot,,,,iree_llvmaot"
- ",,Dot,,,,iree_vulkan"
- ",,ELU,,,,iree_llvmaot"
- ",,ELU,,,,iree_vulkan"
- ",,Flatten,,,,iree_llvmaot"
- ",,Flatten,,,,iree_vulkan"
- ",,GRU,,,,iree_llvmaot"
- ",,GRU,,,,iree_vulkan"
- ",,LSTM,,,,iree_llvmaot"
- ",,LSTM,,,,iree_vulkan"
- ",,LayerNormalization,,,,iree_llvmaot"
- ",,LayerNormalization,,,,iree_vulkan"
- ",,LeakyReLU,,,,iree_llvmaot"
- ",,LeakyReLU,,,,iree_vulkan"
- ",,LocallyConnected1D,,,,iree_llvmaot"
- ",,LocallyConnected1D,,,,iree_vulkan"
- ",,LocallyConnected2D,,,,iree_llvmaot"
- ",,LocallyConnected2D,,,,iree_vulkan"
- ",,Masking,,,,iree_llvmaot"
- ",,Masking,,,,iree_vulkan"
- ",,MaxPool1D,,,,iree_llvmaot"
- ",,MaxPool1D,,,,iree_vulkan"
- ",,MaxPool2D,,,,iree_llvmaot"
- ",,MaxPool2D,,,,iree_vulkan"
- ",,MaxPool3D,,,,iree_llvmaot"
- ",,MaxPool3D,,,,iree_vulkan"
- ",,MultiHeadAttention,,,,iree_llvmaot"
- ",,MultiHeadAttention,,,,iree_vulkan"
- ",,RepeatVector,,,,iree_llvmaot"
- ",,RepeatVector,,,,iree_vulkan"
- ",,Reshape,,,,iree_llvmaot"
- ",,Reshape,,,,iree_vulkan"
- ",,SeparableConv1D,,,,iree_llvmaot"
- ",,SeparableConv1D,,,,iree_vulkan"
- ",,SeparableConv2D,,,,iree_llvmaot"
- ",,SeparableConv2D,,,,iree_vulkan"
- ",,SimpleRNN,,,,iree_llvmaot"
- ",,SimpleRNN,,,,iree_vulkan"
- ",,ThresholdedReLU,,,,iree_llvmaot"
- ",,ThresholdedReLU,,,,iree_vulkan"
- ",,UpSampling1D,,,,iree_llvmaot"
- ",,UpSampling1D,,,,iree_vulkan"
- ",,UpSampling2D,,,,iree_llvmaot"
- ",,UpSampling2D,,,,iree_vulkan"
- ",,UpSampling3D,,,,iree_llvmaot"
- ",,UpSampling3D,,,,iree_vulkan"
- ",,ZeroPadding1D,,,,iree_llvmaot"
- ",,ZeroPadding1D,,,,iree_vulkan"
- ",,ZeroPadding2D,,,,iree_llvmaot"
- ",,ZeroPadding2D,,,,iree_vulkan"
- ",,ZeroPadding3D,,,,iree_llvmaot"
- ",,ZeroPadding3D,,,,iree_vulkan"
- ",,Activation,,,,iree_llvmaot"
- ",,Activation,,,,iree_vulkan"
- ",,Add,,,,iree_llvmaot"
- ",,Add,,,,iree_vulkan"
- ",,Attention,,,,iree_llvmaot"
- ",,Attention,,,,iree_vulkan"
- ",,Average,,,,iree_llvmaot"
- ",,Average,,,,iree_vulkan"
- ",,Embedding,,,,iree_llvmaot"
- ",,Embedding,,,,iree_vulkan"
- ",,GlobalAveragePooling1D,,,,iree_llvmaot"
- ",,GlobalAveragePooling1D,,,,iree_vulkan"
- ",,GlobalAveragePooling2D,,,,iree_llvmaot"
- ",,GlobalAveragePooling2D,,,,iree_vulkan"
- ",,GlobalAveragePooling3D,,,,iree_llvmaot"
- ",,GlobalAveragePooling3D,,,,iree_vulkan"
- ",,Lambda,,,,iree_llvmaot"
- ",,Lambda,,,,iree_vulkan"
- ",,Maximum,,,,iree_llvmaot"
- ",,Maximum,,,,iree_vulkan"
- ",,Minimum,,,,iree_llvmaot"
- ",,Minimum,,,,iree_vulkan"
- ",,Multiply,,,,iree_llvmaot"
- ",,Multiply,,,,iree_vulkan"
- ",,PReLU,,,,iree_llvmaot"
- ",,PReLU,,,,iree_vulkan"
- ",,ReLU,,,,iree_llvmaot"
- ",,ReLU,,,,iree_vulkan"
- ",,Softmax,,,,iree_llvmaot"
- ",,Softmax,,,,iree_vulkan"
- ",,Subtract,,,,iree_llvmaot"
- ",,Subtract,,,,iree_vulkan"
- ",,GlobalMaxPool1D,,,,iree_vulkan"
- ",,GlobalMaxPool2D,,,,iree_vulkan"
- ",,GlobalMaxPool3D,,,,iree_vulkan"
- ",,Permute,,,,iree_vulkan"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- layers_training_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "layer"
- "dynamic_dims"
- "training"
- "test_default_kwargs_only"
- "target_backends"
- MATRIX_VALUES
- "layers_test.py"
- "tf"
- "AdditiveAttention;AlphaDropout;Attention;BatchNormalization;Dropout;GRU;GaussianDropout;GaussianNoise;LSTM;MultiHeadAttention;SpatialDropout1D;SpatialDropout2D;SpatialDropout3D"
- "False"
- "True"
- "True"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,AlphaDropout,,,,tflite"
- ",,BatchNormalization,,,,tflite"
- ",,ConvLSTM2D,,,,tflite"
- ",,GaussianDropout,,,,tflite"
- ",,GaussianNoise,,,,tflite"
- ",,GRU,,,,tflite"
- ",,LSTM,,,,tflite"
- ",,SimpleRNN,,,,tflite"
- ",,AdditiveAttention,,,,iree_llvmaot"
- ",,AdditiveAttention,,,,iree_vulkan"
- ",,AlphaDropout,,,,iree_llvmaot"
- ",,AlphaDropout,,,,iree_vulkan"
- ",,Attention,,,,iree_llvmaot"
- ",,Attention,,,,iree_vulkan"
- ",,BatchNormalization,,,,iree_llvmaot"
- ",,BatchNormalization,,,,iree_vulkan"
- ",,ConvLSTM2D,,,,iree_llvmaot"
- ",,ConvLSTM2D,,,,iree_vulkan"
- ",,Dropout,,,,iree_llvmaot"
- ",,Dropout,,,,iree_vulkan"
- ",,GRU,,,,iree_llvmaot"
- ",,GRU,,,,iree_vulkan"
- ",,GaussianDropout,,,,iree_llvmaot"
- ",,GaussianDropout,,,,iree_vulkan"
- ",,GaussianNoise,,,,iree_llvmaot"
- ",,GaussianNoise,,,,iree_vulkan"
- ",,LSTM,,,,iree_llvmaot"
- ",,LSTM,,,,iree_vulkan"
- ",,MultiHeadAttention,,,,iree_llvmaot"
- ",,MultiHeadAttention,,,,iree_vulkan"
- ",,SimpleRNN,,,,iree_llvmaot"
- ",,SimpleRNN,,,,iree_vulkan"
- ",,SpatialDropout1D,,,,iree_llvmaot"
- ",,SpatialDropout1D,,,,iree_vulkan"
- ",,SpatialDropout2D,,,,iree_llvmaot"
- ",,SpatialDropout2D,,,,iree_vulkan"
- ",,SpatialDropout3D,,,,iree_llvmaot"
- ",,SpatialDropout3D,,,,iree_vulkan"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/keras/train/BUILD b/integrations/tensorflow/e2e/keras/train/BUILD
deleted file mode 100644
index 6929b4f..0000000
--- a/integrations/tensorflow/e2e/keras/train/BUILD
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright 2019 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-[
- py_binary(
- name = src.replace(".py", "_manual"),
- srcs = [src],
- main = src,
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
- )
- for src in glob(["*_test.py"])
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "training_tests",
- failing_configurations = [
- {
- "target_backends": "tflite", # TFLite doesn't support training
- },
- {
- "optimizer": [
- "adadelta",
- "adagrad",
- "adam",
- "adamax",
- "ftrl",
- "nadam",
- "rmsprop",
- "sgd",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- ],
- matrix = {
- "src": [
- "classification_training_test.py",
- "regression_training_test.py",
- ],
- "reference_backend": "tf",
- "optimizer": [
- "adadelta",
- "adagrad",
- "adam",
- "adamax",
- "ftrl",
- "nadam",
- "rmsprop",
- "sgd",
- ],
- "target_backends": [
- "tf",
- "tflite",
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/keras/train/CMakeLists.txt b/integrations/tensorflow/e2e/keras/train/CMakeLists.txt
deleted file mode 100644
index f23b78b..0000000
--- a/integrations/tensorflow/e2e/keras/train/CMakeLists.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/keras/train/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-file(GLOB _GLOB_X_TEST_PY LIST_DIRECTORIES false RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS *_test.py)
-iree_e2e_cartesian_product_test_suite(
- NAME
- training_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "optimizer"
- "target_backends"
- MATRIX_VALUES
- "classification_training_test.py;regression_training_test.py"
- "tf"
- "adadelta;adagrad;adam;adamax;ftrl;nadam;rmsprop;sgd"
- "tf;tflite;iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,tflite"
- ",,adadelta,iree_llvmaot"
- ",,adadelta,iree_vulkan"
- ",,adagrad,iree_llvmaot"
- ",,adagrad,iree_vulkan"
- ",,adam,iree_llvmaot"
- ",,adam,iree_vulkan"
- ",,adamax,iree_llvmaot"
- ",,adamax,iree_vulkan"
- ",,ftrl,iree_llvmaot"
- ",,ftrl,iree_vulkan"
- ",,nadam,iree_llvmaot"
- ",,nadam,iree_vulkan"
- ",,rmsprop,iree_llvmaot"
- ",,rmsprop,iree_vulkan"
- ",,sgd,iree_llvmaot"
- ",,sgd,iree_vulkan"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/keras/train/classification_training_test.py b/integrations/tensorflow/e2e/keras/train/classification_training_test.py
deleted file mode 100644
index fb3fdad..0000000
--- a/integrations/tensorflow/e2e/keras/train/classification_training_test.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Lint as: python3
-# Copyright 2019 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
-"""Test training a classification model with Keras optimizers."""
-
-import os
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-import numpy as np
-import tensorflow as tf
-
-FLAGS = flags.FLAGS
-flags.DEFINE_string(
- "optimizer", "sgd",
- "One of 'adadelta', 'adagrad', 'adam', 'adamax', 'ftrl', 'nadam', "
- "'rmsprop' or 'sgd'")
-
-SAMPLES_PER_SPIRAL = 8
-INPUT_DIM = 2
-NUM_CLASSES = 4
-BATCH_SIZE = NUM_CLASSES * SAMPLES_PER_SPIRAL
-
-
-def get_spiral_dataset(samples_per_spiral: int,
- noise_scale: float = 0,
- shuffle: bool = True):
- """Creates a dataset with four spiral arms."""
- t = np.linspace(0, 1, samples_per_spiral, dtype=np.float32)
- cos_term = t * np.sin(2 * np.pi * t)
- sin_term = t * np.cos(2 * np.pi * t)
- spirals = [
- np.stack([sin_term, cos_term], axis=-1),
- np.stack([-sin_term, -cos_term], axis=-1),
- np.stack([-cos_term, sin_term], axis=-1),
- np.stack([cos_term, -sin_term], axis=-1)
- ]
- inputs = np.concatenate(spirals)
- inputs = inputs + np.random.normal(scale=noise_scale, size=inputs.shape)
- labels = np.concatenate([i * np.ones_like(t) for i in range(4)])
-
- if shuffle:
- # Shuffle by batch dim.
- index = np.arange(inputs.shape[0])
- np.random.shuffle(index)
- inputs = inputs[index]
- labels = labels[index]
-
- return inputs.astype(np.float32), labels.astype(np.float32)
-
-
-class ClassificationTrainingModule(tf.Module):
- """A module for model training."""
-
- def __init__(self):
- inputs = tf.keras.layers.Input(INPUT_DIM)
- x = tf.keras.layers.Dense(NUM_CLASSES)(inputs)
- outputs = tf.keras.layers.Softmax()(x)
- self.model = tf.keras.Model(inputs, outputs)
-
- self.loss = tf.keras.losses.SparseCategoricalCrossentropy()
- self.optimizer = tf.keras.optimizers.get(FLAGS.optimizer)
-
- @tf.function(input_signature=[
- tf.TensorSpec([BATCH_SIZE, INPUT_DIM], tf.float32),
- tf.TensorSpec([BATCH_SIZE], tf.float32)
- ])
- def train_on_batch(self, inputs, labels):
- with tf.GradientTape() as tape:
- probs = self.model(inputs, training=True)
- loss = self.loss(labels, probs)
- variables = self.model.trainable_variables
- gradients = tape.gradient(loss, variables)
- self.optimizer.apply_gradients(zip(gradients, variables))
- return loss
-
- @tf.function(input_signature=[])
- def get_weights(self):
- return self.model.weights[0]
-
- @tf.function(input_signature=[])
- def get_bias(self):
- return self.model.weights[1]
-
-
-class ClassificationTrainingTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(
- ClassificationTrainingModule,
- exported_names=["train_on_batch", "get_weights", "get_bias"],
- relative_artifacts_dir=os.path.join(
- ClassificationTrainingModule.__name__, FLAGS.optimizer))
-
- def test_train_on_batch(self):
-
- def train_on_batch(module):
- inputs, labels = get_spiral_dataset(SAMPLES_PER_SPIRAL, noise_scale=0.05)
- module.train_on_batch(inputs, labels)
- # Ensures the weights are identical.
- module.get_weights()
- module.get_bias()
-
- self.compare_backends(train_on_batch, self._modules)
-
-
-def main(argv):
- del argv # Unused
- if hasattr(tf, "enable_v2_behavior"):
- tf.enable_v2_behavior()
- tf.test.main()
-
-
-if __name__ == "__main__":
- app.run(main)
diff --git a/integrations/tensorflow/e2e/keras/train/regression_training_test.py b/integrations/tensorflow/e2e/keras/train/regression_training_test.py
deleted file mode 100644
index d6bf819..0000000
--- a/integrations/tensorflow/e2e/keras/train/regression_training_test.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# Lint as: python3
-# Copyright 2019 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
-"""Test training a regression model with Keras optimizers."""
-
-import os
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-import numpy as np
-import tensorflow as tf
-
-FLAGS = flags.FLAGS
-flags.DEFINE_string(
- "optimizer", "sgd",
- "One of 'adadelta', 'adagrad', 'adam', 'adamax', 'ftrl', 'nadam', "
- "'rmsprop' or 'sgd'")
-
-np.random.seed(0)
-INPUT_DIM = 8
-OUTPUT_DIM = 2
-BATCH_SIZE = 4
-WEIGHTS = np.random.uniform(-1, 1, size=(INPUT_DIM, OUTPUT_DIM))
-BIASES = np.random.uniform(-1, 1, size=(OUTPUT_DIM,))
-
-
-def get_linear_data():
- x = np.random.uniform(-1, 1, size=(BATCH_SIZE, INPUT_DIM))
- y = np.dot(x, WEIGHTS) + BIASES
- return x.astype(np.float32), y.astype(np.float32)
-
-
-class RegressionTrainingModule(tf.Module):
- """A module for model training."""
-
- def __init__(self):
- inputs = tf.keras.layers.Input(INPUT_DIM)
- outputs = tf.keras.layers.Dense(OUTPUT_DIM)(inputs)
- self.model = tf.keras.Model(inputs, outputs)
-
- self.loss = tf.keras.losses.MeanSquaredError()
- self.optimizer = tf.keras.optimizers.get(FLAGS.optimizer)
-
- @tf.function(input_signature=[
- tf.TensorSpec([BATCH_SIZE, INPUT_DIM], tf.float32),
- tf.TensorSpec([BATCH_SIZE, OUTPUT_DIM], tf.float32)
- ])
- def train_on_batch(self, x, y_true):
- with tf.GradientTape() as tape:
- y_pred = self.model(x, training=True)
- loss = self.loss(y_pred, y_pred)
- variables = self.model.trainable_variables
- gradients = tape.gradient(loss, variables)
- self.optimizer.apply_gradients(zip(gradients, variables))
- return loss
-
- @tf.function(input_signature=[])
- def get_weights(self):
- return self.model.weights[0]
-
- @tf.function(input_signature=[])
- def get_bias(self):
- return self.model.weights[1]
-
-
-class RegressionTrainingTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(
- RegressionTrainingModule,
- exported_names=["train_on_batch", "get_weights", "get_bias"],
- relative_artifacts_dir=os.path.join(RegressionTrainingModule.__name__,
- FLAGS.optimizer))
-
- def test_train_on_batch(self):
-
- def train_on_batch(module):
- x, y = get_linear_data()
- module.train_on_batch(x, y)
- # Ensures the weights are identical.
- module.get_weights()
- module.get_bias()
-
- self.compare_backends(train_on_batch, self._modules)
-
-
-def main(argv):
- del argv # Unused
- if hasattr(tf, "enable_v2_behavior"):
- tf.enable_v2_behavior()
- tf.test.main()
-
-
-if __name__ == "__main__":
- app.run(main)
diff --git a/integrations/tensorflow/e2e/math/BUILD b/integrations/tensorflow/e2e/math/BUILD
deleted file mode 100644
index 9c7f41f..0000000
--- a/integrations/tensorflow/e2e/math/BUILD
+++ /dev/null
@@ -1,717 +0,0 @@
-# Copyright 2020 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-py_binary(
- name = "math_test_manual",
- srcs = ["math_test.py"],
- main = "math_test.py",
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# These functions were selected using all of the funcions in the tf.math docs:
-# https://www.tensorflow.org/api_docs/python/tf/math
-TF_MATH_FUNCTIONS = [
- "abs",
- "accumulate_n",
- "acos",
- "acosh",
- "add",
- "add_n",
- "angle",
- "argmax",
- "argmin",
- "asin",
- "asinh",
- "atan",
- "atan2",
- "atanh",
- "bessel_i0",
- "bessel_i0e",
- "bessel_i1",
- "bessel_i1e",
- "betainc",
- "bincount",
- "ceil",
- "confusion_matrix",
- "cos",
- "cosh",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "cumulative_logsumexp",
- "digamma",
- "divide",
- "divide_no_nan",
- "equal",
- "erf",
- "erfc",
- "erfinv",
- "exp",
- "expm1",
- "floor",
- "floordiv",
- "floormod",
- "greater",
- "greater_equal",
- "igamma",
- "igammac",
- "imag",
- "in_top_k",
- "invert_permutation",
- "is_finite",
- "is_inf",
- "is_nan",
- "is_non_decreasing",
- "is_strictly_increasing",
- "lbeta",
- "less",
- "less_equal",
- "lgamma",
- "log",
- "log1p",
- "log_sigmoid",
- "log_softmax",
- "logical_and",
- "logical_not",
- "logical_or",
- "logical_xor",
- "maximum",
- "minimum",
- "mod",
- "multiply",
- "multiply_no_nan",
- "ndtri",
- "negative",
- "nextafter",
- "not_equal",
- "polygamma",
- "polyval",
- "pow",
- "real",
- "reciprocal",
- "reciprocal_no_nan",
- "reduce_all",
- "reduce_any",
- "reduce_euclidean_norm",
- "reduce_logsumexp",
- "reduce_max",
- "reduce_mean",
- "reduce_min",
- "reduce_prod",
- "reduce_std",
- "reduce_sum",
- "reduce_variance",
- "rint",
- "round",
- "rsqrt",
- "scalar_mul",
- "segment_max",
- "segment_mean",
- "segment_min",
- "segment_prod",
- "segment_sum",
- "sigmoid",
- "sign",
- "sin",
- "sinh",
- "sobol_sample",
- "softmax",
- "softplus",
- "softsign",
- "sqrt",
- "square",
- "squared_difference",
- "subtract",
- "tan",
- "tanh",
- "top_k",
- "truediv",
- "unsorted_segment_max",
- "unsorted_segment_mean",
- "unsorted_segment_min",
- "unsorted_segment_prod",
- "unsorted_segment_sqrt_n",
- "unsorted_segment_sum",
- "xdivy",
- "xlog1py",
- "xlogy",
- "zero_fraction",
- "zeta",
-]
-
-# ---- STATIC TESTS ----------------------------------------------- #
-
-# keep sorted
-LLVM_FAILING = [
- "acos",
- "argmax",
- "argmin",
- "asin",
- "atan",
- "atan2",
- "bessel_i0",
- "bessel_i0e",
- "bessel_i1",
- "bessel_i1e",
- "betainc",
- "bincount",
- "confusion_matrix",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "cumulative_logsumexp",
- "divide", # Failing for integer inputs because iree doesn't output 'f64'.
- "erfinv",
- "igamma",
- "igammac",
- "in_top_k",
- "invert_permutation",
- "is_non_decreasing",
- "is_strictly_increasing",
- "ndtri",
- "nextafter",
- "reduce_all",
- "reduce_any",
- "reduce_euclidean_norm",
- "reduce_prod",
- "segment_max",
- "segment_mean",
- "segment_min",
- "segment_prod",
- "segment_sum",
- "sobol_sample",
- "softsign",
- "top_k",
- "unsorted_segment_max",
- "unsorted_segment_mean",
- "unsorted_segment_min",
- "unsorted_segment_prod",
- "unsorted_segment_sqrt_n",
- "unsorted_segment_sum",
-]
-
-# keep sorted
-VULKAN_FAILING = [
- "acos",
- "argmax",
- "argmin",
- "asin",
- "asinh",
- "atan",
- "atan2",
- "bessel_i0",
- "bessel_i0e",
- "bessel_i1",
- "bessel_i1e",
- "betainc",
- "bincount",
- "confusion_matrix",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "cumulative_logsumexp",
- "divide", # Failing for integer inputs because iree doesn't output 'f64'.
- "equal", # TODO(hanchung): Enable the test after integration.
- "erfinv",
- "greater", # TODO(hanchung): Enable the test after integration.
- "greater_equal", # TODO(hanchung): Enable the test after integration.
- "igamma",
- "igammac",
- "in_top_k",
- "invert_permutation",
- "is_inf", # TODO(hanchung): Enable the test after integration.
- "is_nan", # TODO(hanchung): Enable the test after integration.
- "is_non_decreasing",
- "is_strictly_increasing",
- "less", # TODO(hanchung): Enable the test after integration.
- "less_equal", # TODO(hanchung): Enable the test after integration.
- "logical_and", # TODO(hanchung): Enable the test after integration.
- "logical_not",
- "logical_or", # TODO(hanchung): Enable the test after integration.
- "logical_xor",
- "ndtri",
- "nextafter",
- "not_equal", # TODO(hanchung): Enable the test after integration.
- "polygamma",
- "pow",
- "reduce_all",
- "reduce_any",
- "reduce_euclidean_norm",
- "reduce_prod",
- "segment_max",
- "segment_mean",
- "segment_min",
- "segment_prod",
- "segment_sum",
- "sign",
- "sobol_sample",
- "softsign",
- "top_k",
- "unsorted_segment_max",
- "unsorted_segment_mean",
- "unsorted_segment_min",
- "unsorted_segment_prod",
- "unsorted_segment_sqrt_n",
- "unsorted_segment_sum",
- "zeta",
-]
-
-# TODO(#5400): Failing only on Nvidia GPU.
-# keep sorted
-TURING_VULKAN_FAILING = [
- "digamma",
- "is_finite",
- "mod",
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "math_tests",
- failing_configurations = [
- {
- # Failing on llvm.
- "functions": LLVM_FAILING,
- "target_backends": "iree_llvmaot",
- },
- {
- # Failing on vulkan.
- "functions": VULKAN_FAILING + TURING_VULKAN_FAILING,
- "target_backends": "iree_vulkan",
- },
- ],
- matrix = {
- "src": "math_test.py",
- "reference_backend": "tf",
- "functions": TF_MATH_FUNCTIONS,
- "dynamic_dims": False,
- "test_complex": False,
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# ---- DYNAMIC TESTS ---------------------------------------------- #
-
-# keep sorted
-LLVM_FAILING_DYNAMIC = [
- "acos",
- "angle",
- "argmax",
- "argmin",
- "asin",
- "atan",
- "atan2",
- "bessel_i0",
- "bessel_i0e",
- "bessel_i1",
- "bessel_i1e",
- "betainc",
- "bincount",
- "confusion_matrix",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "cumulative_logsumexp",
- "divide",
- "erfinv",
- "expm1",
- "igamma",
- "igammac",
- "imag",
- "in_top_k",
- "invert_permutation",
- "is_non_decreasing",
- "is_strictly_increasing",
- "log1p",
- "log_sigmoid",
- "log_softmax",
- "ndtri",
- "nextafter",
- "reduce_euclidean_norm",
- "reduce_logsumexp",
- "reduce_mean",
- "reduce_prod",
- "reduce_std",
- "reduce_variance",
- "segment_max",
- "segment_mean",
- "segment_min",
- "segment_prod",
- "segment_sum",
- "sinh",
- "sobol_sample",
- "softplus",
- "top_k",
- "unsorted_segment_max",
- "unsorted_segment_mean",
- "unsorted_segment_min",
- "unsorted_segment_prod",
- "unsorted_segment_sqrt_n",
- "unsorted_segment_sum",
- "xlog1py",
- "xlogy",
- "zero_fraction",
-]
-
-# keep sorted
-VULKAN_FAILING_DYNAMIC = [
- "abs",
- "accumulate_n",
- "acos",
- "acosh",
- "add",
- "add_n",
- "angle",
- "argmax",
- "argmin",
- "asin",
- "asinh",
- "atan",
- "atan2",
- "atanh",
- "bessel_i0",
- "bessel_i0e",
- "bessel_i1",
- "bessel_i1e",
- "betainc",
- "bincount",
- "ceil",
- "confusion_matrix",
- "cos",
- "cosh",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "cumulative_logsumexp",
- "digamma",
- "divide",
- "divide_no_nan",
- "equal",
- "erf",
- "erfc",
- "erfinv",
- "exp",
- "expm1",
- "floor",
- "floordiv",
- "floormod",
- "greater",
- "greater_equal",
- "igamma",
- "igammac",
- "imag",
- "in_top_k",
- "invert_permutation",
- "is_finite",
- "is_inf",
- "is_nan",
- "is_non_decreasing",
- "is_strictly_increasing",
- "lbeta",
- "less",
- "less_equal",
- "lgamma",
- "log",
- "log1p",
- "log_sigmoid",
- "log_softmax",
- "logical_and",
- "logical_not",
- "logical_or",
- "logical_xor",
- "maximum",
- "minimum",
- "mod",
- "multiply",
- "multiply_no_nan",
- "ndtri",
- "negative",
- "nextafter",
- "not_equal",
- "polygamma",
- "polyval",
- "pow",
- "reciprocal",
- "reciprocal_no_nan",
- "reduce_all",
- "reduce_any",
- "reduce_euclidean_norm",
- "reduce_logsumexp",
- "reduce_max",
- "reduce_mean",
- "reduce_min",
- "reduce_prod",
- "reduce_std",
- "reduce_sum",
- "reduce_variance",
- "rint",
- "round",
- "rsqrt",
- "scalar_mul",
- "segment_max",
- "segment_mean",
- "segment_min",
- "segment_prod",
- "segment_sum",
- "sigmoid",
- "sign",
- "sin",
- "sinh",
- "sobol_sample",
- "softmax",
- "softplus",
- "softsign",
- "sqrt",
- "square",
- "squared_difference",
- "subtract",
- "tan",
- "tanh",
- "top_k",
- "truediv",
- "unsorted_segment_max",
- "unsorted_segment_mean",
- "unsorted_segment_min",
- "unsorted_segment_prod",
- "unsorted_segment_sqrt_n",
- "unsorted_segment_sum",
- "xdivy",
- "xlog1py",
- "xlogy",
- "zero_fraction",
- "zeta",
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "math_dynamic_dims_tests",
- failing_configurations = [
- {
- # Failing on llvm.
- "functions": LLVM_FAILING_DYNAMIC,
- "target_backends": "iree_llvmaot",
- },
- {
- # Failing on vulkan.
- "functions": VULKAN_FAILING_DYNAMIC,
- "target_backends": "iree_vulkan",
- },
- ],
- matrix = {
- "src": "math_test.py",
- "reference_backend": "tf",
- "functions": TF_MATH_FUNCTIONS,
- "dynamic_dims": True,
- "test_complex": False,
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-# ---- COMPLEX TESTS ---------------------------------------------- #
-
-# This list was generated by running:
-# bazel run integrations/tensorflow/e2e/math:math_test_manual -- --list_functions_with_complex_tests
-# keep sorted
-COMPLEX_FUNCTIONS = [
- "abs",
- "add",
- "angle",
- "asinh",
- "atanh",
- "conj",
- "cos",
- "cosh",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "divide",
- "divide_no_nan",
- "exp",
- "expm1",
- "imag",
- "l2_normalize",
- "log",
- "log1p",
- "multiply",
- "multiply_no_nan",
- "negative",
- "pow",
- "real",
- "reciprocal",
- "reciprocal_no_nan",
- "reduce_euclidean_norm",
- "reduce_std",
- "reduce_variance",
- "rsqrt",
- "sigmoid",
- "sign",
- "sin",
- "sinh",
- "sqrt",
- "square",
- "squared_difference",
- "subtract",
- "tan",
- "tanh",
- "truediv",
- "xdivy",
- "xlog1py",
- "xlogy",
- "zero_fraction",
-]
-
-# keep sorted
-LLVM_FAILING_COMPLEX = [
- "angle",
- "asinh",
- "atanh",
- "cos",
- "cosh",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "divide",
- "divide_no_nan",
- "expm1",
- "log",
- "log1p",
- "multiply_no_nan",
- "negative",
- "pow",
- "reciprocal",
- "reciprocal_no_nan",
- "reduce_euclidean_norm",
- "reduce_std",
- "reduce_variance",
- "rsqrt",
- "sigmoid",
- "sign",
- "sin",
- "sinh",
- "sqrt",
- "tan",
- "tanh",
- "xdivy",
- "xlog1py",
- "xlogy",
- "zero_fraction",
-]
-
-# keep sorted
-VULKAN_FAILING_COMPLEX = [
- "angle",
- "asinh",
- "atanh",
- "cos",
- "cosh",
- "count_nonzero",
- "cumprod",
- "cumsum",
- "divide",
- "divide_no_nan",
- "expm1",
- "log",
- "log1p",
- "multiply_no_nan",
- "negative",
- "pow",
- "reciprocal",
- "reciprocal_no_nan",
- "reduce_euclidean_norm",
- "reduce_std",
- "reduce_variance",
- "rsqrt",
- "sigmoid",
- "sign",
- "sin",
- "sinh",
- "sqrt",
- "tan",
- "tanh",
- "xdivy",
- "xlog1py",
- "xlogy",
- "zero_fraction",
-]
-
-iree_e2e_cartesian_product_test_suite(
- name = "math_complex_tests",
- failing_configurations = [
- {
- # Failing on llvm.
- "functions": LLVM_FAILING_COMPLEX,
- "target_backends": "iree_llvmaot",
- },
- {
- # Failing on vulkan.
- "functions": VULKAN_FAILING_COMPLEX,
- "target_backends": "iree_vulkan",
- },
- ],
- matrix = {
- "src": "math_test.py",
- "reference_backend": "tf",
- "functions": COMPLEX_FUNCTIONS,
- "dynamic_dims": False,
- "test_complex": True,
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/math/CMakeLists.txt b/integrations/tensorflow/e2e/math/CMakeLists.txt
deleted file mode 100644
index b463156..0000000
--- a/integrations/tensorflow/e2e/math/CMakeLists.txt
+++ /dev/null
@@ -1,431 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/math/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- math_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "functions"
- "dynamic_dims"
- "test_complex"
- "target_backends"
- MATRIX_VALUES
- "math_test.py"
- "tf"
- "abs;accumulate_n;acos;acosh;add;add_n;angle;argmax;argmin;asin;asinh;atan;atan2;atanh;bessel_i0;bessel_i0e;bessel_i1;bessel_i1e;betainc;bincount;ceil;confusion_matrix;cos;cosh;count_nonzero;cumprod;cumsum;cumulative_logsumexp;digamma;divide;divide_no_nan;equal;erf;erfc;erfinv;exp;expm1;floor;floordiv;floormod;greater;greater_equal;igamma;igammac;imag;in_top_k;invert_permutation;is_finite;is_inf;is_nan;is_non_decreasing;is_strictly_increasing;lbeta;less;less_equal;lgamma;log;log1p;log_sigmoid;log_softmax;logical_and;logical_not;logical_or;logical_xor;maximum;minimum;mod;multiply;multiply_no_nan;ndtri;negative;nextafter;not_equal;polygamma;polyval;pow;real;reciprocal;reciprocal_no_nan;reduce_all;reduce_any;reduce_euclidean_norm;reduce_logsumexp;reduce_max;reduce_mean;reduce_min;reduce_prod;reduce_std;reduce_sum;reduce_variance;rint;round;rsqrt;scalar_mul;segment_max;segment_mean;segment_min;segment_prod;segment_sum;sigmoid;sign;sin;sinh;sobol_sample;softmax;softplus;softsign;sqrt;square;squared_difference;subtract;tan;tanh;top_k;truediv;unsorted_segment_max;unsorted_segment_mean;unsorted_segment_min;unsorted_segment_prod;unsorted_segment_sqrt_n;unsorted_segment_sum;xdivy;xlog1py;xlogy;zero_fraction;zeta"
- "False"
- "False"
- "iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,acos,,,iree_llvmaot"
- ",,argmax,,,iree_llvmaot"
- ",,argmin,,,iree_llvmaot"
- ",,asin,,,iree_llvmaot"
- ",,atan,,,iree_llvmaot"
- ",,atan2,,,iree_llvmaot"
- ",,bessel_i0,,,iree_llvmaot"
- ",,bessel_i0e,,,iree_llvmaot"
- ",,bessel_i1,,,iree_llvmaot"
- ",,bessel_i1e,,,iree_llvmaot"
- ",,betainc,,,iree_llvmaot"
- ",,bincount,,,iree_llvmaot"
- ",,confusion_matrix,,,iree_llvmaot"
- ",,count_nonzero,,,iree_llvmaot"
- ",,cumprod,,,iree_llvmaot"
- ",,cumsum,,,iree_llvmaot"
- ",,cumulative_logsumexp,,,iree_llvmaot"
- ",,divide,,,iree_llvmaot"
- ",,erfinv,,,iree_llvmaot"
- ",,igamma,,,iree_llvmaot"
- ",,igammac,,,iree_llvmaot"
- ",,in_top_k,,,iree_llvmaot"
- ",,invert_permutation,,,iree_llvmaot"
- ",,is_non_decreasing,,,iree_llvmaot"
- ",,is_strictly_increasing,,,iree_llvmaot"
- ",,ndtri,,,iree_llvmaot"
- ",,nextafter,,,iree_llvmaot"
- ",,reduce_all,,,iree_llvmaot"
- ",,reduce_any,,,iree_llvmaot"
- ",,reduce_euclidean_norm,,,iree_llvmaot"
- ",,reduce_prod,,,iree_llvmaot"
- ",,segment_max,,,iree_llvmaot"
- ",,segment_mean,,,iree_llvmaot"
- ",,segment_min,,,iree_llvmaot"
- ",,segment_prod,,,iree_llvmaot"
- ",,segment_sum,,,iree_llvmaot"
- ",,sobol_sample,,,iree_llvmaot"
- ",,softsign,,,iree_llvmaot"
- ",,top_k,,,iree_llvmaot"
- ",,unsorted_segment_max,,,iree_llvmaot"
- ",,unsorted_segment_mean,,,iree_llvmaot"
- ",,unsorted_segment_min,,,iree_llvmaot"
- ",,unsorted_segment_prod,,,iree_llvmaot"
- ",,unsorted_segment_sqrt_n,,,iree_llvmaot"
- ",,unsorted_segment_sum,,,iree_llvmaot"
- ",,acos,,,iree_vulkan"
- ",,argmax,,,iree_vulkan"
- ",,argmin,,,iree_vulkan"
- ",,asin,,,iree_vulkan"
- ",,asinh,,,iree_vulkan"
- ",,atan,,,iree_vulkan"
- ",,atan2,,,iree_vulkan"
- ",,bessel_i0,,,iree_vulkan"
- ",,bessel_i0e,,,iree_vulkan"
- ",,bessel_i1,,,iree_vulkan"
- ",,bessel_i1e,,,iree_vulkan"
- ",,betainc,,,iree_vulkan"
- ",,bincount,,,iree_vulkan"
- ",,confusion_matrix,,,iree_vulkan"
- ",,count_nonzero,,,iree_vulkan"
- ",,cumprod,,,iree_vulkan"
- ",,cumsum,,,iree_vulkan"
- ",,cumulative_logsumexp,,,iree_vulkan"
- ",,divide,,,iree_vulkan"
- ",,equal,,,iree_vulkan"
- ",,erfinv,,,iree_vulkan"
- ",,greater,,,iree_vulkan"
- ",,greater_equal,,,iree_vulkan"
- ",,igamma,,,iree_vulkan"
- ",,igammac,,,iree_vulkan"
- ",,in_top_k,,,iree_vulkan"
- ",,invert_permutation,,,iree_vulkan"
- ",,is_inf,,,iree_vulkan"
- ",,is_nan,,,iree_vulkan"
- ",,is_non_decreasing,,,iree_vulkan"
- ",,is_strictly_increasing,,,iree_vulkan"
- ",,less,,,iree_vulkan"
- ",,less_equal,,,iree_vulkan"
- ",,logical_and,,,iree_vulkan"
- ",,logical_not,,,iree_vulkan"
- ",,logical_or,,,iree_vulkan"
- ",,logical_xor,,,iree_vulkan"
- ",,ndtri,,,iree_vulkan"
- ",,nextafter,,,iree_vulkan"
- ",,not_equal,,,iree_vulkan"
- ",,polygamma,,,iree_vulkan"
- ",,pow,,,iree_vulkan"
- ",,reduce_all,,,iree_vulkan"
- ",,reduce_any,,,iree_vulkan"
- ",,reduce_euclidean_norm,,,iree_vulkan"
- ",,reduce_prod,,,iree_vulkan"
- ",,segment_max,,,iree_vulkan"
- ",,segment_mean,,,iree_vulkan"
- ",,segment_min,,,iree_vulkan"
- ",,segment_prod,,,iree_vulkan"
- ",,segment_sum,,,iree_vulkan"
- ",,sign,,,iree_vulkan"
- ",,sobol_sample,,,iree_vulkan"
- ",,softsign,,,iree_vulkan"
- ",,top_k,,,iree_vulkan"
- ",,unsorted_segment_max,,,iree_vulkan"
- ",,unsorted_segment_mean,,,iree_vulkan"
- ",,unsorted_segment_min,,,iree_vulkan"
- ",,unsorted_segment_prod,,,iree_vulkan"
- ",,unsorted_segment_sqrt_n,,,iree_vulkan"
- ",,unsorted_segment_sum,,,iree_vulkan"
- ",,zeta,,,iree_vulkan"
- ",,digamma,,,iree_vulkan"
- ",,is_finite,,,iree_vulkan"
- ",,mod,,,iree_vulkan"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- math_dynamic_dims_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "functions"
- "dynamic_dims"
- "test_complex"
- "target_backends"
- MATRIX_VALUES
- "math_test.py"
- "tf"
- "abs;accumulate_n;acos;acosh;add;add_n;angle;argmax;argmin;asin;asinh;atan;atan2;atanh;bessel_i0;bessel_i0e;bessel_i1;bessel_i1e;betainc;bincount;ceil;confusion_matrix;cos;cosh;count_nonzero;cumprod;cumsum;cumulative_logsumexp;digamma;divide;divide_no_nan;equal;erf;erfc;erfinv;exp;expm1;floor;floordiv;floormod;greater;greater_equal;igamma;igammac;imag;in_top_k;invert_permutation;is_finite;is_inf;is_nan;is_non_decreasing;is_strictly_increasing;lbeta;less;less_equal;lgamma;log;log1p;log_sigmoid;log_softmax;logical_and;logical_not;logical_or;logical_xor;maximum;minimum;mod;multiply;multiply_no_nan;ndtri;negative;nextafter;not_equal;polygamma;polyval;pow;real;reciprocal;reciprocal_no_nan;reduce_all;reduce_any;reduce_euclidean_norm;reduce_logsumexp;reduce_max;reduce_mean;reduce_min;reduce_prod;reduce_std;reduce_sum;reduce_variance;rint;round;rsqrt;scalar_mul;segment_max;segment_mean;segment_min;segment_prod;segment_sum;sigmoid;sign;sin;sinh;sobol_sample;softmax;softplus;softsign;sqrt;square;squared_difference;subtract;tan;tanh;top_k;truediv;unsorted_segment_max;unsorted_segment_mean;unsorted_segment_min;unsorted_segment_prod;unsorted_segment_sqrt_n;unsorted_segment_sum;xdivy;xlog1py;xlogy;zero_fraction;zeta"
- "True"
- "False"
- "iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,acos,,,iree_llvmaot"
- ",,angle,,,iree_llvmaot"
- ",,argmax,,,iree_llvmaot"
- ",,argmin,,,iree_llvmaot"
- ",,asin,,,iree_llvmaot"
- ",,atan,,,iree_llvmaot"
- ",,atan2,,,iree_llvmaot"
- ",,bessel_i0,,,iree_llvmaot"
- ",,bessel_i0e,,,iree_llvmaot"
- ",,bessel_i1,,,iree_llvmaot"
- ",,bessel_i1e,,,iree_llvmaot"
- ",,betainc,,,iree_llvmaot"
- ",,bincount,,,iree_llvmaot"
- ",,confusion_matrix,,,iree_llvmaot"
- ",,count_nonzero,,,iree_llvmaot"
- ",,cumprod,,,iree_llvmaot"
- ",,cumsum,,,iree_llvmaot"
- ",,cumulative_logsumexp,,,iree_llvmaot"
- ",,divide,,,iree_llvmaot"
- ",,erfinv,,,iree_llvmaot"
- ",,expm1,,,iree_llvmaot"
- ",,igamma,,,iree_llvmaot"
- ",,igammac,,,iree_llvmaot"
- ",,imag,,,iree_llvmaot"
- ",,in_top_k,,,iree_llvmaot"
- ",,invert_permutation,,,iree_llvmaot"
- ",,is_non_decreasing,,,iree_llvmaot"
- ",,is_strictly_increasing,,,iree_llvmaot"
- ",,log1p,,,iree_llvmaot"
- ",,log_sigmoid,,,iree_llvmaot"
- ",,log_softmax,,,iree_llvmaot"
- ",,ndtri,,,iree_llvmaot"
- ",,nextafter,,,iree_llvmaot"
- ",,reduce_euclidean_norm,,,iree_llvmaot"
- ",,reduce_logsumexp,,,iree_llvmaot"
- ",,reduce_mean,,,iree_llvmaot"
- ",,reduce_prod,,,iree_llvmaot"
- ",,reduce_std,,,iree_llvmaot"
- ",,reduce_variance,,,iree_llvmaot"
- ",,segment_max,,,iree_llvmaot"
- ",,segment_mean,,,iree_llvmaot"
- ",,segment_min,,,iree_llvmaot"
- ",,segment_prod,,,iree_llvmaot"
- ",,segment_sum,,,iree_llvmaot"
- ",,sinh,,,iree_llvmaot"
- ",,sobol_sample,,,iree_llvmaot"
- ",,softplus,,,iree_llvmaot"
- ",,top_k,,,iree_llvmaot"
- ",,unsorted_segment_max,,,iree_llvmaot"
- ",,unsorted_segment_mean,,,iree_llvmaot"
- ",,unsorted_segment_min,,,iree_llvmaot"
- ",,unsorted_segment_prod,,,iree_llvmaot"
- ",,unsorted_segment_sqrt_n,,,iree_llvmaot"
- ",,unsorted_segment_sum,,,iree_llvmaot"
- ",,xlog1py,,,iree_llvmaot"
- ",,xlogy,,,iree_llvmaot"
- ",,zero_fraction,,,iree_llvmaot"
- ",,abs,,,iree_vulkan"
- ",,accumulate_n,,,iree_vulkan"
- ",,acos,,,iree_vulkan"
- ",,acosh,,,iree_vulkan"
- ",,add,,,iree_vulkan"
- ",,add_n,,,iree_vulkan"
- ",,angle,,,iree_vulkan"
- ",,argmax,,,iree_vulkan"
- ",,argmin,,,iree_vulkan"
- ",,asin,,,iree_vulkan"
- ",,asinh,,,iree_vulkan"
- ",,atan,,,iree_vulkan"
- ",,atan2,,,iree_vulkan"
- ",,atanh,,,iree_vulkan"
- ",,bessel_i0,,,iree_vulkan"
- ",,bessel_i0e,,,iree_vulkan"
- ",,bessel_i1,,,iree_vulkan"
- ",,bessel_i1e,,,iree_vulkan"
- ",,betainc,,,iree_vulkan"
- ",,bincount,,,iree_vulkan"
- ",,ceil,,,iree_vulkan"
- ",,confusion_matrix,,,iree_vulkan"
- ",,cos,,,iree_vulkan"
- ",,cosh,,,iree_vulkan"
- ",,count_nonzero,,,iree_vulkan"
- ",,cumprod,,,iree_vulkan"
- ",,cumsum,,,iree_vulkan"
- ",,cumulative_logsumexp,,,iree_vulkan"
- ",,digamma,,,iree_vulkan"
- ",,divide,,,iree_vulkan"
- ",,divide_no_nan,,,iree_vulkan"
- ",,equal,,,iree_vulkan"
- ",,erf,,,iree_vulkan"
- ",,erfc,,,iree_vulkan"
- ",,erfinv,,,iree_vulkan"
- ",,exp,,,iree_vulkan"
- ",,expm1,,,iree_vulkan"
- ",,floor,,,iree_vulkan"
- ",,floordiv,,,iree_vulkan"
- ",,floormod,,,iree_vulkan"
- ",,greater,,,iree_vulkan"
- ",,greater_equal,,,iree_vulkan"
- ",,igamma,,,iree_vulkan"
- ",,igammac,,,iree_vulkan"
- ",,imag,,,iree_vulkan"
- ",,in_top_k,,,iree_vulkan"
- ",,invert_permutation,,,iree_vulkan"
- ",,is_finite,,,iree_vulkan"
- ",,is_inf,,,iree_vulkan"
- ",,is_nan,,,iree_vulkan"
- ",,is_non_decreasing,,,iree_vulkan"
- ",,is_strictly_increasing,,,iree_vulkan"
- ",,lbeta,,,iree_vulkan"
- ",,less,,,iree_vulkan"
- ",,less_equal,,,iree_vulkan"
- ",,lgamma,,,iree_vulkan"
- ",,log,,,iree_vulkan"
- ",,log1p,,,iree_vulkan"
- ",,log_sigmoid,,,iree_vulkan"
- ",,log_softmax,,,iree_vulkan"
- ",,logical_and,,,iree_vulkan"
- ",,logical_not,,,iree_vulkan"
- ",,logical_or,,,iree_vulkan"
- ",,logical_xor,,,iree_vulkan"
- ",,maximum,,,iree_vulkan"
- ",,minimum,,,iree_vulkan"
- ",,mod,,,iree_vulkan"
- ",,multiply,,,iree_vulkan"
- ",,multiply_no_nan,,,iree_vulkan"
- ",,ndtri,,,iree_vulkan"
- ",,negative,,,iree_vulkan"
- ",,nextafter,,,iree_vulkan"
- ",,not_equal,,,iree_vulkan"
- ",,polygamma,,,iree_vulkan"
- ",,polyval,,,iree_vulkan"
- ",,pow,,,iree_vulkan"
- ",,reciprocal,,,iree_vulkan"
- ",,reciprocal_no_nan,,,iree_vulkan"
- ",,reduce_all,,,iree_vulkan"
- ",,reduce_any,,,iree_vulkan"
- ",,reduce_euclidean_norm,,,iree_vulkan"
- ",,reduce_logsumexp,,,iree_vulkan"
- ",,reduce_max,,,iree_vulkan"
- ",,reduce_mean,,,iree_vulkan"
- ",,reduce_min,,,iree_vulkan"
- ",,reduce_prod,,,iree_vulkan"
- ",,reduce_std,,,iree_vulkan"
- ",,reduce_sum,,,iree_vulkan"
- ",,reduce_variance,,,iree_vulkan"
- ",,rint,,,iree_vulkan"
- ",,round,,,iree_vulkan"
- ",,rsqrt,,,iree_vulkan"
- ",,scalar_mul,,,iree_vulkan"
- ",,segment_max,,,iree_vulkan"
- ",,segment_mean,,,iree_vulkan"
- ",,segment_min,,,iree_vulkan"
- ",,segment_prod,,,iree_vulkan"
- ",,segment_sum,,,iree_vulkan"
- ",,sigmoid,,,iree_vulkan"
- ",,sign,,,iree_vulkan"
- ",,sin,,,iree_vulkan"
- ",,sinh,,,iree_vulkan"
- ",,sobol_sample,,,iree_vulkan"
- ",,softmax,,,iree_vulkan"
- ",,softplus,,,iree_vulkan"
- ",,softsign,,,iree_vulkan"
- ",,sqrt,,,iree_vulkan"
- ",,square,,,iree_vulkan"
- ",,squared_difference,,,iree_vulkan"
- ",,subtract,,,iree_vulkan"
- ",,tan,,,iree_vulkan"
- ",,tanh,,,iree_vulkan"
- ",,top_k,,,iree_vulkan"
- ",,truediv,,,iree_vulkan"
- ",,unsorted_segment_max,,,iree_vulkan"
- ",,unsorted_segment_mean,,,iree_vulkan"
- ",,unsorted_segment_min,,,iree_vulkan"
- ",,unsorted_segment_prod,,,iree_vulkan"
- ",,unsorted_segment_sqrt_n,,,iree_vulkan"
- ",,unsorted_segment_sum,,,iree_vulkan"
- ",,xdivy,,,iree_vulkan"
- ",,xlog1py,,,iree_vulkan"
- ",,xlogy,,,iree_vulkan"
- ",,zero_fraction,,,iree_vulkan"
- ",,zeta,,,iree_vulkan"
-)
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- math_complex_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "functions"
- "dynamic_dims"
- "test_complex"
- "target_backends"
- MATRIX_VALUES
- "math_test.py"
- "tf"
- "abs;add;angle;asinh;atanh;conj;cos;cosh;count_nonzero;cumprod;cumsum;divide;divide_no_nan;exp;expm1;imag;l2_normalize;log;log1p;multiply;multiply_no_nan;negative;pow;real;reciprocal;reciprocal_no_nan;reduce_euclidean_norm;reduce_std;reduce_variance;rsqrt;sigmoid;sign;sin;sinh;sqrt;square;squared_difference;subtract;tan;tanh;truediv;xdivy;xlog1py;xlogy;zero_fraction"
- "False"
- "True"
- "iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,angle,,,iree_llvmaot"
- ",,asinh,,,iree_llvmaot"
- ",,atanh,,,iree_llvmaot"
- ",,cos,,,iree_llvmaot"
- ",,cosh,,,iree_llvmaot"
- ",,count_nonzero,,,iree_llvmaot"
- ",,cumprod,,,iree_llvmaot"
- ",,cumsum,,,iree_llvmaot"
- ",,divide,,,iree_llvmaot"
- ",,divide_no_nan,,,iree_llvmaot"
- ",,expm1,,,iree_llvmaot"
- ",,log,,,iree_llvmaot"
- ",,log1p,,,iree_llvmaot"
- ",,multiply_no_nan,,,iree_llvmaot"
- ",,negative,,,iree_llvmaot"
- ",,pow,,,iree_llvmaot"
- ",,reciprocal,,,iree_llvmaot"
- ",,reciprocal_no_nan,,,iree_llvmaot"
- ",,reduce_euclidean_norm,,,iree_llvmaot"
- ",,reduce_std,,,iree_llvmaot"
- ",,reduce_variance,,,iree_llvmaot"
- ",,rsqrt,,,iree_llvmaot"
- ",,sigmoid,,,iree_llvmaot"
- ",,sign,,,iree_llvmaot"
- ",,sin,,,iree_llvmaot"
- ",,sinh,,,iree_llvmaot"
- ",,sqrt,,,iree_llvmaot"
- ",,tan,,,iree_llvmaot"
- ",,tanh,,,iree_llvmaot"
- ",,xdivy,,,iree_llvmaot"
- ",,xlog1py,,,iree_llvmaot"
- ",,xlogy,,,iree_llvmaot"
- ",,zero_fraction,,,iree_llvmaot"
- ",,angle,,,iree_vulkan"
- ",,asinh,,,iree_vulkan"
- ",,atanh,,,iree_vulkan"
- ",,cos,,,iree_vulkan"
- ",,cosh,,,iree_vulkan"
- ",,count_nonzero,,,iree_vulkan"
- ",,cumprod,,,iree_vulkan"
- ",,cumsum,,,iree_vulkan"
- ",,divide,,,iree_vulkan"
- ",,divide_no_nan,,,iree_vulkan"
- ",,expm1,,,iree_vulkan"
- ",,log,,,iree_vulkan"
- ",,log1p,,,iree_vulkan"
- ",,multiply_no_nan,,,iree_vulkan"
- ",,negative,,,iree_vulkan"
- ",,pow,,,iree_vulkan"
- ",,reciprocal,,,iree_vulkan"
- ",,reciprocal_no_nan,,,iree_vulkan"
- ",,reduce_euclidean_norm,,,iree_vulkan"
- ",,reduce_std,,,iree_vulkan"
- ",,reduce_variance,,,iree_vulkan"
- ",,rsqrt,,,iree_vulkan"
- ",,sigmoid,,,iree_vulkan"
- ",,sign,,,iree_vulkan"
- ",,sin,,,iree_vulkan"
- ",,sinh,,,iree_vulkan"
- ",,sqrt,,,iree_vulkan"
- ",,tan,,,iree_vulkan"
- ",,tanh,,,iree_vulkan"
- ",,xdivy,,,iree_vulkan"
- ",,xlog1py,,,iree_vulkan"
- ",,xlogy,,,iree_vulkan"
- ",,zero_fraction,,,iree_vulkan"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/math/math_test.py b/integrations/tensorflow/e2e/math/math_test.py
deleted file mode 100644
index 8da6aff..0000000
--- a/integrations/tensorflow/e2e/math/math_test.py
+++ /dev/null
@@ -1,751 +0,0 @@
-# Copyright 2020 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
-
-import collections
-import os
-from typing import Any, Dict, Sequence, Type, Union
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-from iree.tf.support import tf_utils
-import numpy as np
-import tensorflow.compat.v2 as tf
-
-FLAGS = flags.FLAGS
-
-# As high as tf goes without breaking.
-RANK_7_SHAPE = [2] * 7
-UNARY_SIGNATURE_SHAPES = [[RANK_7_SHAPE]]
-BINARY_SIGNATURE_SHAPES = [[RANK_7_SHAPE] * 2]
-TERNARY_SIGNATURE_SHAPES = [[RANK_7_SHAPE] * 3]
-
-# Reused UnitTestSpecs.
-SEGMENT_UNIT_TEST_SPECS = tf_test_utils.unit_test_specs_from_args(
- names_to_input_args={
- "tf_doc_example": [
- tf.constant([
- [1, 2, 3, 4],
- [4, 3, 2, 1],
- [5, 6, 7, 8],
- ], np.float32),
- np.array([0, 0, 1], np.int32),
- ]
- })
-UNSORTED_SEGMENT_UNIT_TEST_SPECS = tf_test_utils.unit_test_specs_from_args(
- names_to_input_args={
- "tf_doc_example": [
- tf.constant([
- [1, 2, 3, 4],
- [4, 3, 2, 1],
- [5, 6, 7, 8],
- ], np.float32),
- np.array([0, 0, 1], np.int32),
- 2,
- ]
- })
-
-REDUCE_KWARGS_TO_VALUES = {
- "axis": [None, 1],
- "keepdims": [False, True],
-}
-
-# A dictionary mapping tf.math function names to lists of UnitTestSpecs.
-# Each unit_test_name will have the tf.math function name prepended to it.
-FUNCTIONS_TO_UNIT_TEST_SPECS = {
- "abs":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "accumulate_n": [
- tf_test_utils.UnitTestSpec(
- unit_test_name='f32',
- input_signature=[[tf.TensorSpec(RANK_7_SHAPE, tf.float32)] * 5]),
- tf_test_utils.UnitTestSpec(
- unit_test_name='i32',
- input_signature=[[tf.TensorSpec(RANK_7_SHAPE, tf.int32)] * 5]),
- ],
- "acos":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "acosh":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32],
- input_generators=[tf_utils.ndarange]),
- "add":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "add_n": [
- tf_test_utils.UnitTestSpec(
- unit_test_name='f32',
- input_signature=[[tf.TensorSpec(RANK_7_SHAPE, tf.float32)] * 5]),
- tf_test_utils.UnitTestSpec(
- unit_test_name='i32',
- input_signature=[[tf.TensorSpec(RANK_7_SHAPE, tf.int32)] * 5]),
- ],
- "angle":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "argmax":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "argmin":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "asin":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "asinh":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "atan":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "atan2":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "atanh":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "bessel_i0":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "bessel_i0e":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "bessel_i1":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "bessel_i1e":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "betainc":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=TERNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "bincount":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.int32],
- input_generators=[tf_utils.ndarange]),
- "ceil":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "confusion_matrix":
- tf_test_utils.unit_test_specs_from_args(names_to_input_args={
- "five_classes": [tf.constant([1, 2, 4]),
- tf.constant([2, 2, 4])]
- }),
- "conj":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "cos":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "cosh":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "count_nonzero":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64],
- input_generators=[tf_utils.ndarange]),
- "cumprod":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "cumsum":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "cumulative_logsumexp":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "digamma":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "divide":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "divide_no_nan":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "equal":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "erf":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "erfc":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "erfinv":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "exp":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "expm1":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "floor":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "floordiv":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- # Avoid integer division by 0.
- input_generators={
- "uniform_1_3":
- lambda *args: tf_utils.uniform(*args, low=1.0, high=3.0)
- }),
- "floormod":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- # Avoid integer division by 0.
- input_generators={
- "uniform_1_3":
- lambda *args: tf_utils.uniform(*args, low=1.0, high=3.0)
- }),
- "greater":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "greater_equal":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "igamma":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "igammac":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "imag":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "in_top_k": [
- tf_test_utils.UnitTestSpec(
- unit_test_name="k_3",
- input_signature=[
- tf.TensorSpec([8], tf.int32),
- tf.TensorSpec([8, 3])
- ],
- input_generator=tf_utils.ndarange,
- kwargs=dict(k=3),
- )
- ],
- "invert_permutation": [
- tf_test_utils.UnitTestSpec(
- unit_test_name="random",
- input_signature=[tf.TensorSpec([8], tf.int32)],
- input_generator=tf_utils.random_permutation,
- )
- ],
- "is_finite":
- tf_test_utils.unit_test_specs_from_args(names_to_input_args={
- "nan_and_inf": [tf.constant([[1., np.nan], [np.inf, 2.]])]
- }),
- "is_inf":
- tf_test_utils.unit_test_specs_from_args(names_to_input_args={
- "nan_and_inf": [tf.constant([[1., np.nan], [np.inf, 2.]])]
- }),
- "is_nan":
- tf_test_utils.unit_test_specs_from_args(names_to_input_args={
- "nan_and_inf": [tf.constant([[1., np.nan], [np.inf, 2.]])]
- }),
- "is_non_decreasing":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "is_strictly_increasing":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "l2_normalize":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "lbeta":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "less":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "less_equal":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "lgamma":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "log":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "log1p":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "log_sigmoid":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "log_softmax":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "logical_and":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.bool]),
- "logical_not":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.bool]),
- "logical_or":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.bool]),
- "logical_xor":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.bool]),
- "maximum":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "minimum":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "mod":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- input_generators={
- "positive_ndarange": lambda *args: tf_utils.ndarange(*args) + 1
- }),
- "multiply":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "multiply_no_nan":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "ndtri":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "negative":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "nextafter":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES),
- "not_equal":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32]),
- "polygamma":
- tf_test_utils.unit_test_specs_from_args(names_to_input_args={
- "nan_and_inf": [tf.ones(16), tf.linspace(0.5, 4, 16)]
- }),
- "polyval": [
- tf_test_utils.UnitTestSpec(
- unit_test_name="three_coeffs",
- input_signature=[[tf.TensorSpec(RANK_7_SHAPE)] * 3,
- tf.TensorSpec([])],
- )
- ],
- "pow":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=[[[1, 2, 2, 2], [1, 2, 2, 2]]],
- signature_dtypes=[tf.float32, tf.int32, tf.complex64],
- input_generators={
- "positive_ndarange": lambda *args: tf_utils.ndarange(*args) + 1
- }),
- "real":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "reciprocal":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "reciprocal_no_nan":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "reduce_all": [
- # Explicitly test all True inputs to be absolutely sure that some
- # reduction axes return True.
- *tf_test_utils.unit_test_specs_from_args(
- names_to_input_args={
- "all_true": [np.ones(RANK_7_SHAPE, np.bool)],
- },
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- *tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.bool],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- ],
- "reduce_any": [
- # Explicitly test all False inputs to be absolutely sure that some
- # reduction axes return False.
- *tf_test_utils.unit_test_specs_from_args(
- names_to_input_args={
- "all_false": [np.zeros(RANK_7_SHAPE, np.bool)],
- },
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- *tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.bool],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- ],
- "reduce_euclidean_norm":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_logsumexp":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_max":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_mean":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_min":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_prod":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_std":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_sum":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "reduce_variance":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64],
- kwargs_to_values=REDUCE_KWARGS_TO_VALUES),
- "rint":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "round":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "rsqrt":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "scalar_mul":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=[[[], [8]]]),
- "segment_max":
- SEGMENT_UNIT_TEST_SPECS,
- "segment_mean":
- SEGMENT_UNIT_TEST_SPECS,
- "segment_min":
- SEGMENT_UNIT_TEST_SPECS,
- "segment_prod":
- SEGMENT_UNIT_TEST_SPECS,
- "segment_sum":
- SEGMENT_UNIT_TEST_SPECS,
- "sigmoid":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "sign":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "sin":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "sinh":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "sobol_sample":
- tf_test_utils.unit_test_specs_from_args(
- names_to_input_args={"simple": [4, 3]}),
- "softmax":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "softplus":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "softsign":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32]),
- "sqrt":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "square":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "squared_difference":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "subtract":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "tan":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "tanh":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "top_k":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=[[[2, 2]]],
- signature_dtypes=[tf.float32],
- kwargs_to_values={"k": [1, 2]}),
- "truediv":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "unsorted_segment_max":
- UNSORTED_SEGMENT_UNIT_TEST_SPECS,
- "unsorted_segment_mean":
- UNSORTED_SEGMENT_UNIT_TEST_SPECS,
- "unsorted_segment_min":
- UNSORTED_SEGMENT_UNIT_TEST_SPECS,
- "unsorted_segment_prod":
- UNSORTED_SEGMENT_UNIT_TEST_SPECS,
- "unsorted_segment_sqrt_n":
- UNSORTED_SEGMENT_UNIT_TEST_SPECS,
- "unsorted_segment_sum":
- UNSORTED_SEGMENT_UNIT_TEST_SPECS,
- "xdivy":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "xlog1py":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "xlogy":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.complex64]),
- "zero_fraction":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=UNARY_SIGNATURE_SHAPES,
- signature_dtypes=[tf.float32, tf.int32, tf.complex64]),
- "zeta":
- tf_test_utils.unit_test_specs_from_signatures(
- signature_shapes=BINARY_SIGNATURE_SHAPES,
- # The function is poorly behaved near zero, so we test this range
- # to avoid outputing all nans.
- input_generators={
- "uniform_3_4":
- lambda *args: tf_utils.uniform(*args, low=3.0, high=4.0)
- },
- )
-}
-
-for function, specs in FUNCTIONS_TO_UNIT_TEST_SPECS.items():
- # Update using 'with_name' to avoid updating shared UnitTestSpecs.
- specs = [
- spec.with_name(f"{function}__{spec.unit_test_name}") for spec in specs
- ]
- FUNCTIONS_TO_UNIT_TEST_SPECS[function] = specs
-
- # Validate that there are not multiple UnitTestSpecs with the same name.
- seen_unit_test_names = set()
- for spec in specs:
- if spec.unit_test_name in seen_unit_test_names:
- raise ValueError(
- f"Found multiple UnitTestSpecs with the name '{spec.unit_test_name}'")
- seen_unit_test_names.add(spec.unit_test_name)
-
-flags.DEFINE_list(
- "functions", None,
- f"Any of {list(FUNCTIONS_TO_UNIT_TEST_SPECS.keys())}. If more than one "
- "function is provided then len(--target_backends) must be one.")
-flags.DEFINE_bool(
- "dynamic_dims", False,
- "Whether or not to compile the layer with dynamic dimensions.")
-flags.DEFINE_bool(
- "test_complex", False,
- "Whether or not to test or ignore function signatures with complex types.")
-flags.DEFINE_bool(
- 'list_functions_with_complex_tests', False,
- 'Whether or not to print out all functions with complex inputs '
- '(and skip running the tests).')
-
-
-def _wrap_top_k(top_k):
- # top_k returns a tensorflow.python.ops.gen_nn_ops.TopKV2. Wrap it in a tuple
- # so we don't have to. (The lambda is wrapped to avoid a recursive capture).
- return lambda *args, **kwargs: tuple(top_k(*args, **kwargs))
-
-
-def create_function_unit_test(
- function_name: str,
- unit_test_spec: tf_test_utils.UnitTestSpec) -> tf.function:
- """Creates a tf_function_unit_test from the provided UnitTestSpec."""
- function = getattr(tf.math, function_name)
- signature = unit_test_spec.input_signature
-
- if tf_utils.is_complex(signature):
- function, signature = tf_utils.rewrite_complex_signature(
- function, signature)
- if function_name == "top_k":
- function = _wrap_top_k(function)
- wrapped_function = lambda *args: function(*args, **unit_test_spec.kwargs)
-
- if FLAGS.dynamic_dims:
- signature = tf_utils.apply_function(signature, tf_utils.make_dims_dynamic)
-
- return tf_test_utils.tf_function_unit_test(
- input_signature=signature,
- input_generator=unit_test_spec.input_generator,
- input_args=unit_test_spec.input_args,
- name=unit_test_spec.unit_test_name,
- rtol=1e-5,
- atol=1e-5)(wrapped_function)
-
-
-class TfMathModule(tf_test_utils.TestModule):
-
- def __init__(self):
- super().__init__()
- for function in FLAGS.functions:
- for unit_test_spec in FUNCTIONS_TO_UNIT_TEST_SPECS[function]:
- if not FLAGS.test_complex and tf_utils.is_complex(
- unit_test_spec.input_signature):
- continue
- function_unit_test = create_function_unit_test(function, unit_test_spec)
- setattr(self, unit_test_spec.unit_test_name, function_unit_test)
-
-
-def get_relative_artifacts_dir() -> str:
- if len(FLAGS.functions) > 1:
- # We only allow testing multiple functions with a single target backend
- # so that we can store the artifacts under:
- # 'artifacts_dir/multiple_functions__backend/...'
- # We specialize the 'multiple_functions' dir by backend to avoid overwriting
- # tf_input.mlir and iree_input.mlir. These are typically identical across
- # backends, but are not when the functions to compile change per-backend.
- if len(FLAGS.target_backends) != 1:
- raise flags.IllegalFlagValueError(
- "Expected len(target_backends) == 1 when len(functions) > 1, but got "
- f"the following values for target_backends: {FLAGS.target_backends}.")
- function_str = f"multiple_functions__{FLAGS.target_backends[0]}"
- else:
- function_str = FLAGS.functions[0]
- dim_str = "dynamic_dims" if FLAGS.dynamic_dims else "static_dims"
- complex_str = "complex" if FLAGS.test_complex else "non_complex"
- return os.path.join("tf", "math", function_str, f"{dim_str}_{complex_str}")
-
-
-class TfMathTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(
- TfMathModule,
- exported_names=TfMathModule.get_tf_function_unit_tests(),
- relative_artifacts_dir=get_relative_artifacts_dir())
-
-
-def main(argv):
- del argv # Unused.
- if hasattr(tf, "enable_v2_behavior"):
- tf.enable_v2_behavior()
-
- if FLAGS.list_functions_with_complex_tests:
- for function_name, unit_test_specs in FUNCTIONS_TO_UNIT_TEST_SPECS.items():
- for spec in unit_test_specs:
- if tf_utils.is_complex(spec.input_signature):
- print(f' "{function_name}",')
- return
-
- if FLAGS.functions is None:
- raise flags.IllegalFlagValueError(
- "'--functions' must be specified if "
- "'--list_functions_with_complex_tests' isn't")
-
- TfMathTest.generate_unit_tests(TfMathModule)
- tf.test.main()
-
-
-if __name__ == "__main__":
- app.run(main)
diff --git a/integrations/tensorflow/e2e/mobile_bert_squad_test.py b/integrations/tensorflow/e2e/mobile_bert_squad_test.py
deleted file mode 100644
index 99abbbb..0000000
--- a/integrations/tensorflow/e2e/mobile_bert_squad_test.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Lint as: python3
-# Copyright 2020 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
-"""Test MobileBERT.
-
-Model topology and weights are from
-https://github.com/google-research/google-research/tree/master/mobilebert
-"""
-
-import os
-import posixpath
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-import numpy as np
-import tensorflow.compat.v2 as tf
-
-FLAGS = flags.FLAGS
-
-flags.DEFINE_boolean('use_quantized_weights', False,
- 'Whether to use quantized or floating point weights.')
-
-MAX_SEQ_LENGTH = 384 # Max input sequence length used in mobilebert_squad.
-
-FILE_NAME = 'mobilebert_squad_savedmodels'
-MODEL_URL = posixpath.join(
- f'https://storage.googleapis.com/cloud-tpu-checkpoints/mobilebert/{FILE_NAME}.tar.gz'
-)
-
-
-class MobileBertSquadTest(tf_test_utils.TracedModuleTestCase):
- """Tests of MobileBertSquad."""
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- model_type = 'quant_saved_model' if FLAGS.use_quantized_weights else 'float'
-
- # Get_file will download the model weights from a publicly available folder,
- # save them to cache_dir=~/.keras/datasets/ and return a path to them.
- model_path = tf.keras.utils.get_file(FILE_NAME, MODEL_URL, untar=True)
- model_dir = os.path.dirname(model_path)
- extracted_name = FILE_NAME.split('.')[0]
- model_path = os.path.join(model_dir, extracted_name, model_type)
-
- self._modules = tf_test_utils.compile_tf_signature_def_saved_model(
- saved_model_dir=model_path,
- saved_model_tags=set(['serve']),
- module_name='MobileBertSquad',
- exported_name='serving_default',
- input_names=['input_ids', 'input_mask', 'segment_ids'],
- output_names=['start_logits', 'end_logits'])
-
- def test_serving_default(self):
-
- def serving_default(module):
- input_ids = np.zeros((1, MAX_SEQ_LENGTH), dtype=np.int32)
- input_mask = np.zeros((1, MAX_SEQ_LENGTH), dtype=np.int32)
- segment_ids = np.zeros((1, MAX_SEQ_LENGTH), dtype=np.int32)
-
- module.serving_default(input_ids=input_ids,
- input_mask=input_mask,
- segment_ids=segment_ids,
- atol=1e0)
-
- self.compare_backends(serving_default, self._modules)
-
-
-def main(argv):
- del argv # Unused
- if hasattr(tf, 'enable_v2_behavior'):
- tf.enable_v2_behavior()
- tf.test.main()
-
-
-if __name__ == '__main__':
- app.run(main)
diff --git a/integrations/tensorflow/e2e/slim_vision_models/BUILD b/integrations/tensorflow/e2e/slim_vision_models/BUILD
deleted file mode 100644
index 5a7c603..0000000
--- a/integrations/tensorflow/e2e/slim_vision_models/BUILD
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright 2019 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
-
-# ***THIS FILE DOES NOT BUILD WITH BAZEL***
-#
-# It is open sourced to enable Bazel->CMake conversion to maintain test coverage
-# of our integration tests in open source while we figure out a long term plan
-# for our integration testing.
-
-load(
- "@iree//integrations/tensorflow/e2e:iree_e2e_cartesian_product_test_suite.bzl",
- "iree_e2e_cartesian_product_test_suite",
-)
-
-package(
- default_visibility = ["//visibility:public"],
- features = ["layering_check"],
- licenses = ["notice"], # Apache 2.0
-)
-
-# Create binaries for all test srcs to allow them to be run manually.
-py_binary(
- name = "slim_vision_model_test_manual",
- srcs = ["slim_vision_model_test.py"],
- args = ["--tf_hub_url=https://tfhub.dev/google/imagenet/"],
- main = "slim_vision_model_test.py",
- python_version = "PY3",
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//third_party/py/tensorflow_hub",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
-
-iree_e2e_cartesian_product_test_suite(
- name = "slim_vision_tests",
- size = "enormous",
- failing_configurations = [
- {
- # SavedModelV2 (classification/4) not available.
- "model": "amoebanet_a_n18_f448",
- },
- {
- # Failing vulkan and llvmaot.
- "model": [
- "inception_resnet_v2",
- "inception_v2",
- "inception_v3",
- "nasnet_mobile",
- "nasnet_large",
- "resnet_v2_152",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- ],
- matrix = {
- "src": "slim_vision_model_test.py",
- "reference_backend": "tf",
- "tf_hub_url": ["https://tfhub.dev/google/imagenet/"],
- "model": [
- "amoebanet_a_n18_f448",
- "inception_resnet_v2",
- "inception_v1",
- "inception_v2",
- "inception_v3",
- # MobileNetV1
- "mobilenet_v1_025_128",
- "mobilenet_v1_025_160",
- "mobilenet_v1_025_192",
- "mobilenet_v1_025_224",
- "mobilenet_v1_050_128",
- "mobilenet_v1_050_160",
- "mobilenet_v1_050_192",
- "mobilenet_v1_050_224",
- "mobilenet_v1_075_128",
- "mobilenet_v1_075_160",
- "mobilenet_v1_075_192",
- "mobilenet_v1_075_224",
- "mobilenet_v1_100_128",
- "mobilenet_v1_100_160",
- "mobilenet_v1_100_192",
- "mobilenet_v1_100_224",
- # MobileNetV2:
- "mobilenet_v2_035_96",
- "mobilenet_v2_035_128",
- "mobilenet_v2_035_160",
- "mobilenet_v2_035_192",
- "mobilenet_v2_035_224",
- "mobilenet_v2_050_96",
- "mobilenet_v2_050_128",
- "mobilenet_v2_050_160",
- "mobilenet_v2_050_192",
- "mobilenet_v2_050_224",
- "mobilenet_v2_075_96",
- "mobilenet_v2_075_128",
- "mobilenet_v2_075_160",
- "mobilenet_v2_075_192",
- "mobilenet_v2_075_224",
- "mobilenet_v2_100_96",
- "mobilenet_v2_100_128",
- "mobilenet_v2_100_160",
- "mobilenet_v2_100_192",
- "mobilenet_v2_100_224",
- "mobilenet_v2_130_224",
- "mobilenet_v2_140_224",
- # MobileNetV3
- "mobilenet_v3_large_100_224",
- "nasnet_mobile",
- "nasnet_large",
- "pnasnet_large",
- # ResNetV1
- "resnet_v1_50",
- "resnet_v1_101",
- "resnet_v1_152",
- # ResNetV2
- "resnet_v2_50",
- "resnet_v2_101",
- "resnet_v2_152",
- ],
- "target_backends": [
- "iree_llvmaot",
- "iree_vulkan",
- ],
- },
- tags = [
- "external",
- "guitar",
- "manual",
- "no-remote",
- "nokokoro",
- "notap",
- ],
- deps = [
- "//third_party/py/absl:app",
- "//third_party/py/absl/flags",
- "//third_party/py/iree:pylib_tf_support",
- "//third_party/py/numpy",
- "//third_party/py/tensorflow",
- "//third_party/py/tensorflow_hub",
- "//util/debuginfo:signalsafe_addr2line_installer",
- ],
-)
diff --git a/integrations/tensorflow/e2e/slim_vision_models/CMakeLists.txt b/integrations/tensorflow/e2e/slim_vision_models/CMakeLists.txt
deleted file mode 100644
index cacdb27..0000000
--- a/integrations/tensorflow/e2e/slim_vision_models/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-################################################################################
-# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from #
-# integrations/tensorflow/e2e/slim_vision_models/BUILD #
-# #
-# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary #
-# CMake-only content. #
-# #
-# To disable autogeneration for this file entirely, delete this header. #
-################################################################################
-
-iree_add_all_subdirs()
-
-iree_e2e_cartesian_product_test_suite(
- NAME
- slim_vision_tests
- MATRIX_KEYS
- "src"
- "reference_backend"
- "tf_hub_url"
- "model"
- "target_backends"
- MATRIX_VALUES
- "slim_vision_model_test.py"
- "tf"
- "https://tfhub.dev/google/imagenet/"
- "amoebanet_a_n18_f448;inception_resnet_v2;inception_v1;inception_v2;inception_v3;mobilenet_v1_025_128;mobilenet_v1_025_160;mobilenet_v1_025_192;mobilenet_v1_025_224;mobilenet_v1_050_128;mobilenet_v1_050_160;mobilenet_v1_050_192;mobilenet_v1_050_224;mobilenet_v1_075_128;mobilenet_v1_075_160;mobilenet_v1_075_192;mobilenet_v1_075_224;mobilenet_v1_100_128;mobilenet_v1_100_160;mobilenet_v1_100_192;mobilenet_v1_100_224;mobilenet_v2_035_96;mobilenet_v2_035_128;mobilenet_v2_035_160;mobilenet_v2_035_192;mobilenet_v2_035_224;mobilenet_v2_050_96;mobilenet_v2_050_128;mobilenet_v2_050_160;mobilenet_v2_050_192;mobilenet_v2_050_224;mobilenet_v2_075_96;mobilenet_v2_075_128;mobilenet_v2_075_160;mobilenet_v2_075_192;mobilenet_v2_075_224;mobilenet_v2_100_96;mobilenet_v2_100_128;mobilenet_v2_100_160;mobilenet_v2_100_192;mobilenet_v2_100_224;mobilenet_v2_130_224;mobilenet_v2_140_224;mobilenet_v3_large_100_224;nasnet_mobile;nasnet_large;pnasnet_large;resnet_v1_50;resnet_v1_101;resnet_v1_152;resnet_v2_50;resnet_v2_101;resnet_v2_152"
- "iree_llvmaot;iree_vulkan"
- FAILING_CONFIGURATIONS
- ",,,amoebanet_a_n18_f448,"
- ",,,inception_resnet_v2,iree_llvmaot"
- ",,,inception_resnet_v2,iree_vulkan"
- ",,,inception_v2,iree_llvmaot"
- ",,,inception_v2,iree_vulkan"
- ",,,inception_v3,iree_llvmaot"
- ",,,inception_v3,iree_vulkan"
- ",,,nasnet_mobile,iree_llvmaot"
- ",,,nasnet_mobile,iree_vulkan"
- ",,,nasnet_large,iree_llvmaot"
- ",,,nasnet_large,iree_vulkan"
- ",,,resnet_v2_152,iree_llvmaot"
- ",,,resnet_v2_152,iree_vulkan"
- LABELS
- "external"
- "guitar"
- "manual"
- "no-remote"
- "nokokoro"
- "notap"
-)
-
-### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/integrations/tensorflow/e2e/slim_vision_models/README.md b/integrations/tensorflow/e2e/slim_vision_models/README.md
deleted file mode 100644
index 8a09a14..0000000
--- a/integrations/tensorflow/e2e/slim_vision_models/README.md
+++ /dev/null
@@ -1,10 +0,0 @@
-# Slim Vision Model Tests
-
-These tests require an additional python dependency on `tensorflow_hub`, which
-can be installed as follows:
-
-```shell
-python3 -m pip install tensorflow_hub
-```
-
-These tests are not checked by the OSS CI.
diff --git a/integrations/tensorflow/e2e/slim_vision_models/slim_vision_model_test.py b/integrations/tensorflow/e2e/slim_vision_models/slim_vision_model_test.py
deleted file mode 100644
index 1304f09..0000000
--- a/integrations/tensorflow/e2e/slim_vision_models/slim_vision_model_test.py
+++ /dev/null
@@ -1,104 +0,0 @@
-# Lint as: python3
-# Copyright 2020 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
-"""Test all vision models from slim lib."""
-
-import posixpath
-
-from absl import app
-from absl import flags
-from iree.tf.support import tf_test_utils
-from iree.tf.support import tf_utils
-import numpy as np
-import tensorflow as tf
-import tensorflow_hub as hub
-
-FLAGS = flags.FLAGS
-
-# Testing vision models from
-# https://github.com/tensorflow/models/tree/master/research/slim
-# slim models were designed with tf v1 and then coverted to SavedModel
-# they are stored at tensorflow_hub.
-flags.DEFINE_string(
- 'model', 'mobilenet_v1_100_224', 'example model names: '
- '[resnet_v1_50, resnet_v1_101, resnet_v2_50, resnet_v2_101, '
- 'mobilenet_v1_100_224, mobilenet_v1_025_224, mobilenet_v2_100_224, '
- 'mobilenet_v2_035_224]\nAt least a subset can be viewed here:\n'
- 'https://tfhub.dev/s?dataset=imagenet&module-type=image-classification,image-classifier'
-)
-flags.DEFINE_string(
- 'tf_hub_url', None, 'Base URL for the models to test. URL at the time of '
- 'writing:\nhttps://tfhub.dev/google/imagenet/')
-
-LARGE_MODELS = ['amoebanet_a_n18_f448', "nasnet_large", "pnasnet_large"]
-
-
-def get_input_shape():
- if FLAGS.model in LARGE_MODELS:
- return (1, 331, 331, 3)
- elif FLAGS.model.startswith('mobilenet_v2'):
- # The MobileNetV2 models have variable size that seems to be only inferrible
- # from their TFHub name.
- size = int(FLAGS.model.split('_')[-1])
- return (1, size, size, 3)
- elif FLAGS.model.startswith('mobilenet_v3_large'):
- size = int(FLAGS.model.split('_')[-1])
- return (1, size, size, 3)
- else:
- # Default input shape.
- return (1, 224, 224, 3)
-
-
-def get_mode(model_name):
- if model_name.startswith('mobilenet_v3'):
- return 'classification/5'
- # Classification mode; 4 - is a format of the model (SavedModel TF v2).
- return 'classification/4'
-
-
-class SlimVisionModule(tf.Module):
-
- def __init__(self):
- super().__init__()
- tf_utils.set_random_seed()
- model_path = posixpath.join(FLAGS.tf_hub_url, FLAGS.model,
- get_mode(FLAGS.model))
- hub_layer = hub.KerasLayer(model_path)
- self.m = tf.keras.Sequential([hub_layer])
- input_shape = get_input_shape()
- self.m.build(input_shape)
- self.predict = tf.function(input_signature=[tf.TensorSpec(input_shape)])(
- self.m.call)
-
-
-class SlimVisionTest(tf_test_utils.TracedModuleTestCase):
-
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self._modules = tf_test_utils.compile_tf_module(
- SlimVisionModule,
- exported_names=['predict'],
- relative_artifacts_dir=FLAGS.model)
-
- def test_predict(self):
-
- def predict(module):
- input_data = np.random.rand(*get_input_shape()).astype(np.float32)
- # Only TF vs. TF passes at the default atol.
- module.predict(input_data, atol=5e-5)
-
- self.compare_backends(predict, self._modules)
-
-
-def main(argv):
- del argv # Unused.
- if hasattr(tf, 'enable_v2_behavior'):
- tf.enable_v2_behavior()
- tf.test.main()
-
-
-if __name__ == '__main__':
- app.run(main)
diff --git a/integrations/tensorflow/iree_tf_compiler/CMakeLists.txt b/integrations/tensorflow/iree_tf_compiler/CMakeLists.txt
deleted file mode 100644
index 0e3e42b..0000000
--- a/integrations/tensorflow/iree_tf_compiler/CMakeLists.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2020 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
-
-set(IREE_TF_TOOLS_ROOT
- "${CMAKE_SOURCE_DIR}/integrations/tensorflow/bazel-bin/iree_tf_compiler"
- CACHE STRING "Root directory for IREE TensorFlow integration binaries")
-
-iree_package_name(_PACKAGE_NAME)
-iree_package_ns(_PACKAGE_NS)
-
-function(configure_tf_binary BINARY_NAME)
- set(_NAME "${_PACKAGE_NAME}_${BINARY_NAME}")
- add_executable("${_NAME}" IMPORTED GLOBAL)
- set_property(TARGET ${_NAME}
- PROPERTY IMPORTED_LOCATION
- "${IREE_TF_TOOLS_ROOT}/${BINARY_NAME}"
- )
- add_executable(${_PACKAGE_NS}::${BINARY_NAME} ALIAS ${_NAME})
- add_executable(${BINARY_NAME} ALIAS ${_NAME})
-endfunction()
-
-if(${IREE_BUILD_TENSORFLOW_COMPILER})
- configure_tf_binary("iree-import-tf")
-endif()
-
-if(${IREE_BUILD_TFLITE_COMPILER})
- configure_tf_binary("iree-import-tflite")
-endif()
-
-if(${IREE_BUILD_XLA_COMPILER})
- configure_tf_binary("iree-import-xla")
-endif()
-
-if(${IREE_BUILD_TESTS})
- configure_tf_binary("iree-tf-opt")
- configure_tf_binary("iree-opt-tflite")
-endif()
diff --git a/integrations/tensorflow/python_projects/.style.yapf b/integrations/tensorflow/python_projects/.style.yapf
new file mode 100644
index 0000000..9ef1dc1
--- /dev/null
+++ b/integrations/tensorflow/python_projects/.style.yapf
@@ -0,0 +1,4 @@
+[style]
+ based_on_style = google
+ column_limit = 80
+ indent_width = 2
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/__init__.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/__init__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/__init__.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/__init__.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/module_utils.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/module_utils.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/module_utils.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/module_utils.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/module_utils_test.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/module_utils_test.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/module_utils_test.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/module_utils_test.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/tf_test_utils.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_test_utils.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/tf_test_utils.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_test_utils.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/tf_test_utils_test.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_test_utils_test.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/tf_test_utils_test.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_test_utils_test.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/tf_utils.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_utils.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/tf_utils.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_utils.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/tf_utils_test.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_utils_test.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/tf_utils_test.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/tf_utils_test.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/trace_utils.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/trace_utils.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/trace_utils.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/trace_utils.py
diff --git a/integrations/tensorflow/bindings/python/iree/tf/support/trace_utils_test.py b/integrations/tensorflow/python_projects/iree_tf/iree/tf/support/trace_utils_test.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tf/support/trace_utils_test.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tf/support/trace_utils_test.py
diff --git a/integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/.gitignore b/integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/.gitignore
new file mode 100644
index 0000000..c39b810
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/.gitignore
@@ -0,0 +1 @@
+iree-import-tf
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tf/__init__.py b/integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/__init__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tools/tf/__init__.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/__init__.py
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tf/scripts/iree_import_tf/__main__.py b/integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/scripts/iree_import_tf/__main__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tools/tf/scripts/iree_import_tf/__main__.py
rename to integrations/tensorflow/python_projects/iree_tf/iree/tools/tf/scripts/iree_import_tf/__main__.py
diff --git a/integrations/tensorflow/python_projects/iree_tf/pyproject.toml b/integrations/tensorflow/python_projects/iree_tf/pyproject.toml
new file mode 100644
index 0000000..f6c1689
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_tf/pyproject.toml
@@ -0,0 +1,6 @@
+[build-system]
+requires = [
+ "setuptools>=42",
+ "wheel",
+]
+build-backend = "setuptools.build_meta"
diff --git a/integrations/tensorflow/python_projects/iree_tf/setup.py b/integrations/tensorflow/python_projects/iree_tf/setup.py
new file mode 100644
index 0000000..7a1f817
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_tf/setup.py
@@ -0,0 +1,97 @@
+#!/usr/bin/python3
+
+# Copyright 2020 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
+
+# Build platform specific wheel files for the iree.runtime package.
+# Built artifacts are per-platform and build out of the build tree.
+
+from distutils.command.install import install
+import os
+import platform
+from setuptools import setup, find_namespace_packages
+
+README = r'''
+TensorFlow TF Compiler Tools
+'''
+
+exe_suffix = ".exe" if platform.system() == "Windows" else ""
+import_tf_path = os.path.join(os.path.dirname(__file__), "iree", "tools", "tf",
+ f"iree-import-tf{exe_suffix}")
+if not os.access(import_tf_path, os.X_OK):
+ raise RuntimeError(
+ f"Tool not found ({import_tf_path}). Be sure to build "
+ f"//iree_tf_compiler:iree-import-tf and run ./symlink_binaries.sh")
+
+# Force platform specific wheel.
+# https://stackoverflow.com/questions/45150304
+try:
+ from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
+
+ class bdist_wheel(_bdist_wheel):
+
+ def finalize_options(self):
+ _bdist_wheel.finalize_options(self)
+ self.root_is_pure = False
+
+ def get_tag(self):
+ python, abi, plat = _bdist_wheel.get_tag(self)
+ # We don't contain any python extensions so are version agnostic
+ # but still want to be platform specific.
+ python, abi = 'py3', 'none'
+ return python, abi, plat
+
+except ImportError:
+ bdist_wheel = None
+
+
+# Force installation into platlib.
+# Since this is a pure-python library with platform binaries, it is
+# mis-detected as "pure", which fails audit. Usually, the presence of an
+# extension triggers non-pure install. We force it here.
+class platlib_install(install):
+
+ def finalize_options(self):
+ install.finalize_options(self)
+ self.install_lib = self.install_platlib
+
+
+setup(
+ name="iree-tools-tf",
+ version="0.1",
+ author="The IREE Team",
+ author_email="iree-discuss@googlegroups.com",
+ license="Apache",
+ description="IREE TensorFlow Compiler Tools",
+ long_description=README,
+ long_description_content_type="text/markdown",
+ url="https://github.com/google/iree",
+ classifiers=[
+ "Programming Language :: Python :: 3",
+ "License :: OSI Approved :: Apache License",
+ "Operating System :: OS Independent",
+ "Development Status :: 3 - Alpha",
+ ],
+ python_requires=">=3.7",
+ packages=find_namespace_packages(include=[
+ "iree.tools.tf",
+ "iree.tools.tf.*",
+ "iree.tf.support",
+ ]),
+ package_data={
+ "iree.tools.tf": [f"iree-import-tf{exe_suffix}",],
+ },
+ cmdclass={
+ 'bdist_wheel': bdist_wheel,
+ 'install': platlib_install,
+ },
+ entry_points={
+ "console_scripts": [
+ "iree-import-tf = iree.tools.tf.scripts.iree_import_tf.__main__:main",
+ ],
+ },
+ zip_safe=False, # This package is fine but not zipping is more versatile.
+)
diff --git a/integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/.gitignore b/integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/.gitignore
new file mode 100644
index 0000000..a13df23
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/.gitignore
@@ -0,0 +1 @@
+iree-import-tflite
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tflite/__init__.py b/integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/__init__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tools/tflite/__init__.py
rename to integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/__init__.py
diff --git a/integrations/tensorflow/bindings/python/iree/tools/tflite/scripts/iree_import_tflite/__main__.py b/integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/scripts/iree_import_tflite/__main__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tools/tflite/scripts/iree_import_tflite/__main__.py
rename to integrations/tensorflow/python_projects/iree_tflite/iree/tools/tflite/scripts/iree_import_tflite/__main__.py
diff --git a/integrations/tensorflow/python_projects/iree_tflite/pyproject.toml b/integrations/tensorflow/python_projects/iree_tflite/pyproject.toml
new file mode 100644
index 0000000..f6c1689
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_tflite/pyproject.toml
@@ -0,0 +1,6 @@
+[build-system]
+requires = [
+ "setuptools>=42",
+ "wheel",
+]
+build-backend = "setuptools.build_meta"
diff --git a/integrations/tensorflow/python_projects/iree_tflite/setup.py b/integrations/tensorflow/python_projects/iree_tflite/setup.py
new file mode 100644
index 0000000..7e729b9
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_tflite/setup.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python3
+
+# Copyright 2020 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
+
+# Build platform specific wheel files for the iree.runtime package.
+# Built artifacts are per-platform and build out of the build tree.
+
+from distutils.command.install import install
+import os
+import platform
+from setuptools import setup, find_namespace_packages
+
+README = r'''
+TensorFlow TFLite Compiler Tools
+'''
+
+exe_suffix = ".exe" if platform.system() == "Windows" else ""
+import_tflite_path = os.path.join(os.path.dirname(__file__), "iree", "tools",
+ "tflite", f"iree-import-tflite{exe_suffix}")
+if not os.access(import_tflite_path, os.X_OK):
+ raise RuntimeError(
+ f"Tool not found ({import_tflite_path}). Be sure to build "
+ f"//iree_tf_compiler:iree-import-tflite and run ./symlink_binaries.sh")
+
+# Force platform specific wheel.
+# https://stackoverflow.com/questions/45150304
+try:
+ from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
+
+ class bdist_wheel(_bdist_wheel):
+
+ def finalize_options(self):
+ _bdist_wheel.finalize_options(self)
+ self.root_is_pure = False
+
+ def get_tag(self):
+ python, abi, plat = _bdist_wheel.get_tag(self)
+ # We don't contain any python extensions so are version agnostic
+ # but still want to be platform specific.
+ python, abi = 'py3', 'none'
+ return python, abi, plat
+
+except ImportError:
+ bdist_wheel = None
+
+
+# Force installation into platlib.
+# Since this is a pure-python library with platform binaries, it is
+# mis-detected as "pure", which fails audit. Usually, the presence of an
+# extension triggers non-pure install. We force it here.
+class platlib_install(install):
+
+ def finalize_options(self):
+ install.finalize_options(self)
+ self.install_lib = self.install_platlib
+
+
+setup(
+ name="iree-tools-tflite",
+ version="0.1",
+ author="The IREE Team",
+ author_email="iree-discuss@googlegroups.com",
+ license="Apache",
+ description="IREE TFLite Compiler Tools",
+ long_description=README,
+ long_description_content_type="text/markdown",
+ url="https://github.com/google/iree",
+ classifiers=[
+ "Programming Language :: Python :: 3",
+ "License :: OSI Approved :: Apache License",
+ "Operating System :: OS Independent",
+ "Development Status :: 3 - Alpha",
+ ],
+ python_requires=">=3.7",
+ packages=find_namespace_packages(include=[
+ "iree.tools.tflite",
+ "iree.tools.tflite.*",
+ ]),
+ package_data={
+ "iree.tools.tflite": [f"iree-import-tflite{exe_suffix}",],
+ },
+ cmdclass={
+ 'bdist_wheel': bdist_wheel,
+ 'install': platlib_install,
+ },
+ entry_points={
+ "console_scripts": [
+ "iree-import-tflite = iree.tools.tflite.scripts.iree_import_tflite.__main__:main",
+ ],
+ },
+ zip_safe=False, # This package is fine but not zipping is more versatile.
+)
diff --git a/integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/.gitignore b/integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/.gitignore
new file mode 100644
index 0000000..1dc5dca
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/.gitignore
@@ -0,0 +1 @@
+iree-import-xla
diff --git a/integrations/tensorflow/bindings/python/iree/tools/xla/__init__.py b/integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/__init__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tools/xla/__init__.py
rename to integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/__init__.py
diff --git a/integrations/tensorflow/bindings/python/iree/tools/xla/scripts/iree_import_xla/__main__.py b/integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/scripts/iree_import_xla/__main__.py
similarity index 100%
rename from integrations/tensorflow/bindings/python/iree/tools/xla/scripts/iree_import_xla/__main__.py
rename to integrations/tensorflow/python_projects/iree_xla/iree/tools/xla/scripts/iree_import_xla/__main__.py
diff --git a/integrations/tensorflow/python_projects/iree_xla/pyproject.toml b/integrations/tensorflow/python_projects/iree_xla/pyproject.toml
new file mode 100644
index 0000000..f6c1689
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_xla/pyproject.toml
@@ -0,0 +1,6 @@
+[build-system]
+requires = [
+ "setuptools>=42",
+ "wheel",
+]
+build-backend = "setuptools.build_meta"
diff --git a/integrations/tensorflow/python_projects/iree_xla/setup.py b/integrations/tensorflow/python_projects/iree_xla/setup.py
new file mode 100644
index 0000000..0409ac7
--- /dev/null
+++ b/integrations/tensorflow/python_projects/iree_xla/setup.py
@@ -0,0 +1,96 @@
+#!/usr/bin/python3
+
+# Copyright 2020 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
+
+# Build platform specific wheel files for the iree.runtime package.
+# Built artifacts are per-platform and build out of the build tree.
+
+from distutils.command.install import install
+import os
+import platform
+from setuptools import setup, find_namespace_packages
+
+README = r'''
+TensorFlow XLA Compiler Tools
+'''
+
+exe_suffix = ".exe" if platform.system() == "Windows" else ""
+import_xla_path = os.path.join(os.path.dirname(__file__), "iree", "tools",
+ "xla", f"iree-import-xla{exe_suffix}")
+if not os.access(import_xla_path, os.X_OK):
+ raise RuntimeError(
+ f"Tool not found ({import_xla_path}). Be sure to build "
+ f"//iree_tf_compiler:iree-import-xla and run ./symlink_binaries.sh")
+
+# Force platform specific wheel.
+# https://stackoverflow.com/questions/45150304
+try:
+ from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
+
+ class bdist_wheel(_bdist_wheel):
+
+ def finalize_options(self):
+ _bdist_wheel.finalize_options(self)
+ self.root_is_pure = False
+
+ def get_tag(self):
+ python, abi, plat = _bdist_wheel.get_tag(self)
+ # We don't contain any python extensions so are version agnostic
+ # but still want to be platform specific.
+ python, abi = 'py3', 'none'
+ return python, abi, plat
+
+except ImportError:
+ bdist_wheel = None
+
+
+# Force installation into platlib.
+# Since this is a pure-python library with platform binaries, it is
+# mis-detected as "pure", which fails audit. Usually, the presence of an
+# extension triggers non-pure install. We force it here.
+class platlib_install(install):
+
+ def finalize_options(self):
+ install.finalize_options(self)
+ self.install_lib = self.install_platlib
+
+
+setup(
+ name="iree-tools-xla",
+ version="0.1",
+ author="The IREE Team",
+ author_email="iree-discuss@googlegroups.com",
+ license="Apache",
+ description="IREE XLA Compiler Tools",
+ long_description=README,
+ long_description_content_type="text/markdown",
+ url="https://github.com/google/iree",
+ classifiers=[
+ "Programming Language :: Python :: 3",
+ "License :: OSI Approved :: Apache License",
+ "Operating System :: OS Independent",
+ "Development Status :: 3 - Alpha",
+ ],
+ python_requires=">=3.7",
+ packages=find_namespace_packages(include=[
+ "iree.tools.xla",
+ "iree.tools.xla.*",
+ ]),
+ package_data={
+ "iree.tools.xla": [f"iree-import-xla{exe_suffix}",],
+ },
+ cmdclass={
+ 'bdist_wheel': bdist_wheel,
+ 'install': platlib_install,
+ },
+ entry_points={
+ "console_scripts": [
+ "iree-import-xla = iree.tools.xla.scripts.iree_import_xla.__main__:main",
+ ],
+ },
+ zip_safe=False, # This package is fine but not zipping is more versatile.
+)
diff --git a/integrations/tensorflow/symlink_binaries.sh b/integrations/tensorflow/symlink_binaries.sh
new file mode 100755
index 0000000..730bd50
--- /dev/null
+++ b/integrations/tensorflow/symlink_binaries.sh
@@ -0,0 +1,21 @@
+# 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
+
+# Symlinks built binaries from the bazel-bin/ directory into the corresponding
+# python packages.
+
+set -e
+
+cd "$(dirname $0)"
+if [ -f bazel-bin/iree_tf_compiler/iree-import-tf ]; then
+ ln -sf $PWD/bazel-bin/iree_tf_compiler/iree-import-tf python_projects/iree_tf/iree/tools/tf/
+fi
+if [ -f bazel-bin/iree_tf_compiler/iree-import-tflite ]; then
+ ln -sf $PWD/bazel-bin/iree_tf_compiler/iree-import-tflite python_projects/iree_tflite/iree/tools/tflite/
+fi
+if [ -f bazel-bin/iree_tf_compiler/iree-import-xla ]; then
+ ln -sf $PWD/bazel-bin/iree_tf_compiler/iree-import-xla python_projects/iree_xla/iree/tools/xla/
+fi
diff --git a/integrations/tensorflow/test/.gitignore b/integrations/tensorflow/test/.gitignore
new file mode 100644
index 0000000..79a8994
--- /dev/null
+++ b/integrations/tensorflow/test/.gitignore
@@ -0,0 +1,2 @@
+.lit_test_times.txt
+Output
diff --git a/integrations/tensorflow/test/CMakeLists.txt b/integrations/tensorflow/test/CMakeLists.txt
deleted file mode 100644
index 17b84f6..0000000
--- a/integrations/tensorflow/test/CMakeLists.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-# 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
-
-
-if(${IREE_ENABLE_NEW_INTEGRATION_TESTS})
- add_subdirectory(tf_integration)
-endif()
-
-if(${IREE_ENABLE_TFLITE_INTEGRATION_TESTS})
- add_subdirectory(tflite_integration)
-endif()
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Activation.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Activation.run
new file mode 100644
index 0000000..3175044
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Activation.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Activation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ActivityRegularization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ActivityRegularization.run
new file mode 100644
index 0000000..23c0402
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ActivityRegularization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ActivityRegularization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Add.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Add.run
new file mode 100644
index 0000000..335066e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Add.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AdditiveAttention.run
new file mode 100644
index 0000000..a7ee25b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AdditiveAttention.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AdditiveAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AlphaDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AlphaDropout.run
new file mode 100644
index 0000000..3c3c698
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AlphaDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AlphaDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Attention.run
new file mode 100644
index 0000000..9cebe0b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Attention.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Attention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Average.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Average.run
new file mode 100644
index 0000000..b2f94cc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Average.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Average -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling1D.run
new file mode 100644
index 0000000..516a4e3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling2D.run
new file mode 100644
index 0000000..cc75256
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling3D.run
new file mode 100644
index 0000000..37685be
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__AveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__BatchNormalization.run
new file mode 100644
index 0000000..75df1de
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__BatchNormalization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Concatenate.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Concatenate.run
new file mode 100644
index 0000000..080dfcd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Concatenate.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Concatenate -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv1D.run
new file mode 100644
index 0000000..28d81a1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv1DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv1DTranspose.run
new file mode 100644
index 0000000..cac1ada
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv1DTranspose.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv1DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv2D.run
new file mode 100644
index 0000000..e9f8496
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv2DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv2DTranspose.run
new file mode 100644
index 0000000..3ec7e45
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv2DTranspose.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv2DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv3D.run
new file mode 100644
index 0000000..0119367
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv3DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv3DTranspose.run
new file mode 100644
index 0000000..9c92b2c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Conv3DTranspose.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv3DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping1D.run
new file mode 100644
index 0000000..1d92c3a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Cropping1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping2D.run
new file mode 100644
index 0000000..9f59e77
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Cropping2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping3D.run
new file mode 100644
index 0000000..7027f60
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Cropping3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Cropping3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dense.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dense.run
new file mode 100644
index 0000000..ae1d073
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dense.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Dense -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__DepthwiseConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__DepthwiseConv2D.run
new file mode 100644
index 0000000..9932a17
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__DepthwiseConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=DepthwiseConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dot.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dot.run
new file mode 100644
index 0000000..4ec920a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dot.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Dot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dropout.run
new file mode 100644
index 0000000..abf644a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Dropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Dropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ELU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ELU.run
new file mode 100644
index 0000000..c372085
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ELU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ELU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Embedding.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Embedding.run
new file mode 100644
index 0000000..7e939e4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Embedding.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Embedding -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Flatten.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Flatten.run
new file mode 100644
index 0000000..b774e39
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Flatten.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Flatten -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GRU.run
new file mode 100644
index 0000000..9719cac
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GRU.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GRU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GaussianDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GaussianDropout.run
new file mode 100644
index 0000000..44d8a92
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GaussianDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GaussianDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GaussianNoise.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GaussianNoise.run
new file mode 100644
index 0000000..05fc6bd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GaussianNoise.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GaussianNoise -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling1D.run
new file mode 100644
index 0000000..fdcb4df
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling2D.run
new file mode 100644
index 0000000..47296ad
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling3D.run
new file mode 100644
index 0000000..36f369f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalAveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool1D.run
new file mode 100644
index 0000000..8486644
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool2D.run
new file mode 100644
index 0000000..bc9b4e9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool3D.run
new file mode 100644
index 0000000..7a2b2b2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__GlobalMaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__InputLayer.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__InputLayer.run
new file mode 100644
index 0000000..3c13afa
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__InputLayer.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=InputLayer -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LSTM.run
new file mode 100644
index 0000000..5db8bcf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LSTM.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LSTM -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Lambda.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Lambda.run
new file mode 100644
index 0000000..a777122
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Lambda.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Lambda -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LayerNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LayerNormalization.run
new file mode 100644
index 0000000..7612f63
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LayerNormalization.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LayerNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LeakyReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LeakyReLU.run
new file mode 100644
index 0000000..231a47d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LeakyReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LeakyReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LocallyConnected1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LocallyConnected1D.run
new file mode 100644
index 0000000..5cb50ea
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LocallyConnected1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LocallyConnected1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LocallyConnected2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LocallyConnected2D.run
new file mode 100644
index 0000000..889b869
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__LocallyConnected2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LocallyConnected2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Masking.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Masking.run
new file mode 100644
index 0000000..a034c16
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Masking.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Masking -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool1D.run
new file mode 100644
index 0000000..d23e4f3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool2D.run
new file mode 100644
index 0000000..09c25e5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool3D.run
new file mode 100644
index 0000000..03b780c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Maximum.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Maximum.run
new file mode 100644
index 0000000..1ce8da7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Minimum.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Minimum.run
new file mode 100644
index 0000000..6dc64d8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MultiHeadAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MultiHeadAttention.run
new file mode 100644
index 0000000..da7c0d9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__MultiHeadAttention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MultiHeadAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Multiply.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Multiply.run
new file mode 100644
index 0000000..1d96d03
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__PReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__PReLU.run
new file mode 100644
index 0000000..f5e1d60
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__PReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=PReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Permute.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Permute.run
new file mode 100644
index 0000000..34bd291
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Permute.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Permute -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ReLU.run
new file mode 100644
index 0000000..35cbc6e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__RepeatVector.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__RepeatVector.run
new file mode 100644
index 0000000..31b3275
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__RepeatVector.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=RepeatVector -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Reshape.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Reshape.run
new file mode 100644
index 0000000..2a5b479
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Reshape.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Reshape -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SeparableConv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SeparableConv1D.run
new file mode 100644
index 0000000..ab0a008
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SeparableConv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SeparableConv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SeparableConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SeparableConv2D.run
new file mode 100644
index 0000000..88afe16
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SeparableConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SeparableConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Softmax.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Softmax.run
new file mode 100644
index 0000000..a53798b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout1D.run
new file mode 100644
index 0000000..58a8a2a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SpatialDropout1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout2D.run
new file mode 100644
index 0000000..21af62b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SpatialDropout2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout3D.run
new file mode 100644
index 0000000..90e844e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__SpatialDropout3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SpatialDropout3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Subtract.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Subtract.run
new file mode 100644
index 0000000..3c35464
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__Subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ThresholdedReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ThresholdedReLU.run
new file mode 100644
index 0000000..f40f3e6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ThresholdedReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ThresholdedReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling1D.run
new file mode 100644
index 0000000..b33c780
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=UpSampling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling2D.run
new file mode 100644
index 0000000..f8faeb7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=UpSampling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling3D.run
new file mode 100644
index 0000000..1ba3e24
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__UpSampling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=UpSampling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding1D.run
new file mode 100644
index 0000000..fa552ef
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ZeroPadding1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding2D.run
new file mode 100644
index 0000000..386b1b1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ZeroPadding2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding3D.run
new file mode 100644
index 0000000..31550ce
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__ZeroPadding3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ZeroPadding3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Activation.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Activation.run
new file mode 100644
index 0000000..640e4e3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Activation.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Activation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ActivityRegularization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ActivityRegularization.run
new file mode 100644
index 0000000..5f83641
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ActivityRegularization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ActivityRegularization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Add.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Add.run
new file mode 100644
index 0000000..fd0a0a2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Add.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AdditiveAttention.run
new file mode 100644
index 0000000..5979ac3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AdditiveAttention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AdditiveAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AlphaDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AlphaDropout.run
new file mode 100644
index 0000000..b9efbc6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AlphaDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AlphaDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Attention.run
new file mode 100644
index 0000000..1d361d4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Attention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Attention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Average.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Average.run
new file mode 100644
index 0000000..14b3265
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Average.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Average -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling1D.run
new file mode 100644
index 0000000..fd60d86
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling2D.run
new file mode 100644
index 0000000..75820f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling3D.run
new file mode 100644
index 0000000..d6af954
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_AveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_BatchNormalization.run
new file mode 100644
index 0000000..fb6c27b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_BatchNormalization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Concatenate.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Concatenate.run
new file mode 100644
index 0000000..041f53c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Concatenate.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Concatenate -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv1D.run
new file mode 100644
index 0000000..32564a8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv1DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv1DTranspose.run
new file mode 100644
index 0000000..43f73cd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv1DTranspose.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv1DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv2D.run
new file mode 100644
index 0000000..7dea7d1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv2DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv2DTranspose.run
new file mode 100644
index 0000000..d9589ae
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv2DTranspose.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv2DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv3D.run
new file mode 100644
index 0000000..0e428f2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv3D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv3DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv3DTranspose.run
new file mode 100644
index 0000000..87cdd61
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Conv3DTranspose.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv3DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping1D.run
new file mode 100644
index 0000000..15569ad
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Cropping1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping2D.run
new file mode 100644
index 0000000..e75a9da
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Cropping2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping3D.run
new file mode 100644
index 0000000..34109e6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Cropping3D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Cropping3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dense.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dense.run
new file mode 100644
index 0000000..8d111c7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dense.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Dense -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_DepthwiseConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_DepthwiseConv2D.run
new file mode 100644
index 0000000..5ae7e20
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_DepthwiseConv2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=DepthwiseConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dot.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dot.run
new file mode 100644
index 0000000..25e485d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dot.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Dot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dropout.run
new file mode 100644
index 0000000..5fed502
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Dropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Dropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ELU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ELU.run
new file mode 100644
index 0000000..af55141
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ELU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ELU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Embedding.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Embedding.run
new file mode 100644
index 0000000..d274022
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Embedding.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Embedding -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Flatten.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Flatten.run
new file mode 100644
index 0000000..8f24a9b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Flatten.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Flatten -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GRU.run
new file mode 100644
index 0000000..3a41dd4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GRU.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GRU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GaussianDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GaussianDropout.run
new file mode 100644
index 0000000..0548f50
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GaussianDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GaussianDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GaussianNoise.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GaussianNoise.run
new file mode 100644
index 0000000..af878ec
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GaussianNoise.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GaussianNoise -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling1D.run
new file mode 100644
index 0000000..06425cf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling2D.run
new file mode 100644
index 0000000..1a327ff
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling3D.run
new file mode 100644
index 0000000..ae0febf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalAveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool1D.run
new file mode 100644
index 0000000..583746b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool2D.run
new file mode 100644
index 0000000..e3016a2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool3D.run
new file mode 100644
index 0000000..7cb7ee4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_GlobalMaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_InputLayer.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_InputLayer.run
new file mode 100644
index 0000000..b8347a4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_InputLayer.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=InputLayer -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LSTM.run
new file mode 100644
index 0000000..acf0192
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LSTM.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LSTM -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Lambda.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Lambda.run
new file mode 100644
index 0000000..b5524e7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Lambda.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Lambda -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LayerNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LayerNormalization.run
new file mode 100644
index 0000000..7a7378b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LayerNormalization.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LayerNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LeakyReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LeakyReLU.run
new file mode 100644
index 0000000..6802bc2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LeakyReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LeakyReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LocallyConnected1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LocallyConnected1D.run
new file mode 100644
index 0000000..8efb719
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LocallyConnected1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LocallyConnected1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LocallyConnected2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LocallyConnected2D.run
new file mode 100644
index 0000000..b95fa7d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_LocallyConnected2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LocallyConnected2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Masking.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Masking.run
new file mode 100644
index 0000000..df8e7e9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Masking.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Masking -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool1D.run
new file mode 100644
index 0000000..71adbb1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool2D.run
new file mode 100644
index 0000000..10dd424
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool3D.run
new file mode 100644
index 0000000..42f7fb3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Maximum.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Maximum.run
new file mode 100644
index 0000000..c61d71f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Minimum.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Minimum.run
new file mode 100644
index 0000000..794e4e1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MultiHeadAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MultiHeadAttention.run
new file mode 100644
index 0000000..bcd64b7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_MultiHeadAttention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MultiHeadAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Multiply.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Multiply.run
new file mode 100644
index 0000000..31a3315
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_PReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_PReLU.run
new file mode 100644
index 0000000..f74fbe3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_PReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=PReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Permute.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Permute.run
new file mode 100644
index 0000000..bcc2bde
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Permute.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Permute -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ReLU.run
new file mode 100644
index 0000000..9c0ba06
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_RepeatVector.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_RepeatVector.run
new file mode 100644
index 0000000..ea2d27c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_RepeatVector.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=RepeatVector -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Reshape.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Reshape.run
new file mode 100644
index 0000000..585c59d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Reshape.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Reshape -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SeparableConv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SeparableConv1D.run
new file mode 100644
index 0000000..4ccf27d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SeparableConv1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SeparableConv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SeparableConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SeparableConv2D.run
new file mode 100644
index 0000000..af8dfeb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SeparableConv2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SeparableConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Softmax.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Softmax.run
new file mode 100644
index 0000000..2d9de84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout1D.run
new file mode 100644
index 0000000..0a27704
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SpatialDropout1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout2D.run
new file mode 100644
index 0000000..2183ff0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SpatialDropout2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout3D.run
new file mode 100644
index 0000000..63c53d1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_SpatialDropout3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SpatialDropout3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Subtract.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Subtract.run
new file mode 100644
index 0000000..162e126
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_Subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ThresholdedReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ThresholdedReLU.run
new file mode 100644
index 0000000..a8d8078
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ThresholdedReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ThresholdedReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling1D.run
new file mode 100644
index 0000000..7239471
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=UpSampling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling2D.run
new file mode 100644
index 0000000..1e08edf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=UpSampling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling3D.run
new file mode 100644
index 0000000..9fb0092
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_UpSampling3D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=UpSampling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding1D.run
new file mode 100644
index 0000000..2a586c8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ZeroPadding1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding2D.run
new file mode 100644
index 0000000..72f4130
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ZeroPadding2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding3D.run
new file mode 100644
index 0000000..9e23114
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__dynamic_dims_ZeroPadding3D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ZeroPadding3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_ActivityRegularization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_ActivityRegularization.run
new file mode 100644
index 0000000..71cd015
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_ActivityRegularization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=ActivityRegularization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AdditiveAttention.run
new file mode 100644
index 0000000..85d405d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AdditiveAttention.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AdditiveAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Attention.run
new file mode 100644
index 0000000..a129fb1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Attention.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Attention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling1D.run
new file mode 100644
index 0000000..0d6e63e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling2D.run
new file mode 100644
index 0000000..4369cf6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling3D.run
new file mode 100644
index 0000000..29d8b9e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_AveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_BatchNormalization.run
new file mode 100644
index 0000000..dc785b7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_BatchNormalization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Concatenate.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Concatenate.run
new file mode 100644
index 0000000..53ba0a6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Concatenate.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Concatenate -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv1D.run
new file mode 100644
index 0000000..282e9a7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv1DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv1DTranspose.run
new file mode 100644
index 0000000..c7e7d71
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv1DTranspose.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv1DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv2D.run
new file mode 100644
index 0000000..b1bf679
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv2DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv2DTranspose.run
new file mode 100644
index 0000000..e468af6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv2DTranspose.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv2DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv3D.run
new file mode 100644
index 0000000..0a57459
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv3DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv3DTranspose.run
new file mode 100644
index 0000000..ae63e31
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Conv3DTranspose.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv3DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping1D.run
new file mode 100644
index 0000000..4bdfaee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Cropping1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping2D.run
new file mode 100644
index 0000000..23a0469
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Cropping2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping3D.run
new file mode 100644
index 0000000..04a024b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_Cropping3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Cropping3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_DepthwiseConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_DepthwiseConv2D.run
new file mode 100644
index 0000000..84c9025
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_DepthwiseConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=DepthwiseConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_GRU.run
new file mode 100644
index 0000000..dd6b281
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_GRU.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=GRU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LSTM.run
new file mode 100644
index 0000000..0533435
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LSTM.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=LSTM -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LocallyConnected1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LocallyConnected1D.run
new file mode 100644
index 0000000..a153742
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LocallyConnected1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=LocallyConnected1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LocallyConnected2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LocallyConnected2D.run
new file mode 100644
index 0000000..2139e87
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_LocallyConnected2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=LocallyConnected2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool1D.run
new file mode 100644
index 0000000..0655262
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=MaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool2D.run
new file mode 100644
index 0000000..f0cff4c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=MaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool3D.run
new file mode 100644
index 0000000..8db57a0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_MaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=MaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SeparableConv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SeparableConv1D.run
new file mode 100644
index 0000000..bca9dc6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SeparableConv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=SeparableConv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SeparableConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SeparableConv2D.run
new file mode 100644
index 0000000..a7cdf0b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SeparableConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=SeparableConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SimpleRNN.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SimpleRNN.run
new file mode 100644
index 0000000..7024df5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__full_api_SimpleRNN.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=SimpleRNN -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_AdditiveAttention.run
new file mode 100644
index 0000000..c47e0e2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_AdditiveAttention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=AdditiveAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_AlphaDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_AlphaDropout.run
new file mode 100644
index 0000000..6e07de5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_AlphaDropout.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=AlphaDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_Attention.run
new file mode 100644
index 0000000..5e47dd0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_Attention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=Attention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_BatchNormalization.run
new file mode 100644
index 0000000..18dbd82
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_BatchNormalization.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_Dropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_Dropout.run
new file mode 100644
index 0000000..1a5b332
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_Dropout.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=Dropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GRU.run
new file mode 100644
index 0000000..939254e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GRU.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=GRU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GaussianDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GaussianDropout.run
new file mode 100644
index 0000000..4efcde3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GaussianDropout.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=GaussianDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GaussianNoise.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GaussianNoise.run
new file mode 100644
index 0000000..faa02f8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_GaussianNoise.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=GaussianNoise -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_LSTM.run
new file mode 100644
index 0000000..4c77edb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_LSTM.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=LSTM -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_MultiHeadAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_MultiHeadAttention.run
new file mode 100644
index 0000000..b34af9c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_MultiHeadAttention.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=MultiHeadAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout1D.run
new file mode 100644
index 0000000..e558773
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout1D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=SpatialDropout1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout2D.run
new file mode 100644
index 0000000..fd0b095
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout2D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=SpatialDropout2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout3D.run
new file mode 100644
index 0000000..6926099
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/llvmaot__training_SpatialDropout3D.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_llvmaot --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=SpatialDropout3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Activation.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Activation.run
new file mode 100644
index 0000000..56e3b6f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Activation.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Activation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ActivityRegularization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ActivityRegularization.run
new file mode 100644
index 0000000..0cd78ed
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ActivityRegularization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ActivityRegularization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Add.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Add.run
new file mode 100644
index 0000000..9546b88
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Add.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AdditiveAttention.run
new file mode 100644
index 0000000..93fc2d6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AdditiveAttention.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AdditiveAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AlphaDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AlphaDropout.run
new file mode 100644
index 0000000..c552c80
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AlphaDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AlphaDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Attention.run
new file mode 100644
index 0000000..de0b68c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Attention.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Attention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Average.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Average.run
new file mode 100644
index 0000000..be27f1a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Average.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Average -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling1D.run
new file mode 100644
index 0000000..e152734
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling2D.run
new file mode 100644
index 0000000..c1c6af3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling3D.run
new file mode 100644
index 0000000..4fe624c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__AveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=AveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__BatchNormalization.run
new file mode 100644
index 0000000..095fe0d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__BatchNormalization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Concatenate.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Concatenate.run
new file mode 100644
index 0000000..dc3c5d8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Concatenate.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Concatenate -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv1D.run
new file mode 100644
index 0000000..fca667d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv1DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv1DTranspose.run
new file mode 100644
index 0000000..2088b94
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv1DTranspose.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv1DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv2D.run
new file mode 100644
index 0000000..25235ab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv2DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv2DTranspose.run
new file mode 100644
index 0000000..fe90540
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv2DTranspose.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv2DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv3D.run
new file mode 100644
index 0000000..46af318
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv3DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv3DTranspose.run
new file mode 100644
index 0000000..7f43aad
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Conv3DTranspose.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Conv3DTranspose -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping1D.run
new file mode 100644
index 0000000..89f44f8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Cropping1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping2D.run
new file mode 100644
index 0000000..36697e6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Cropping2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping3D.run
new file mode 100644
index 0000000..767550e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Cropping3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Cropping3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dense.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dense.run
new file mode 100644
index 0000000..b3f990a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dense.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Dense -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__DepthwiseConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__DepthwiseConv2D.run
new file mode 100644
index 0000000..517f162
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__DepthwiseConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=DepthwiseConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dot.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dot.run
new file mode 100644
index 0000000..fc85bee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dot.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Dot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dropout.run
new file mode 100644
index 0000000..91f8f98
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Dropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Dropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ELU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ELU.run
new file mode 100644
index 0000000..0f0ade2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ELU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ELU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Embedding.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Embedding.run
new file mode 100644
index 0000000..454205c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Embedding.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Embedding -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Flatten.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Flatten.run
new file mode 100644
index 0000000..7acb51a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Flatten.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Flatten -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GRU.run
new file mode 100644
index 0000000..64d8a59
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GRU.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GRU -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GaussianDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GaussianDropout.run
new file mode 100644
index 0000000..9c7812d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GaussianDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GaussianDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GaussianNoise.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GaussianNoise.run
new file mode 100644
index 0000000..341de8a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GaussianNoise.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GaussianNoise -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling1D.run
new file mode 100644
index 0000000..b9578e2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling2D.run
new file mode 100644
index 0000000..88ddcfc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling3D.run
new file mode 100644
index 0000000..4257872
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalAveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool1D.run
new file mode 100644
index 0000000..9e62094
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool2D.run
new file mode 100644
index 0000000..29e9fa1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool3D.run
new file mode 100644
index 0000000..ed2cd15
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__GlobalMaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__InputLayer.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__InputLayer.run
new file mode 100644
index 0000000..2bf8f45
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__InputLayer.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=InputLayer -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LSTM.run
new file mode 100644
index 0000000..744a317
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LSTM.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LSTM -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Lambda.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Lambda.run
new file mode 100644
index 0000000..583ef70
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Lambda.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Lambda -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LayerNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LayerNormalization.run
new file mode 100644
index 0000000..7f61f21
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LayerNormalization.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LayerNormalization -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LeakyReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LeakyReLU.run
new file mode 100644
index 0000000..dde64f4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LeakyReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LeakyReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LocallyConnected1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LocallyConnected1D.run
new file mode 100644
index 0000000..a661d68
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LocallyConnected1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LocallyConnected1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LocallyConnected2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LocallyConnected2D.run
new file mode 100644
index 0000000..eb28280
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__LocallyConnected2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=LocallyConnected2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Masking.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Masking.run
new file mode 100644
index 0000000..87e2295
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Masking.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Masking -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool1D.run
new file mode 100644
index 0000000..157f7b4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool2D.run
new file mode 100644
index 0000000..e7f7768
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool3D.run
new file mode 100644
index 0000000..bcc43b6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Maximum.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Maximum.run
new file mode 100644
index 0000000..885b4ed
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Minimum.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Minimum.run
new file mode 100644
index 0000000..29495ed
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MultiHeadAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MultiHeadAttention.run
new file mode 100644
index 0000000..2c490c3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__MultiHeadAttention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=MultiHeadAttention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Multiply.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Multiply.run
new file mode 100644
index 0000000..589faec
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__PReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__PReLU.run
new file mode 100644
index 0000000..2cb7884
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__PReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=PReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Permute.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Permute.run
new file mode 100644
index 0000000..9e2135b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Permute.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Permute -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ReLU.run
new file mode 100644
index 0000000..921e279
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__RepeatVector.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__RepeatVector.run
new file mode 100644
index 0000000..e776921
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__RepeatVector.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=RepeatVector -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Reshape.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Reshape.run
new file mode 100644
index 0000000..0d6b9b5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Reshape.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Reshape -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SeparableConv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SeparableConv1D.run
new file mode 100644
index 0000000..ccb8d5e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SeparableConv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SeparableConv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SeparableConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SeparableConv2D.run
new file mode 100644
index 0000000..09c4424
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SeparableConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SeparableConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Softmax.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Softmax.run
new file mode 100644
index 0000000..b0606b9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout1D.run
new file mode 100644
index 0000000..2f92a3c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SpatialDropout1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout2D.run
new file mode 100644
index 0000000..5a7d430
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SpatialDropout2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout3D.run
new file mode 100644
index 0000000..5653090
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__SpatialDropout3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=SpatialDropout3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Subtract.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Subtract.run
new file mode 100644
index 0000000..5f29cc6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__Subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=Subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ThresholdedReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ThresholdedReLU.run
new file mode 100644
index 0000000..55112ba
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ThresholdedReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ThresholdedReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling1D.run
new file mode 100644
index 0000000..dccc179
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=UpSampling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling2D.run
new file mode 100644
index 0000000..053cb07
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=UpSampling2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling3D.run
new file mode 100644
index 0000000..47cb091
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__UpSampling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=UpSampling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding1D.run
new file mode 100644
index 0000000..a31ee4e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ZeroPadding1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding2D.run
new file mode 100644
index 0000000..dd2960e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ZeroPadding2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding3D.run
new file mode 100644
index 0000000..5796394
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__ZeroPadding3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=true --layer=ZeroPadding3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Activation.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Activation.run
new file mode 100644
index 0000000..ce9dea5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Activation.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Activation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ActivityRegularization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ActivityRegularization.run
new file mode 100644
index 0000000..2cf5a0c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ActivityRegularization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ActivityRegularization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Add.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Add.run
new file mode 100644
index 0000000..5cd8ba6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Add.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AdditiveAttention.run
new file mode 100644
index 0000000..686a3ad
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AdditiveAttention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AdditiveAttention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AlphaDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AlphaDropout.run
new file mode 100644
index 0000000..275770a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AlphaDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AlphaDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Attention.run
new file mode 100644
index 0000000..5b45570
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Attention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Attention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Average.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Average.run
new file mode 100644
index 0000000..a358e30
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Average.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Average -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling1D.run
new file mode 100644
index 0000000..cbf13c2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling2D.run
new file mode 100644
index 0000000..a93f5f5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling3D.run
new file mode 100644
index 0000000..801a186
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_AveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=AveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_BatchNormalization.run
new file mode 100644
index 0000000..150a55e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_BatchNormalization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Concatenate.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Concatenate.run
new file mode 100644
index 0000000..31588be
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Concatenate.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Concatenate -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv1D.run
new file mode 100644
index 0000000..d6e21c9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv1DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv1DTranspose.run
new file mode 100644
index 0000000..9b6e6da
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv1DTranspose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv1DTranspose -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv2D.run
new file mode 100644
index 0000000..9bbdbc7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv2DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv2DTranspose.run
new file mode 100644
index 0000000..9283614
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv2DTranspose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv2DTranspose -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv3D.run
new file mode 100644
index 0000000..0ee5cee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv3D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv3D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv3DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv3DTranspose.run
new file mode 100644
index 0000000..b5079e6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Conv3DTranspose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Conv3DTranspose -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping1D.run
new file mode 100644
index 0000000..9d063eb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Cropping1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping2D.run
new file mode 100644
index 0000000..ec84d60
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Cropping2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping3D.run
new file mode 100644
index 0000000..16c32cf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Cropping3D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Cropping3D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dense.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dense.run
new file mode 100644
index 0000000..76aa002
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dense.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Dense -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_DepthwiseConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_DepthwiseConv2D.run
new file mode 100644
index 0000000..7e68800
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_DepthwiseConv2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=DepthwiseConv2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dot.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dot.run
new file mode 100644
index 0000000..a2ac45a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dot.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Dot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dropout.run
new file mode 100644
index 0000000..20274cf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Dropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Dropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ELU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ELU.run
new file mode 100644
index 0000000..dff199b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ELU.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ELU -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Embedding.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Embedding.run
new file mode 100644
index 0000000..92859f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Embedding.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Embedding -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Flatten.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Flatten.run
new file mode 100644
index 0000000..addb90a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Flatten.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Flatten -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GRU.run
new file mode 100644
index 0000000..08d509e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GRU.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GRU -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GaussianDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GaussianDropout.run
new file mode 100644
index 0000000..42acf50
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GaussianDropout.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GaussianDropout -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GaussianNoise.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GaussianNoise.run
new file mode 100644
index 0000000..b6b608d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GaussianNoise.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GaussianNoise -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling1D.run
new file mode 100644
index 0000000..92ab75f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling2D.run
new file mode 100644
index 0000000..b1cb0d8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling3D.run
new file mode 100644
index 0000000..1d801a3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalAveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalAveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool1D.run
new file mode 100644
index 0000000..1ddb65b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool2D.run
new file mode 100644
index 0000000..075ff8f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool3D.run
new file mode 100644
index 0000000..ffe49cc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_GlobalMaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=GlobalMaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_InputLayer.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_InputLayer.run
new file mode 100644
index 0000000..34656d1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_InputLayer.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=InputLayer -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LSTM.run
new file mode 100644
index 0000000..57d7bbe
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LSTM.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LSTM -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Lambda.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Lambda.run
new file mode 100644
index 0000000..ee50a74
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Lambda.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Lambda -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LayerNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LayerNormalization.run
new file mode 100644
index 0000000..9d6ed5c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LayerNormalization.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LayerNormalization -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LeakyReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LeakyReLU.run
new file mode 100644
index 0000000..dd02433
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LeakyReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LeakyReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LocallyConnected1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LocallyConnected1D.run
new file mode 100644
index 0000000..255094c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LocallyConnected1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LocallyConnected1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LocallyConnected2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LocallyConnected2D.run
new file mode 100644
index 0000000..28bd93d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_LocallyConnected2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=LocallyConnected2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Masking.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Masking.run
new file mode 100644
index 0000000..fa42954
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Masking.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Masking -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool1D.run
new file mode 100644
index 0000000..27f34be
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool2D.run
new file mode 100644
index 0000000..68f006b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool3D.run
new file mode 100644
index 0000000..9c553b7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Maximum.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Maximum.run
new file mode 100644
index 0000000..d30e987
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Minimum.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Minimum.run
new file mode 100644
index 0000000..dbc1ca5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MultiHeadAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MultiHeadAttention.run
new file mode 100644
index 0000000..9268ca8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_MultiHeadAttention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=MultiHeadAttention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Multiply.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Multiply.run
new file mode 100644
index 0000000..2860371
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_PReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_PReLU.run
new file mode 100644
index 0000000..51cb9a4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_PReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=PReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Permute.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Permute.run
new file mode 100644
index 0000000..45793e0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Permute.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Permute -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ReLU.run
new file mode 100644
index 0000000..79dfc90
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_RepeatVector.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_RepeatVector.run
new file mode 100644
index 0000000..0648540
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_RepeatVector.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=RepeatVector -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Reshape.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Reshape.run
new file mode 100644
index 0000000..4914cd3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Reshape.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Reshape -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SeparableConv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SeparableConv1D.run
new file mode 100644
index 0000000..9fcaa0c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SeparableConv1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SeparableConv1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SeparableConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SeparableConv2D.run
new file mode 100644
index 0000000..308a79f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SeparableConv2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SeparableConv2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Softmax.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Softmax.run
new file mode 100644
index 0000000..48a6a8a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout1D.run
new file mode 100644
index 0000000..624bbc8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SpatialDropout1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout2D.run
new file mode 100644
index 0000000..fef4ad5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SpatialDropout2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout3D.run
new file mode 100644
index 0000000..6a7cc60
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_SpatialDropout3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=SpatialDropout3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Subtract.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Subtract.run
new file mode 100644
index 0000000..349ec09
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_Subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=Subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ThresholdedReLU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ThresholdedReLU.run
new file mode 100644
index 0000000..272efdc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ThresholdedReLU.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ThresholdedReLU -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling1D.run
new file mode 100644
index 0000000..142590c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=UpSampling1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling2D.run
new file mode 100644
index 0000000..7b114b8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=UpSampling2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling3D.run
new file mode 100644
index 0000000..7272280
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_UpSampling3D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=UpSampling3D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding1D.run
new file mode 100644
index 0000000..f71bb86
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ZeroPadding1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding2D.run
new file mode 100644
index 0000000..db65b82
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ZeroPadding2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding3D.run
new file mode 100644
index 0000000..d45d661
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__dynamic_dims_ZeroPadding3D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=true --training=false --test_default_kwargs_only=true --layer=ZeroPadding3D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_ActivityRegularization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_ActivityRegularization.run
new file mode 100644
index 0000000..f0e6249
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_ActivityRegularization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=ActivityRegularization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AdditiveAttention.run
new file mode 100644
index 0000000..dd5c591
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AdditiveAttention.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AdditiveAttention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Attention.run
new file mode 100644
index 0000000..3fb7aec
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Attention.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Attention -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling1D.run
new file mode 100644
index 0000000..0fc609c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AveragePooling1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling2D.run
new file mode 100644
index 0000000..0401d63
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AveragePooling2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling3D.run
new file mode 100644
index 0000000..04a177c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_AveragePooling3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=AveragePooling3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_BatchNormalization.run
new file mode 100644
index 0000000..5ae02fb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_BatchNormalization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=BatchNormalization -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Concatenate.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Concatenate.run
new file mode 100644
index 0000000..0e75525
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Concatenate.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Concatenate -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv1D.run
new file mode 100644
index 0000000..0af1cca
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv1DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv1DTranspose.run
new file mode 100644
index 0000000..21c5990
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv1DTranspose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv1DTranspose -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv2D.run
new file mode 100644
index 0000000..b547ba8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv2DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv2DTranspose.run
new file mode 100644
index 0000000..86db65b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv2DTranspose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv2DTranspose -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv3D.run
new file mode 100644
index 0000000..c3b18ff
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv3DTranspose.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv3DTranspose.run
new file mode 100644
index 0000000..367b362
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Conv3DTranspose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Conv3DTranspose -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping1D.run
new file mode 100644
index 0000000..120fe72
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Cropping1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping2D.run
new file mode 100644
index 0000000..962b8e9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Cropping2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping3D.run
new file mode 100644
index 0000000..94f6e60
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_Cropping3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=Cropping3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_DepthwiseConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_DepthwiseConv2D.run
new file mode 100644
index 0000000..7dc3f1f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_DepthwiseConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=DepthwiseConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_GRU.run
new file mode 100644
index 0000000..fbea482
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_GRU.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=GRU -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LSTM.run
new file mode 100644
index 0000000..fa7dbef
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LSTM.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=LSTM -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LocallyConnected1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LocallyConnected1D.run
new file mode 100644
index 0000000..930a054
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LocallyConnected1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=LocallyConnected1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LocallyConnected2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LocallyConnected2D.run
new file mode 100644
index 0000000..452c118
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_LocallyConnected2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=LocallyConnected2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool1D.run
new file mode 100644
index 0000000..bb2194f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=MaxPool1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool2D.run
new file mode 100644
index 0000000..82eb263
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=MaxPool2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool3D.run
new file mode 100644
index 0000000..8fa9128
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_MaxPool3D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=MaxPool3D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SeparableConv1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SeparableConv1D.run
new file mode 100644
index 0000000..e1b5343
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SeparableConv1D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=SeparableConv1D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SeparableConv2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SeparableConv2D.run
new file mode 100644
index 0000000..736eb70
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SeparableConv2D.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=SeparableConv2D -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SimpleRNN.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SimpleRNN.run
new file mode 100644
index 0000000..aae9231
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__full_api_SimpleRNN.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=false --test_default_kwargs_only=false --layer=SimpleRNN -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_AdditiveAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_AdditiveAttention.run
new file mode 100644
index 0000000..9ef64e5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_AdditiveAttention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=AdditiveAttention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_AlphaDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_AlphaDropout.run
new file mode 100644
index 0000000..8e3dc1d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_AlphaDropout.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=AlphaDropout -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_Attention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_Attention.run
new file mode 100644
index 0000000..12ee6c5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_Attention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=Attention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_BatchNormalization.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_BatchNormalization.run
new file mode 100644
index 0000000..fcfef8c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_BatchNormalization.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=BatchNormalization -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_Dropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_Dropout.run
new file mode 100644
index 0000000..e8af71b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_Dropout.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=Dropout -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GRU.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GRU.run
new file mode 100644
index 0000000..e85a33c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GRU.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=GRU -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GaussianDropout.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GaussianDropout.run
new file mode 100644
index 0000000..e8051e1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GaussianDropout.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=GaussianDropout -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GaussianNoise.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GaussianNoise.run
new file mode 100644
index 0000000..4b179a4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_GaussianNoise.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=GaussianNoise -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_LSTM.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_LSTM.run
new file mode 100644
index 0000000..ac12360
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_LSTM.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=LSTM -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_MultiHeadAttention.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_MultiHeadAttention.run
new file mode 100644
index 0000000..f543fa2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_MultiHeadAttention.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=MultiHeadAttention -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout1D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout1D.run
new file mode 100644
index 0000000..85f1cb5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout1D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=SpatialDropout1D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout2D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout2D.run
new file mode 100644
index 0000000..210fe8f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout2D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=SpatialDropout2D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout3D.run b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout3D.run
new file mode 100644
index 0000000..00fd2e2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/layers/vulkan__training_SpatialDropout3D.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.layers.layers_test --target_backends=iree_vulkan --dynamic_dims=false --training=true --test_default_kwargs_only=true --layer=SpatialDropout3D -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__abs.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__abs.run
new file mode 100644
index 0000000..f93f64b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__accumulate_n.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__accumulate_n.run
new file mode 100644
index 0000000..dcbc15e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__accumulate_n.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=accumulate_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__acos.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__acos.run
new file mode 100644
index 0000000..574310a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__acos.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=acos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__acosh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__acosh.run
new file mode 100644
index 0000000..ce4809c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__acosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=acosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__add.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__add.run
new file mode 100644
index 0000000..58320d7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__add.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__add_n.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__add_n.run
new file mode 100644
index 0000000..63e37ff
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__add_n.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=add_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__angle.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__angle.run
new file mode 100644
index 0000000..42e3394
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__argmax.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__argmax.run
new file mode 100644
index 0000000..a16e143
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__argmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=argmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__argmin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__argmin.run
new file mode 100644
index 0000000..e0bda2a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__argmin.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=argmin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__asin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__asin.run
new file mode 100644
index 0000000..56818f3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__asin.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=asin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__asinh.run
new file mode 100644
index 0000000..c95b7b8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__asinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=asinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atan.run
new file mode 100644
index 0000000..d138920
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atan.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=atan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atan2.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atan2.run
new file mode 100644
index 0000000..4e8b6e4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atan2.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=atan2 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atanh.run
new file mode 100644
index 0000000..6bb1469
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i0.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i0.run
new file mode 100644
index 0000000..411d518
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i0.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=bessel_i0 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i0e.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i0e.run
new file mode 100644
index 0000000..26c3157
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i0e.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=bessel_i0e -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i1.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i1.run
new file mode 100644
index 0000000..dc5617f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i1.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=bessel_i1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i1e.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i1e.run
new file mode 100644
index 0000000..8e669f3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bessel_i1e.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=bessel_i1e -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__betainc.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__betainc.run
new file mode 100644
index 0000000..0d5a306
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__betainc.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=betainc -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bincount.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bincount.run
new file mode 100644
index 0000000..fc14aa9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__bincount.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=bincount -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__ceil.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__ceil.run
new file mode 100644
index 0000000..a5f5ca6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__ceil.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=ceil -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_abs.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_abs.run
new file mode 100644
index 0000000..f93f64b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_add.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_add.run
new file mode 100644
index 0000000..58320d7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_add.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_angle.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_angle.run
new file mode 100644
index 0000000..42e3394
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_asinh.run
new file mode 100644
index 0000000..c95b7b8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_asinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=asinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_atanh.run
new file mode 100644
index 0000000..6bb1469
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_conj.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_conj.run
new file mode 100644
index 0000000..27301e1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_conj.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=conj -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cos.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cos.run
new file mode 100644
index 0000000..124c833
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cosh.run
new file mode 100644
index 0000000..b8fe979
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_count_nonzero.run
new file mode 100644
index 0000000..6ae0ce8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cumprod.run
new file mode 100644
index 0000000..7aee027
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cumprod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cumprod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cumsum.run
new file mode 100644
index 0000000..dd4d33a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_cumsum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cumsum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_divide.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_divide.run
new file mode 100644
index 0000000..303525c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_divide_no_nan.run
new file mode 100644
index 0000000..e104443
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_abs.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_abs.run
new file mode 100644
index 0000000..bf4d2d6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_add.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_add.run
new file mode 100644
index 0000000..c7b10f4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_add.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_angle.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_angle.run
new file mode 100644
index 0000000..8c565b3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_asinh.run
new file mode 100644
index 0000000..f54210b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_asinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=asinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_atanh.run
new file mode 100644
index 0000000..708c723
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_conj.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_conj.run
new file mode 100644
index 0000000..764488e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_conj.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=conj -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cos.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cos.run
new file mode 100644
index 0000000..c3f03c0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cosh.run
new file mode 100644
index 0000000..7c0b222
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_count_nonzero.run
new file mode 100644
index 0000000..0dc2d36
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cumprod.run
new file mode 100644
index 0000000..ab9b887
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cumprod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cumprod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cumsum.run
new file mode 100644
index 0000000..a4c1083
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_cumsum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cumsum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_divide.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_divide.run
new file mode 100644
index 0000000..1631b06
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_divide_no_nan.run
new file mode 100644
index 0000000..3c87c50
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_exp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_exp.run
new file mode 100644
index 0000000..6c17528
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_expm1.run
new file mode 100644
index 0000000..6ad1301
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_expm1.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=expm1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_imag.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_imag.run
new file mode 100644
index 0000000..cd79090
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_l2_normalize.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_l2_normalize.run
new file mode 100644
index 0000000..3e4a68f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_l2_normalize.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=l2_normalize -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_log.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_log.run
new file mode 100644
index 0000000..2c34774
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_log.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_log1p.run
new file mode 100644
index 0000000..1f42985
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_multiply.run
new file mode 100644
index 0000000..0a00e33
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_multiply_no_nan.run
new file mode 100644
index 0000000..8bbd4da
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_negative.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_negative.run
new file mode 100644
index 0000000..fddaf44
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_pow.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_pow.run
new file mode 100644
index 0000000..6dc54f0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_real.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_real.run
new file mode 100644
index 0000000..67d80e6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_real.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reciprocal.run
new file mode 100644
index 0000000..dd103cc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reciprocal_no_nan.run
new file mode 100644
index 0000000..4c895cd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_euclidean_norm.run
new file mode 100644
index 0000000..67c59f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_euclidean_norm -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_std.run
new file mode 100644
index 0000000..b942bd9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_std.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_std -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_variance.run
new file mode 100644
index 0000000..fe136e7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_reduce_variance.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_variance -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_rsqrt.run
new file mode 100644
index 0000000..4262892
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sigmoid.run
new file mode 100644
index 0000000..2b630fc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sign.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sign.run
new file mode 100644
index 0000000..227423d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sign.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sin.run
new file mode 100644
index 0000000..0a74636
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sinh.run
new file mode 100644
index 0000000..f147a71
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sqrt.run
new file mode 100644
index 0000000..6d3fcec
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_square.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_square.run
new file mode 100644
index 0000000..23f834a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_square.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_squared_difference.run
new file mode 100644
index 0000000..966e9f9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_subtract.run
new file mode 100644
index 0000000..c685905
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_tan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_tan.run
new file mode 100644
index 0000000..51fe0ed
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_tanh.run
new file mode 100644
index 0000000..861f26f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_truediv.run
new file mode 100644
index 0000000..b80763a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xdivy.run
new file mode 100644
index 0000000..c5007f0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xlog1py.run
new file mode 100644
index 0000000..f12709b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xlogy.run
new file mode 100644
index 0000000..9b29402
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_zero_fraction.run
new file mode 100644
index 0000000..18f1e82
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_dynamic_dim_zero_fraction.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=zero_fraction -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_exp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_exp.run
new file mode 100644
index 0000000..9f32c1e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_expm1.run
new file mode 100644
index 0000000..0fb7f8f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_expm1.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=expm1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_imag.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_imag.run
new file mode 100644
index 0000000..36b113f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_l2_normalize.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_l2_normalize.run
new file mode 100644
index 0000000..a115c80
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_l2_normalize.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=l2_normalize -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_log.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_log.run
new file mode 100644
index 0000000..95ebce9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_log.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_log1p.run
new file mode 100644
index 0000000..5fd517b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_multiply.run
new file mode 100644
index 0000000..83732de
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_multiply_no_nan.run
new file mode 100644
index 0000000..55677cb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_negative.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_negative.run
new file mode 100644
index 0000000..38906fe
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_pow.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_pow.run
new file mode 100644
index 0000000..5e30556
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_real.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_real.run
new file mode 100644
index 0000000..467d97a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_real.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reciprocal.run
new file mode 100644
index 0000000..c5d12ff
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reciprocal_no_nan.run
new file mode 100644
index 0000000..a597c2d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_euclidean_norm.run
new file mode 100644
index 0000000..220e27b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_euclidean_norm -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_std.run
new file mode 100644
index 0000000..2f06dfd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_std.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_std -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_variance.run
new file mode 100644
index 0000000..5a7b5ab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_reduce_variance.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_variance -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_rsqrt.run
new file mode 100644
index 0000000..e810354
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sigmoid.run
new file mode 100644
index 0000000..a46ec12
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sign.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sign.run
new file mode 100644
index 0000000..a47cfc2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sign.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sin.run
new file mode 100644
index 0000000..227cf83
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sinh.run
new file mode 100644
index 0000000..e349354
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sqrt.run
new file mode 100644
index 0000000..37372e8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_square.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_square.run
new file mode 100644
index 0000000..471caf3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_square.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_squared_difference.run
new file mode 100644
index 0000000..2bf925b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_subtract.run
new file mode 100644
index 0000000..933106f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_tan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_tan.run
new file mode 100644
index 0000000..3e628fc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_tanh.run
new file mode 100644
index 0000000..1228997
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_truediv.run
new file mode 100644
index 0000000..25a6224
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xdivy.run
new file mode 100644
index 0000000..858b45e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xlog1py.run
new file mode 100644
index 0000000..504787c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xlogy.run
new file mode 100644
index 0000000..077df5e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_zero_fraction.run
new file mode 100644
index 0000000..a02b744
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__complex_zero_fraction.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=zero_fraction -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__confusion_matrix.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__confusion_matrix.run
new file mode 100644
index 0000000..12213f0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__confusion_matrix.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=confusion_matrix -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cos.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cos.run
new file mode 100644
index 0000000..124c833
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cosh.run
new file mode 100644
index 0000000..b8fe979
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__count_nonzero.run
new file mode 100644
index 0000000..6ae0ce8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumprod.run
new file mode 100644
index 0000000..7aee027
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumprod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cumprod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumsum.run
new file mode 100644
index 0000000..dd4d33a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumsum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cumsum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumulative_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumulative_logsumexp.run
new file mode 100644
index 0000000..8a6cd35
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__cumulative_logsumexp.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=cumulative_logsumexp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__digamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__digamma.run
new file mode 100644
index 0000000..e86a9d7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__digamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=digamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__divide.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__divide.run
new file mode 100644
index 0000000..303525c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__divide_no_nan.run
new file mode 100644
index 0000000..e104443
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_abs.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_abs.run
new file mode 100644
index 0000000..bf4d2d6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_accumulate_n.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_accumulate_n.run
new file mode 100644
index 0000000..8093416
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_accumulate_n.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=accumulate_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_acos.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_acos.run
new file mode 100644
index 0000000..f528123
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_acos.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=acos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_acosh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_acosh.run
new file mode 100644
index 0000000..c34989c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_acosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=acosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_add.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_add.run
new file mode 100644
index 0000000..c7b10f4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_add.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_add_n.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_add_n.run
new file mode 100644
index 0000000..e6ff439
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_add_n.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=add_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_angle.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_angle.run
new file mode 100644
index 0000000..8c565b3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_argmax.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_argmax.run
new file mode 100644
index 0000000..79856cc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_argmax.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=argmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_argmin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_argmin.run
new file mode 100644
index 0000000..83c9de0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_argmin.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=argmin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_asin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_asin.run
new file mode 100644
index 0000000..a3360f3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_asin.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=asin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_asinh.run
new file mode 100644
index 0000000..f54210b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_asinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=asinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atan.run
new file mode 100644
index 0000000..f60e967
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atan.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=atan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atan2.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atan2.run
new file mode 100644
index 0000000..e0a7f3b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atan2.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=atan2 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atanh.run
new file mode 100644
index 0000000..708c723
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i0.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i0.run
new file mode 100644
index 0000000..07344be
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i0.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=bessel_i0 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i0e.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i0e.run
new file mode 100644
index 0000000..600241b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i0e.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=bessel_i0e -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i1.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i1.run
new file mode 100644
index 0000000..01d7fff
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i1.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=bessel_i1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i1e.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i1e.run
new file mode 100644
index 0000000..278ecd1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bessel_i1e.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=bessel_i1e -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_betainc.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_betainc.run
new file mode 100644
index 0000000..ab8799e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_betainc.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=betainc -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bincount.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bincount.run
new file mode 100644
index 0000000..10fa8c6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_bincount.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=bincount -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_ceil.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_ceil.run
new file mode 100644
index 0000000..31d0ce4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_ceil.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=ceil -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_confusion_matrix.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_confusion_matrix.run
new file mode 100644
index 0000000..d418f5e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_confusion_matrix.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=confusion_matrix -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cos.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cos.run
new file mode 100644
index 0000000..c3f03c0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cosh.run
new file mode 100644
index 0000000..7c0b222
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_count_nonzero.run
new file mode 100644
index 0000000..0dc2d36
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumprod.run
new file mode 100644
index 0000000..ab9b887
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumprod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cumprod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumsum.run
new file mode 100644
index 0000000..a4c1083
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumsum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cumsum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumulative_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumulative_logsumexp.run
new file mode 100644
index 0000000..f18647f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_cumulative_logsumexp.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=cumulative_logsumexp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_digamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_digamma.run
new file mode 100644
index 0000000..3bae0fc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_digamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=digamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_divide.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_divide.run
new file mode 100644
index 0000000..1631b06
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_divide_no_nan.run
new file mode 100644
index 0000000..3c87c50
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_equal.run
new file mode 100644
index 0000000..fbba7f6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erf.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erf.run
new file mode 100644
index 0000000..4cbfdfb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erf.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=erf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erfc.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erfc.run
new file mode 100644
index 0000000..5b51752
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erfc.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=erfc -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erfinv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erfinv.run
new file mode 100644
index 0000000..89f43ce
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_erfinv.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=erfinv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_exp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_exp.run
new file mode 100644
index 0000000..6c17528
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_expm1.run
new file mode 100644
index 0000000..6ad1301
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_expm1.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=expm1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floor.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floor.run
new file mode 100644
index 0000000..2edad60
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floor.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=floor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floordiv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floordiv.run
new file mode 100644
index 0000000..c9215e9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floordiv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=floordiv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floormod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floormod.run
new file mode 100644
index 0000000..4f81edb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_floormod.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=floormod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_greater.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_greater.run
new file mode 100644
index 0000000..56d4bc9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_greater.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=greater -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_greater_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_greater_equal.run
new file mode 100644
index 0000000..f89bab1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_greater_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=greater_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_igamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_igamma.run
new file mode 100644
index 0000000..ba135a3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_igamma.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=igamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_igammac.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_igammac.run
new file mode 100644
index 0000000..3a23ac3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_igammac.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=igammac -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_imag.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_imag.run
new file mode 100644
index 0000000..cd79090
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_in_top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_in_top_k.run
new file mode 100644
index 0000000..b2e3715
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_in_top_k.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=in_top_k -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_invert_permutation.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_invert_permutation.run
new file mode 100644
index 0000000..df563ac
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_invert_permutation.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=invert_permutation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_finite.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_finite.run
new file mode 100644
index 0000000..647e918
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_finite.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=is_finite -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_inf.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_inf.run
new file mode 100644
index 0000000..3bb1704
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_inf.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=is_inf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_nan.run
new file mode 100644
index 0000000..55c997c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=is_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_non_decreasing.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_non_decreasing.run
new file mode 100644
index 0000000..989eb0c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_non_decreasing.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=is_non_decreasing -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_strictly_increasing.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_strictly_increasing.run
new file mode 100644
index 0000000..08a75e9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_is_strictly_increasing.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=is_strictly_increasing -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_lbeta.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_lbeta.run
new file mode 100644
index 0000000..77b8e84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_lbeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=lbeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_less.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_less.run
new file mode 100644
index 0000000..429e24f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_less.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=less -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_less_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_less_equal.run
new file mode 100644
index 0000000..9d8c8fa
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_less_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=less_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_lgamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_lgamma.run
new file mode 100644
index 0000000..a9aac55
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_lgamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=lgamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log.run
new file mode 100644
index 0000000..2c34774
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log1p.run
new file mode 100644
index 0000000..1f42985
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log_sigmoid.run
new file mode 100644
index 0000000..6209e89
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=log_sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log_softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log_softmax.run
new file mode 100644
index 0000000..f78304e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_log_softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=log_softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_and.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_and.run
new file mode 100644
index 0000000..ce6cf2a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_and.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=logical_and -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_not.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_not.run
new file mode 100644
index 0000000..92339ed
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_not.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=logical_not -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_or.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_or.run
new file mode 100644
index 0000000..1034d62
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_or.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=logical_or -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_xor.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_xor.run
new file mode 100644
index 0000000..2e8ed9f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_logical_xor.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=logical_xor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_maximum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_maximum.run
new file mode 100644
index 0000000..73dcb0e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_minimum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_minimum.run
new file mode 100644
index 0000000..22394b4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_mod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_mod.run
new file mode 100644
index 0000000..0adfb14
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_mod.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=mod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_multiply.run
new file mode 100644
index 0000000..0a00e33
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_multiply_no_nan.run
new file mode 100644
index 0000000..8bbd4da
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_ndtri.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_ndtri.run
new file mode 100644
index 0000000..e0e722c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_ndtri.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=ndtri -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_negative.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_negative.run
new file mode 100644
index 0000000..fddaf44
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_nextafter.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_nextafter.run
new file mode 100644
index 0000000..ebe37cb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_nextafter.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=nextafter -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_not_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_not_equal.run
new file mode 100644
index 0000000..86ea80b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_not_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=not_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_polygamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_polygamma.run
new file mode 100644
index 0000000..8387ae3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_polygamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=polygamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_polyval.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_polyval.run
new file mode 100644
index 0000000..77d0235
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_polyval.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=polyval -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_pow.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_pow.run
new file mode 100644
index 0000000..6dc54f0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_real.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_real.run
new file mode 100644
index 0000000..67d80e6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_real.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reciprocal.run
new file mode 100644
index 0000000..dd103cc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reciprocal_no_nan.run
new file mode 100644
index 0000000..4c895cd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_all.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_all.run
new file mode 100644
index 0000000..93cbb1b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_all.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_all -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_any.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_any.run
new file mode 100644
index 0000000..3c092c4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_any.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_any -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_euclidean_norm.run
new file mode 100644
index 0000000..67c59f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_euclidean_norm -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_logsumexp.run
new file mode 100644
index 0000000..1fcb0ab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_logsumexp.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_logsumexp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_max.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_max.run
new file mode 100644
index 0000000..c437010
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_max.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_mean.run
new file mode 100644
index 0000000..1cfde11
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_mean.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_min.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_min.run
new file mode 100644
index 0000000..f1d934c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_min.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_prod.run
new file mode 100644
index 0000000..c03a281
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_prod.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_std.run
new file mode 100644
index 0000000..b942bd9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_std.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_std -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_sum.run
new file mode 100644
index 0000000..c7c62f1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_sum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_variance.run
new file mode 100644
index 0000000..fe136e7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_reduce_variance.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=reduce_variance -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_rint.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_rint.run
new file mode 100644
index 0000000..302f8bf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_rint.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=rint -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_round.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_round.run
new file mode 100644
index 0000000..c0048d7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_round.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=round -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_rsqrt.run
new file mode 100644
index 0000000..4262892
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_scalar_mul.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_scalar_mul.run
new file mode 100644
index 0000000..2034949
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_scalar_mul.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=scalar_mul -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_max.run
new file mode 100644
index 0000000..c8a8309
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_max.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=segment_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_mean.run
new file mode 100644
index 0000000..e2a9d66
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_mean.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=segment_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_min.run
new file mode 100644
index 0000000..1e84284
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_min.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=segment_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_prod.run
new file mode 100644
index 0000000..c7ff057
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_prod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=segment_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_sum.run
new file mode 100644
index 0000000..8813403
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_segment_sum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=segment_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sigmoid.run
new file mode 100644
index 0000000..2b630fc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sign.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sign.run
new file mode 100644
index 0000000..227423d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sign.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sin.run
new file mode 100644
index 0000000..0a74636
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sinh.run
new file mode 100644
index 0000000..f147a71
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sobol_sample.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sobol_sample.run
new file mode 100644
index 0000000..3949456
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sobol_sample.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sobol_sample -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softmax.run
new file mode 100644
index 0000000..d324b1b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softplus.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softplus.run
new file mode 100644
index 0000000..bd30916
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softplus.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=softplus -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softsign.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softsign.run
new file mode 100644
index 0000000..01f658e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_softsign.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=softsign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sqrt.run
new file mode 100644
index 0000000..6d3fcec
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_square.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_square.run
new file mode 100644
index 0000000..23f834a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_square.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_squared_difference.run
new file mode 100644
index 0000000..966e9f9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_subtract.run
new file mode 100644
index 0000000..c685905
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_tan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_tan.run
new file mode 100644
index 0000000..51fe0ed
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_tanh.run
new file mode 100644
index 0000000..861f26f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_top_k.run
new file mode 100644
index 0000000..22aa96c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_top_k.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=top_k -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_truediv.run
new file mode 100644
index 0000000..b80763a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_max.run
new file mode 100644
index 0000000..6d69389
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_max.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=unsorted_segment_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_mean.run
new file mode 100644
index 0000000..ef3442b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_mean.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=unsorted_segment_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_min.run
new file mode 100644
index 0000000..28690c9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_min.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=unsorted_segment_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_prod.run
new file mode 100644
index 0000000..817a9ef
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_prod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=unsorted_segment_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_sqrt_n.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_sqrt_n.run
new file mode 100644
index 0000000..c375da0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_sqrt_n.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=unsorted_segment_sqrt_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_sum.run
new file mode 100644
index 0000000..00e7f84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_unsorted_segment_sum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=unsorted_segment_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xdivy.run
new file mode 100644
index 0000000..c5007f0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xlog1py.run
new file mode 100644
index 0000000..f12709b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xlogy.run
new file mode 100644
index 0000000..9b29402
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_zero_fraction.run
new file mode 100644
index 0000000..18f1e82
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_zero_fraction.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=zero_fraction -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_zeta.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_zeta.run
new file mode 100644
index 0000000..78c89ad
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__dynamic_dim_zeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=true --functions=zeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__equal.run
new file mode 100644
index 0000000..8380a86
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erf.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erf.run
new file mode 100644
index 0000000..5994b47
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erf.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=erf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erfc.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erfc.run
new file mode 100644
index 0000000..1adf9e1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erfc.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=erfc -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erfinv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erfinv.run
new file mode 100644
index 0000000..90cc920
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__erfinv.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=erfinv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__exp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__exp.run
new file mode 100644
index 0000000..9f32c1e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__expm1.run
new file mode 100644
index 0000000..0fb7f8f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__expm1.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=expm1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floor.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floor.run
new file mode 100644
index 0000000..585dfc9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floor.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=floor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floordiv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floordiv.run
new file mode 100644
index 0000000..8965727
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floordiv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=floordiv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floormod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floormod.run
new file mode 100644
index 0000000..20b4099
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__floormod.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=floormod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__greater.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__greater.run
new file mode 100644
index 0000000..f3c54df
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__greater.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=greater -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__greater_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__greater_equal.run
new file mode 100644
index 0000000..a2d7846
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__greater_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=greater_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__igamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__igamma.run
new file mode 100644
index 0000000..bfb069b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__igamma.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=igamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__igammac.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__igammac.run
new file mode 100644
index 0000000..03d33ea
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__igammac.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=igammac -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__imag.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__imag.run
new file mode 100644
index 0000000..36b113f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__in_top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__in_top_k.run
new file mode 100644
index 0000000..b2f93d5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__in_top_k.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=in_top_k -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__invert_permutation.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__invert_permutation.run
new file mode 100644
index 0000000..fc71045
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__invert_permutation.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=invert_permutation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_finite.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_finite.run
new file mode 100644
index 0000000..a952c95
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_finite.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=is_finite -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_inf.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_inf.run
new file mode 100644
index 0000000..d011a17
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_inf.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=is_inf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_nan.run
new file mode 100644
index 0000000..61a7173
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=is_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_non_decreasing.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_non_decreasing.run
new file mode 100644
index 0000000..2ce27d0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_non_decreasing.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=is_non_decreasing -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_strictly_increasing.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_strictly_increasing.run
new file mode 100644
index 0000000..f6e6c4f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__is_strictly_increasing.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=is_strictly_increasing -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__lbeta.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__lbeta.run
new file mode 100644
index 0000000..27d332c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__lbeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=lbeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__less.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__less.run
new file mode 100644
index 0000000..64241cb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__less.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=less -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__less_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__less_equal.run
new file mode 100644
index 0000000..84b0a84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__less_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=less_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__lgamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__lgamma.run
new file mode 100644
index 0000000..0694e91
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__lgamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=lgamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log.run
new file mode 100644
index 0000000..95ebce9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log1p.run
new file mode 100644
index 0000000..5fd517b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log_sigmoid.run
new file mode 100644
index 0000000..2b6b88c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=log_sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log_softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log_softmax.run
new file mode 100644
index 0000000..23a104f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__log_softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=log_softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_and.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_and.run
new file mode 100644
index 0000000..44ad26b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_and.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=logical_and -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_not.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_not.run
new file mode 100644
index 0000000..84de67c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_not.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=logical_not -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_or.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_or.run
new file mode 100644
index 0000000..15a4ef6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_or.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=logical_or -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_xor.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_xor.run
new file mode 100644
index 0000000..6d34d6d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__logical_xor.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=logical_xor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__maximum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__maximum.run
new file mode 100644
index 0000000..48d0f1b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__minimum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__minimum.run
new file mode 100644
index 0000000..823e4c7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__mod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__mod.run
new file mode 100644
index 0000000..6e7b061
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__mod.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=mod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__multiply.run
new file mode 100644
index 0000000..83732de
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__multiply_no_nan.run
new file mode 100644
index 0000000..55677cb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__ndtri.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__ndtri.run
new file mode 100644
index 0000000..001a15d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__ndtri.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=ndtri -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__negative.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__negative.run
new file mode 100644
index 0000000..38906fe
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__nextafter.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__nextafter.run
new file mode 100644
index 0000000..a4d3fc6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__nextafter.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=nextafter -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__not_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__not_equal.run
new file mode 100644
index 0000000..d921e9d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__not_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=not_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__polygamma.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__polygamma.run
new file mode 100644
index 0000000..a529ecb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__polygamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=polygamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__polyval.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__polyval.run
new file mode 100644
index 0000000..592d66b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__polyval.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=polyval -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__pow.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__pow.run
new file mode 100644
index 0000000..5e30556
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__real.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__real.run
new file mode 100644
index 0000000..467d97a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__real.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reciprocal.run
new file mode 100644
index 0000000..c5d12ff
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reciprocal_no_nan.run
new file mode 100644
index 0000000..a597c2d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_all.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_all.run
new file mode 100644
index 0000000..b8ccb5f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_all.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_all -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_any.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_any.run
new file mode 100644
index 0000000..d0c3113
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_any.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_any -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_euclidean_norm.run
new file mode 100644
index 0000000..220e27b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_euclidean_norm -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_logsumexp.run
new file mode 100644
index 0000000..bff8988
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_logsumexp.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_logsumexp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_max.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_max.run
new file mode 100644
index 0000000..c9b43ce
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_max.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_mean.run
new file mode 100644
index 0000000..1d3b569
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_mean.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_min.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_min.run
new file mode 100644
index 0000000..b32af5d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_min.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_prod.run
new file mode 100644
index 0000000..9932922
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_prod.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_std.run
new file mode 100644
index 0000000..2f06dfd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_std.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_std -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_sum.run
new file mode 100644
index 0000000..d083f59
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_sum.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_variance.run
new file mode 100644
index 0000000..5a7b5ab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__reduce_variance.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=reduce_variance -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__rint.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__rint.run
new file mode 100644
index 0000000..5fd769f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__rint.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=rint -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__round.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__round.run
new file mode 100644
index 0000000..d00f916
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__round.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=round -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__rsqrt.run
new file mode 100644
index 0000000..e810354
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__scalar_mul.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__scalar_mul.run
new file mode 100644
index 0000000..8bf5364
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__scalar_mul.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=scalar_mul -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_max.run
new file mode 100644
index 0000000..52c8e28
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_max.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=segment_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_mean.run
new file mode 100644
index 0000000..d6f5cc0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_mean.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=segment_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_min.run
new file mode 100644
index 0000000..f50a6da
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_min.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=segment_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_prod.run
new file mode 100644
index 0000000..ce5b29e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_prod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=segment_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_sum.run
new file mode 100644
index 0000000..630c313
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__segment_sum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=segment_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sigmoid.run
new file mode 100644
index 0000000..a46ec12
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sign.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sign.run
new file mode 100644
index 0000000..a47cfc2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sign.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sin.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sin.run
new file mode 100644
index 0000000..227cf83
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sinh.run
new file mode 100644
index 0000000..e349354
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sobol_sample.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sobol_sample.run
new file mode 100644
index 0000000..cadb517
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sobol_sample.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sobol_sample -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softmax.run
new file mode 100644
index 0000000..993faa8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softplus.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softplus.run
new file mode 100644
index 0000000..a8cb325
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softplus.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=softplus -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softsign.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softsign.run
new file mode 100644
index 0000000..903c979
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__softsign.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=softsign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sqrt.run
new file mode 100644
index 0000000..37372e8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__square.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__square.run
new file mode 100644
index 0000000..471caf3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__square.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__squared_difference.run
new file mode 100644
index 0000000..2bf925b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__subtract.run
new file mode 100644
index 0000000..933106f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__tan.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__tan.run
new file mode 100644
index 0000000..3e628fc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__tanh.run
new file mode 100644
index 0000000..1228997
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__top_k.run
new file mode 100644
index 0000000..4f29fe3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__top_k.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=top_k -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__truediv.run
new file mode 100644
index 0000000..25a6224
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_max.run
new file mode 100644
index 0000000..33760d8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_max.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=unsorted_segment_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_mean.run
new file mode 100644
index 0000000..61e388f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_mean.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=unsorted_segment_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_min.run
new file mode 100644
index 0000000..204c3fd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_min.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=unsorted_segment_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_prod.run
new file mode 100644
index 0000000..43d74d5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_prod.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=unsorted_segment_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_sqrt_n.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_sqrt_n.run
new file mode 100644
index 0000000..30fd325
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_sqrt_n.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=unsorted_segment_sqrt_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_sum.run
new file mode 100644
index 0000000..287ce7b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__unsorted_segment_sum.run
@@ -0,0 +1,3 @@
+# XFAIL: *
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=unsorted_segment_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xdivy.run
new file mode 100644
index 0000000..858b45e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xlog1py.run
new file mode 100644
index 0000000..504787c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xlogy.run
new file mode 100644
index 0000000..077df5e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__zero_fraction.run
new file mode 100644
index 0000000..a02b744
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__zero_fraction.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=zero_fraction -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__zeta.run b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__zeta.run
new file mode 100644
index 0000000..bd9ae4c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/llvmaot__zeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_llvmaot --dynamic_dims=false --functions=zeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__abs.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__abs.run
new file mode 100644
index 0000000..02acca3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__accumulate_n.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__accumulate_n.run
new file mode 100644
index 0000000..6489425
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__accumulate_n.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=accumulate_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__acos.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__acos.run
new file mode 100644
index 0000000..ccb07e8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__acos.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=acos -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__acosh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__acosh.run
new file mode 100644
index 0000000..6f99b55
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__acosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=acosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__add.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__add.run
new file mode 100644
index 0000000..90d5e84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__add.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__add_n.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__add_n.run
new file mode 100644
index 0000000..21bfe78
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__add_n.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=add_n -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__angle.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__angle.run
new file mode 100644
index 0000000..d9299ef
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__argmax.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__argmax.run
new file mode 100644
index 0000000..2c7b5a8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__argmax.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=argmax -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__argmin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__argmin.run
new file mode 100644
index 0000000..0693ebb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__argmin.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=argmin -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__asin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__asin.run
new file mode 100644
index 0000000..6d7746e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__asin.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=asin -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__asinh.run
new file mode 100644
index 0000000..7b3ee42
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__asinh.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=asinh -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atan.run
new file mode 100644
index 0000000..61615b1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atan.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=atan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atan2.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atan2.run
new file mode 100644
index 0000000..fd44c66
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atan2.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=atan2 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atanh.run
new file mode 100644
index 0000000..7485c77
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i0.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i0.run
new file mode 100644
index 0000000..0d6661f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i0.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=bessel_i0 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i0e.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i0e.run
new file mode 100644
index 0000000..8fafded
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i0e.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=bessel_i0e -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i1.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i1.run
new file mode 100644
index 0000000..5f1e908
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i1.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=bessel_i1 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i1e.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i1e.run
new file mode 100644
index 0000000..8bfe832
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bessel_i1e.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=bessel_i1e -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__betainc.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__betainc.run
new file mode 100644
index 0000000..ef57fe5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__betainc.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=betainc -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bincount.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bincount.run
new file mode 100644
index 0000000..ab98069
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__bincount.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=bincount -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__ceil.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__ceil.run
new file mode 100644
index 0000000..9ae2435
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__ceil.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=ceil -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_abs.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_abs.run
new file mode 100644
index 0000000..02acca3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_add.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_add.run
new file mode 100644
index 0000000..90d5e84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_add.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_angle.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_angle.run
new file mode 100644
index 0000000..d9299ef
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_asinh.run
new file mode 100644
index 0000000..7b3ee42
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_asinh.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=asinh -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_atanh.run
new file mode 100644
index 0000000..7485c77
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_conj.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_conj.run
new file mode 100644
index 0000000..f924a0d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_conj.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=conj -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cos.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cos.run
new file mode 100644
index 0000000..9a8c0f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cosh.run
new file mode 100644
index 0000000..3ed9584
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_count_nonzero.run
new file mode 100644
index 0000000..91fdd16
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cumprod.run
new file mode 100644
index 0000000..475bb85
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cumprod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cumprod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cumsum.run
new file mode 100644
index 0000000..4d7daab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_cumsum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cumsum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_divide.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_divide.run
new file mode 100644
index 0000000..4417b12
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_divide_no_nan.run
new file mode 100644
index 0000000..945205d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_abs.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_abs.run
new file mode 100644
index 0000000..c9ca13e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_add.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_add.run
new file mode 100644
index 0000000..3c9c223
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_add.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_angle.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_angle.run
new file mode 100644
index 0000000..8b859c4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_asinh.run
new file mode 100644
index 0000000..1d0ef06
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_asinh.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=asinh -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_atanh.run
new file mode 100644
index 0000000..c2c717e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_conj.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_conj.run
new file mode 100644
index 0000000..73b4409
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_conj.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=conj -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cos.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cos.run
new file mode 100644
index 0000000..8e0694b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cosh.run
new file mode 100644
index 0000000..2fe2b46
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_count_nonzero.run
new file mode 100644
index 0000000..5c4bdb2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cumprod.run
new file mode 100644
index 0000000..20fea57
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cumprod.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cumprod -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cumsum.run
new file mode 100644
index 0000000..832fa61
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_cumsum.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cumsum -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_divide.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_divide.run
new file mode 100644
index 0000000..f1c818f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_divide_no_nan.run
new file mode 100644
index 0000000..de338aa
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_exp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_exp.run
new file mode 100644
index 0000000..e756626
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_expm1.run
new file mode 100644
index 0000000..27b6bb1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_expm1.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=expm1 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_imag.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_imag.run
new file mode 100644
index 0000000..6165e2c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_l2_normalize.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_l2_normalize.run
new file mode 100644
index 0000000..51678d6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_l2_normalize.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=l2_normalize -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_log.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_log.run
new file mode 100644
index 0000000..1407263
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_log.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_log1p.run
new file mode 100644
index 0000000..196593f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_multiply.run
new file mode 100644
index 0000000..9ab3a0b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_multiply_no_nan.run
new file mode 100644
index 0000000..2294deb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_negative.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_negative.run
new file mode 100644
index 0000000..dac6c4d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_pow.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_pow.run
new file mode 100644
index 0000000..1e6ca55
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_real.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_real.run
new file mode 100644
index 0000000..f5f81c0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_real.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reciprocal.run
new file mode 100644
index 0000000..595b726
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reciprocal_no_nan.run
new file mode 100644
index 0000000..c126f98
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_euclidean_norm.run
new file mode 100644
index 0000000..a6f6122
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_euclidean_norm -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_std.run
new file mode 100644
index 0000000..f711012
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_std.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_std -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_variance.run
new file mode 100644
index 0000000..86df659
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_reduce_variance.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_variance -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_rsqrt.run
new file mode 100644
index 0000000..10c81fe
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sigmoid.run
new file mode 100644
index 0000000..c1b6c44
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sign.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sign.run
new file mode 100644
index 0000000..64c6765
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sign.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sign -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sin.run
new file mode 100644
index 0000000..37efdee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sinh.run
new file mode 100644
index 0000000..4d38a14
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sqrt.run
new file mode 100644
index 0000000..dce882d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_square.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_square.run
new file mode 100644
index 0000000..ac26351
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_square.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_squared_difference.run
new file mode 100644
index 0000000..442fdf8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_subtract.run
new file mode 100644
index 0000000..2722a2b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_tan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_tan.run
new file mode 100644
index 0000000..5967a56
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_tanh.run
new file mode 100644
index 0000000..2066d95
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_truediv.run
new file mode 100644
index 0000000..5eb3a8d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xdivy.run
new file mode 100644
index 0000000..e07e28a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xlog1py.run
new file mode 100644
index 0000000..51010b9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xlogy.run
new file mode 100644
index 0000000..423c912
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_zero_fraction.run
new file mode 100644
index 0000000..a5541cb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_dynamic_dim_zero_fraction.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=zero_fraction -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_exp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_exp.run
new file mode 100644
index 0000000..b466878
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_expm1.run
new file mode 100644
index 0000000..0fed766
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_expm1.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=expm1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_imag.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_imag.run
new file mode 100644
index 0000000..a3eff58
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_l2_normalize.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_l2_normalize.run
new file mode 100644
index 0000000..0ee8322
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_l2_normalize.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=l2_normalize -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_log.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_log.run
new file mode 100644
index 0000000..03f5a95
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_log.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_log1p.run
new file mode 100644
index 0000000..90610ee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_multiply.run
new file mode 100644
index 0000000..d5a555b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_multiply_no_nan.run
new file mode 100644
index 0000000..3399838
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_negative.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_negative.run
new file mode 100644
index 0000000..c854542
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_pow.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_pow.run
new file mode 100644
index 0000000..ea743b8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_real.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_real.run
new file mode 100644
index 0000000..962b3a6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_real.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reciprocal.run
new file mode 100644
index 0000000..5758648
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reciprocal_no_nan.run
new file mode 100644
index 0000000..8e5a1f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_euclidean_norm.run
new file mode 100644
index 0000000..6d4c8bf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_euclidean_norm -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_std.run
new file mode 100644
index 0000000..3da275d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_std.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_std -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_variance.run
new file mode 100644
index 0000000..4b32041
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_reduce_variance.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_variance -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_rsqrt.run
new file mode 100644
index 0000000..977c27f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sigmoid.run
new file mode 100644
index 0000000..c48c882
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sign.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sign.run
new file mode 100644
index 0000000..645622b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sign.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sign -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sin.run
new file mode 100644
index 0000000..06eb77f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sinh.run
new file mode 100644
index 0000000..4f21985
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sqrt.run
new file mode 100644
index 0000000..984ac2b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_square.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_square.run
new file mode 100644
index 0000000..aa2683d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_square.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_squared_difference.run
new file mode 100644
index 0000000..a252051
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_subtract.run
new file mode 100644
index 0000000..c6f36ee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_tan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_tan.run
new file mode 100644
index 0000000..7972d2b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_tanh.run
new file mode 100644
index 0000000..4dd5203
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_truediv.run
new file mode 100644
index 0000000..11d5a80
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xdivy.run
new file mode 100644
index 0000000..8b1a188
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xlog1py.run
new file mode 100644
index 0000000..36c5904
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xlogy.run
new file mode 100644
index 0000000..28e5a12
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_zero_fraction.run
new file mode 100644
index 0000000..4c6d4d0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__complex_zero_fraction.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=zero_fraction -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__confusion_matrix.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__confusion_matrix.run
new file mode 100644
index 0000000..4610857
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__confusion_matrix.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=confusion_matrix -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cos.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cos.run
new file mode 100644
index 0000000..9a8c0f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cosh.run
new file mode 100644
index 0000000..3ed9584
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__count_nonzero.run
new file mode 100644
index 0000000..91fdd16
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumprod.run
new file mode 100644
index 0000000..475bb85
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumprod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cumprod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumsum.run
new file mode 100644
index 0000000..4d7daab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumsum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cumsum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumulative_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumulative_logsumexp.run
new file mode 100644
index 0000000..c88bd5c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__cumulative_logsumexp.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=cumulative_logsumexp -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__digamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__digamma.run
new file mode 100644
index 0000000..1906c47
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__digamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=digamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__divide.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__divide.run
new file mode 100644
index 0000000..4417b12
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__divide_no_nan.run
new file mode 100644
index 0000000..945205d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_abs.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_abs.run
new file mode 100644
index 0000000..c9ca13e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_abs.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=abs -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_accumulate_n.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_accumulate_n.run
new file mode 100644
index 0000000..c16d665
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_accumulate_n.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=accumulate_n -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_acos.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_acos.run
new file mode 100644
index 0000000..8e9bc65
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_acos.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=acos -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_acosh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_acosh.run
new file mode 100644
index 0000000..d7013de
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_acosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=acosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_add.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_add.run
new file mode 100644
index 0000000..3c9c223
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_add.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=add -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_add_n.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_add_n.run
new file mode 100644
index 0000000..7d4810c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_add_n.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=add_n -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_angle.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_angle.run
new file mode 100644
index 0000000..8b859c4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_angle.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=angle -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_argmax.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_argmax.run
new file mode 100644
index 0000000..10da3bf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_argmax.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=argmax -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_argmin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_argmin.run
new file mode 100644
index 0000000..31d8e72
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_argmin.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=argmin -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_asin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_asin.run
new file mode 100644
index 0000000..a02e877
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_asin.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=asin -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_asinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_asinh.run
new file mode 100644
index 0000000..1d0ef06
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_asinh.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=asinh -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atan.run
new file mode 100644
index 0000000..647f0f4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atan.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=atan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atan2.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atan2.run
new file mode 100644
index 0000000..efddc8e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atan2.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=atan2 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atanh.run
new file mode 100644
index 0000000..c2c717e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_atanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=atanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i0.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i0.run
new file mode 100644
index 0000000..e7db85a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i0.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=bessel_i0 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i0e.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i0e.run
new file mode 100644
index 0000000..2c31e4c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i0e.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=bessel_i0e -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i1.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i1.run
new file mode 100644
index 0000000..f0c2761
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i1.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=bessel_i1 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i1e.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i1e.run
new file mode 100644
index 0000000..27b2df7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bessel_i1e.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=bessel_i1e -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_betainc.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_betainc.run
new file mode 100644
index 0000000..98d588a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_betainc.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=betainc -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bincount.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bincount.run
new file mode 100644
index 0000000..15995b4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_bincount.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=bincount -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_ceil.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_ceil.run
new file mode 100644
index 0000000..ecbe5e5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_ceil.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=ceil -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_confusion_matrix.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_confusion_matrix.run
new file mode 100644
index 0000000..dce7460
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_confusion_matrix.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=confusion_matrix -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cos.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cos.run
new file mode 100644
index 0000000..8e0694b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cos.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cos -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cosh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cosh.run
new file mode 100644
index 0000000..2fe2b46
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cosh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cosh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_count_nonzero.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_count_nonzero.run
new file mode 100644
index 0000000..5c4bdb2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_count_nonzero.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=count_nonzero -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumprod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumprod.run
new file mode 100644
index 0000000..20fea57
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumprod.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cumprod -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumsum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumsum.run
new file mode 100644
index 0000000..832fa61
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumsum.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cumsum -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumulative_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumulative_logsumexp.run
new file mode 100644
index 0000000..7fe6310
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_cumulative_logsumexp.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=cumulative_logsumexp -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_digamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_digamma.run
new file mode 100644
index 0000000..345dbd5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_digamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=digamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_divide.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_divide.run
new file mode 100644
index 0000000..f1c818f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_divide.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=divide -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_divide_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_divide_no_nan.run
new file mode 100644
index 0000000..de338aa
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_divide_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=divide_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_equal.run
new file mode 100644
index 0000000..63ecdc6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erf.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erf.run
new file mode 100644
index 0000000..32b0b76
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erf.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=erf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erfc.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erfc.run
new file mode 100644
index 0000000..a0e4437
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erfc.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=erfc -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erfinv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erfinv.run
new file mode 100644
index 0000000..4eb0457
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_erfinv.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=erfinv -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_exp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_exp.run
new file mode 100644
index 0000000..e756626
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_expm1.run
new file mode 100644
index 0000000..27b6bb1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_expm1.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=expm1 -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floor.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floor.run
new file mode 100644
index 0000000..7466679
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floor.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=floor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floordiv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floordiv.run
new file mode 100644
index 0000000..cee3817
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floordiv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=floordiv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floormod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floormod.run
new file mode 100644
index 0000000..1491510
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_floormod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=floormod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_greater.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_greater.run
new file mode 100644
index 0000000..6edb7cd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_greater.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=greater -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_greater_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_greater_equal.run
new file mode 100644
index 0000000..087ecc5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_greater_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=greater_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_igamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_igamma.run
new file mode 100644
index 0000000..1a729f8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_igamma.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=igamma -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_igammac.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_igammac.run
new file mode 100644
index 0000000..2d00c27
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_igammac.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=igammac -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_imag.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_imag.run
new file mode 100644
index 0000000..6165e2c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_in_top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_in_top_k.run
new file mode 100644
index 0000000..7dac748
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_in_top_k.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=in_top_k -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_invert_permutation.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_invert_permutation.run
new file mode 100644
index 0000000..dbb0c8b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_invert_permutation.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=invert_permutation -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_finite.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_finite.run
new file mode 100644
index 0000000..93a31fd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_finite.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=is_finite -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_inf.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_inf.run
new file mode 100644
index 0000000..fc4af0f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_inf.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=is_inf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_nan.run
new file mode 100644
index 0000000..8b1e755
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=is_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_non_decreasing.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_non_decreasing.run
new file mode 100644
index 0000000..01e0f44
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_non_decreasing.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=is_non_decreasing -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_strictly_increasing.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_strictly_increasing.run
new file mode 100644
index 0000000..4d184be
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_is_strictly_increasing.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=is_strictly_increasing -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_lbeta.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_lbeta.run
new file mode 100644
index 0000000..9be0147
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_lbeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=lbeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_less.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_less.run
new file mode 100644
index 0000000..2d38edb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_less.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=less -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_less_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_less_equal.run
new file mode 100644
index 0000000..7ae361e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_less_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=less_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_lgamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_lgamma.run
new file mode 100644
index 0000000..e0f65dd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_lgamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=lgamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log.run
new file mode 100644
index 0000000..1407263
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log1p.run
new file mode 100644
index 0000000..196593f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log_sigmoid.run
new file mode 100644
index 0000000..27c1177
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=log_sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log_softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log_softmax.run
new file mode 100644
index 0000000..5e98b97
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_log_softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=log_softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_and.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_and.run
new file mode 100644
index 0000000..a9a425a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_and.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=logical_and -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_not.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_not.run
new file mode 100644
index 0000000..7769c5c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_not.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=logical_not -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_or.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_or.run
new file mode 100644
index 0000000..2f0c4b8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_or.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=logical_or -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_xor.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_xor.run
new file mode 100644
index 0000000..e50c79e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_logical_xor.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=logical_xor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_maximum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_maximum.run
new file mode 100644
index 0000000..2280232
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_minimum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_minimum.run
new file mode 100644
index 0000000..3ed272c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_mod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_mod.run
new file mode 100644
index 0000000..cd8e4c9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_mod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=mod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_multiply.run
new file mode 100644
index 0000000..9ab3a0b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_multiply_no_nan.run
new file mode 100644
index 0000000..2294deb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_ndtri.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_ndtri.run
new file mode 100644
index 0000000..7930854
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_ndtri.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=ndtri -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_negative.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_negative.run
new file mode 100644
index 0000000..dac6c4d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_nextafter.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_nextafter.run
new file mode 100644
index 0000000..b83ff2a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_nextafter.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=nextafter -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_not_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_not_equal.run
new file mode 100644
index 0000000..7f4e158
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_not_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=not_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_polygamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_polygamma.run
new file mode 100644
index 0000000..26ea2ea
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_polygamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=polygamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_polyval.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_polyval.run
new file mode 100644
index 0000000..cae0508
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_polyval.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=polyval -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_pow.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_pow.run
new file mode 100644
index 0000000..1e6ca55
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_real.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_real.run
new file mode 100644
index 0000000..f5f81c0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_real.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reciprocal.run
new file mode 100644
index 0000000..595b726
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reciprocal_no_nan.run
new file mode 100644
index 0000000..c126f98
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_all.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_all.run
new file mode 100644
index 0000000..4a40dfb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_all.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_all -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_any.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_any.run
new file mode 100644
index 0000000..b4775ab
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_any.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_any -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_euclidean_norm.run
new file mode 100644
index 0000000..a6f6122
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_euclidean_norm -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_logsumexp.run
new file mode 100644
index 0000000..34f48df
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_logsumexp.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_logsumexp -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_max.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_max.run
new file mode 100644
index 0000000..90873eb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_max.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_mean.run
new file mode 100644
index 0000000..3c39588
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_mean.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_mean -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_min.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_min.run
new file mode 100644
index 0000000..4a96e88
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_min.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_prod.run
new file mode 100644
index 0000000..d58114b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_prod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_std.run
new file mode 100644
index 0000000..f711012
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_std.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_std -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_sum.run
new file mode 100644
index 0000000..5bbc3d3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_sum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_variance.run
new file mode 100644
index 0000000..86df659
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_reduce_variance.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=reduce_variance -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_rint.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_rint.run
new file mode 100644
index 0000000..dad3f99
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_rint.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=rint -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_round.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_round.run
new file mode 100644
index 0000000..5f1dfae
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_round.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=round -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_rsqrt.run
new file mode 100644
index 0000000..10c81fe
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_scalar_mul.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_scalar_mul.run
new file mode 100644
index 0000000..f8c6748
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_scalar_mul.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=scalar_mul -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_max.run
new file mode 100644
index 0000000..a2561fa
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_max.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=segment_max -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_mean.run
new file mode 100644
index 0000000..ec277d8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_mean.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=segment_mean -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_min.run
new file mode 100644
index 0000000..ec53c8f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_min.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=segment_min -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_prod.run
new file mode 100644
index 0000000..fdee7e7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_prod.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=segment_prod -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_sum.run
new file mode 100644
index 0000000..843d36f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_segment_sum.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=segment_sum -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sigmoid.run
new file mode 100644
index 0000000..c1b6c44
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sign.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sign.run
new file mode 100644
index 0000000..64c6765
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sign.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sign -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sin.run
new file mode 100644
index 0000000..37efdee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sinh.run
new file mode 100644
index 0000000..4d38a14
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sobol_sample.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sobol_sample.run
new file mode 100644
index 0000000..9f2afbb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sobol_sample.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sobol_sample -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softmax.run
new file mode 100644
index 0000000..40080fe
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softplus.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softplus.run
new file mode 100644
index 0000000..8d3bf84
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softplus.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=softplus -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softsign.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softsign.run
new file mode 100644
index 0000000..8c697c5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_softsign.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=softsign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sqrt.run
new file mode 100644
index 0000000..dce882d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_square.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_square.run
new file mode 100644
index 0000000..ac26351
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_square.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_squared_difference.run
new file mode 100644
index 0000000..442fdf8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_subtract.run
new file mode 100644
index 0000000..2722a2b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_tan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_tan.run
new file mode 100644
index 0000000..5967a56
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_tanh.run
new file mode 100644
index 0000000..2066d95
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_top_k.run
new file mode 100644
index 0000000..ff42a97
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_top_k.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=top_k -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_truediv.run
new file mode 100644
index 0000000..5eb3a8d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_max.run
new file mode 100644
index 0000000..4740ba1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_max.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=unsorted_segment_max -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_mean.run
new file mode 100644
index 0000000..8ee909c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_mean.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=unsorted_segment_mean -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_min.run
new file mode 100644
index 0000000..31103c9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_min.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=unsorted_segment_min -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_prod.run
new file mode 100644
index 0000000..02de9f9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_prod.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=unsorted_segment_prod -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_sqrt_n.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_sqrt_n.run
new file mode 100644
index 0000000..8ff8981
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_sqrt_n.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=unsorted_segment_sqrt_n -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_sum.run
new file mode 100644
index 0000000..01519b3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_unsorted_segment_sum.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=unsorted_segment_sum -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xdivy.run
new file mode 100644
index 0000000..e07e28a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xlog1py.run
new file mode 100644
index 0000000..51010b9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xlogy.run
new file mode 100644
index 0000000..423c912
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_zero_fraction.run
new file mode 100644
index 0000000..a5541cb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_zero_fraction.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=zero_fraction -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_zeta.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_zeta.run
new file mode 100644
index 0000000..fc02c95
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__dynamic_dim_zeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=true --functions=zeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__equal.run
new file mode 100644
index 0000000..db1ed03
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erf.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erf.run
new file mode 100644
index 0000000..930b0dd
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erf.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=erf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erfc.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erfc.run
new file mode 100644
index 0000000..2bb782d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erfc.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=erfc -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erfinv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erfinv.run
new file mode 100644
index 0000000..03f6074
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__erfinv.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=erfinv -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__exp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__exp.run
new file mode 100644
index 0000000..b466878
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__exp.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=exp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__expm1.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__expm1.run
new file mode 100644
index 0000000..0fed766
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__expm1.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=expm1 -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floor.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floor.run
new file mode 100644
index 0000000..f48eda0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floor.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=floor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floordiv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floordiv.run
new file mode 100644
index 0000000..3f56600
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floordiv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=floordiv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floormod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floormod.run
new file mode 100644
index 0000000..2a258d5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__floormod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=floormod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__greater.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__greater.run
new file mode 100644
index 0000000..a57a7b5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__greater.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=greater -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__greater_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__greater_equal.run
new file mode 100644
index 0000000..b94cfad
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__greater_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=greater_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__igamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__igamma.run
new file mode 100644
index 0000000..b15975d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__igamma.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=igamma -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__igammac.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__igammac.run
new file mode 100644
index 0000000..d76d490
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__igammac.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=igammac -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__imag.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__imag.run
new file mode 100644
index 0000000..a3eff58
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__imag.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=imag -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__in_top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__in_top_k.run
new file mode 100644
index 0000000..afc1e3b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__in_top_k.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=in_top_k -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__invert_permutation.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__invert_permutation.run
new file mode 100644
index 0000000..a82cb7c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__invert_permutation.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=invert_permutation -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_finite.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_finite.run
new file mode 100644
index 0000000..1bc3b6e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_finite.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=is_finite -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_inf.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_inf.run
new file mode 100644
index 0000000..d083fe6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_inf.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=is_inf -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_nan.run
new file mode 100644
index 0000000..1f6f2d7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=is_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_non_decreasing.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_non_decreasing.run
new file mode 100644
index 0000000..f92965b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_non_decreasing.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=is_non_decreasing -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_strictly_increasing.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_strictly_increasing.run
new file mode 100644
index 0000000..cbebf09
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__is_strictly_increasing.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=is_strictly_increasing -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__lbeta.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__lbeta.run
new file mode 100644
index 0000000..df45319
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__lbeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=lbeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__less.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__less.run
new file mode 100644
index 0000000..b3db132
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__less.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=less -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__less_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__less_equal.run
new file mode 100644
index 0000000..84b85e3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__less_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=less_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__lgamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__lgamma.run
new file mode 100644
index 0000000..39fa196
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__lgamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=lgamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log.run
new file mode 100644
index 0000000..03f5a95
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=log -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log1p.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log1p.run
new file mode 100644
index 0000000..90610ee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log1p.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=log1p -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log_sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log_sigmoid.run
new file mode 100644
index 0000000..e91f573
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log_sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=log_sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log_softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log_softmax.run
new file mode 100644
index 0000000..6de4ab9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__log_softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=log_softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_and.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_and.run
new file mode 100644
index 0000000..49956bb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_and.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=logical_and -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_not.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_not.run
new file mode 100644
index 0000000..1595861
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_not.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=logical_not -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_or.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_or.run
new file mode 100644
index 0000000..95b1406
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_or.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=logical_or -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_xor.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_xor.run
new file mode 100644
index 0000000..da59c0d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__logical_xor.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=logical_xor -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__maximum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__maximum.run
new file mode 100644
index 0000000..0f6f8c2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__maximum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=maximum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__minimum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__minimum.run
new file mode 100644
index 0000000..5810527
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__minimum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=minimum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__mod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__mod.run
new file mode 100644
index 0000000..835deaf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__mod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=mod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__multiply.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__multiply.run
new file mode 100644
index 0000000..d5a555b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__multiply.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=multiply -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__multiply_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__multiply_no_nan.run
new file mode 100644
index 0000000..3399838
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__multiply_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=multiply_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__ndtri.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__ndtri.run
new file mode 100644
index 0000000..202dd1a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__ndtri.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=ndtri -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__negative.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__negative.run
new file mode 100644
index 0000000..c854542
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__negative.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=negative -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__nextafter.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__nextafter.run
new file mode 100644
index 0000000..cacab9f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__nextafter.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=nextafter -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__not_equal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__not_equal.run
new file mode 100644
index 0000000..0f1ea53
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__not_equal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=not_equal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__polygamma.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__polygamma.run
new file mode 100644
index 0000000..1fb9127
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__polygamma.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=polygamma -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__polyval.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__polyval.run
new file mode 100644
index 0000000..3bd783e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__polyval.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=polyval -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__pow.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__pow.run
new file mode 100644
index 0000000..ea743b8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__pow.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=pow -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__real.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__real.run
new file mode 100644
index 0000000..962b3a6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__real.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=real -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reciprocal.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reciprocal.run
new file mode 100644
index 0000000..5758648
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reciprocal.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reciprocal -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reciprocal_no_nan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reciprocal_no_nan.run
new file mode 100644
index 0000000..8e5a1f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reciprocal_no_nan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reciprocal_no_nan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_all.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_all.run
new file mode 100644
index 0000000..36a922a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_all.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_all -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_any.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_any.run
new file mode 100644
index 0000000..d0f44e3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_any.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_any -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_euclidean_norm.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_euclidean_norm.run
new file mode 100644
index 0000000..6d4c8bf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_euclidean_norm.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_euclidean_norm -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_logsumexp.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_logsumexp.run
new file mode 100644
index 0000000..da2c600
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_logsumexp.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_logsumexp -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_max.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_max.run
new file mode 100644
index 0000000..e83bbc9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_max.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_max -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_mean.run
new file mode 100644
index 0000000..27bfb4f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_mean.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_mean -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_min.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_min.run
new file mode 100644
index 0000000..4eb6ab1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_min.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_min -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_prod.run
new file mode 100644
index 0000000..90b7fac
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_prod.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_prod -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_std.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_std.run
new file mode 100644
index 0000000..3da275d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_std.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_std -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_sum.run
new file mode 100644
index 0000000..5394792
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_sum.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_sum -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_variance.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_variance.run
new file mode 100644
index 0000000..4b32041
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__reduce_variance.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=reduce_variance -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__rint.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__rint.run
new file mode 100644
index 0000000..ef4a9b7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__rint.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=rint -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__round.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__round.run
new file mode 100644
index 0000000..cae356e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__round.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=round -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__rsqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__rsqrt.run
new file mode 100644
index 0000000..977c27f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__rsqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=rsqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__scalar_mul.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__scalar_mul.run
new file mode 100644
index 0000000..ef93e08
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__scalar_mul.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=scalar_mul -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_max.run
new file mode 100644
index 0000000..b6761d6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_max.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=segment_max -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_mean.run
new file mode 100644
index 0000000..32ec261
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_mean.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=segment_mean -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_min.run
new file mode 100644
index 0000000..13628ba
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_min.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=segment_min -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_prod.run
new file mode 100644
index 0000000..8c80e3a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_prod.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=segment_prod -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_sum.run
new file mode 100644
index 0000000..9dba1bf
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__segment_sum.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=segment_sum -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sigmoid.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sigmoid.run
new file mode 100644
index 0000000..c48c882
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sigmoid.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sigmoid -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sign.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sign.run
new file mode 100644
index 0000000..645622b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sign.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sign -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sin.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sin.run
new file mode 100644
index 0000000..06eb77f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sin.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sin -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sinh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sinh.run
new file mode 100644
index 0000000..4f21985
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sinh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sinh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sobol_sample.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sobol_sample.run
new file mode 100644
index 0000000..9e44b0e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sobol_sample.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sobol_sample -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softmax.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softmax.run
new file mode 100644
index 0000000..9aec2ef
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softmax.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=softmax -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softplus.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softplus.run
new file mode 100644
index 0000000..e0bbfd8
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softplus.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=softplus -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softsign.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softsign.run
new file mode 100644
index 0000000..d050e08
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__softsign.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=softsign -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sqrt.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sqrt.run
new file mode 100644
index 0000000..984ac2b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__sqrt.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=sqrt -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__square.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__square.run
new file mode 100644
index 0000000..aa2683d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__square.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=square -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__squared_difference.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__squared_difference.run
new file mode 100644
index 0000000..a252051
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__squared_difference.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=squared_difference -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__subtract.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__subtract.run
new file mode 100644
index 0000000..c6f36ee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__subtract.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=subtract -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__tan.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__tan.run
new file mode 100644
index 0000000..7972d2b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__tan.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=tan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__tanh.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__tanh.run
new file mode 100644
index 0000000..4dd5203
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__tanh.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=tanh -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__top_k.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__top_k.run
new file mode 100644
index 0000000..ed57512
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__top_k.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=top_k -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__truediv.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__truediv.run
new file mode 100644
index 0000000..11d5a80
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__truediv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=truediv -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_max.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_max.run
new file mode 100644
index 0000000..aa2fc9c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_max.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=unsorted_segment_max -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_mean.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_mean.run
new file mode 100644
index 0000000..bf122a1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_mean.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=unsorted_segment_mean -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_min.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_min.run
new file mode 100644
index 0000000..78a8e94
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_min.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=unsorted_segment_min -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_prod.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_prod.run
new file mode 100644
index 0000000..81345f7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_prod.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=unsorted_segment_prod -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_sqrt_n.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_sqrt_n.run
new file mode 100644
index 0000000..edcb081
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_sqrt_n.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=unsorted_segment_sqrt_n -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_sum.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_sum.run
new file mode 100644
index 0000000..a09cb14
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__unsorted_segment_sum.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=unsorted_segment_sum -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xdivy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xdivy.run
new file mode 100644
index 0000000..8b1a188
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xdivy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=xdivy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xlog1py.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xlog1py.run
new file mode 100644
index 0000000..36c5904
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xlog1py.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=xlog1py -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xlogy.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xlogy.run
new file mode 100644
index 0000000..28e5a12
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__xlogy.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=xlogy -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__zero_fraction.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__zero_fraction.run
new file mode 100644
index 0000000..4c6d4d0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__zero_fraction.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=zero_fraction -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/math/vulkan__zeta.run b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__zeta.run
new file mode 100644
index 0000000..a11399c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/math/vulkan__zeta.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.math.math_test --target_backends=iree_vulkan --dynamic_dims=false --functions=zeta -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__batch_norm.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__batch_norm.run
new file mode 100644
index 0000000..01b2532
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__batch_norm.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.batch_norm_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__batch_to_space_nd.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__batch_to_space_nd.run
new file mode 100644
index 0000000..ded2c7b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__batch_to_space_nd.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.batch_to_space_nd_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__broadcast_to.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__broadcast_to.run
new file mode 100644
index 0000000..4fa6fd1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__broadcast_to.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.broadcast_to_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__broadcasting.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__broadcasting.run
new file mode 100644
index 0000000..c18b2fb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__broadcasting.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.broadcasting_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__concat.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__concat.run
new file mode 100644
index 0000000..e8d785d
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__concat.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.concat_test --target_backends=iree_llvmaot -artifacts_dir=%t
+
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__control_flow.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__control_flow.run
new file mode 100644
index 0000000..8eeb139
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__control_flow.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.control_flow_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__conv.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__conv.run
new file mode 100644
index 0000000..e18bd35
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__conv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.conv_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__conv_transpose.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__conv_transpose.run
new file mode 100644
index 0000000..1d40cb3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__conv_transpose.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.conv_transpose_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__depth_conv.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__depth_conv.run
new file mode 100644
index 0000000..631ee2f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__depth_conv.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.depth_conv_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__dynamic_mlp.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__dynamic_mlp.run
new file mode 100644
index 0000000..7213d3f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__dynamic_mlp.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.dynamic_mlp_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__dynamic_mlp_relu.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__dynamic_mlp_relu.run
new file mode 100644
index 0000000..44ba9a7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__dynamic_mlp_relu.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.dynamic_mlp_relu_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_dynamic.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_dynamic.run
new file mode 100644
index 0000000..2df0bf1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_dynamic.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.einsum_dynamic_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_static.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_static.run
new file mode 100644
index 0000000..d75a46e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_static.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.einsum_static_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_vector.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_vector.run
new file mode 100644
index 0000000..b8fa11e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__einsum_vector.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.einsum_vector_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__fft.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__fft.run
new file mode 100644
index 0000000..9b0c301
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__fft.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.fft_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__fill.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__fill.run
new file mode 100644
index 0000000..3b2ea72
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__fill.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.fill_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__gather.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__gather.run
new file mode 100644
index 0000000..2e3002c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__gather.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.gather_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__image_resize.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__image_resize.run
new file mode 100644
index 0000000..9cc6c5c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__image_resize.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.image_resize_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__linspace.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__linspace.run
new file mode 100644
index 0000000..9488c16
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__linspace.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.linspace_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__mandelbrot.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__mandelbrot.run
new file mode 100644
index 0000000..1edc736
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__mandelbrot.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.mandelbrot_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__matrix_ops_dynamic.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__matrix_ops_dynamic.run
new file mode 100644
index 0000000..34ea59a
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__matrix_ops_dynamic.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.matrix_ops_dynamic_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__matrix_ops_static.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__matrix_ops_static.run
new file mode 100644
index 0000000..1912c33
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__matrix_ops_static.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.matrix_ops_static_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__mobile_bert_squad.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__mobile_bert_squad.run
new file mode 100644
index 0000000..cc7d3a6
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__mobile_bert_squad.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.mobile_bert_squad_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__pytree.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__pytree.run
new file mode 100644
index 0000000..30f3155
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__pytree.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.pytree_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__quantization.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__quantization.run
new file mode 100644
index 0000000..2ab6d1b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__quantization.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.quantization_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__quantization_dyn.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__quantization_dyn.run
new file mode 100644
index 0000000..146dca1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__quantization_dyn.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.quantization_dyn_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__range.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__range.run
new file mode 100644
index 0000000..95792cc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__range.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.range_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__resource_ops.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__resource_ops.run
new file mode 100644
index 0000000..e6065d7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__resource_ops.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.resource_ops_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__ring_buffer.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__ring_buffer.run
new file mode 100644
index 0000000..e9d9885
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__ring_buffer.run
@@ -0,0 +1,3 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.ring_buffer_test --target_backends=iree_llvmaot -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__scatter_update.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__scatter_update.run
new file mode 100644
index 0000000..e6f65ae
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__scatter_update.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.scatter_update_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__simple_arithmetic.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__simple_arithmetic.run
new file mode 100644
index 0000000..271f9a0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__simple_arithmetic.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.simple_arithmetic_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__simple_stateful.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__simple_stateful.run
new file mode 100644
index 0000000..107e71b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__simple_stateful.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.simple_stateful_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__sliding_window.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__sliding_window.run
new file mode 100644
index 0000000..d0a6735
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__sliding_window.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.sliding_window_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__space_to_batch_nd.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__space_to_batch_nd.run
new file mode 100644
index 0000000..f4a55e7
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/llvmaot__space_to_batch_nd.run
@@ -0,0 +1,2 @@
+# REQUIRES: llvmaot
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.space_to_batch_nd_test --target_backends=iree_llvmaot -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__batch_norm.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__batch_norm.run
new file mode 100644
index 0000000..af267c2
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__batch_norm.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.batch_norm_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__batch_to_space_nd.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__batch_to_space_nd.run
new file mode 100644
index 0000000..37fda46
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__batch_to_space_nd.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.batch_to_space_nd_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__broadcast_to.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__broadcast_to.run
new file mode 100644
index 0000000..6a5212f
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__broadcast_to.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.broadcast_to_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__broadcasting.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__broadcasting.run
new file mode 100644
index 0000000..1351771
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__broadcasting.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.broadcasting_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__concat.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__concat.run
new file mode 100644
index 0000000..5c2cd92
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__concat.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.concat_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__control_flow.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__control_flow.run
new file mode 100644
index 0000000..576a0ee
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__control_flow.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.control_flow_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__conv.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__conv.run
new file mode 100644
index 0000000..ffd138c
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__conv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.conv_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__conv_transpose.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__conv_transpose.run
new file mode 100644
index 0000000..a5a1204
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__conv_transpose.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.conv_transpose_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__depth_conv.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__depth_conv.run
new file mode 100644
index 0000000..1000577
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__depth_conv.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.depth_conv_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__dynamic_mlp.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__dynamic_mlp.run
new file mode 100644
index 0000000..b6565a0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__dynamic_mlp.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.dynamic_mlp_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__dynamic_mlp_relu.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__dynamic_mlp_relu.run
new file mode 100644
index 0000000..4aad812
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__dynamic_mlp_relu.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.dynamic_mlp_relu_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_dynamic.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_dynamic.run
new file mode 100644
index 0000000..a66707e
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_dynamic.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.einsum_dynamic_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_static.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_static.run
new file mode 100644
index 0000000..894935b
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_static.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.einsum_static_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_vector.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_vector.run
new file mode 100644
index 0000000..8e0c786
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__einsum_vector.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.einsum_vector_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__fft.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__fft.run
new file mode 100644
index 0000000..f413114
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__fft.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.fft_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__fill.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__fill.run
new file mode 100644
index 0000000..0c252d3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__fill.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.fill_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__gather.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__gather.run
new file mode 100644
index 0000000..2390bb4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__gather.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.gather_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__image_resize.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__image_resize.run
new file mode 100644
index 0000000..4674780
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__image_resize.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.image_resize_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__linspace.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__linspace.run
new file mode 100644
index 0000000..fb1cbb4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__linspace.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.linspace_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__mandelbrot.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__mandelbrot.run
new file mode 100644
index 0000000..d15f045
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__mandelbrot.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.mandelbrot_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__matrix_ops_dynamic.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__matrix_ops_dynamic.run
new file mode 100644
index 0000000..765d000
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__matrix_ops_dynamic.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.matrix_ops_dynamic_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__matrix_ops_static.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__matrix_ops_static.run
new file mode 100644
index 0000000..9dc2ef5
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__matrix_ops_static.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.matrix_ops_static_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__mobile_bert_squad.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__mobile_bert_squad.run
new file mode 100644
index 0000000..12a1ebc
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__mobile_bert_squad.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.mobile_bert_squad_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__pytree.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__pytree.run
new file mode 100644
index 0000000..b975ee4
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__pytree.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.pytree_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__quantization.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__quantization.run
new file mode 100644
index 0000000..93cf022
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__quantization.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.quantization_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__quantization_dyn.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__quantization_dyn.run
new file mode 100644
index 0000000..274f003
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__quantization_dyn.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.quantization_dyn_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__range.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__range.run
new file mode 100644
index 0000000..256ccc1
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__range.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.range_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__resource_ops.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__resource_ops.run
new file mode 100644
index 0000000..52146f3
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__resource_ops.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.resource_ops_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__ring_buffer.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__ring_buffer.run
new file mode 100644
index 0000000..14ace80
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__ring_buffer.run
@@ -0,0 +1,3 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.ring_buffer_test --target_backends=iree_vulkan -artifacts_dir=%t
+# XFAIL: *
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__scatter_update.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__scatter_update.run
new file mode 100644
index 0000000..b96d2b0
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__scatter_update.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.scatter_update_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__simple_arithmetic.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__simple_arithmetic.run
new file mode 100644
index 0000000..0077bbb
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__simple_arithmetic.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.simple_arithmetic_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__simple_stateful.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__simple_stateful.run
new file mode 100644
index 0000000..44bf2d9
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__simple_stateful.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.simple_stateful_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__sliding_window.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__sliding_window.run
new file mode 100644
index 0000000..90dbc76
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__sliding_window.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.sliding_window_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__space_to_batch_nd.run b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__space_to_batch_nd.run
new file mode 100644
index 0000000..d532f32
--- /dev/null
+++ b/integrations/tensorflow/test/iree_tf_tests/uncategorized/vulkan__space_to_batch_nd.run
@@ -0,0 +1,2 @@
+# REQUIRES: vulkan
+# RUN: %PYTHON -m iree_tf_tests.uncategorized.space_to_batch_nd_test --target_backends=iree_vulkan -artifacts_dir=%t
diff --git a/integrations/tensorflow/test/lit.cfg.py b/integrations/tensorflow/test/lit.cfg.py
new file mode 100644
index 0000000..44cbca8
--- /dev/null
+++ b/integrations/tensorflow/test/lit.cfg.py
@@ -0,0 +1,72 @@
+# 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
+
+import os
+import sys
+import tempfile
+
+import lit.formats
+import lit.util
+
+import lit.llvm
+
+# Configuration file for the 'lit' test runner.
+lit.llvm.initialize(lit_config, config)
+from lit.llvm import llvm_config
+
+llvm_config.with_system_environment("PYTHONPATH")
+llvm_config.with_system_environment("VK_ICD_FILENAMES")
+
+# Put execution artifacts in the temp dir.
+config.test_exec_root = os.path.join(tempfile.gettempdir(), "lit")
+
+# name: The name of this test suite.
+config.name = 'TENSORFLOW_TESTS'
+
+config.test_format = lit.formats.ShTest()
+
+# suffixes: A list of file extensions to treat as test files.
+config.suffixes = ['.run']
+
+# test_source_root: The root path where tests are located.
+config.test_source_root = os.path.dirname(__file__)
+
+#config.use_default_substitutions()
+config.excludes = [
+ 'lit.cfg.py',
+ 'lit.site.cfg.py',
+ 'test_util.py',
+ 'manual_test.py',
+]
+
+config.substitutions.extend([
+ ('%PYTHON', sys.executable),
+])
+
+# Add our local projects to the PYTHONPATH
+python_projects_dir = os.path.join(os.path.dirname(__file__), "..",
+ "python_projects")
+test_src_dir = os.path.join(os.path.dirname(__file__), "python")
+llvm_config.with_environment("PYTHONPATH", [
+ test_src_dir,
+ os.path.join(python_projects_dir, "iree_tf"),
+ os.path.join(python_projects_dir, "iree_tflite"),
+ os.path.join(python_projects_dir, "iree_xla"),
+],
+ append_path=True)
+
+# Enable features based on -D FEATURES=hugetest,vulkan
+# syntax.
+# We always allow 'llvmaot'. It can be disabled with -D DISABLE_FEATURES=llvmaot
+disable_features_param = lit_config.params.get('DISABLE_FEATURES')
+disable_features = []
+if disable_features_param:
+ disable_features = disable_features_param.split(',')
+if 'llvmaot' not in disable_features:
+ config.available_features.add('llvmaot')
+features_param = lit_config.params.get('FEATURES')
+if features_param:
+ config.available_features.update(features_param.split(','))
diff --git a/integrations/tensorflow/test/python/README.md b/integrations/tensorflow/test/python/README.md
new file mode 100644
index 0000000..e0fc1db
--- /dev/null
+++ b/integrations/tensorflow/test/python/README.md
@@ -0,0 +1,8 @@
+# Python Test Sources
+
+Many of our Python integration tests are parameterized to run on multiple
+platforms, and they therefore are not ammenable to just including RUN
+lines in them. For these cases, we locate the python sources for the test
+here and add this to the PYTHONPATH.
+
+This directory is not scanned by the test runner.
diff --git a/integrations/tensorflow/test/python/generate_layers_tests.py b/integrations/tensorflow/test/python/generate_layers_tests.py
new file mode 100644
index 0000000..b287208
--- /dev/null
+++ b/integrations/tensorflow/test/python/generate_layers_tests.py
@@ -0,0 +1,186 @@
+# 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
+
+# Generates runner variants for the tf math tests.
+
+import generate_runner
+
+# These layers were selected by:
+# 1. Getting all subclasses of `tf.keras.layers.Layer`
+# 2. Removing deperacated layers based on the tf.keras docs
+# 3. Removing irrelevant layers
+# 4. Removing layers that don't fit in the testing framework (Wrappers, DenseFeatures, ...)
+LAYERS = [
+ "Activation",
+ "ActivityRegularization",
+ "Add",
+ "AdditiveAttention",
+ "AlphaDropout",
+ "Attention",
+ "Average",
+ "AveragePooling1D",
+ "AveragePooling2D",
+ "AveragePooling3D",
+ "BatchNormalization",
+ "Concatenate",
+ "Conv1D",
+ "Conv1DTranspose",
+ "Conv2D",
+ "Conv2DTranspose",
+ "Conv3D",
+ "Conv3DTranspose",
+ # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
+ "Cropping1D",
+ "Cropping2D",
+ "Cropping3D",
+ "Dense",
+ "DepthwiseConv2D",
+ "Dot",
+ "Dropout",
+ "ELU",
+ "Embedding",
+ "Flatten",
+ "GRU",
+ "GaussianDropout",
+ "GaussianNoise",
+ "GlobalAveragePooling1D",
+ "GlobalAveragePooling2D",
+ "GlobalAveragePooling3D",
+ "GlobalMaxPool1D",
+ "GlobalMaxPool2D",
+ "GlobalMaxPool3D",
+ "InputLayer",
+ "LSTM",
+ "Lambda",
+ "LayerNormalization",
+ "LeakyReLU",
+ "LocallyConnected1D",
+ "LocallyConnected2D",
+ "Masking",
+ "MaxPool1D",
+ "MaxPool2D",
+ "MaxPool3D",
+ "Maximum",
+ "Minimum",
+ "MultiHeadAttention",
+ "Multiply",
+ "PReLU",
+ "Permute",
+ "ReLU",
+ "RepeatVector",
+ "Reshape",
+ "SeparableConv1D",
+ "SeparableConv2D",
+ # "SimpleRNN", # TODO(meadowlark): Debug flakiness.
+ "Softmax",
+ "SpatialDropout1D",
+ "SpatialDropout2D",
+ "SpatialDropout3D",
+ "Subtract",
+ "ThresholdedReLU",
+ "UpSampling1D",
+ "UpSampling2D",
+ "UpSampling3D",
+ "ZeroPadding1D",
+ "ZeroPadding2D",
+ "ZeroPadding3D",
+]
+
+# A list of all layers with non-default api tests can be generated by running:
+# bazel run integrations/tensorflow/e2e/keras/layers:layers_test_manual -- \
+# --list_layers_with_full_api_tests
+LAYERS_WITH_FULL_API_TESTS = [
+ "ActivityRegularization",
+ "AdditiveAttention",
+ "Attention",
+ "AveragePooling1D",
+ "AveragePooling2D",
+ "AveragePooling3D",
+ "BatchNormalization",
+ "Concatenate",
+ "Conv1D",
+ "Conv1DTranspose",
+ "Conv2D",
+ "Conv2DTranspose",
+ "Conv3D",
+ "Conv3DTranspose",
+ # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
+ "Cropping1D",
+ "Cropping2D",
+ "Cropping3D",
+ "DepthwiseConv2D",
+ "GRU",
+ "LSTM",
+ "LocallyConnected1D",
+ "LocallyConnected2D",
+ "MaxPool1D",
+ "MaxPool2D",
+ "MaxPool3D",
+ "SeparableConv1D",
+ "SeparableConv2D",
+ "SimpleRNN",
+ # "SimpleRNN", # TODO(meadowlark): Debug flakiness.
+]
+
+# Layers that mention a training kwarg in their doc.
+LAYERS_WITH_TRAINING_BEHAVIOR = [
+ "AdditiveAttention",
+ "AlphaDropout",
+ "Attention",
+ "BatchNormalization",
+ # "ConvLSTM2D", # TODO(meadowlark): Debug flakiness.
+ "Dropout",
+ "GRU",
+ "GaussianDropout",
+ "GaussianNoise",
+ "LSTM",
+ "MultiHeadAttention",
+ # "SimpleRNN", # TODO(meadowlark): Debug flakiness.
+ "SpatialDropout1D",
+ "SpatialDropout2D",
+ "SpatialDropout3D",
+]
+
+BACKENDS = [
+ ("llvmaot", "--target_backends=iree_llvmaot"),
+ ("vulkan", "--target_backends=iree_vulkan"),
+]
+
+# Non dynamic dim tests.
+for variant, flags in BACKENDS:
+ for layer in LAYERS:
+ # Static.
+ generate_runner.main([
+ variant,
+ (f"{flags} --dynamic_dims=false --training=false "
+ f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"),
+ f"iree_tf_tests/layers/layers_test.py:{layer}"
+ ])
+ # Dynamic.
+ generate_runner.main([
+ variant,
+ (f"{flags} --dynamic_dims=true --training=false "
+ f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"),
+ f"iree_tf_tests/layers/layers_test.py:dynamic_dims_{layer}"
+ ])
+
+ # Test with test_default_kwargs_only=false
+ for layer in LAYERS_WITH_FULL_API_TESTS:
+ generate_runner.main([
+ variant,
+ (f"{flags} --dynamic_dims=false --training=false "
+ f"--test_default_kwargs_only=false --layer={layer} --artifacts_dir=%t"
+ ), f"iree_tf_tests/layers/layers_test.py:full_api_{layer}"
+ ])
+
+ # Test with training flags.
+ for layer in LAYERS_WITH_TRAINING_BEHAVIOR:
+ generate_runner.main([
+ variant,
+ (f"{flags} --dynamic_dims=false --training=true "
+ f"--test_default_kwargs_only=true --layer={layer} --artifacts_dir=%t"),
+ f"iree_tf_tests/layers/layers_test.py:training_{layer}"
+ ])
diff --git a/integrations/tensorflow/test/python/generate_math_tests.py b/integrations/tensorflow/test/python/generate_math_tests.py
new file mode 100644
index 0000000..6d7f2fb
--- /dev/null
+++ b/integrations/tensorflow/test/python/generate_math_tests.py
@@ -0,0 +1,224 @@
+# 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
+
+# Generates runner variants for the tf math tests.
+
+import generate_runner
+
+TF_MATH_FUNCTIONS = [
+ "abs",
+ "accumulate_n",
+ "acos",
+ "acosh",
+ "add",
+ "add_n",
+ "angle",
+ "argmax",
+ "argmin",
+ "asin",
+ "asinh",
+ "atan",
+ "atan2",
+ "atanh",
+ "bessel_i0",
+ "bessel_i0e",
+ "bessel_i1",
+ "bessel_i1e",
+ "betainc",
+ "bincount",
+ "ceil",
+ "confusion_matrix",
+ "cos",
+ "cosh",
+ "count_nonzero",
+ "cumprod",
+ "cumsum",
+ "cumulative_logsumexp",
+ "digamma",
+ "divide",
+ "divide_no_nan",
+ "equal",
+ "erf",
+ "erfc",
+ "erfinv",
+ "exp",
+ "expm1",
+ "floor",
+ "floordiv",
+ "floormod",
+ "greater",
+ "greater_equal",
+ "igamma",
+ "igammac",
+ "imag",
+ "in_top_k",
+ "invert_permutation",
+ "is_finite",
+ "is_inf",
+ "is_nan",
+ "is_non_decreasing",
+ "is_strictly_increasing",
+ "lbeta",
+ "less",
+ "less_equal",
+ "lgamma",
+ "log",
+ "log1p",
+ "log_sigmoid",
+ "log_softmax",
+ "logical_and",
+ "logical_not",
+ "logical_or",
+ "logical_xor",
+ "maximum",
+ "minimum",
+ "mod",
+ "multiply",
+ "multiply_no_nan",
+ "ndtri",
+ "negative",
+ "nextafter",
+ "not_equal",
+ "polygamma",
+ "polyval",
+ "pow",
+ "real",
+ "reciprocal",
+ "reciprocal_no_nan",
+ "reduce_all",
+ "reduce_any",
+ "reduce_euclidean_norm",
+ "reduce_logsumexp",
+ "reduce_max",
+ "reduce_mean",
+ "reduce_min",
+ "reduce_prod",
+ "reduce_std",
+ "reduce_sum",
+ "reduce_variance",
+ "rint",
+ "round",
+ "rsqrt",
+ "scalar_mul",
+ "segment_max",
+ "segment_mean",
+ "segment_min",
+ "segment_prod",
+ "segment_sum",
+ "sigmoid",
+ "sign",
+ "sin",
+ "sinh",
+ "sobol_sample",
+ "softmax",
+ "softplus",
+ "softsign",
+ "sqrt",
+ "square",
+ "squared_difference",
+ "subtract",
+ "tan",
+ "tanh",
+ "top_k",
+ "truediv",
+ "unsorted_segment_max",
+ "unsorted_segment_mean",
+ "unsorted_segment_min",
+ "unsorted_segment_prod",
+ "unsorted_segment_sqrt_n",
+ "unsorted_segment_sum",
+ "xdivy",
+ "xlog1py",
+ "xlogy",
+ "zero_fraction",
+ "zeta",
+]
+
+# This list was generated by running:
+# bazel run integrations/tensorflow/e2e/math:math_test_manual -- --list_functions_with_complex_tests
+# keep sorted
+COMPLEX_FUNCTIONS = [
+ "abs",
+ "add",
+ "angle",
+ "asinh",
+ "atanh",
+ "conj",
+ "cos",
+ "cosh",
+ "count_nonzero",
+ "cumprod",
+ "cumsum",
+ "divide",
+ "divide_no_nan",
+ "exp",
+ "expm1",
+ "imag",
+ "l2_normalize",
+ "log",
+ "log1p",
+ "multiply",
+ "multiply_no_nan",
+ "negative",
+ "pow",
+ "real",
+ "reciprocal",
+ "reciprocal_no_nan",
+ "reduce_euclidean_norm",
+ "reduce_std",
+ "reduce_variance",
+ "rsqrt",
+ "sigmoid",
+ "sign",
+ "sin",
+ "sinh",
+ "sqrt",
+ "square",
+ "squared_difference",
+ "subtract",
+ "tan",
+ "tanh",
+ "truediv",
+ "xdivy",
+ "xlog1py",
+ "xlogy",
+ "zero_fraction",
+]
+
+BACKENDS = [
+ ("llvmaot", "--target_backends=iree_llvmaot"),
+ ("vulkan", "--target_backends=iree_vulkan"),
+]
+
+# Non dynamic dim tests.
+for variant, flags in BACKENDS:
+ for math_fn in TF_MATH_FUNCTIONS:
+ generate_runner.main([
+ variant,
+ f"{flags} --dynamic_dims=false --functions={math_fn} --artifacts_dir=%t",
+ f"iree_tf_tests/math/math_test.py:{math_fn}"
+ ])
+ for math_fn in COMPLEX_FUNCTIONS:
+ generate_runner.main([
+ variant,
+ f"{flags} --dynamic_dims=false --functions={math_fn} --artifacts_dir=%t",
+ f"iree_tf_tests/math/math_test.py:complex_{math_fn}"
+ ])
+
+# Dynamic dim tests.
+for variant, flags in BACKENDS:
+ for math_fn in TF_MATH_FUNCTIONS:
+ generate_runner.main([
+ variant,
+ f"{flags} --dynamic_dims=true --functions={math_fn} --artifacts_dir=%t",
+ f"iree_tf_tests/math/math_test.py:dynamic_dim_{math_fn}"
+ ])
+ for math_fn in COMPLEX_FUNCTIONS:
+ generate_runner.main([
+ variant,
+ f"{flags} --dynamic_dims=true --functions={math_fn} --artifacts_dir=%t",
+ f"iree_tf_tests/math/math_test.py:complex_dynamic_dim_{math_fn}"
+ ])
diff --git a/integrations/tensorflow/test/python/generate_runner.py b/integrations/tensorflow/test/python/generate_runner.py
new file mode 100644
index 0000000..b8493e5
--- /dev/null
+++ b/integrations/tensorflow/test/python/generate_runner.py
@@ -0,0 +1,93 @@
+# 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
+
+# Generates a ".run" file in the corresponding test tree for a file under
+# this directory. This is a convenience for bootstrapping new test files.
+# Usage:
+# python generate_runner.py llvmaot "--target_backends=iree_llvmaot" \
+# iree_tf_tests/uncategorized/batch_norm_test.py[:batch_norm_alias]
+#
+# The first argument is the lit feature that this test is gated on and will
+# be prepended to the test name as "{variant}__testfile".
+# The second argument is the flag string to include when running the test.
+# All remaining arguments are relative paths to python files under this
+# directory that should have a .run file created for them.
+
+import os
+import sys
+
+
+def main(args):
+ variant = args[0]
+ flags = args[1]
+ src_file_specs = args[2:]
+ src_files = [
+ transform_src_file_spec_to_src_file(spec) for spec in src_file_specs
+ ]
+ module_names = [transform_src_file_to_module(f) for f in src_files]
+ run_files = [
+ transform_src_file_spec_to_run_file(spec, variant)
+ for spec in src_file_specs
+ ]
+ for module, run_file in zip(module_names, run_files):
+ if os.path.exists(run_file):
+ print(f"SKIPPING (exists): {run_file}")
+ continue
+ print(f"CREATE RUN FILE: {module} -> {run_file}")
+ os.makedirs(os.path.dirname(run_file), exist_ok=True)
+ with open(run_file, "wt") as f:
+ print(f"# REQUIRES: {variant}", file=f)
+ print(f"# RUN: %PYTHON -m {module} {flags}", file=f)
+
+
+def transform_src_file_spec_to_src_file(spec: str):
+ try:
+ colon_pos = spec.index(":")
+ except ValueError:
+ return spec
+ return spec[0:colon_pos]
+
+
+def transform_src_file_to_module(file_name):
+ module_name = file_name.replace("/", ".")
+ if (module_name.endswith(".py")):
+ module_name = module_name[0:-3]
+ return module_name
+
+
+def transform_src_file_spec_to_run_file(spec, variant):
+ # Transform path:alias, defaulting to the basename if the alias is not
+ # specified.
+ file_path = spec
+ file_name = os.path.basename(file_path)
+ colon_pos = -1
+ try:
+ colon_pos = spec.index(":")
+ except ValueError:
+ pass
+ if colon_pos > -1:
+ # Explicit alias.
+ file_path = spec[0:colon_pos]
+ file_name = spec[colon_pos + 1:]
+ print(f"FILE PATH = {file_path}")
+ else:
+ # Auto detect the alias from the basename.
+ file_name = os.path.basename(file_path)
+ if file_name.endswith(".py"):
+ file_name = file_name[0:-3]
+ if file_name.endswith("_test"):
+ file_name = file_name[0:-5]
+
+ main_test_dir = os.path.join(os.path.dirname(__file__), "..")
+ parent_path = os.path.dirname(file_path)
+
+ file_name = f"{variant}__{file_name}.run"
+ run_file = os.path.join(main_test_dir, parent_path, file_name)
+ return run_file
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
diff --git a/integrations/tensorflow/e2e/keras/layers/layers_test.py b/integrations/tensorflow/test/python/iree_tf_tests/layers/layers_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/keras/layers/layers_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/layers/layers_test.py
diff --git a/integrations/tensorflow/test/tf_integration/math/math_test.py b/integrations/tensorflow/test/python/iree_tf_tests/math/math_test.py
similarity index 100%
rename from integrations/tensorflow/test/tf_integration/math/math_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/math/math_test.py
diff --git a/integrations/tensorflow/e2e/batch_norm_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/batch_norm_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/batch_norm_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/batch_norm_test.py
diff --git a/integrations/tensorflow/e2e/batch_to_space_nd_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/batch_to_space_nd_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/batch_to_space_nd_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/batch_to_space_nd_test.py
diff --git a/integrations/tensorflow/e2e/broadcast_to_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/broadcast_to_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/broadcast_to_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/broadcast_to_test.py
diff --git a/integrations/tensorflow/e2e/broadcasting_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/broadcasting_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/broadcasting_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/broadcasting_test.py
diff --git a/integrations/tensorflow/e2e/concat_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/concat_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/concat_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/concat_test.py
diff --git a/integrations/tensorflow/e2e/control_flow_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/control_flow_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/control_flow_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/control_flow_test.py
diff --git a/integrations/tensorflow/e2e/conv_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/conv_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/conv_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/conv_test.py
diff --git a/integrations/tensorflow/e2e/conv_transpose_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/conv_transpose_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/conv_transpose_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/conv_transpose_test.py
diff --git a/integrations/tensorflow/e2e/depth_conv_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/depth_conv_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/depth_conv_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/depth_conv_test.py
diff --git a/integrations/tensorflow/e2e/dynamic_mlp_relu_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/dynamic_mlp_relu_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/dynamic_mlp_relu_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/dynamic_mlp_relu_test.py
diff --git a/integrations/tensorflow/e2e/dynamic_mlp_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/dynamic_mlp_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/dynamic_mlp_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/dynamic_mlp_test.py
diff --git a/integrations/tensorflow/e2e/einsum_dynamic_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/einsum_dynamic_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/einsum_dynamic_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/einsum_dynamic_test.py
diff --git a/integrations/tensorflow/e2e/einsum_static_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/einsum_static_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/einsum_static_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/einsum_static_test.py
diff --git a/integrations/tensorflow/e2e/einsum_vector_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/einsum_vector_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/einsum_vector_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/einsum_vector_test.py
diff --git a/integrations/tensorflow/e2e/fft_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/fft_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/fft_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/fft_test.py
diff --git a/integrations/tensorflow/e2e/fill_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/fill_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/fill_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/fill_test.py
diff --git a/integrations/tensorflow/e2e/gather_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/gather_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/gather_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/gather_test.py
diff --git a/integrations/tensorflow/e2e/image_resize_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/image_resize_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/image_resize_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/image_resize_test.py
diff --git a/integrations/tensorflow/e2e/linspace_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/linspace_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/linspace_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/linspace_test.py
diff --git a/integrations/tensorflow/e2e/mandelbrot_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/mandelbrot_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/mandelbrot_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/mandelbrot_test.py
diff --git a/integrations/tensorflow/e2e/matrix_ops_dynamic_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/matrix_ops_dynamic_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/matrix_ops_dynamic_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/matrix_ops_dynamic_test.py
diff --git a/integrations/tensorflow/e2e/matrix_ops_static_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/matrix_ops_static_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/matrix_ops_static_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/matrix_ops_static_test.py
diff --git a/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/mobile_bert_squad_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/mobile_bert_squad_test.py
new file mode 100644
index 0000000..4843e3c
--- /dev/null
+++ b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/mobile_bert_squad_test.py
@@ -0,0 +1,84 @@
+# Lint as: python3
+# Copyright 2020 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
+"""Test MobileBERT.
+
+Model topology and weights are from
+https://github.com/google-research/google-research/tree/master/mobilebert
+"""
+
+import os
+import posixpath
+
+from absl import app
+from absl import flags
+from iree.tf.support import tf_test_utils
+import numpy as np
+import tensorflow.compat.v2 as tf
+
+FLAGS = flags.FLAGS
+
+flags.DEFINE_boolean('use_quantized_weights', False,
+ 'Whether to use quantized or floating point weights.')
+
+MAX_SEQ_LENGTH = 384 # Max input sequence length used in mobilebert_squad.
+
+FILE_NAME = 'mobilebert_squad_savedmodels'
+MODEL_URL = posixpath.join(
+ f'https://storage.googleapis.com/cloud-tpu-checkpoints/mobilebert/{FILE_NAME}.tar.gz'
+)
+
+
+class MobileBertSquadTest(tf_test_utils.TracedModuleTestCase):
+ """Tests of MobileBertSquad."""
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ model_type = 'quant_saved_model' if FLAGS.use_quantized_weights else 'float'
+
+ # Get_file will download the model weights from a publicly available folder,
+ # save them to cache_dir=~/.keras/datasets/ and return a path to them.
+ model_path = tf.keras.utils.get_file(
+ FILE_NAME,
+ MODEL_URL,
+ untar=True,
+ cache_dir=tf_test_utils._setup_artifacts_dir("download"))
+ model_dir = os.path.dirname(model_path)
+ extracted_name = FILE_NAME.split('.')[0]
+ model_path = os.path.join(model_dir, extracted_name, model_type)
+
+ self._modules = tf_test_utils.compile_tf_signature_def_saved_model(
+ saved_model_dir=model_path,
+ saved_model_tags=set(['serve']),
+ module_name='MobileBertSquad',
+ exported_name='serving_default',
+ input_names=['input_ids', 'input_mask', 'segment_ids'],
+ output_names=['start_logits', 'end_logits'])
+
+ def test_serving_default(self):
+
+ def serving_default(module):
+ input_ids = np.zeros((1, MAX_SEQ_LENGTH), dtype=np.int32)
+ input_mask = np.zeros((1, MAX_SEQ_LENGTH), dtype=np.int32)
+ segment_ids = np.zeros((1, MAX_SEQ_LENGTH), dtype=np.int32)
+
+ module.serving_default(input_ids=input_ids,
+ input_mask=input_mask,
+ segment_ids=segment_ids,
+ atol=1e0)
+
+ self.compare_backends(serving_default, self._modules)
+
+
+def main(argv):
+ del argv # Unused
+ if hasattr(tf, 'enable_v2_behavior'):
+ tf.enable_v2_behavior()
+ tf.test.main()
+
+
+if __name__ == '__main__':
+ app.run(main)
diff --git a/integrations/tensorflow/e2e/pytree_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/pytree_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/pytree_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/pytree_test.py
diff --git a/integrations/tensorflow/e2e/quantization_dyn_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/quantization_dyn_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/quantization_dyn_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/quantization_dyn_test.py
diff --git a/integrations/tensorflow/e2e/quantization_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/quantization_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/quantization_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/quantization_test.py
diff --git a/integrations/tensorflow/e2e/range_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/range_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/range_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/range_test.py
diff --git a/integrations/tensorflow/e2e/resource_ops_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/resource_ops_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/resource_ops_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/resource_ops_test.py
diff --git a/integrations/tensorflow/e2e/ring_buffer_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/ring_buffer_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/ring_buffer_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/ring_buffer_test.py
diff --git a/integrations/tensorflow/e2e/scatter_update_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/scatter_update_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/scatter_update_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/scatter_update_test.py
diff --git a/integrations/tensorflow/e2e/simple_arithmetic_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/simple_arithmetic_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/simple_arithmetic_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/simple_arithmetic_test.py
diff --git a/integrations/tensorflow/e2e/simple_stateful_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/simple_stateful_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/simple_stateful_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/simple_stateful_test.py
diff --git a/integrations/tensorflow/e2e/sliding_window_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/sliding_window_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/sliding_window_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/sliding_window_test.py
diff --git a/integrations/tensorflow/e2e/space_to_batch_nd_test.py b/integrations/tensorflow/test/python/iree_tf_tests/uncategorized/space_to_batch_nd_test.py
similarity index 100%
rename from integrations/tensorflow/e2e/space_to_batch_nd_test.py
rename to integrations/tensorflow/test/python/iree_tf_tests/uncategorized/space_to_batch_nd_test.py
diff --git a/integrations/tensorflow/test/python/lit.local.cfg b/integrations/tensorflow/test/python/lit.local.cfg
new file mode 100644
index 0000000..e6f55ee
--- /dev/null
+++ b/integrations/tensorflow/test/python/lit.local.cfg
@@ -0,0 +1 @@
+config.suffixes = []
diff --git a/integrations/tensorflow/test/tf_integration/CMakeLists.txt b/integrations/tensorflow/test/tf_integration/CMakeLists.txt
deleted file mode 100644
index 43353bf..0000000
--- a/integrations/tensorflow/test/tf_integration/CMakeLists.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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
-
-add_subdirectory(math)
diff --git a/integrations/tensorflow/test/tf_integration/math/CMakeLists.txt b/integrations/tensorflow/test/tf_integration/math/CMakeLists.txt
deleted file mode 100644
index 526e34a..0000000
--- a/integrations/tensorflow/test/tf_integration/math/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-# 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
-
-include(iree_test_matrix)
-
-iree_test_matrix_gen()
-# TODO: If this becomes the only type of test we glob, collapse it into the
-# previous.
-iree_test_matrix_glob_py_tests()
diff --git a/integrations/tensorflow/test/tf_integration/math/test_matrix.yaml b/integrations/tensorflow/test/tf_integration/math/test_matrix.yaml
deleted file mode 100644
index c9f356e..0000000
--- a/integrations/tensorflow/test/tf_integration/math/test_matrix.yaml
+++ /dev/null
@@ -1,243 +0,0 @@
-# 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
-
-lists:
- - &BACKENDS
- - iree_llvmaot
- - iree_vulkan
- - &REF_BACKENDS
- - tf
- - &MATH_FUNCTIONS
- - abs
- - accumulate_n
- - acos
- - acosh
- - add
- - add_n
- - angle
- - argmax
- - argmin
- - asin
- - asinh
- - atan
- - atan2
- - atanh
- - bessel_i0
- - bessel_i0e
- - bessel_i1
- - bessel_i1e
- - betainc
- - bincount
- - ceil
- - confusion_matrix
- - cos
- - cosh
- - count_nonzero
- - cumprod
- - cumsum
- - cumulative_logsumexp
- - digamma
- - divide
- - divide_no_nan
- - equal
- - erf
- - erfc
- - erfinv
- - exp
- - expm1
- - floor
- - floordiv
- - floormod
- - greater
- - greater_equal
- - igamma
- - igammac
- - imag
- - in_top_k
- - invert_permutation
- - is_finite
- - is_inf
- - is_nan
- - is_non_decreasing
- - is_strictly_increasing
- - lbeta
- - less
- - less_equal
- - lgamma
- - log
- - log1p
- - log_sigmoid
- - log_softmax
- - logical_and
- - logical_not
- - logical_or
- - logical_xor
- - maximum
- - minimum
- - mod
- - multiply
- - multiply_no_nan
- - ndtri
- - negative
- - nextafter
- - not_equal
- - polygamma
- - polyval
- - pow
- - real
- - reciprocal
- - reciprocal_no_nan
- - reduce_all
- - reduce_any
- - reduce_euclidean_norm
- - reduce_logsumexp
- - reduce_max
- - reduce_mean
- - reduce_min
- - reduce_prod
- - reduce_std
- - reduce_sum
- - reduce_variance
- - rint
- - round
- - rsqrt
- - scalar_mul
- - segment_max
- - segment_mean
- - segment_min
- - segment_prod
- - segment_sum
- - sigmoid
- - sign
- - sin
- - sinh
- - sobol_sample
- - softmax
- - softplus
- - softsign
- - sqrt
- - square
- - squared_difference
- - subtract
- - tan
- - tanh
- - top_k
- - truediv
- - unsorted_segment_max
- - unsorted_segment_mean
- - unsorted_segment_min
- - unsorted_segment_prod
- - unsorted_segment_sqrt_n
- - unsorted_segment_sum
- - xdivy
- - xlog1py
- - xlogy
- - zero_fraction
- - zeta
- - &UNIMPLEMENTED_MATH_FUNCTIONS
- - acos
- - argmax
- - argmin
- - asin
- - atan
- - atan2
- - bessel_i0
- - bessel_i0e
- - bessel_i1
- - bessel_i1e
- - betainc
- - bincount
- - confusion_matrix
- - count_nonzero
- - cumprod
- - cumsum
- - cumulative_logsumexp
- - divide
- - erfinv
- - igamma
- - igammac
- - in_top_k
- - nextafter
- - ndtri
- - reduce_euclidean_norm
- - reduce_prod
- - segment_max
- - segment_mean
- - segment_min
- - segment_prod
- - segment_sum
- - sobol_sample
- - top_k
- - unsorted_segment_max
- - unsorted_segment_mean
- - unsorted_segment_min
- - unsorted_segment_prod
- - unsorted_segment_sqrt_n
- - unsorted_segment_sum
- - &DYNDIMS_BROKEN_MATH_FUNCTIONS
- - angle
- - expm1
- - imag
- - invert_permutation
- - is_non_decreasing
- - is_strictly_increasing
- - log1p
- - log_sigmoid
- # https://github.com/google/iree/issues/6310
- - log_softmax
- - reduce_logsumexp
- - reduce_mean
- - reduce_std
- - reduce_variance
- # TODO: Fix CHLO expansion of sinh to be high level
- - sinh
- - softplus
- - xlog1py
- - zero_fraction
- - &VULKAN_BROKEN_MATH_FUNCTIONS
- - asinh
- - invert_permutation
- - sign
- - &VULKAN_DYNDIM_PASS_MATH_FUNCTIONS
- - real
-
-
-test_groups:
- - id: "math_real_{backend}_vs_{ref_backend}_{function}_dyndims_{dyndims}"
- runner:
- - type: tfhost
- main: math_test.py
- args:
- - "--functions={function}"
- - "--target_backends={backend}"
- - "--reference_backend={ref_backend}"
- - "--dynamic_dims={dyndims}"
- matrix:
- backend: *BACKENDS
- ref_backend: *REF_BACKENDS
- function: *MATH_FUNCTIONS
- dyndims: ["true", "false"]
- xfail:
- # Completely IREE-unimplemented math functions
- - matrix.function: *UNIMPLEMENTED_MATH_FUNCTIONS
-
- # Some functions are strictly broken with dyndims
- - matrix.function: *DYNDIMS_BROKEN_MATH_FUNCTIONS
- matrix.dyndims: "true"
-
- # Vulkan is currently structurally broken with dyndims.
- - matrix.backend: iree_vulkan
- matrix.dyndims: "true"
-
- # Some math functions are broken on vulkan.
- - matrix.backend: iree_vulkan
- matrix.function: *VULKAN_BROKEN_MATH_FUNCTIONS
- xpass:
- # Some dynamic dim functions pass on vulkan regardless of overall
- # broken support.
- - matrix.backend: iree_vulkan
- matrix.function: *VULKAN_DYNDIM_PASS_MATH_FUNCTIONS
- matrix.dyndims: "true"
diff --git a/iree/compiler/InputConversion/MHLO/MHLOToMHLOPreprocessing.cpp b/iree/compiler/InputConversion/MHLO/MHLOToMHLOPreprocessing.cpp
index b3e2eaf..8e457eb 100644
--- a/iree/compiler/InputConversion/MHLO/MHLOToMHLOPreprocessing.cpp
+++ b/iree/compiler/InputConversion/MHLO/MHLOToMHLOPreprocessing.cpp
@@ -92,6 +92,10 @@
PatternRewriter &rewriter) const override {
Location loc = op.getLoc();
auto type = op.operand().getType().cast<TensorType>();
+ // https://github.com/google/iree/issues/8083
+ if (!type.hasStaticShape()) {
+ return rewriter.notifyMatchFailure(op, "TODO: Support dynamic shape");
+ }
DenseElementsAttr attr =
DenseElementsAttr::get(type, rewriter.getF32FloatAttr(1.0));
auto one = rewriter.create<arith::ConstantOp>(loc, attr);
@@ -109,6 +113,10 @@
PatternRewriter &rewriter) const override {
Location loc = op.getLoc();
auto type = op.operand().getType().cast<TensorType>();
+ // https://github.com/google/iree/issues/8083
+ if (!type.hasStaticShape()) {
+ return rewriter.notifyMatchFailure(op, "TODO: Support dynamic shape");
+ }
DenseElementsAttr attr =
DenseElementsAttr::get(type, rewriter.getF32FloatAttr(1.0));
auto one = rewriter.create<arith::ConstantOp>(loc, attr);