Fix layering and turn on layering_check (#2540)

This is a new feature in OSS Bazel (which has been available internally
for a while) that checks layering. That is, cc_* BUILD rules should
directly depend on a rule that exports each header that is `#include`'ed
in the rule's sources.

This is now available since we upgraded to Bazel 3.3.1 (#2495).

Unfortunately we can't just enable this in the .bazelrc with
`--features=layering_check` because that would enable it for all our
dependencies as well, which we are not interested in enforcing. I'm not
aware of an equivalent to `--per_file_copt` for features.

Includes adding package and license declarations to some packages that
were missing them.
diff --git a/BUILD.bazel b/BUILD.bazel
index 1cddab5..01d988d 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/bindings/python/BUILD b/bindings/python/BUILD
index ccd2ee2..691f117 100644
--- a/bindings/python/BUILD
+++ b/bindings/python/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/bindings/python/build_tools/python/BUILD.bazel b/bindings/python/build_tools/python/BUILD.bazel
index 9a78dc1..e2c157e 100644
--- a/bindings/python/build_tools/python/BUILD.bazel
+++ b/bindings/python/build_tools/python/BUILD.bazel
@@ -13,3 +13,8 @@
 # limitations under the License.
 
 # Intentionally empty.
+
+package(
+    features = ["layering_check"],
+    licenses = ["notice"],
+)
diff --git a/bindings/python/pyiree/BUILD b/bindings/python/pyiree/BUILD
index 1cddab5..01d988d 100644
--- a/bindings/python/pyiree/BUILD
+++ b/bindings/python/pyiree/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/bindings/python/pyiree/common/BUILD b/bindings/python/pyiree/common/BUILD
index 94ac178..3c102c8 100644
--- a/bindings/python/pyiree/common/BUILD
+++ b/bindings/python/pyiree/common/BUILD
@@ -19,6 +19,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/bindings/python/pyiree/compiler/BUILD b/bindings/python/pyiree/compiler/BUILD
index 3f4cf09..4053849 100644
--- a/bindings/python/pyiree/compiler/BUILD
+++ b/bindings/python/pyiree/compiler/BUILD
@@ -28,6 +28,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/bindings/python/pyiree/rt/BUILD b/bindings/python/pyiree/rt/BUILD
index db48f43..ac5a93b 100644
--- a/bindings/python/pyiree/rt/BUILD
+++ b/bindings/python/pyiree/rt/BUILD
@@ -27,6 +27,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/build_tools/bazel/BUILD b/build_tools/bazel/BUILD
index 1e7bbf4..a3a1281 100644
--- a/build_tools/bazel/BUILD
+++ b/build_tools/bazel/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/build_tools/embed_data/BUILD b/build_tools/embed_data/BUILD
index 6e5482a..8f9be52 100644
--- a/build_tools/embed_data/BUILD
+++ b/build_tools/embed_data/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/colab/BUILD.bazel b/colab/BUILD.bazel
index 07bffa6..01c88f9 100644
--- a/colab/BUILD.bazel
+++ b/colab/BUILD.bazel
@@ -12,6 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+package(
+    features = ["layering_check"],
+    licenses = ["notice"],
+)
+
 py_binary(
     name = "everything_for_colab",
     srcs = ["dummy.py"],
diff --git a/experimental/BUILD b/experimental/BUILD
index a98a3c4..0e6ae3d 100644
--- a/experimental/BUILD
+++ b/experimental/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/experimental/ModelBuilder/BUILD b/experimental/ModelBuilder/BUILD
index d72023e..1d068a9 100644
--- a/experimental/ModelBuilder/BUILD
+++ b/experimental/ModelBuilder/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/experimental/ModelBuilder/test/BUILD b/experimental/ModelBuilder/test/BUILD
index a942673..64a88a9 100644
--- a/experimental/ModelBuilder/test/BUILD
+++ b/experimental/ModelBuilder/test/BUILD
@@ -19,6 +19,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/bindings/python/BUILD b/integrations/tensorflow/bindings/python/BUILD
index 37e7438..3e37080 100644
--- a/integrations/tensorflow/bindings/python/BUILD
+++ b/integrations/tensorflow/bindings/python/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/bindings/python/pyiree/tf/compiler/BUILD b/integrations/tensorflow/bindings/python/pyiree/tf/compiler/BUILD
index 1f980ae..51e413d 100644
--- a/integrations/tensorflow/bindings/python/pyiree/tf/compiler/BUILD
+++ b/integrations/tensorflow/bindings/python/pyiree/tf/compiler/BUILD
@@ -27,6 +27,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/bindings/python/pyiree/tf/support/BUILD b/integrations/tensorflow/bindings/python/pyiree/tf/support/BUILD
index 51d8ff7..fc67c96 100644
--- a/integrations/tensorflow/bindings/python/pyiree/tf/support/BUILD
+++ b/integrations/tensorflow/bindings/python/pyiree/tf/support/BUILD
@@ -21,6 +21,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/bindings/python/pyiree/xla/compiler/BUILD b/integrations/tensorflow/bindings/python/pyiree/xla/compiler/BUILD
index 5d95fab..815f859 100644
--- a/integrations/tensorflow/bindings/python/pyiree/xla/compiler/BUILD
+++ b/integrations/tensorflow/bindings/python/pyiree/xla/compiler/BUILD
@@ -27,6 +27,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/BUILD b/integrations/tensorflow/compiler/BUILD
index 9856c4f..080ea20 100644
--- a/integrations/tensorflow/compiler/BUILD
+++ b/integrations/tensorflow/compiler/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_strings/BUILD b/integrations/tensorflow/compiler/dialect/tf_strings/BUILD
index ad385d9..eef48e1 100644
--- a/integrations/tensorflow/compiler/dialect/tf_strings/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_strings/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_strings/conversion/BUILD b/integrations/tensorflow/compiler/dialect/tf_strings/conversion/BUILD
index a6873ef..cc74501 100644
--- a/integrations/tensorflow/compiler/dialect/tf_strings/conversion/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_strings/conversion/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_strings/conversion/test/BUILD b/integrations/tensorflow/compiler/dialect/tf_strings/conversion/test/BUILD
index 8e3b3b2..5a26b96 100644
--- a/integrations/tensorflow/compiler/dialect/tf_strings/conversion/test/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_strings/conversion/test/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_strings/ir/BUILD b/integrations/tensorflow/compiler/dialect/tf_strings/ir/BUILD
index 5fe5896..db8f6b6 100644
--- a/integrations/tensorflow/compiler/dialect/tf_strings/ir/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_strings/ir/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/BUILD b/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/BUILD
index f5b4cea..8b74864 100644
--- a/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/test/BUILD b/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/test/BUILD
index adf3143..bc14084 100644
--- a/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/test/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_tensorlist/conversion/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/BUILD b/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/BUILD
index fa343c1..16fed76 100644
--- a/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/test/BUILD b/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/test/BUILD
index adf3143..bc14084 100644
--- a/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/test/BUILD
+++ b/integrations/tensorflow/compiler/dialect/tf_tensorlist/ir/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/compiler/test/BUILD b/integrations/tensorflow/compiler/test/BUILD
index 26657b5..c22de0f 100644
--- a/integrations/tensorflow/compiler/test/BUILD
+++ b/integrations/tensorflow/compiler/test/BUILD
@@ -25,6 +25,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/e2e/BUILD b/integrations/tensorflow/e2e/BUILD
index bdc0131..2fd4545 100644
--- a/integrations/tensorflow/e2e/BUILD
+++ b/integrations/tensorflow/e2e/BUILD
@@ -32,6 +32,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/e2e/keras/BUILD b/integrations/tensorflow/e2e/keras/BUILD
index ec592e7..16ddde9 100644
--- a/integrations/tensorflow/e2e/keras/BUILD
+++ b/integrations/tensorflow/e2e/keras/BUILD
@@ -35,6 +35,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/integrations/tensorflow/e2e/keras/train/BUILD b/integrations/tensorflow/e2e/keras/train/BUILD
index 1160ab2..d6436b2 100644
--- a/integrations/tensorflow/e2e/keras/train/BUILD
+++ b/integrations/tensorflow/e2e/keras/train/BUILD
@@ -24,6 +24,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/BUILD.bazel b/iree/BUILD.bazel
index 8822a79..f8387ff 100644
--- a/iree/BUILD.bazel
+++ b/iree/BUILD.bazel
@@ -30,6 +30,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/base/BUILD b/iree/base/BUILD
index ab2cb6a..375fab2 100644
--- a/iree/base/BUILD
+++ b/iree/base/BUILD
@@ -19,6 +19,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/base/internal/BUILD b/iree/base/internal/BUILD
index 840fa33..158019c 100644
--- a/iree/base/internal/BUILD
+++ b/iree/base/internal/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/BUILD b/iree/compiler/BUILD
index 1cddab5..01d988d 100644
--- a/iree/compiler/BUILD
+++ b/iree/compiler/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Conversion/BUILD b/iree/compiler/Conversion/BUILD
index 61d64ce..35f424e 100644
--- a/iree/compiler/Conversion/BUILD
+++ b/iree/compiler/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Conversion/CodegenUtils/BUILD b/iree/compiler/Conversion/CodegenUtils/BUILD
index 3696239..554b153 100644
--- a/iree/compiler/Conversion/CodegenUtils/BUILD
+++ b/iree/compiler/Conversion/CodegenUtils/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Conversion/HLOToLinalg/BUILD b/iree/compiler/Conversion/HLOToLinalg/BUILD
index 8b28945..2e7447b 100644
--- a/iree/compiler/Conversion/HLOToLinalg/BUILD
+++ b/iree/compiler/Conversion/HLOToLinalg/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Conversion/HLOToLinalg/test/BUILD b/iree/compiler/Conversion/HLOToLinalg/test/BUILD
index 1d8d07c..1e3b7bb 100644
--- a/iree/compiler/Conversion/HLOToLinalg/test/BUILD
+++ b/iree/compiler/Conversion/HLOToLinalg/test/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Conversion/LinalgToLLVM/BUILD b/iree/compiler/Conversion/LinalgToLLVM/BUILD
index 7d643e3..41d9988 100644
--- a/iree/compiler/Conversion/LinalgToLLVM/BUILD
+++ b/iree/compiler/Conversion/LinalgToLLVM/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Conversion/LinalgToLLVM/test/BUILD b/iree/compiler/Conversion/LinalgToLLVM/test/BUILD
index 1d8d07c..1e3b7bb 100644
--- a/iree/compiler/Conversion/LinalgToLLVM/test/BUILD
+++ b/iree/compiler/Conversion/LinalgToLLVM/test/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/BUILD b/iree/compiler/Conversion/LinalgToSPIRV/BUILD
index 1145719..fc447e6 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/BUILD
+++ b/iree/compiler/Conversion/LinalgToSPIRV/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
@@ -48,6 +49,7 @@
         "@llvm-project//llvm:Support",
         "@llvm-project//mlir:Affine",
         "@llvm-project//mlir:AffineToStandardTransforms",
+        "@llvm-project//mlir:Analysis",
         "@llvm-project//mlir:GPUDialect",
         "@llvm-project//mlir:GPUToSPIRVTransforms",
         "@llvm-project//mlir:GPUTransforms",
@@ -57,6 +59,7 @@
         "@llvm-project//mlir:Pass",
         "@llvm-project//mlir:SCFDialect",
         "@llvm-project//mlir:SCFToGPUPass",
+        "@llvm-project//mlir:SCFToSPIRV",
         "@llvm-project//mlir:SPIRVDialect",
         "@llvm-project//mlir:SPIRVLowering",
         "@llvm-project//mlir:StandardOps",
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt b/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
index 68306c9..69c04d9 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
+++ b/iree/compiler/Conversion/LinalgToSPIRV/CMakeLists.txt
@@ -38,6 +38,7 @@
     LLVMSupport
     MLIRAffineOps
     MLIRAffineToStandard
+    MLIRAnalysis
     MLIRGPU
     MLIRGPUToSPIRVTransforms
     MLIRIR
@@ -46,6 +47,7 @@
     MLIRPass
     MLIRSCF
     MLIRSCFToGPU
+    MLIRSCFToSPIRV
     MLIRSPIRV
     MLIRSPIRVTransforms
     MLIRStandardOps
diff --git a/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD b/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD
index 1d8d07c..1e3b7bb 100644
--- a/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD
+++ b/iree/compiler/Conversion/LinalgToSPIRV/test/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/BUILD b/iree/compiler/Dialect/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/BUILD
+++ b/iree/compiler/Dialect/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/Flow/Analysis/BUILD b/iree/compiler/Dialect/Flow/Analysis/BUILD
index a0da88f..db5b183 100644
--- a/iree/compiler/Dialect/Flow/Analysis/BUILD
+++ b/iree/compiler/Dialect/Flow/Analysis/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Analysis/test/BUILD b/iree/compiler/Dialect/Flow/Analysis/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Flow/Analysis/test/BUILD
+++ b/iree/compiler/Dialect/Flow/Analysis/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/BUILD b/iree/compiler/Dialect/Flow/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/Flow/BUILD
+++ b/iree/compiler/Dialect/Flow/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/Flow/Conversion/BUILD b/iree/compiler/Dialect/Flow/Conversion/BUILD
index 902bfa5..b4cff63 100644
--- a/iree/compiler/Dialect/Flow/Conversion/BUILD
+++ b/iree/compiler/Dialect/Flow/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/BUILD b/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/BUILD
index 4211500..ec54c6c 100644
--- a/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/BUILD
+++ b/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/test/BUILD b/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/test/BUILD
+++ b/iree/compiler/Dialect/Flow/Conversion/HLOToFlow/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/BUILD b/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/BUILD
index ecce09f..1ad8391 100644
--- a/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/BUILD
+++ b/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/test/BUILD b/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/test/BUILD
+++ b/iree/compiler/Dialect/Flow/Conversion/StandardToFlow/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/IR/BUILD b/iree/compiler/Dialect/Flow/IR/BUILD
index db2cf97..7b54e4b 100644
--- a/iree/compiler/Dialect/Flow/IR/BUILD
+++ b/iree/compiler/Dialect/Flow/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/IR/test/BUILD b/iree/compiler/Dialect/Flow/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Flow/IR/test/BUILD
+++ b/iree/compiler/Dialect/Flow/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Transforms/BUILD b/iree/compiler/Dialect/Flow/Transforms/BUILD
index 55f3a82..86562a2 100644
--- a/iree/compiler/Dialect/Flow/Transforms/BUILD
+++ b/iree/compiler/Dialect/Flow/Transforms/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Transforms/test/BUILD b/iree/compiler/Dialect/Flow/Transforms/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Flow/Transforms/test/BUILD
+++ b/iree/compiler/Dialect/Flow/Transforms/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Flow/Utils/BUILD b/iree/compiler/Dialect/Flow/Utils/BUILD
index 68b5c9c..9aedfd3 100644
--- a/iree/compiler/Dialect/Flow/Utils/BUILD
+++ b/iree/compiler/Dialect/Flow/Utils/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/BUILD b/iree/compiler/Dialect/HAL/BUILD
index 30f7fc9..9c40547 100644
--- a/iree/compiler/Dialect/HAL/BUILD
+++ b/iree/compiler/Dialect/HAL/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Conversion/BUILD b/iree/compiler/Dialect/HAL/Conversion/BUILD
index 187eb57..260c837 100644
--- a/iree/compiler/Dialect/HAL/Conversion/BUILD
+++ b/iree/compiler/Dialect/HAL/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/BUILD b/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/BUILD
index 78abf1f..f0bc225 100644
--- a/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/BUILD
+++ b/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/test/BUILD b/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/test/BUILD
+++ b/iree/compiler/Dialect/HAL/Conversion/FlowToHAL/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Conversion/HALToVM/BUILD b/iree/compiler/Dialect/HAL/Conversion/HALToVM/BUILD
index f4cdcc1..72c80e7 100644
--- a/iree/compiler/Dialect/HAL/Conversion/HALToVM/BUILD
+++ b/iree/compiler/Dialect/HAL/Conversion/HALToVM/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/BUILD b/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/BUILD
+++ b/iree/compiler/Dialect/HAL/Conversion/HALToVM/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/IR/BUILD b/iree/compiler/Dialect/HAL/IR/BUILD
index 05fb09e..0ecb83b 100644
--- a/iree/compiler/Dialect/HAL/IR/BUILD
+++ b/iree/compiler/Dialect/HAL/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/IR/test/BUILD b/iree/compiler/Dialect/HAL/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/HAL/IR/test/BUILD
+++ b/iree/compiler/Dialect/HAL/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/BUILD b/iree/compiler/Dialect/HAL/Target/BUILD
index 204b4ba..9f1faef 100644
--- a/iree/compiler/Dialect/HAL/Target/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/LLVM/BUILD b/iree/compiler/Dialect/HAL/Target/LLVM/BUILD
index 20d26ae..2e322af 100644
--- a/iree/compiler/Dialect/HAL/Target/LLVM/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/LLVM/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/LLVM/internal/BUILD b/iree/compiler/Dialect/HAL/Target/LLVM/internal/BUILD
index 97cc95a..c3ba845 100644
--- a/iree/compiler/Dialect/HAL/Target/LLVM/internal/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/LLVM/internal/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
@@ -21,7 +22,7 @@
     name = "LLVMAOTTargetLinker_internal",
     srcs = ["LLVMAOTTargetLinker.cpp"],
     deps = [
-        "//iree/base:file_io",
+        "//iree/base:status",
         "//iree/compiler/Dialect/HAL/Target/LLVM:LLVMAOTTargetLinker_hdrs",
     ],
 )
diff --git a/iree/compiler/Dialect/HAL/Target/LLVM/internal/CMakeLists.txt b/iree/compiler/Dialect/HAL/Target/LLVM/internal/CMakeLists.txt
index 3bb63dd..18c9c7a 100644
--- a/iree/compiler/Dialect/HAL/Target/LLVM/internal/CMakeLists.txt
+++ b/iree/compiler/Dialect/HAL/Target/LLVM/internal/CMakeLists.txt
@@ -20,7 +20,7 @@
   SRCS
     "LLVMAOTTargetLinker.cpp"
   DEPS
-    iree::base::file_io
+    iree::base::status
     iree::compiler::Dialect::HAL::Target::LLVM::LLVMAOTTargetLinker_hdrs
   PUBLIC
 )
diff --git a/iree/compiler/Dialect/HAL/Target/LLVM/test/BUILD b/iree/compiler/Dialect/HAL/Target/LLVM/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/HAL/Target/LLVM/test/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/LLVM/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/VMLA/BUILD b/iree/compiler/Dialect/HAL/Target/VMLA/BUILD
index ac2fbca..46ed3e2 100644
--- a/iree/compiler/Dialect/HAL/Target/VMLA/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/VMLA/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/VMLA/test/BUILD b/iree/compiler/Dialect/HAL/Target/VMLA/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/HAL/Target/VMLA/test/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/VMLA/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/BUILD b/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/BUILD
index 87369da..db815ab 100644
--- a/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Target/test/BUILD b/iree/compiler/Dialect/HAL/Target/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/HAL/Target/test/BUILD
+++ b/iree/compiler/Dialect/HAL/Target/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Transforms/BUILD b/iree/compiler/Dialect/HAL/Transforms/BUILD
index ae855d5..3772597 100644
--- a/iree/compiler/Dialect/HAL/Transforms/BUILD
+++ b/iree/compiler/Dialect/HAL/Transforms/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Transforms/test/BUILD b/iree/compiler/Dialect/HAL/Transforms/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/HAL/Transforms/test/BUILD
+++ b/iree/compiler/Dialect/HAL/Transforms/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/HAL/Utils/BUILD b/iree/compiler/Dialect/HAL/Utils/BUILD
index 060a5ef..e1758db 100644
--- a/iree/compiler/Dialect/HAL/Utils/BUILD
+++ b/iree/compiler/Dialect/HAL/Utils/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/BUILD b/iree/compiler/Dialect/IREE/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/IREE/BUILD
+++ b/iree/compiler/Dialect/IREE/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/IREE/Conversion/BUILD b/iree/compiler/Dialect/IREE/Conversion/BUILD
index 7a5dab5..5aa54ef 100644
--- a/iree/compiler/Dialect/IREE/Conversion/BUILD
+++ b/iree/compiler/Dialect/IREE/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/Conversion/test/BUILD b/iree/compiler/Dialect/IREE/Conversion/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/IREE/Conversion/test/BUILD
+++ b/iree/compiler/Dialect/IREE/Conversion/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/IR/BUILD b/iree/compiler/Dialect/IREE/IR/BUILD
index 9e73fea..1c839d4 100644
--- a/iree/compiler/Dialect/IREE/IR/BUILD
+++ b/iree/compiler/Dialect/IREE/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/IR/test/BUILD b/iree/compiler/Dialect/IREE/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/IREE/IR/test/BUILD
+++ b/iree/compiler/Dialect/IREE/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/Tools/BUILD b/iree/compiler/Dialect/IREE/Tools/BUILD
index bd70695..f046f8e 100644
--- a/iree/compiler/Dialect/IREE/Tools/BUILD
+++ b/iree/compiler/Dialect/IREE/Tools/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/Transforms/BUILD b/iree/compiler/Dialect/IREE/Transforms/BUILD
index 4917a9b..2c47155 100644
--- a/iree/compiler/Dialect/IREE/Transforms/BUILD
+++ b/iree/compiler/Dialect/IREE/Transforms/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/IREE/Transforms/test/BUILD b/iree/compiler/Dialect/IREE/Transforms/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/IREE/Transforms/test/BUILD
+++ b/iree/compiler/Dialect/IREE/Transforms/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/BUILD b/iree/compiler/Dialect/Modules/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/Modules/BUILD
+++ b/iree/compiler/Dialect/Modules/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/Modules/Check/BUILD b/iree/compiler/Dialect/Modules/Check/BUILD
index 2917f10..e1cf369 100644
--- a/iree/compiler/Dialect/Modules/Check/BUILD
+++ b/iree/compiler/Dialect/Modules/Check/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Check/Conversion/BUILD b/iree/compiler/Dialect/Modules/Check/Conversion/BUILD
index b362b0c..470f1d1 100644
--- a/iree/compiler/Dialect/Modules/Check/Conversion/BUILD
+++ b/iree/compiler/Dialect/Modules/Check/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Check/IR/BUILD b/iree/compiler/Dialect/Modules/Check/IR/BUILD
index 71c2046..fd35c89 100644
--- a/iree/compiler/Dialect/Modules/Check/IR/BUILD
+++ b/iree/compiler/Dialect/Modules/Check/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Check/test/BUILD b/iree/compiler/Dialect/Modules/Check/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Modules/Check/test/BUILD
+++ b/iree/compiler/Dialect/Modules/Check/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Strings/BUILD b/iree/compiler/Dialect/Modules/Strings/BUILD
index 48da311..865006f 100644
--- a/iree/compiler/Dialect/Modules/Strings/BUILD
+++ b/iree/compiler/Dialect/Modules/Strings/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Strings/Conversion/BUILD b/iree/compiler/Dialect/Modules/Strings/Conversion/BUILD
index 73e6e9a..00fe854 100644
--- a/iree/compiler/Dialect/Modules/Strings/Conversion/BUILD
+++ b/iree/compiler/Dialect/Modules/Strings/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Strings/IR/BUILD b/iree/compiler/Dialect/Modules/Strings/IR/BUILD
index 15868f1..a0a3bb1 100644
--- a/iree/compiler/Dialect/Modules/Strings/IR/BUILD
+++ b/iree/compiler/Dialect/Modules/Strings/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/Strings/IR/test/BUILD b/iree/compiler/Dialect/Modules/Strings/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Modules/Strings/IR/test/BUILD
+++ b/iree/compiler/Dialect/Modules/Strings/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/TensorList/BUILD b/iree/compiler/Dialect/Modules/TensorList/BUILD
index c6b986e..97fbca4 100644
--- a/iree/compiler/Dialect/Modules/TensorList/BUILD
+++ b/iree/compiler/Dialect/Modules/TensorList/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/TensorList/Conversion/BUILD b/iree/compiler/Dialect/Modules/TensorList/Conversion/BUILD
index 6853db5..d37900e 100644
--- a/iree/compiler/Dialect/Modules/TensorList/Conversion/BUILD
+++ b/iree/compiler/Dialect/Modules/TensorList/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/TensorList/Conversion/test/BUILD b/iree/compiler/Dialect/Modules/TensorList/Conversion/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Modules/TensorList/Conversion/test/BUILD
+++ b/iree/compiler/Dialect/Modules/TensorList/Conversion/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/TensorList/IR/BUILD b/iree/compiler/Dialect/Modules/TensorList/IR/BUILD
index 8262ae7..02b5330 100644
--- a/iree/compiler/Dialect/Modules/TensorList/IR/BUILD
+++ b/iree/compiler/Dialect/Modules/TensorList/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Modules/TensorList/IR/test/BUILD b/iree/compiler/Dialect/Modules/TensorList/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Modules/TensorList/IR/test/BUILD
+++ b/iree/compiler/Dialect/Modules/TensorList/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Sequence/IR/BUILD b/iree/compiler/Dialect/Sequence/IR/BUILD
index 962f4f3..9f4d05c 100644
--- a/iree/compiler/Dialect/Sequence/IR/BUILD
+++ b/iree/compiler/Dialect/Sequence/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
@@ -51,6 +52,7 @@
         "@llvm-project//llvm:Support",
         "@llvm-project//mlir:IR",
         "@llvm-project//mlir:Parser",
+        "@llvm-project//mlir:Support",
     ],
 )
 
