Integrate LLVM at llvm/llvm-project@220de1f32a
Updates LLVM usage to match [220de1f32add](https://github.com/llvm/llvm-project/commit/220de1f32add) PiperOrigin-RevId: 337270545 Change-Id: Ie25da9af95cdf3b8db1ad57fdfc0d18c10ee3fc5
This commit is contained in:
parent
34592c6663
commit
ca0607c198
@ -56,9 +56,9 @@ void PopulateMhloToStdPatterns(OwningRewritePatternList *patterns,
|
|||||||
MLIRContext *ctx);
|
MLIRContext *ctx);
|
||||||
|
|
||||||
// Collection of rewrite patterns for lowering of HLO to LHLO dialect.
|
// Collection of rewrite patterns for lowering of HLO to LHLO dialect.
|
||||||
void populateHLOToLHLOConversionPattern(
|
void populateHLOToLHLOConversionPattern(MLIRContext *context,
|
||||||
MLIRContext *context, BufferAssignmentTypeConverter *converter,
|
BufferizeTypeConverter *converter,
|
||||||
OwningRewritePatternList *patterns);
|
OwningRewritePatternList *patterns);
|
||||||
|
|
||||||
// Collection of rewrite patterns for lowering of HLO to Linalg dialect.
|
// Collection of rewrite patterns for lowering of HLO to Linalg dialect.
|
||||||
void populateHLOToLinalgConversionPattern(MLIRContext *context,
|
void populateHLOToLinalgConversionPattern(MLIRContext *context,
|
||||||
|
@ -42,7 +42,7 @@ namespace mhlo {
|
|||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
using BaseOpConversion = BufferAssignmentOpConversionPattern<T>;
|
using BaseOpConversion = BufferizeOpConversionPattern<T>;
|
||||||
|
|
||||||
Value InsertDynamicAllocAndDealloc(Location loc, Value result,
|
Value InsertDynamicAllocAndDealloc(Location loc, Value result,
|
||||||
Value shape_operand,
|
Value shape_operand,
|
||||||
@ -433,7 +433,7 @@ struct HloLegalizeToLhlo
|
|||||||
target.addLegalOp<TensorFromElementsOp>();
|
target.addLegalOp<TensorFromElementsOp>();
|
||||||
target.addIllegalDialect<mhlo::MhloDialect>();
|
target.addIllegalDialect<mhlo::MhloDialect>();
|
||||||
|
|
||||||
BufferAssignmentTypeConverter converter;
|
BufferizeTypeConverter converter;
|
||||||
auto isMemRefType = [](Type type) { return type.isa<BaseMemRefType>(); };
|
auto isMemRefType = [](Type type) { return type.isa<BaseMemRefType>(); };
|
||||||
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
|
target.addDynamicallyLegalOp<FuncOp>([&](FuncOp op) {
|
||||||
auto inputs = op.getType().getInputs();
|
auto inputs = op.getType().getInputs();
|
||||||
@ -456,16 +456,16 @@ struct HloLegalizeToLhlo
|
|||||||
});
|
});
|
||||||
|
|
||||||
auto kind = results_escape_function
|
auto kind = results_escape_function
|
||||||
? BufferAssignmentTypeConverter::KeepAsFunctionResult
|
? BufferizeTypeConverter::KeepAsFunctionResult
|
||||||
: BufferAssignmentTypeConverter::AppendToArgumentsList;
|
: BufferizeTypeConverter::AppendToArgumentsList;
|
||||||
converter.setResultConversionKind<UnrankedTensorType, UnrankedMemRefType>(
|
converter.setResultConversionKind<UnrankedTensorType, UnrankedMemRefType>(
|
||||||
kind);
|
kind);
|
||||||
converter.setResultConversionKind<RankedTensorType, MemRefType>(kind);
|
converter.setResultConversionKind<RankedTensorType, MemRefType>(kind);
|
||||||
|
|
||||||
populateHLOToLHLOConversionPattern(&context, &converter, &patterns);
|
populateHLOToLHLOConversionPattern(&context, &converter, &patterns);
|
||||||
populateWithBufferAssignmentOpConversionPatterns<
|
populateWithBufferizeOpConversionPatterns<mlir::ReturnOp, mlir::ReturnOp,
|
||||||
mlir::ReturnOp, mlir::ReturnOp, lmhlo::CopyOp>(&context, converter,
|
lmhlo::CopyOp>(
|
||||||
patterns);
|
&context, converter, patterns);
|
||||||
populateShapeTypeConversionPatterns(&context, converter, patterns);
|
populateShapeTypeConversionPatterns(&context, converter, patterns);
|
||||||
if (failed(applyPartialConversion(getOperation(), target, patterns)))
|
if (failed(applyPartialConversion(getOperation(), target, patterns)))
|
||||||
signalPassFailure();
|
signalPassFailure();
|
||||||
@ -480,9 +480,9 @@ struct HloLegalizeToLhlo
|
|||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
void populateHLOToLHLOConversionPattern(
|
void populateHLOToLHLOConversionPattern(MLIRContext* context,
|
||||||
MLIRContext* context, BufferAssignmentTypeConverter* converter,
|
BufferizeTypeConverter* converter,
|
||||||
OwningRewritePatternList* patterns) {
|
OwningRewritePatternList* patterns) {
|
||||||
// clang-format off
|
// clang-format off
|
||||||
patterns->insert<
|
patterns->insert<
|
||||||
HloToLhloDynamicBroadcastInDimOpConverter,
|
HloToLhloDynamicBroadcastInDimOpConverter,
|
||||||
|
@ -62,7 +62,7 @@ std::unique_ptr<llvm::TargetMachine> GetTargetMachine(llvm::Module* module) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
llvm::TargetOptions target_options =
|
llvm::TargetOptions target_options =
|
||||||
llvm::codegen::InitTargetOptionsFromCodeGenFlags();
|
llvm::codegen::InitTargetOptionsFromCodeGenFlags(llvm::Triple());
|
||||||
return std::unique_ptr<llvm::TargetMachine>(target->createTargetMachine(
|
return std::unique_ptr<llvm::TargetMachine>(target->createTargetMachine(
|
||||||
triple.str(), "generic", "", target_options, llvm::Reloc::Model::PIC_));
|
triple.str(), "generic", "", target_options, llvm::Reloc::Model::PIC_));
|
||||||
}
|
}
|
||||||
|
@ -40,10 +40,10 @@ namespace transforms {
|
|||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
class TensorFromElementsOpConverter
|
class TensorFromElementsOpConverter
|
||||||
: public BufferAssignmentOpConversionPattern<TensorFromElementsOp> {
|
: public BufferizeOpConversionPattern<TensorFromElementsOp> {
|
||||||
public:
|
public:
|
||||||
using BufferAssignmentOpConversionPattern<
|
using BufferizeOpConversionPattern<
|
||||||
TensorFromElementsOp>::BufferAssignmentOpConversionPattern;
|
TensorFromElementsOp>::BufferizeOpConversionPattern;
|
||||||
|
|
||||||
LogicalResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
TensorFromElementsOp op, ArrayRef<Value> operands,
|
TensorFromElementsOp op, ArrayRef<Value> operands,
|
||||||
@ -64,10 +64,10 @@ class TensorFromElementsOpConverter
|
|||||||
};
|
};
|
||||||
|
|
||||||
class DynamicTensorFromElementsOpConverter
|
class DynamicTensorFromElementsOpConverter
|
||||||
: public BufferAssignmentOpConversionPattern<DynamicTensorFromElementsOp> {
|
: public BufferizeOpConversionPattern<DynamicTensorFromElementsOp> {
|
||||||
public:
|
public:
|
||||||
using BufferAssignmentOpConversionPattern<
|
using BufferizeOpConversionPattern<
|
||||||
DynamicTensorFromElementsOp>::BufferAssignmentOpConversionPattern;
|
DynamicTensorFromElementsOp>::BufferizeOpConversionPattern;
|
||||||
|
|
||||||
LogicalResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
DynamicTensorFromElementsOp op, ArrayRef<Value> operands,
|
DynamicTensorFromElementsOp op, ArrayRef<Value> operands,
|
||||||
@ -116,10 +116,10 @@ class DynamicTensorFromElementsOpConverter
|
|||||||
};
|
};
|
||||||
|
|
||||||
class TensorLoadOpConversion
|
class TensorLoadOpConversion
|
||||||
: public BufferAssignmentOpConversionPattern<TensorLoadOp> {
|
: public BufferizeOpConversionPattern<TensorLoadOp> {
|
||||||
public:
|
public:
|
||||||
using BufferAssignmentOpConversionPattern<
|
using BufferizeOpConversionPattern<
|
||||||
TensorLoadOp>::BufferAssignmentOpConversionPattern;
|
TensorLoadOp>::BufferizeOpConversionPattern;
|
||||||
|
|
||||||
LogicalResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
TensorLoadOp op, ArrayRef<Value> operands,
|
TensorLoadOp op, ArrayRef<Value> operands,
|
||||||
@ -131,10 +131,10 @@ class TensorLoadOpConversion
|
|||||||
};
|
};
|
||||||
|
|
||||||
class ExtractElementOpConversion
|
class ExtractElementOpConversion
|
||||||
: public BufferAssignmentOpConversionPattern<ExtractElementOp> {
|
: public BufferizeOpConversionPattern<ExtractElementOp> {
|
||||||
public:
|
public:
|
||||||
using BufferAssignmentOpConversionPattern<
|
using BufferizeOpConversionPattern<
|
||||||
ExtractElementOp>::BufferAssignmentOpConversionPattern;
|
ExtractElementOp>::BufferizeOpConversionPattern;
|
||||||
|
|
||||||
LogicalResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
ExtractElementOp op, ArrayRef<Value> operands,
|
ExtractElementOp op, ArrayRef<Value> operands,
|
||||||
@ -152,12 +152,10 @@ class ExtractElementOpConversion
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename OpTy>
|
template <typename OpTy>
|
||||||
class SimpleOpResultConversion
|
class SimpleOpResultConversion : public BufferizeOpConversionPattern<OpTy> {
|
||||||
: public BufferAssignmentOpConversionPattern<OpTy> {
|
|
||||||
public:
|
public:
|
||||||
using BufferAssignmentOpConversionPattern<
|
using BufferizeOpConversionPattern<OpTy>::BufferizeOpConversionPattern;
|
||||||
OpTy>::BufferAssignmentOpConversionPattern;
|
using BufferizeOpConversionPattern<OpTy>::converter;
|
||||||
using BufferAssignmentOpConversionPattern<OpTy>::converter;
|
|
||||||
|
|
||||||
LogicalResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
OpTy op, ArrayRef<Value> operands,
|
OpTy op, ArrayRef<Value> operands,
|
||||||
@ -169,10 +167,10 @@ class SimpleOpResultConversion
|
|||||||
};
|
};
|
||||||
|
|
||||||
class TensorCastOpConverter
|
class TensorCastOpConverter
|
||||||
: public BufferAssignmentOpConversionPattern<TensorCastOp> {
|
: public BufferizeOpConversionPattern<TensorCastOp> {
|
||||||
public:
|
public:
|
||||||
using BufferAssignmentOpConversionPattern<
|
using BufferizeOpConversionPattern<
|
||||||
TensorCastOp>::BufferAssignmentOpConversionPattern;
|
TensorCastOp>::BufferizeOpConversionPattern;
|
||||||
|
|
||||||
LogicalResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
TensorCastOp op, ArrayRef<Value> operands,
|
TensorCastOp op, ArrayRef<Value> operands,
|
||||||
@ -190,7 +188,7 @@ class TensorCastOpConverter
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
void populateStandardBufferizePattern(MLIRContext *context,
|
void populateStandardBufferizePattern(MLIRContext *context,
|
||||||
BufferAssignmentTypeConverter *converter,
|
BufferizeTypeConverter *converter,
|
||||||
OwningRewritePatternList *patterns) {
|
OwningRewritePatternList *patterns) {
|
||||||
patterns->insert<ExtractElementOpConversion, TensorFromElementsOpConverter,
|
patterns->insert<ExtractElementOpConversion, TensorFromElementsOpConverter,
|
||||||
DynamicTensorFromElementsOpConverter,
|
DynamicTensorFromElementsOpConverter,
|
||||||
|
@ -86,7 +86,7 @@ struct BufferizePass : public BufferizePassBase<BufferizePass> {
|
|||||||
return !op.tensor().getType().isa<UnrankedTensorType>();
|
return !op.tensor().getType().isa<UnrankedTensorType>();
|
||||||
});
|
});
|
||||||
|
|
||||||
BufferAssignmentTypeConverter converter;
|
BufferizeTypeConverter converter;
|
||||||
auto typesAreLegal = [&converter](Operation* op) {
|
auto typesAreLegal = [&converter](Operation* op) {
|
||||||
return converter.isLegal(op->getOperandTypes()) &&
|
return converter.isLegal(op->getOperandTypes()) &&
|
||||||
converter.isLegal(op->getResultTypes());
|
converter.isLegal(op->getResultTypes());
|
||||||
@ -102,8 +102,8 @@ struct BufferizePass : public BufferizePassBase<BufferizePass> {
|
|||||||
|
|
||||||
OwningRewritePatternList patterns;
|
OwningRewritePatternList patterns;
|
||||||
mhlo::populateHLOToLHLOConversionPattern(&context, &converter, &patterns);
|
mhlo::populateHLOToLHLOConversionPattern(&context, &converter, &patterns);
|
||||||
populateWithBufferAssignmentOpConversionPatterns<ReturnOp, ReturnOp,
|
populateWithBufferizeOpConversionPatterns<ReturnOp, ReturnOp,
|
||||||
lmhlo::CopyOp>(
|
lmhlo::CopyOp>(
|
||||||
&context, converter, patterns);
|
&context, converter, patterns);
|
||||||
populateStandardBufferizePattern(&context, &converter, &patterns);
|
populateStandardBufferizePattern(&context, &converter, &patterns);
|
||||||
populateShapeTypeConversionPatterns(&context, converter, patterns);
|
populateShapeTypeConversionPatterns(&context, converter, patterns);
|
||||||
|
@ -21,7 +21,7 @@ limitations under the License.
|
|||||||
namespace mlir {
|
namespace mlir {
|
||||||
|
|
||||||
class BufferAssignmentPlacer;
|
class BufferAssignmentPlacer;
|
||||||
class BufferAssignmentTypeConverter;
|
class BufferizeTypeConverter;
|
||||||
class LLVMTypeConverter;
|
class LLVMTypeConverter;
|
||||||
class MLIRContext;
|
class MLIRContext;
|
||||||
class OwningRewritePatternList;
|
class OwningRewritePatternList;
|
||||||
@ -45,7 +45,7 @@ namespace transforms {
|
|||||||
/// Collects a set of patterns that bufferize operations from the standard
|
/// Collects a set of patterns that bufferize operations from the standard
|
||||||
/// dialect.
|
/// dialect.
|
||||||
void populateStandardBufferizePattern(MLIRContext *context,
|
void populateStandardBufferizePattern(MLIRContext *context,
|
||||||
BufferAssignmentTypeConverter *converter,
|
BufferizeTypeConverter *converter,
|
||||||
OwningRewritePatternList *patterns);
|
OwningRewritePatternList *patterns);
|
||||||
} // namespace transforms
|
} // namespace transforms
|
||||||
} // namespace kernel_gen
|
} // namespace kernel_gen
|
||||||
|
@ -149,7 +149,7 @@ std::unique_ptr<llvm::TargetMachine> GetTargetMachine(
|
|||||||
}
|
}
|
||||||
|
|
||||||
llvm::TargetOptions target_options =
|
llvm::TargetOptions target_options =
|
||||||
llvm::codegen::InitTargetOptionsFromCodeGenFlags();
|
llvm::codegen::InitTargetOptionsFromCodeGenFlags(llvm::Triple());
|
||||||
|
|
||||||
// Set the verbose assembly options.
|
// Set the verbose assembly options.
|
||||||
target_options.MCOptions.AsmVerbose = false;
|
target_options.MCOptions.AsmVerbose = false;
|
||||||
|
@ -712,8 +712,8 @@ def tf_repositories(path_prefix = "", tf_repo_name = ""):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Check out LLVM and MLIR from llvm-project.
|
# Check out LLVM and MLIR from llvm-project.
|
||||||
LLVM_COMMIT = "89657b3a3b5772558ac084dc03591de5dab3f1f1"
|
LLVM_COMMIT = "220de1f32add09848009ae2286a1e6fd271abe9e"
|
||||||
LLVM_SHA256 = "8b0835cd130c20d34c4884dd776c1fb6b322d30c3668374f2366b4f397092fe3"
|
LLVM_SHA256 = "dd5ec3d3f96a5ef8a59e6118e9c8eca9bb0443ae1a7e8a7834e63732e635d377"
|
||||||
LLVM_URLS = [
|
LLVM_URLS = [
|
||||||
"https://storage.googleapis.com/mirror.tensorflow.org/github.com/llvm/llvm-project/archive/{commit}.tar.gz".format(commit = LLVM_COMMIT),
|
"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),
|
"https://github.com/llvm/llvm-project/archive/{commit}.tar.gz".format(commit = LLVM_COMMIT),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user