From ca0607c19884fc8eb0a4d32a1fe58cc42ced8737 Mon Sep 17 00:00:00 2001 From: Adrian Kuegel Date: Thu, 15 Oct 2020 02:53:17 -0700 Subject: [PATCH] Integrate LLVM at llvm/llvm-project@220de1f32add Updates LLVM usage to match [220de1f32add](https://github.com/llvm/llvm-project/commit/220de1f32add) PiperOrigin-RevId: 337270545 Change-Id: Ie25da9af95cdf3b8db1ad57fdfc0d18c10ee3fc5 --- .../Dialect/mhlo/transforms/rewriters.h | 6 +-- .../mhlo/transforms/hlo_legalize_to_lhlo.cc | 20 +++++----- .../mlir/tools/kernel_gen/tf_to_kernel.cc | 2 +- .../tools/kernel_gen/transforms/bufferize.cc | 40 +++++++++---------- .../kernel_gen/transforms/bufferize_pass.cc | 6 +-- .../tools/kernel_gen/transforms/rewriters.h | 4 +- .../gpu/llvm_gpu_backend/gpu_backend_lib.cc | 2 +- tensorflow/workspace.bzl | 4 +- 8 files changed, 41 insertions(+), 43 deletions(-) diff --git a/tensorflow/compiler/mlir/hlo/include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h b/tensorflow/compiler/mlir/hlo/include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h index a58d0c6304c..b6706187d50 100644 --- a/tensorflow/compiler/mlir/hlo/include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h +++ b/tensorflow/compiler/mlir/hlo/include/mlir-hlo/Dialect/mhlo/transforms/rewriters.h @@ -56,9 +56,9 @@ void PopulateMhloToStdPatterns(OwningRewritePatternList *patterns, MLIRContext *ctx); // Collection of rewrite patterns for lowering of HLO to LHLO dialect. -void populateHLOToLHLOConversionPattern( - MLIRContext *context, BufferAssignmentTypeConverter *converter, - OwningRewritePatternList *patterns); +void populateHLOToLHLOConversionPattern(MLIRContext *context, + BufferizeTypeConverter *converter, + OwningRewritePatternList *patterns); // Collection of rewrite patterns for lowering of HLO to Linalg dialect. void populateHLOToLinalgConversionPattern(MLIRContext *context, diff --git a/tensorflow/compiler/mlir/hlo/lib/Dialect/mhlo/transforms/hlo_legalize_to_lhlo.cc b/tensorflow/compiler/mlir/hlo/lib/Dialect/mhlo/transforms/hlo_legalize_to_lhlo.cc index a2a940e2c58..2659c5862d3 100644 --- a/tensorflow/compiler/mlir/hlo/lib/Dialect/mhlo/transforms/hlo_legalize_to_lhlo.cc +++ b/tensorflow/compiler/mlir/hlo/lib/Dialect/mhlo/transforms/hlo_legalize_to_lhlo.cc @@ -42,7 +42,7 @@ namespace mhlo { namespace { template -using BaseOpConversion = BufferAssignmentOpConversionPattern; +using BaseOpConversion = BufferizeOpConversionPattern; Value InsertDynamicAllocAndDealloc(Location loc, Value result, Value shape_operand, @@ -433,7 +433,7 @@ struct HloLegalizeToLhlo target.addLegalOp(); target.addIllegalDialect(); - BufferAssignmentTypeConverter converter; + BufferizeTypeConverter converter; auto isMemRefType = [](Type type) { return type.isa(); }; target.addDynamicallyLegalOp([&](FuncOp op) { auto inputs = op.getType().getInputs(); @@ -456,16 +456,16 @@ struct HloLegalizeToLhlo }); auto kind = results_escape_function - ? BufferAssignmentTypeConverter::KeepAsFunctionResult - : BufferAssignmentTypeConverter::AppendToArgumentsList; + ? BufferizeTypeConverter::KeepAsFunctionResult + : BufferizeTypeConverter::AppendToArgumentsList; converter.setResultConversionKind( kind); converter.setResultConversionKind(kind); populateHLOToLHLOConversionPattern(&context, &converter, &patterns); - populateWithBufferAssignmentOpConversionPatterns< - mlir::ReturnOp, mlir::ReturnOp, lmhlo::CopyOp>(&context, converter, - patterns); + populateWithBufferizeOpConversionPatterns( + &context, converter, patterns); populateShapeTypeConversionPatterns(&context, converter, patterns); if (failed(applyPartialConversion(getOperation(), target, patterns))) signalPassFailure(); @@ -480,9 +480,9 @@ struct HloLegalizeToLhlo }; } // namespace -void populateHLOToLHLOConversionPattern( - MLIRContext* context, BufferAssignmentTypeConverter* converter, - OwningRewritePatternList* patterns) { +void populateHLOToLHLOConversionPattern(MLIRContext* context, + BufferizeTypeConverter* converter, + OwningRewritePatternList* patterns) { // clang-format off patterns->insert< HloToLhloDynamicBroadcastInDimOpConverter, diff --git a/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel.cc b/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel.cc index 4cbe2e633f8..87c8e57804b 100644 --- a/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel.cc +++ b/tensorflow/compiler/mlir/tools/kernel_gen/tf_to_kernel.cc @@ -62,7 +62,7 @@ std::unique_ptr GetTargetMachine(llvm::Module* module) { } llvm::TargetOptions target_options = - llvm::codegen::InitTargetOptionsFromCodeGenFlags(); + llvm::codegen::InitTargetOptionsFromCodeGenFlags(llvm::Triple()); return std::unique_ptr(target->createTargetMachine( triple.str(), "generic", "", target_options, llvm::Reloc::Model::PIC_)); } diff --git a/tensorflow/compiler/mlir/tools/kernel_gen/transforms/bufferize.cc b/tensorflow/compiler/mlir/tools/kernel_gen/transforms/bufferize.cc index f6a47cca6d0..f2b5e14bd30 100644 --- a/tensorflow/compiler/mlir/tools/kernel_gen/transforms/bufferize.cc +++ b/tensorflow/compiler/mlir/tools/kernel_gen/transforms/bufferize.cc @@ -40,10 +40,10 @@ namespace transforms { namespace { class TensorFromElementsOpConverter - : public BufferAssignmentOpConversionPattern { + : public BufferizeOpConversionPattern { public: - using BufferAssignmentOpConversionPattern< - TensorFromElementsOp>::BufferAssignmentOpConversionPattern; + using BufferizeOpConversionPattern< + TensorFromElementsOp>::BufferizeOpConversionPattern; LogicalResult matchAndRewrite( TensorFromElementsOp op, ArrayRef operands, @@ -64,10 +64,10 @@ class TensorFromElementsOpConverter }; class DynamicTensorFromElementsOpConverter - : public BufferAssignmentOpConversionPattern { + : public BufferizeOpConversionPattern { public: - using BufferAssignmentOpConversionPattern< - DynamicTensorFromElementsOp>::BufferAssignmentOpConversionPattern; + using BufferizeOpConversionPattern< + DynamicTensorFromElementsOp>::BufferizeOpConversionPattern; LogicalResult matchAndRewrite( DynamicTensorFromElementsOp op, ArrayRef operands, @@ -116,10 +116,10 @@ class DynamicTensorFromElementsOpConverter }; class TensorLoadOpConversion - : public BufferAssignmentOpConversionPattern { + : public BufferizeOpConversionPattern { public: - using BufferAssignmentOpConversionPattern< - TensorLoadOp>::BufferAssignmentOpConversionPattern; + using BufferizeOpConversionPattern< + TensorLoadOp>::BufferizeOpConversionPattern; LogicalResult matchAndRewrite( TensorLoadOp op, ArrayRef operands, @@ -131,10 +131,10 @@ class TensorLoadOpConversion }; class ExtractElementOpConversion - : public BufferAssignmentOpConversionPattern { + : public BufferizeOpConversionPattern { public: - using BufferAssignmentOpConversionPattern< - ExtractElementOp>::BufferAssignmentOpConversionPattern; + using BufferizeOpConversionPattern< + ExtractElementOp>::BufferizeOpConversionPattern; LogicalResult matchAndRewrite( ExtractElementOp op, ArrayRef operands, @@ -152,12 +152,10 @@ class ExtractElementOpConversion }; template -class SimpleOpResultConversion - : public BufferAssignmentOpConversionPattern { +class SimpleOpResultConversion : public BufferizeOpConversionPattern { public: - using BufferAssignmentOpConversionPattern< - OpTy>::BufferAssignmentOpConversionPattern; - using BufferAssignmentOpConversionPattern::converter; + using BufferizeOpConversionPattern::BufferizeOpConversionPattern; + using BufferizeOpConversionPattern::converter; LogicalResult matchAndRewrite( OpTy op, ArrayRef operands, @@ -169,10 +167,10 @@ class SimpleOpResultConversion }; class TensorCastOpConverter - : public BufferAssignmentOpConversionPattern { + : public BufferizeOpConversionPattern { public: - using BufferAssignmentOpConversionPattern< - TensorCastOp>::BufferAssignmentOpConversionPattern; + using BufferizeOpConversionPattern< + TensorCastOp>::BufferizeOpConversionPattern; LogicalResult matchAndRewrite( TensorCastOp op, ArrayRef operands, @@ -190,7 +188,7 @@ class TensorCastOpConverter } // namespace void populateStandardBufferizePattern(MLIRContext *context, - BufferAssignmentTypeConverter *converter, + BufferizeTypeConverter *converter, OwningRewritePatternList *patterns) { patterns->insert { return !op.tensor().getType().isa(); }); - BufferAssignmentTypeConverter converter; + BufferizeTypeConverter converter; auto typesAreLegal = [&converter](Operation* op) { return converter.isLegal(op->getOperandTypes()) && converter.isLegal(op->getResultTypes()); @@ -102,8 +102,8 @@ struct BufferizePass : public BufferizePassBase { OwningRewritePatternList patterns; mhlo::populateHLOToLHLOConversionPattern(&context, &converter, &patterns); - populateWithBufferAssignmentOpConversionPatterns( + populateWithBufferizeOpConversionPatterns( &context, converter, patterns); populateStandardBufferizePattern(&context, &converter, &patterns); populateShapeTypeConversionPatterns(&context, converter, patterns); diff --git a/tensorflow/compiler/mlir/tools/kernel_gen/transforms/rewriters.h b/tensorflow/compiler/mlir/tools/kernel_gen/transforms/rewriters.h index 0f2a41b3de6..f73a14b9be0 100644 --- a/tensorflow/compiler/mlir/tools/kernel_gen/transforms/rewriters.h +++ b/tensorflow/compiler/mlir/tools/kernel_gen/transforms/rewriters.h @@ -21,7 +21,7 @@ limitations under the License. namespace mlir { class BufferAssignmentPlacer; -class BufferAssignmentTypeConverter; +class BufferizeTypeConverter; class LLVMTypeConverter; class MLIRContext; class OwningRewritePatternList; @@ -45,7 +45,7 @@ namespace transforms { /// Collects a set of patterns that bufferize operations from the standard /// dialect. void populateStandardBufferizePattern(MLIRContext *context, - BufferAssignmentTypeConverter *converter, + BufferizeTypeConverter *converter, OwningRewritePatternList *patterns); } // namespace transforms } // namespace kernel_gen diff --git a/tensorflow/compiler/xla/service/gpu/llvm_gpu_backend/gpu_backend_lib.cc b/tensorflow/compiler/xla/service/gpu/llvm_gpu_backend/gpu_backend_lib.cc index 04af67a70b9..36b676565b5 100644 --- a/tensorflow/compiler/xla/service/gpu/llvm_gpu_backend/gpu_backend_lib.cc +++ b/tensorflow/compiler/xla/service/gpu/llvm_gpu_backend/gpu_backend_lib.cc @@ -149,7 +149,7 @@ std::unique_ptr GetTargetMachine( } llvm::TargetOptions target_options = - llvm::codegen::InitTargetOptionsFromCodeGenFlags(); + llvm::codegen::InitTargetOptionsFromCodeGenFlags(llvm::Triple()); // Set the verbose assembly options. target_options.MCOptions.AsmVerbose = false; diff --git a/tensorflow/workspace.bzl b/tensorflow/workspace.bzl index 736201550fe..16efa83008d 100755 --- a/tensorflow/workspace.bzl +++ b/tensorflow/workspace.bzl @@ -712,8 +712,8 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""): ) # Check out LLVM and MLIR from llvm-project. - LLVM_COMMIT = "89657b3a3b5772558ac084dc03591de5dab3f1f1" - LLVM_SHA256 = "8b0835cd130c20d34c4884dd776c1fb6b322d30c3668374f2366b4f397092fe3" + LLVM_COMMIT = "220de1f32add09848009ae2286a1e6fd271abe9e" + LLVM_SHA256 = "dd5ec3d3f96a5ef8a59e6118e9c8eca9bb0443ae1a7e8a7834e63732e635d377" LLVM_URLS = [ "https://storage.googleapis.com/mirror.tensorflow.org/github.com/llvm/llvm-project/archive/{commit}.tar.gz".format(commit = LLVM_COMMIT), "https://github.com/llvm/llvm-project/archive/{commit}.tar.gz".format(commit = LLVM_COMMIT),