diff --git a/iree/compiler/Dialect/Sequence/IR/CMakeLists.txt b/iree/compiler/Dialect/Sequence/IR/CMakeLists.txt
index 191383c..eae1fd6 100644
--- a/iree/compiler/Dialect/Sequence/IR/CMakeLists.txt
+++ b/iree/compiler/Dialect/Sequence/IR/CMakeLists.txt
@@ -36,6 +36,7 @@
     LLVMSupport
     MLIRIR
     MLIRParser
+    MLIRSupport
     iree::compiler::Dialect::IREE::IR
   PUBLIC
 )
diff --git a/iree/compiler/Dialect/Sequence/IR/test/BUILD b/iree/compiler/Dialect/Sequence/IR/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Sequence/IR/test/BUILD
+++ b/iree/compiler/Dialect/Sequence/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/BUILD b/iree/compiler/Dialect/Shape/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/Shape/BUILD
+++ b/iree/compiler/Dialect/Shape/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/Shape/Conversion/BUILD b/iree/compiler/Dialect/Shape/Conversion/BUILD
index c57fb91..11ccfa3 100644
--- a/iree/compiler/Dialect/Shape/Conversion/BUILD
+++ b/iree/compiler/Dialect/Shape/Conversion/BUILD
@@ -1,5 +1,6 @@
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Conversion/test/BUILD b/iree/compiler/Dialect/Shape/Conversion/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Shape/Conversion/test/BUILD
+++ b/iree/compiler/Dialect/Shape/Conversion/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/IR/BUILD b/iree/compiler/Dialect/Shape/IR/BUILD
index 2abb13e..9e71967 100644
--- a/iree/compiler/Dialect/Shape/IR/BUILD
+++ b/iree/compiler/Dialect/Shape/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/IR/test/BUILD b/iree/compiler/Dialect/Shape/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/Shape/IR/test/BUILD
+++ b/iree/compiler/Dialect/Shape/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Plugins/BUILD b/iree/compiler/Dialect/Shape/Plugins/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/Shape/Plugins/BUILD
+++ b/iree/compiler/Dialect/Shape/Plugins/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/Shape/Plugins/VMLA/BUILD b/iree/compiler/Dialect/Shape/Plugins/VMLA/BUILD
index 7d9ed09..17d9247 100644
--- a/iree/compiler/Dialect/Shape/Plugins/VMLA/BUILD
+++ b/iree/compiler/Dialect/Shape/Plugins/VMLA/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Plugins/VMLA/test/BUILD b/iree/compiler/Dialect/Shape/Plugins/VMLA/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Shape/Plugins/VMLA/test/BUILD
+++ b/iree/compiler/Dialect/Shape/Plugins/VMLA/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Plugins/XLA/BUILD b/iree/compiler/Dialect/Shape/Plugins/XLA/BUILD
index a0fc334..2df0e5b 100644
--- a/iree/compiler/Dialect/Shape/Plugins/XLA/BUILD
+++ b/iree/compiler/Dialect/Shape/Plugins/XLA/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Plugins/XLA/test/BUILD b/iree/compiler/Dialect/Shape/Plugins/XLA/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Shape/Plugins/XLA/test/BUILD
+++ b/iree/compiler/Dialect/Shape/Plugins/XLA/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Transforms/BUILD b/iree/compiler/Dialect/Shape/Transforms/BUILD
index 736e4ab..82c50b2 100644
--- a/iree/compiler/Dialect/Shape/Transforms/BUILD
+++ b/iree/compiler/Dialect/Shape/Transforms/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Transforms/test/BUILD b/iree/compiler/Dialect/Shape/Transforms/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Shape/Transforms/test/BUILD
+++ b/iree/compiler/Dialect/Shape/Transforms/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Shape/Utils/BUILD b/iree/compiler/Dialect/Shape/Utils/BUILD
index 086bf7e..52a965d 100644
--- a/iree/compiler/Dialect/Shape/Utils/BUILD
+++ b/iree/compiler/Dialect/Shape/Utils/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Analysis/BUILD b/iree/compiler/Dialect/VM/Analysis/BUILD
index b626a0f..6117718 100644
--- a/iree/compiler/Dialect/VM/Analysis/BUILD
+++ b/iree/compiler/Dialect/VM/Analysis/BUILD
@@ -1,5 +1,6 @@
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Analysis/test/BUILD b/iree/compiler/Dialect/VM/Analysis/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/VM/Analysis/test/BUILD
+++ b/iree/compiler/Dialect/VM/Analysis/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/BUILD b/iree/compiler/Dialect/VM/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/VM/BUILD
+++ b/iree/compiler/Dialect/VM/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/VM/Conversion/BUILD b/iree/compiler/Dialect/VM/Conversion/BUILD
index 16a330b..93a502d 100644
--- a/iree/compiler/Dialect/VM/Conversion/BUILD
+++ b/iree/compiler/Dialect/VM/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Conversion/IREEToVM/BUILD b/iree/compiler/Dialect/VM/Conversion/IREEToVM/BUILD
index 537f4ce..e3eb3a7 100644
--- a/iree/compiler/Dialect/VM/Conversion/IREEToVM/BUILD
+++ b/iree/compiler/Dialect/VM/Conversion/IREEToVM/BUILD
@@ -1,5 +1,6 @@
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Conversion/IREEToVM/test/BUILD b/iree/compiler/Dialect/VM/Conversion/IREEToVM/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VM/Conversion/IREEToVM/test/BUILD
+++ b/iree/compiler/Dialect/VM/Conversion/IREEToVM/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Conversion/StandardToVM/BUILD b/iree/compiler/Dialect/VM/Conversion/StandardToVM/BUILD
index 9212459..178810d 100644
--- a/iree/compiler/Dialect/VM/Conversion/StandardToVM/BUILD
+++ b/iree/compiler/Dialect/VM/Conversion/StandardToVM/BUILD
@@ -1,5 +1,6 @@
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Conversion/StandardToVM/test/BUILD b/iree/compiler/Dialect/VM/Conversion/StandardToVM/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/VM/Conversion/StandardToVM/test/BUILD
+++ b/iree/compiler/Dialect/VM/Conversion/StandardToVM/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/IR/BUILD b/iree/compiler/Dialect/VM/IR/BUILD
index c458d11..fcf853d 100644
--- a/iree/compiler/Dialect/VM/IR/BUILD
+++ b/iree/compiler/Dialect/VM/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/IR/test/BUILD b/iree/compiler/Dialect/VM/IR/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/VM/IR/test/BUILD
+++ b/iree/compiler/Dialect/VM/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Target/BUILD b/iree/compiler/Dialect/VM/Target/BUILD
index d06fe02..47ff0d0 100644
--- a/iree/compiler/Dialect/VM/Target/BUILD
+++ b/iree/compiler/Dialect/VM/Target/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Target/Bytecode/BUILD b/iree/compiler/Dialect/VM/Target/Bytecode/BUILD
index 72c9bb1..8a1f4db 100644
--- a/iree/compiler/Dialect/VM/Target/Bytecode/BUILD
+++ b/iree/compiler/Dialect/VM/Target/Bytecode/BUILD
@@ -1,5 +1,6 @@
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Target/Bytecode/test/BUILD b/iree/compiler/Dialect/VM/Target/Bytecode/test/BUILD
index 3626929..71d3624 100644
--- a/iree/compiler/Dialect/VM/Target/Bytecode/test/BUILD
+++ b/iree/compiler/Dialect/VM/Target/Bytecode/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Tools/BUILD b/iree/compiler/Dialect/VM/Tools/BUILD
index 785e5d5..b31b9f9 100644
--- a/iree/compiler/Dialect/VM/Tools/BUILD
+++ b/iree/compiler/Dialect/VM/Tools/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Transforms/BUILD b/iree/compiler/Dialect/VM/Transforms/BUILD
index 51671a1..f48923e 100644
--- a/iree/compiler/Dialect/VM/Transforms/BUILD
+++ b/iree/compiler/Dialect/VM/Transforms/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VM/Transforms/test/BUILD b/iree/compiler/Dialect/VM/Transforms/test/BUILD
index 7c58b4a..b780b11 100644
--- a/iree/compiler/Dialect/VM/Transforms/test/BUILD
+++ b/iree/compiler/Dialect/VM/Transforms/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/BUILD b/iree/compiler/Dialect/VMLA/BUILD
index 8ec7202..850ee73 100644
--- a/iree/compiler/Dialect/VMLA/BUILD
+++ b/iree/compiler/Dialect/VMLA/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/BUILD b/iree/compiler/Dialect/VMLA/Conversion/BUILD
index 51f5aa0..db7c68d 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/BUILD b/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/BUILD
index 87d3182..0f4e3fb 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/test/BUILD b/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/test/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/HALToVMLA/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/BUILD b/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/BUILD
index 3fc3828..85534cd 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
@@ -39,6 +40,7 @@
         "@llvm-project//mlir:StandardOps",
         "@llvm-project//mlir:Transforms",
         "@org_tensorflow//tensorflow/compiler/mlir/hlo",
