Merge branch 'main' into google-to-main
diff --git a/.github/workflows/bazel_to_cmake.yml b/.github/workflows/bazel_to_cmake.yml
deleted file mode 100644
index 0ca3d93..0000000
--- a/.github/workflows/bazel_to_cmake.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2020 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name: Bazel to CMake
-
-on: [pull_request, push]
-
-jobs:
-  bazel_to_cmake:
-    name: Bazel to CMake Check
-    runs-on: ubuntu-18.04
-    steps:
-    - name: Checking out repository
-      uses: actions/checkout@v2
-    - name: Running bazel_to_cmake
-      run: |
-        ./build_tools/bazel_to_cmake/bazel_to_cmake.py
-        git diff --exit-code
diff --git a/.github/workflows/check_submodules.yml b/.github/workflows/check_submodules.yml
deleted file mode 100644
index 1ae89eb..0000000
--- a/.github/workflows/check_submodules.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Checks that the submodule state in SUBMODULE_VERSIONS matches `git submodule status`
-
-name: Check Submodules
-
-on: [pull_request, push]
-
-jobs:
-  submodules:
-    runs-on: ubuntu-18.04
-    steps:
-      - name: Checking out repository
-        uses: actions/checkout@v2
-      - name: Checking submodules
-        run: ./scripts/git/submodule_versions.py check
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
deleted file mode 100644
index 4b9279a..0000000
--- a/.github/workflows/format.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2019 Google LLC
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name: Format
-
-on: [pull_request]
-
-jobs:
-  # Run clang-format and verify there are no errors. We don't want to bother
-  # building until we've at least got clean code.
-  format:
-    name: Code Format Check
-    runs-on: ubuntu-18.04
-    env:
-      BASE_REF: ${{ github.base_ref }}
-    steps:
-    - name: Installing dependencies
-      run: |
-        sudo add-apt-repository -y "deb http://mirror.enzu.com/ubuntu/ eoan main universe"
-        sudo apt-get update -qq
-        sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends clang-format-9
-        wget https://raw.githubusercontent.com/llvm-mirror/clang/master/tools/clang-format/git-clang-format -O /tmp/git-clang-format
-        chmod +x /tmp/git-clang-format
-    - name: Checking out repository
-      uses: actions/checkout@v2
-      # We have to explicitly fetch the base branch as well
-    - name: Fetching Base Branch
-      run: git fetch --no-tags --prune --depth=1 origin "${BASE_REF?}"
-    - name: Running clang-format on changed source files
-      run: |
-        /tmp/git-clang-format "origin/${BASE_REF?}" --binary=clang-format-9 --style=file
-        git diff --exit-code
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 0000000..43c6a69
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,67 @@
+# Copyright 2019 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Lint
+
+on: [pull_request]
+
+jobs:
+  clang-format:
+    runs-on: ubuntu-18.04
+    env:
+      BASE_REF: ${{ github.base_ref }}
+    steps:
+      - name: Installing dependencies
+        run: |
+          sudo add-apt-repository -y "deb http://mirror.enzu.com/ubuntu/ eoan main universe"
+          sudo apt-get update -qq
+          sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends clang-format-9
+          wget https://raw.githubusercontent.com/llvm-mirror/clang/master/tools/clang-format/git-clang-format -O /tmp/git-clang-format
+          chmod +x /tmp/git-clang-format
+      - name: Checking out repository
+        uses: actions/checkout@v2
+        # We have to explicitly fetch the base branch as well
+      - name: Fetching Base Branch
+        run: git fetch --no-tags --prune --depth=1 origin "${BASE_REF?}"
+      - name: Running clang-format on changed source files
+        run: |
+          /tmp/git-clang-format "origin/${BASE_REF?}" --binary=clang-format-9 --style=file
+          git diff --exit-code
+
+  bazel_to_cmake:
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checking out repository
+        uses: actions/checkout@v2
+      - name: Running bazel_to_cmake
+        run: ./build_tools/bazel_to_cmake/bazel_to_cmake.py
+      - name: Checking Diff
+        run: git diff --exit-code
+
+  submodules:
+    runs-on: ubuntu-18.04
+    steps:
+      - name: Checking out repository
+        uses: actions/checkout@v2
+      - name: Checking submodules
+        run: ./scripts/git/submodule_versions.py check
+
+  yamllint:
+    runs-on: ubuntu-18.04
+    steps:
+      - uses: actions/checkout@v2
+      - name: yaml-lint
+        uses: ibiqlik/action-yamllint@v1
+        with:
+          strict: true
diff --git a/.github/workflows/synchronize_submodules.yml b/.github/workflows/synchronize_submodules.yml
index f56af6b..cd0aed6 100644
--- a/.github/workflows/synchronize_submodules.yml
+++ b/.github/workflows/synchronize_submodules.yml
@@ -50,4 +50,3 @@
         with:
           github_token: ${{ secrets.GITHUB_WRITE_ACCESS_TOKEN }}
           branch: ${{ github.ref }}
-
diff --git a/.yamllint.yml b/.yamllint.yml
new file mode 100644
index 0000000..a52bc13
--- /dev/null
+++ b/.yamllint.yml
@@ -0,0 +1,15 @@
+extends: default
+
+rules:
+  # These do not appear to be conventional in GitHub actions.
+  document-end:
+    present: false
+  document-start:
+    present: false
+  # GitHub actions use "on" for triggers.
+  truthy: disable
+  # We have lots of long strings and command lines.
+  line-length: disable
+
+ignore:
+  /third_party/*
diff --git a/integrations/tensorflow/e2e/README.md b/integrations/tensorflow/e2e/README.md
index 36e5e71..6f3272f 100644
--- a/integrations/tensorflow/e2e/README.md
+++ b/integrations/tensorflow/e2e/README.md
@@ -1,7 +1,7 @@
 # TensorFlow e2e tests
 
-This is a collection of e2e tests that, in various fashion saves a TensorFlow
-model, compiles it with IREE and runs/evaluates it on all backends.
+This is a collection of e2e tests that save a TensorFlow model, compile it with
+IREE, run it on multiple backends and crosscheck the results.
 
 ## Pre-Requisites
 
@@ -87,7 +87,7 @@
 ## Debugging tests
 
 If the compiler fails to compile the program, then it will create a crash
-reproducer (see documentation [here](https://mlir.llvm.org/docs/WritingAPass/)),
+reproducer (see [MLIR documentation](https://mlir.llvm.org/docs/WritingAPass/)),
 which then allows reproducing the bug with an appropriate "opt" tool. Further
 debugging iteration can happen in opt.
 
@@ -97,8 +97,7 @@
 
 ### Simple function tests
 
-See `simple_arithmetic_test.py` for some examples of writing a test case that
-runs on multiple backends.
+See `simple_arithmetic_test.py` for some basic examples.
 
 ### Limiting a test to only certain backends
 
@@ -126,11 +125,11 @@
 
 1.  The backends specified in `--override_backends`.
 
-1.  The backends specified in the `IREE_OVERRIDE_BACKENDS` environment variable.
+2.  The backends specified in the `IREE_OVERRIDE_BACKENDS` environment variable.
 
-1.  The backends specified in the `tf_test_utils.compile_modules` decorator.
+3.  The backends specified in the `tf_test_utils.compile_modules` decorator.
 
-1.  All known backends.
+4.  All known backends.
 
 Additionally, the environment variable `IREE_AVAILABLE_BACKENDS` specifies which
 backends should be considered available in a particular environment. Once the