From f762dd80e96a3ea6197e91b092f1c7953166aa1d Mon Sep 17 00:00:00 2001
From: "A. Unique TensorFlower" <gardener@tensorflow.org>
Date: Tue, 23 Feb 2021 04:37:31 -0800
Subject: [PATCH] Integrate LLVM at llvm/llvm-project@6c9541d4ddfd

Updates LLVM usage to match
[6c9541d4ddfd](https://github.com/llvm/llvm-project/commit/6c9541d4ddfd)

PiperOrigin-RevId: 359020255
Change-Id: Ibe6e04cab675c15a9477dc08f6072dd7a9f4e1bb
---
 third_party/llvm/workspace.bzl |  4 +--
 third_party/mlir/BUILD         | 58 ++++++++++++++++++++++++++++------
 third_party/mlir/linalggen.bzl |  2 +-
 3 files changed, 51 insertions(+), 13 deletions(-)

diff --git a/third_party/llvm/workspace.bzl b/third_party/llvm/workspace.bzl
index b5926bdf38a..b0cca370aeb 100644
--- a/third_party/llvm/workspace.bzl
+++ b/third_party/llvm/workspace.bzl
@@ -4,8 +4,8 @@ load("//third_party:repo.bzl", "tf_http_archive")
 
 def repo(name):
     """Imports LLVM."""
-    LLVM_COMMIT = "557d2ade016f3e228e90aab317b94f804e0bc1cd"
-    LLVM_SHA256 = "7bf513f0f0ef6c3444d10572e10ed98c101992774e9aee707a10faa08b2c3763"
+    LLVM_COMMIT = "6c9541d4ddfdab0dcb11436485b466a759c3126c"
+    LLVM_SHA256 = "e5c4357c56d6d9e93e596e95fe029b4a3e18de23ff306d34996cc7b7cc3784df"
 
     tf_http_archive(
         name = name,
diff --git a/third_party/mlir/BUILD b/third_party/mlir/BUILD
index 5f2dd8b75cd..9d800f875d2 100644
--- a/third_party/mlir/BUILD
+++ b/third_party/mlir/BUILD
@@ -4206,9 +4206,9 @@ cc_binary(
 
 cc_binary(
     name = "mlir-linalg-ods-gen",
-    srcs = glob([
+    srcs = [
         "tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp",
-    ]),
+    ],
     linkopts = [
         "-lm",
         "-lpthread",
@@ -4222,6 +4222,25 @@ cc_binary(
     ],
 )
 
+cc_binary(
+    name = "mlir-linalg-ods-yaml-gen",
+    srcs = [
+        "tools/mlir-linalg-ods-gen/mlir-linalg-ods-yaml-gen.cpp",
+    ],
+    linkopts = [
+        "-lm",
+        "-lpthread",
+    ],
+    deps = [
+        ":IR",
+        ":Parser",
+        ":Support",
+        "@llvm-project//llvm:Support",
+        "@llvm-project//llvm:TableGen",
+        "@llvm-project//llvm:config",
+    ],
+)
+
 ## OpenACC dialect
 
 gentbl(
@@ -4525,26 +4544,43 @@ gentbl(
 )
 
 genlinalg(
-    name = "LinalgNamedStructuredOpsIncGen",
+    name = "LinalgNamedStructuredOpsTcIncGen",
     src = "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOpsSpec.tc",
     linalg_outs = [
         (
-            "-gen-impl",
-            "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.cpp.inc",
+            "-gen-impl -o=$@",
+            "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.tcgen.cpp.inc",
         ),
         (
-            "-gen-ods-decl",
-            "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.td",
+            "-gen-ods-decl -o=$@",
+            "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.tcgen.td",
         ),
     ],
     linalggen = ":mlir-linalg-ods-gen",
 )
 
+genlinalg(
+    name = "LinalgNamedStructuredOpsYamlIncGen",
+    src = "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml",
+    linalg_outs = [
+        (
+            "-o-impl=$@",
+            "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yamlgen.cpp.inc",
+        ),
+        (
+            "-o-ods-decl=$@",
+            "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yamlgen.td",
+        ),
+    ],
+    linalggen = ":mlir-linalg-ods-yaml-gen",
+)
+
 filegroup(
     name = "LinalgStructuredOpsTdFiles",
     srcs = [
         "include/mlir/Dialect/Linalg/IR/LinalgInterfaces.td",
-        "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.td",
+        "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.tcgen.td",
+        "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yamlgen.td",
         "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td",
         "include/mlir/Interfaces/CopyOpInterface.td",
         "include/mlir/Interfaces/ViewLikeInterface.td",
@@ -4571,7 +4607,8 @@ gentbl(
     td_file = "include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td",
     td_srcs = [
         ":LinalgStructuredOpsTdFiles",
-        "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.td",
+        "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.tcgen.td",
+        "include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yamlgen.td",
     ],
 )
 
@@ -4746,7 +4783,8 @@ cc_library(
         ":IR",
         ":LinalgInterfaces",
         ":LinalgInterfacesIncGen",
-        ":LinalgNamedStructuredOpsIncGen",
+        ":LinalgNamedStructuredOpsTcIncGen",
+        ":LinalgNamedStructuredOpsYamlIncGen",
         ":LinalgOpsIncGen",
         ":LinalgSparseOpsIncGen",
         ":LinalgStructuredOpsIncGen",
diff --git a/third_party/mlir/linalggen.bzl b/third_party/mlir/linalggen.bzl
index 86cef1cb8d4..96d25458e7d 100644
--- a/third_party/mlir/linalggen.bzl
+++ b/third_party/mlir/linalggen.bzl
@@ -27,7 +27,7 @@ def genlinalg(name, linalggen, src, linalg_outs):
             srcs = [src],
             outs = [out],
             tools = [linalggen],
-            cmd = (" ".join(base_args) + " -o $@"),
+            cmd = (" ".join(base_args)),
         )
 
     # List of opts that do not generate cc files.