+        "@org_tensorflow//tensorflow/compiler/mlir/hlo:legalize_to_linalg",
         "@org_tensorflow//tensorflow/compiler/mlir/hlo:legalize_to_standard",
     ],
 )
diff --git a/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/test/BUILD b/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/test/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/HLOToVMLA/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/BUILD b/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/BUILD
index 4ac3672..581c40f 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/test/BUILD b/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/test/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/StandardToVMLA/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/BUILD b/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/BUILD
index 9e9fb7a..40c585d 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/test/BUILD b/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/test/BUILD
+++ b/iree/compiler/Dialect/VMLA/Conversion/VMLAToVM/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/IR/BUILD b/iree/compiler/Dialect/VMLA/IR/BUILD
index 344d6bb..40e8973 100644
--- a/iree/compiler/Dialect/VMLA/IR/BUILD
+++ b/iree/compiler/Dialect/VMLA/IR/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/IR/test/BUILD b/iree/compiler/Dialect/VMLA/IR/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VMLA/IR/test/BUILD
+++ b/iree/compiler/Dialect/VMLA/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/VMLA/Transforms/BUILD b/iree/compiler/Dialect/VMLA/Transforms/BUILD
index 6ac0bc4..e70cb08 100644
--- a/iree/compiler/Dialect/VMLA/Transforms/BUILD
+++ b/iree/compiler/Dialect/VMLA/Transforms/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
@@ -46,5 +47,6 @@
         "@llvm-project//mlir:Support",
         "@llvm-project//mlir:Transforms",
         "@org_tensorflow//tensorflow/compiler/mlir/hlo",
