Integrate llvm 20231012 (#15163)

Carrying local reverts for:

* https://github.com/openxla/iree/issues/15083 (fixes still being made)
* https://github.com/llvm/llvm-project/pull/67816 while we sync to a
corresponding TF version
* https://github.com/llvm/llvm-project/pull/67809, which has already
been reverted at HEAD and will drop on its own

Landing with local revert: #15207

---------

Co-authored-by: Kunwar Grover <groverkss@gmail.com>
Co-authored-by: Julian Walker <julianreidwalker@gmail.com>
diff --git a/a.out b/a.out
new file mode 100755
index 0000000..b3d4e80
--- /dev/null
+++ b/a.out
Binary files differ
diff --git a/compiler/src/iree/compiler/Codegen/Common/Passes.td b/compiler/src/iree/compiler/Codegen/Common/Passes.td
index d56d109..40edf1c 100644
--- a/compiler/src/iree/compiler/Codegen/Common/Passes.td
+++ b/compiler/src/iree/compiler/Codegen/Common/Passes.td
@@ -442,11 +442,10 @@
             "Optional filename containing a transform dialect specification to "
             "apply. If left empty, the IR is assumed to contain one top-level "
             "transform dialect operation somewhere in the module.">,
-    Option<"transformLibraryFileName",
-           "transform-library-file-name",
+    ListOption<"transformLibraryPaths",
+           "transform-library-paths",
            "std::string",
-           /*default=*/"\"\"",
-           "If non-empty, the name of the file containing definitions of "
+           "If non-empty, the paths to files containing definitions of "
            "external symbols referenced in the transform script. "
            "These definitions will be used to replace declarations.">,
     Option<"debugPayloadRootTag", "debug-payload-root-tag", "std::string",
diff --git a/compiler/src/iree/compiler/Dialect/Flow/Transforms/Passes.td b/compiler/src/iree/compiler/Dialect/Flow/Transforms/Passes.td
index 2591ff8..1b3edf4 100644
--- a/compiler/src/iree/compiler/Dialect/Flow/Transforms/Passes.td
+++ b/compiler/src/iree/compiler/Dialect/Flow/Transforms/Passes.td
@@ -136,11 +136,10 @@
             "Optional filename containing a transform dialect specification to "
             "apply. If left empty, the IR is assumed to contain one top-level "
             "transform dialect operation somewhere in the module.">,
-    Option<"transformLibraryFileName",
-           "transform-library-file-name",
+    ListOption<"transformLibraryPaths",
+           "transform-library-paths",
            "std::string",
-           /*default=*/"\"\"",
-           "If non-empty, the name of the file containing definitions of "
+           "If non-empty, the paths to files containing definitions of "
            "external symbols referenced in the transform script. "
            "These definitions will be used to replace declarations.">,
     Option<"debugPayloadRootTag", "debug-payload-root-tag", "std::string",
diff --git a/compiler/src/iree/compiler/InputConversion/TOSA/Passes.cpp b/compiler/src/iree/compiler/InputConversion/TOSA/Passes.cpp
index 0b28c92..a559350 100644
--- a/compiler/src/iree/compiler/InputConversion/TOSA/Passes.cpp
+++ b/compiler/src/iree/compiler/InputConversion/TOSA/Passes.cpp
@@ -49,7 +49,7 @@
       iree_compiler::createTosaToLinalgExt());
   passManager.addNestedPass<func::FuncOp>(mlir::createCanonicalizerPass());
 
-  tosa::addTosaToLinalgPasses(passManager);
+  tosa::addTosaToLinalgPasses(passManager, TosaToLinalgOptions());
   passManager.addNestedPass<func::FuncOp>(
       iree_compiler::createConverti48Toi64());
 
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp
index 26c4777..4d78e41 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/Passes/TransformInterpreter.cpp
@@ -119,12 +119,11 @@
           "Select the operation with 'transform.target_tag' attribute having "
           "the given value as container IR for top-level transform ops."),
       ::llvm::cl::init("")};
-  Pass::Option<std::string> transformLibraryFileName{
-      *this, "transform-library-file-name",
+  Pass::ListOption<std::string> transformLibraryPaths{
+      *this, "transform-library-paths", llvm::cl::ZeroOrMore,
       llvm::cl::desc(
           "Optional name of the file containing transform dialect symbol "
-          "definitions to be injected into the transform module."),
-      llvm::cl::init("")};
+          "definitions to be injected into the transform module.")};
 };
 
 struct DropSchedulePass : public PassWrapper<DropSchedulePass, Pass> {
diff --git a/third_party/llvm-project b/third_party/llvm-project
index 1151cc3..be444b6 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit 1151cc387a4ff519f2fc70d37137505a448df829
+Subproject commit be444b6640c715476e405da8518ce204520aded8