+        "@org_tensorflow//tensorflow/compiler/mlir/hlo:lhlo_fuse_linalg",
     ],
 )
diff --git a/iree/compiler/Dialect/VMLA/Transforms/test/BUILD b/iree/compiler/Dialect/VMLA/Transforms/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/VMLA/Transforms/test/BUILD
+++ b/iree/compiler/Dialect/VMLA/Transforms/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Vulkan/BUILD b/iree/compiler/Dialect/Vulkan/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/compiler/Dialect/Vulkan/BUILD
+++ b/iree/compiler/Dialect/Vulkan/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/compiler/Dialect/Vulkan/IR/BUILD b/iree/compiler/Dialect/Vulkan/IR/BUILD
index c347009..ddf2ebf 100644
--- a/iree/compiler/Dialect/Vulkan/IR/BUILD
+++ b/iree/compiler/Dialect/Vulkan/IR/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Vulkan/IR/test/BUILD b/iree/compiler/Dialect/Vulkan/IR/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Vulkan/IR/test/BUILD
+++ b/iree/compiler/Dialect/Vulkan/IR/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Vulkan/Utils/BUILD b/iree/compiler/Dialect/Vulkan/Utils/BUILD
index 0cdc309..247e11f 100644
--- a/iree/compiler/Dialect/Vulkan/Utils/BUILD
+++ b/iree/compiler/Dialect/Vulkan/Utils/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Dialect/Vulkan/Utils/test/BUILD b/iree/compiler/Dialect/Vulkan/Utils/test/BUILD
index 14281d1..bb9c0e0 100644
--- a/iree/compiler/Dialect/Vulkan/Utils/test/BUILD
+++ b/iree/compiler/Dialect/Vulkan/Utils/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Translation/BUILD b/iree/compiler/Translation/BUILD
index 2dd10c4..2b6d320 100644
--- a/iree/compiler/Translation/BUILD
+++ b/iree/compiler/Translation/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Translation/test/BUILD b/iree/compiler/Translation/test/BUILD
index 950ea5a..cac3e25 100644
--- a/iree/compiler/Translation/test/BUILD
+++ b/iree/compiler/Translation/test/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/compiler/Utils/BUILD b/iree/compiler/Utils/BUILD
index 138d14b..68f4e04 100644
--- a/iree/compiler/Utils/BUILD
+++ b/iree/compiler/Utils/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/BUILD b/iree/hal/BUILD
index 2143b21..f976cf0 100644
--- a/iree/hal/BUILD
+++ b/iree/hal/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/cts/BUILD b/iree/hal/cts/BUILD
index 6ba8925..9c14754 100644
--- a/iree/hal/cts/BUILD
+++ b/iree/hal/cts/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/dawn/BUILD b/iree/hal/dawn/BUILD
index 7fabdc6..0b50c82 100644
--- a/iree/hal/dawn/BUILD
+++ b/iree/hal/dawn/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/dylib/BUILD b/iree/hal/dylib/BUILD
index 330048e..25c08ea 100644
--- a/iree/hal/dylib/BUILD
+++ b/iree/hal/dylib/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/host/BUILD b/iree/hal/host/BUILD
index f55e209..3480cc4 100644
--- a/iree/hal/host/BUILD
+++ b/iree/hal/host/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/host/serial/BUILD b/iree/hal/host/serial/BUILD
index cdb773e..04281e4 100644
--- a/iree/hal/host/serial/BUILD
+++ b/iree/hal/host/serial/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/llvmjit/BUILD b/iree/hal/llvmjit/BUILD
index 9853ca9..088bb8b 100644
--- a/iree/hal/llvmjit/BUILD
+++ b/iree/hal/llvmjit/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/testing/BUILD b/iree/hal/testing/BUILD
index 54bb14f..d69e68c 100644
--- a/iree/hal/testing/BUILD
+++ b/iree/hal/testing/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/vmla/BUILD b/iree/hal/vmla/BUILD
index bfbcc8c..d966b7c 100644
--- a/iree/hal/vmla/BUILD
+++ b/iree/hal/vmla/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/hal/vulkan/BUILD b/iree/hal/vulkan/BUILD
index 5dc0aae..b93167a 100644
--- a/iree/hal/vulkan/BUILD
+++ b/iree/hal/vulkan/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
@@ -189,16 +190,20 @@
     srcs = ["emulated_timeline_semaphore.cc"],
     hdrs = ["emulated_timeline_semaphore.h"],
     deps = [
+        ":dynamic_symbols",
         ":handle_util",
         ":status_util",
         ":timepoint_util",
         "//iree/base:intrusive_list",
+        "//iree/base:ref_ptr",
         "//iree/base:status",
         "//iree/base:tracing",
         "//iree/hal:semaphore",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/container:inlined_vector",
         "@com_google_absl//absl/synchronization",
         "@com_google_absl//absl/time",
+        "@com_google_absl//absl/utility",
         "@iree_vulkan_headers//:vulkan_headers_no_prototypes",
     ],
 )
@@ -348,15 +353,25 @@
     hdrs = ["serializing_command_queue.h"],
     deps = [
         ":direct_command_buffer",
+        ":dynamic_symbols",
         ":emulated_timeline_semaphore",
         ":handle_util",
         ":status_util",
         ":timepoint_util",
+        "//iree/base:intrusive_list",
+        "//iree/base:memory",
+        "//iree/base:ref_ptr",
+        "//iree/base:source_location",
         "//iree/base:status",
         "//iree/base:tracing",
+        "//iree/hal:command_buffer",
         "//iree/hal:command_queue",
+        "//iree/hal:semaphore",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/container:inlined_vector",
         "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/time",
+        "@com_google_absl//absl/types:span",
     ],
 )
 
@@ -375,12 +390,17 @@
     srcs = ["timepoint_util.cc"],
     hdrs = ["timepoint_util.h"],
     deps = [
+        ":dynamic_symbols",
         ":handle_util",
+        ":status_util",
         "//iree/base:intrusive_list",
         "//iree/base:ref_ptr",
         "//iree/base:status",
         "//iree/base:tracing",
+        "@com_google_absl//absl/base:core_headers",
         "@com_google_absl//absl/synchronization",
+        "@com_google_absl//absl/time",
+        "@com_google_absl//absl/utility",
         "@iree_vulkan_headers//:vulkan_headers_no_prototypes",
     ],
 )
diff --git a/iree/modules/BUILD b/iree/modules/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/modules/BUILD
+++ b/iree/modules/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/modules/check/BUILD b/iree/modules/check/BUILD
index 2e3fe63..87f83a0 100644
--- a/iree/modules/check/BUILD
+++ b/iree/modules/check/BUILD
@@ -21,6 +21,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/modules/check/test/BUILD b/iree/modules/check/test/BUILD
index 9cdc2af..916c867 100644
--- a/iree/modules/check/test/BUILD
+++ b/iree/modules/check/test/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/modules/hal/BUILD b/iree/modules/hal/BUILD
index 1f592ed..1dfa982 100644
--- a/iree/modules/hal/BUILD
+++ b/iree/modules/hal/BUILD
@@ -14,6 +14,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/modules/strings/BUILD b/iree/modules/strings/BUILD
index c3e1efe..4d46042 100644
--- a/iree/modules/strings/BUILD
+++ b/iree/modules/strings/BUILD
@@ -2,6 +2,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/modules/tensorlist/BUILD b/iree/modules/tensorlist/BUILD
index 6ceb95c..1bc2d81 100644
--- a/iree/modules/tensorlist/BUILD
+++ b/iree/modules/tensorlist/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/samples/BUILD b/iree/samples/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/samples/BUILD
+++ b/iree/samples/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/samples/custom_modules/BUILD b/iree/samples/custom_modules/BUILD
index 9531f0a..411e69c 100644
--- a/iree/samples/custom_modules/BUILD
+++ b/iree/samples/custom_modules/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/samples/custom_modules/dialect/BUILD b/iree/samples/custom_modules/dialect/BUILD
index d52e576..c5e2353 100644
--- a/iree/samples/custom_modules/dialect/BUILD
+++ b/iree/samples/custom_modules/dialect/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/samples/custom_modules/dialect/test/BUILD b/iree/samples/custom_modules/dialect/test/BUILD
index 9b910cf..d063706 100644
--- a/iree/samples/custom_modules/dialect/test/BUILD
+++ b/iree/samples/custom_modules/dialect/test/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/samples/simple_embedding/BUILD b/iree/samples/simple_embedding/BUILD
index 73bedfe..7a9ad60 100644
--- a/iree/samples/simple_embedding/BUILD
+++ b/iree/samples/simple_embedding/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/samples/vulkan/BUILD b/iree/samples/vulkan/BUILD
index 69efc67..7bf6f7e 100644
--- a/iree/samples/vulkan/BUILD
+++ b/iree/samples/vulkan/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/schemas/BUILD b/iree/schemas/BUILD
index 7c5030d..b72d7a9 100644
--- a/iree/schemas/BUILD
+++ b/iree/schemas/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/test/BUILD b/iree/test/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/test/BUILD
+++ b/iree/test/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/test/e2e/BUILD b/iree/test/e2e/BUILD
index a98a3c4..0e6ae3d 100644
--- a/iree/test/e2e/BUILD
+++ b/iree/test/e2e/BUILD
@@ -14,5 +14,6 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
diff --git a/iree/test/e2e/models/BUILD b/iree/test/e2e/models/BUILD
index a63d50e..e7ece7a 100644
--- a/iree/test/e2e/models/BUILD
+++ b/iree/test/e2e/models/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/test/e2e/regression/BUILD b/iree/test/e2e/regression/BUILD
index dc9bdb1..fc3ef1f 100644
--- a/iree/test/e2e/regression/BUILD
+++ b/iree/test/e2e/regression/BUILD
@@ -20,6 +20,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/test/e2e/structural/BUILD b/iree/test/e2e/structural/BUILD
index 7e7e695..5b41267 100644
--- a/iree/test/e2e/structural/BUILD
+++ b/iree/test/e2e/structural/BUILD
@@ -16,6 +16,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/test/e2e/vulkan_specific/BUILD b/iree/test/e2e/vulkan_specific/BUILD
index a3abc81..0565a86 100644
--- a/iree/test/e2e/vulkan_specific/BUILD
+++ b/iree/test/e2e/vulkan_specific/BUILD
@@ -19,6 +19,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/test/e2e/xla_ops/BUILD b/iree/test/e2e/xla_ops/BUILD
index 744d0a4..9af6bd1 100644
--- a/iree/test/e2e/xla_ops/BUILD
+++ b/iree/test/e2e/xla_ops/BUILD
@@ -23,6 +23,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/testing/BUILD b/iree/testing/BUILD
index d33fd16..b51d6fb 100644
--- a/iree/testing/BUILD
+++ b/iree/testing/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/testing/internal/BUILD b/iree/testing/internal/BUILD
index 16d9d9c..880fa29 100644
--- a/iree/testing/internal/BUILD
+++ b/iree/testing/internal/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/tools/BUILD b/iree/tools/BUILD
index 9c3ab4c..3ee8120 100644
--- a/iree/tools/BUILD
+++ b/iree/tools/BUILD
@@ -24,6 +24,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/tools/test/BUILD b/iree/tools/test/BUILD
index 7f37f5f..2446837 100644
--- a/iree/tools/test/BUILD
+++ b/iree/tools/test/BUILD
@@ -18,6 +18,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/vm/BUILD b/iree/vm/BUILD
index 6e4d174..c9350c5 100644
--- a/iree/vm/BUILD
+++ b/iree/vm/BUILD
@@ -5,6 +5,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/iree/vm/test/BUILD b/iree/vm/test/BUILD
index 9ee380d..5018865 100644
--- a/iree/vm/test/BUILD
+++ b/iree/vm/test/BUILD
@@ -17,6 +17,7 @@
 
 package(
     default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
     licenses = ["notice"],  # Apache 2.0
 )
 
diff --git a/packaging/python/BUILD.bazel b/packaging/python/BUILD.bazel
index f95ba18..4e48edd 100644
--- a/packaging/python/BUILD.bazel
+++ b/packaging/python/BUILD.bazel
@@ -12,6 +12,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+package(
+    features = ["layering_check"],
+    licenses = ["notice"],
+)
+
 # This is a dummy binary that has the side-effect of building all of the TF
 # python bindings. It is used to build wheel files.
 py_binary(