Bump llvm to 5c116d50e42f93ef4fa9a9719121378ec6b99b69 (#8652)
* Bump LLVM to [5c116d50e42f93ef4fa9a9719121378ec6b99b69](https://github.com/llvm/llvm-project/commit/5c116d50e42f93ef4fa9a9719121378ec6b99b69)
* 217988819 iree-dialects fixes (createOperation -> create and OpAsmParser::OperandType -> OpAsmParser::UnresolvedOperand)
* 5d06650d6 Assert on PDL native function call type mismatches.
* 8b2abae7b Add missing include in iree-dialects
* e6491bf94 Rename OpAsmParser::OperandType to OpAsmParser::UnresolvedOperand globally in IREE
* c50542572 Rename createOperation -> create globally
* 11614987b Bump MHLO to [e918d22b258375050a140b320eeb1d1167079e43](https://github.com/tensorflow/mlir-hlo/commit/e918d22b258375050a140b320eeb1d1167079e43)
* 0762fbfe7 clang-format
* cdf96f56c Update PDL usage in linalg_transforms tests
* 1807fd24f Fix IREE tests for LLVM bump
LLVM revision: [5c116d50e42f93ef4fa9a9719121378ec6b99b69](https://github.com/llvm/llvm-project/commit/5c116d50e42f93ef4fa9a9719121378ec6b99b69)
MHLO revision: [e918d22b258375050a140b320eeb1d1167079e43](https://github.com/tensorflow/mlir-hlo/commit/e918d22b258375050a140b320eeb1d1167079e43)
PiperOrigin-RevId: 437369768
diff --git a/integrations/tensorflow/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td b/integrations/tensorflow/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td
index 4ae75cc..d72c312 100644
--- a/integrations/tensorflow/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td
+++ b/integrations/tensorflow/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td
@@ -421,7 +421,7 @@
$_op->getAttrs());
for (Region &r : $_op->getRegions())
r.cloneInto(state.addRegion(), bvm);
- return b.createOperation(state);
+ return b.create(state);
}]
>
];
diff --git a/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp b/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp
index 6c06913..723e10c 100644
--- a/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp
+++ b/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp
@@ -1327,13 +1327,13 @@
ParseResult TileOp::parse(OpAsmParser &parser, OperationState &result) {
auto &builder = parser.getBuilder();
- OpAsmParser::OperandType tileSizes;
+ OpAsmParser::UnresolvedOperand tileSizes;
// TODO: also allow tensor<..xindex> and figure out a good syntax.
// Type tensorOfIndexType =
// RankedTensorType::get({ShapedType::kDynamicSize}, indexType);
Type tileSizesType = builder.getIndexType();
SmallVector<Type> outsTypes;
- SmallVector<OpAsmParser::OperandType, 4> outsOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> outsOperands;
llvm::SMLoc outputsOperandsLoc;
if (parser.parseOperand(tileSizes) ||
@@ -1369,7 +1369,7 @@
if (parser.parseArrowTypeList(result.types))
return failure();
- SmallVector<OpAsmParser::OperandType, 8> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 8> regionOperands;
std::unique_ptr<Region> region = std::make_unique<Region>();
SmallVector<Type, 8> operandTypes, regionTypes;
if (parser.parseRegion(*region, regionOperands, regionTypes))
@@ -1431,7 +1431,7 @@
ParseResult InParallelOp::parse(OpAsmParser &parser, OperationState &result) {
auto &builder = parser.getBuilder();
- OpAsmParser::OperandType numThreads;
+ OpAsmParser::UnresolvedOperand numThreads;
Type indexType = builder.getIndexType();
if (parser.parseOperand(numThreads) ||
@@ -1440,7 +1440,7 @@
if (parser.parseArrowTypeList(result.types))
return failure();
- SmallVector<OpAsmParser::OperandType, 8> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 8> regionOperands;
SmallVector<Type, 8> regionTypes;
std::unique_ptr<Region> region = std::make_unique<Region>();
if (parser.parseRegion(*region, regionOperands, regionTypes))
@@ -1608,7 +1608,7 @@
OperationState &result) {
auto &builder = parser.getBuilder();
- SmallVector<OpAsmParser::OperandType, 8> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 8> regionOperands;
SmallVector<Type, 8> regionTypes;
std::unique_ptr<Region> region = std::make_unique<Region>();
if (parser.parseRegion(*region, regionOperands, regionTypes))
diff --git a/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp b/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
index 03d39ac..775de83 100644
--- a/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
+++ b/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
@@ -428,7 +428,7 @@
ParseResult transform::VectorizeOp::parse(OpAsmParser &parser,
OperationState &result) {
auto operationType = pdl::OperationType::get(parser.getContext());
- OpAsmParser::OperandType target;
+ OpAsmParser::UnresolvedOperand target;
OptionalParseResult parseResult = parser.parseOptionalOperand(target);
if (parseResult.hasValue()) {
if (parseResult.getValue().failed() ||
diff --git a/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp b/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp
index e8d9477..356d440 100644
--- a/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp
+++ b/integrations/tensorflow/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp
@@ -169,7 +169,7 @@
OperationState modelOpState(op->getLoc(), modelOpName, op->getOperands(),
op->getResultTypes(), op->getAttrs());
modelOpState.addRegion();
- Operation *modelOp = rewriter.createOperation(modelOpState);
+ Operation *modelOp = rewriter.create(modelOpState);
auto g1 = llvm::make_scope_exit([&]() { rewriter.eraseOp(modelOp); });
LinalgOp linalgOp = dyn_cast<LinalgOp>(op);
LinalgOp linalgModelOp = dyn_cast<LinalgOp>(modelOp);
diff --git a/integrations/tensorflow/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp b/integrations/tensorflow/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp
index f4ad03a..6b00086 100644
--- a/integrations/tensorflow/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp
+++ b/integrations/tensorflow/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp
@@ -458,7 +458,7 @@
Region *elseRegion = result.addRegion();
auto &builder = parser.getBuilder();
- OpAsmParser::OperandType cond;
+ OpAsmParser::UnresolvedOperand cond;
Type conditionType = builder.getType<PyBoolType>();
if (parser.parseOperand(cond) ||
parser.resolveOperand(cond, conditionType, result.operands))
diff --git a/iree/compiler/Codegen/Common/DemoteF32ToF16.cpp b/iree/compiler/Codegen/Common/DemoteF32ToF16.cpp
index 0b586e5..72ae60d 100644
--- a/iree/compiler/Codegen/Common/DemoteF32ToF16.cpp
+++ b/iree/compiler/Codegen/Common/DemoteF32ToF16.cpp
@@ -87,7 +87,7 @@
newRegion->getArgumentTypes(), result);
rewriter.applySignatureConversion(newRegion, result);
}
- Operation *newOp = rewriter.createOperation(state);
+ Operation *newOp = rewriter.create(state);
rewriter.replaceOp(op, newOp->getResults());
return success();
}
diff --git a/iree/compiler/Codegen/Common/TypePropagationPass.cpp b/iree/compiler/Codegen/Common/TypePropagationPass.cpp
index f120f46..5bbf065 100644
--- a/iree/compiler/Codegen/Common/TypePropagationPass.cpp
+++ b/iree/compiler/Codegen/Common/TypePropagationPass.cpp
@@ -312,7 +312,7 @@
for (unsigned i = 0, e = op->getNumRegions(); i != e; ++i) {
state.addRegion();
}
- Operation *newOp = rewriter.createOperation(state);
+ Operation *newOp = rewriter.create(state);
// Move all the regions from the old op to the new op and legalize its
// signature.
diff --git a/iree/compiler/Codegen/Common/test/iree_comprehensive_bufferize.mlir b/iree/compiler/Codegen/Common/test/iree_comprehensive_bufferize.mlir
index 830af58..dcfe2b6 100644
--- a/iree/compiler/Codegen/Common/test/iree_comprehensive_bufferize.mlir
+++ b/iree/compiler/Codegen/Common/test/iree_comprehensive_bufferize.mlir
@@ -34,7 +34,7 @@
}
// CHECK-DAG: #[[MAP0:.+]] = affine_map<()[s0, s1] -> (s0 * s1)>
-// CHECK-DAG: #[[MAP1:.+]] = affine_map<(d0)[s0, s1] -> (s0, -d0 + s1)>
+// CHECK-DAG: #[[MAP1:.+]] = affine_map<(d0)[s0, s1] -> (-d0 + s1, s0)>
// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0, d1)[s0, s1] -> (d0 * s1 + s0 + d1)>
// CHECK: func @matmul()
// CHECK-DAG: %[[M:.+]] = hal.interface.constant.load[0]
@@ -108,7 +108,7 @@
}
// CHECK-DAG: #[[MAP0:.+]] = affine_map<()[s0, s1] -> (s0 * s1)>
-// CHECK-DAG: #[[MAP1:.+]] = affine_map<(d0)[s0, s1] -> (s0, -d0 + s1)>
+// CHECK-DAG: #[[MAP1:.+]] = affine_map<(d0)[s0, s1] -> (-d0 + s1, s0)>
// CHECK: func @matmul_fill()
// CHECK-DAG: %[[CST:.+]] = arith.constant 0.000000e+00 : f32
// CHECK-DAG: %[[M:.+]] = hal.interface.constant.load[0]
diff --git a/iree/compiler/Codegen/Common/test/linalg_bufferize.mlir b/iree/compiler/Codegen/Common/test/linalg_bufferize.mlir
index d8f5ae0..bf51a7f 100644
--- a/iree/compiler/Codegen/Common/test/linalg_bufferize.mlir
+++ b/iree/compiler/Codegen/Common/test/linalg_bufferize.mlir
@@ -482,8 +482,8 @@
return
}
-// CHECK-DAG: #[[MAP0:.+]] = affine_map<(d0)[s0, s1] -> (s1, -d0 + s0)>
-// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0, s1] -> (s0, -d0 + s1)>
+// CHECK-DAG: #[[MAP0:.+]] = affine_map<(d0)[s0, s1] -> (-d0 + s0, s1)>
+// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0, s1] -> (-d0 + s1, s0)>
// CHECK: func @bufferize_dynamic()
// CHECK: %[[DIM0:.+]] = hal.interface.constant.load[0] : index
// CHECK: %[[DIM1:.+]] = hal.interface.constant.load[1] : index
@@ -554,8 +554,8 @@
return
}
-// CHECK-DAG: #[[MAP0:.+]] = affine_map<(d0)[s0, s1] -> (s1, -d0 + s0)>
-// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0, s1] -> (s0, -d0 + s1)>
+// CHECK-DAG: #[[MAP0:.+]] = affine_map<(d0)[s0, s1] -> (-d0 + s0, s1)>
+// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0, s1] -> (-d0 + s1, s0)>
// CHECK: func @bufferize_dynamic_inplace()
// CHECK: %[[DIM0:.+]] = hal.interface.constant.load[0] : index
// CHECK: %[[DIM1:.+]] = hal.interface.constant.load[1] : index
@@ -1721,7 +1721,7 @@
return
}
-// CHECK: #[[MAP1:.+]] = affine_map<(d0)[s0] -> (4, -d0 + s0)>
+// CHECK: #[[MAP1:.+]] = affine_map<(d0)[s0] -> (-d0 + s0, 4)>
// CHECK: func @dot_general_padded
// CHECK-DAG: %[[ALLOC_RET0:.+]] = memref.alloc
// CHECK-DAG: %[[ALLOC_ARG1:.+]] = memref.alloc
diff --git a/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir b/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir
index 3407016..cf07de8 100644
--- a/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir
+++ b/iree/compiler/Codegen/Common/test/tile_and_distribute_to_workgroups.mlir
@@ -47,7 +47,7 @@
}
}
// CHECK-DAG: #[[MAP1:.+]] = affine_map<()[s0] -> (s0 * 64)>
-// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0] -> (64, -d0 + s0)>
+// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0] -> (-d0 + s0, 64)>
// CHECK-DAG: #[[TRANSLATION:.+]] = #iree_codegen.translation_info<CPUTileFuseAndVectorize>
// CHECK: hal.executable.entry_point public @matmul_tensors
// CHECK-SAME: translation_info = #[[TRANSLATION]]
@@ -362,7 +362,7 @@
}
}
// CHECK-DAG: #[[MAP1:.+]] = affine_map<()[s0] -> (s0 * 64)>
-// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0] -> (64, -d0 + s0)>
+// CHECK-DAG: #[[MAP2:.+]] = affine_map<(d0)[s0] -> (-d0 + s0, 64)>
// CHECK: func @copy_op()
// CHECK-DAG: %[[SOURCE_SIZE_Y:.+]] = hal.interface.constant.load[0] : index
// CHECK-DAG: %[[SOURCE_SIZE_X:.+]] = hal.interface.constant.load[1] : index
@@ -874,7 +874,6 @@
// CHECK-SAME: translation_info = #[[TRANSLATION]]
// CHECK: func @reduction
// CHECK: scf.for %[[IV0:.+]] =
-// CHECK: %[[INIT0:.+]] = linalg.init_tensor
// CHECK: %[[INIT:.+]] = linalg.init_tensor
// CHECK: %[[FILL:.+]] = linalg.fill
// CHECK-SAME: outs(%[[INIT]] :
diff --git a/iree/compiler/Dialect/Flow/IR/FlowOps.cpp b/iree/compiler/Dialect/Flow/IR/FlowOps.cpp
index be79e19..2657fed 100644
--- a/iree/compiler/Dialect/Flow/IR/FlowOps.cpp
+++ b/iree/compiler/Dialect/Flow/IR/FlowOps.cpp
@@ -388,7 +388,7 @@
TypeRange operandTypes,
TypeRange resultTypes,
Region &body) {
- SmallVector<OpAsmParser::OperandType> regionArgs;
+ SmallVector<OpAsmParser::UnresolvedOperand> regionArgs;
SmallVector<Type> regionArgTypes;
if (failed(parser.parseLParen())) {
return failure();
diff --git a/iree/compiler/Dialect/Flow/IR/test/dispatch_tensor_folding.mlir b/iree/compiler/Dialect/Flow/IR/test/dispatch_tensor_folding.mlir
index 1e7277f..5728f68 100644
--- a/iree/compiler/Dialect/Flow/IR/test/dispatch_tensor_folding.mlir
+++ b/iree/compiler/Dialect/Flow/IR/test/dispatch_tensor_folding.mlir
@@ -60,7 +60,7 @@
return
}
-// CHECK: #[[MAP:.+]] = affine_map<()[s0] -> (64, -s0 + 250)>
+// CHECK: #[[MAP:.+]] = affine_map<()[s0] -> (-s0 + 250, 64)>
// CHECK: @canonicalizeDimOfTensorTile
// CHECK: %[[ARG0:.+]]: !flow.dispatch.tensor<readonly:250x1024xf32>, %[[ARG1:.+]]: index, %[[ARG2:.+]]: index
// CHECK: %[[DIM:.+]] = affine.min #[[MAP]]()[%[[ARG1]]]
diff --git a/iree/compiler/Dialect/Flow/Transforms/StripSignednessPass.cpp b/iree/compiler/Dialect/Flow/Transforms/StripSignednessPass.cpp
index cee8b77..1a1b963 100644
--- a/iree/compiler/Dialect/Flow/Transforms/StripSignednessPass.cpp
+++ b/iree/compiler/Dialect/Flow/Transforms/StripSignednessPass.cpp
@@ -73,7 +73,7 @@
newRegion->getArgumentTypes(), result);
rewriter.applySignatureConversion(newRegion, result);
}
- Operation* newOp = rewriter.createOperation(state);
+ Operation* newOp = rewriter.create(state);
rewriter.replaceOp(op, newOp->getResults());
return success();
}
diff --git a/iree/compiler/Dialect/HAL/Conversion/ConversionTarget.cpp b/iree/compiler/Dialect/HAL/Conversion/ConversionTarget.cpp
index feb11bd..13906b2 100644
--- a/iree/compiler/Dialect/HAL/Conversion/ConversionTarget.cpp
+++ b/iree/compiler/Dialect/HAL/Conversion/ConversionTarget.cpp
@@ -74,7 +74,7 @@
}
}
- auto *dstOp = rewriter.createOperation(state);
+ auto *dstOp = rewriter.create(state);
rewriter.replaceOp(srcOp, dstOp->getResults());
return success();
}
diff --git a/iree/compiler/Dialect/HAL/IR/HALOps.cpp b/iree/compiler/Dialect/HAL/IR/HALOps.cpp
index a2c4c5e..e0b4832 100644
--- a/iree/compiler/Dialect/HAL/IR/HALOps.cpp
+++ b/iree/compiler/Dialect/HAL/IR/HALOps.cpp
@@ -61,17 +61,18 @@
//===----------------------------------------------------------------------===//
static ParseResult parseDescriptorSetBindings(
- OpAsmParser &parser, SmallVectorImpl<OpAsmParser::OperandType> &ordinals,
- SmallVectorImpl<OpAsmParser::OperandType> &buffers,
+ OpAsmParser &parser,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &ordinals,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &buffers,
SmallVectorImpl<Type> &bufferTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &bufferOffsets,
- SmallVectorImpl<OpAsmParser::OperandType> &bufferLengths) {
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &bufferOffsets,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &bufferLengths) {
do {
- OpAsmParser::OperandType ordinal;
- OpAsmParser::OperandType buffer;
+ OpAsmParser::UnresolvedOperand ordinal;
+ OpAsmParser::UnresolvedOperand buffer;
Type bufferType;
- OpAsmParser::OperandType bufferOffset;
- OpAsmParser::OperandType bufferLength;
+ OpAsmParser::UnresolvedOperand bufferOffset;
+ OpAsmParser::UnresolvedOperand bufferLength;
if (failed(parser.parseOperand(ordinal)) || failed(parser.parseEqual()) ||
failed(parser.parseLParen()) || failed(parser.parseOperand(buffer)) ||
failed(parser.parseColonType(bufferType)) ||
@@ -123,7 +124,7 @@
static ParseResult parsePackSliceRanges(
OpAsmParser &parser, ArrayAttr &lifetimeIntervals,
- SmallVectorImpl<OpAsmParser::OperandType> &dynamicSliceSizes,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &dynamicSliceSizes,
SmallVectorImpl<Type> &packedOffsetTypes) {
auto indexType = parser.getBuilder().getIndexType();
SmallVector<Attribute> lifetimeRangeValues;
@@ -131,7 +132,7 @@
if (failed(parser.parseOptionalLSquare())) break;
IntegerAttr lifetimeStart;
IntegerAttr lifetimeEnd;
- OpAsmParser::OperandType dynamicSliceSize;
+ OpAsmParser::UnresolvedOperand dynamicSliceSize;
if (failed(parser.parseAttribute(lifetimeStart, indexType)) ||
failed(parser.parseComma()) ||
failed(parser.parseAttribute(lifetimeEnd, indexType)) ||
@@ -547,7 +548,7 @@
}
ParseResult DeviceSwitchOp::parse(OpAsmParser &parser, OperationState &result) {
- OpAsmParser::OperandType device;
+ OpAsmParser::UnresolvedOperand device;
Type deviceType;
if (failed(parser.parseLess()) || failed(parser.parseOperand(device)) ||
failed(parser.parseColonType(deviceType)) ||
@@ -569,7 +570,7 @@
return failure();
}
conditionAttrs.push_back(conditionAttr);
- SmallVector<OpAsmParser::OperandType> regionArgs;
+ SmallVector<OpAsmParser::UnresolvedOperand> regionArgs;
SmallVector<Type> regionArgTypes;
auto *regionBody = result.addRegion();
if (failed(parser.parseRegion(*regionBody, regionArgs, regionArgTypes))) {
@@ -692,7 +693,7 @@
// For now assume that the workload is at max 3D. So arguments to the region
// are workload along x, y and z.
std::unique_ptr<Region> region;
- SmallVector<OpAsmParser::OperandType, 4> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> regionOperands;
SmallVector<Type, 4> regionTypes;
OptionalParseResult parseResult =
parser.parseOptionalRegion(region, regionOperands, regionTypes);
diff --git a/iree/compiler/Dialect/Stream/IR/StreamOps.cpp b/iree/compiler/Dialect/Stream/IR/StreamOps.cpp
index ec5e8a7..f77d09e 100644
--- a/iree/compiler/Dialect/Stream/IR/StreamOps.cpp
+++ b/iree/compiler/Dialect/Stream/IR/StreamOps.cpp
@@ -234,13 +234,14 @@
//===----------------------------------------------------------------------===//
static ParseResult parseResourceRegion(
- OpAsmParser &parser, SmallVectorImpl<OpAsmParser::OperandType> &operands,
+ OpAsmParser &parser,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &operands,
SmallVectorImpl<Type> &operandTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &operandSizes,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &operandSizes,
SmallVectorImpl<Type> &resultTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resultSizes,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultSizes,
ArrayAttr &tiedOperands, Region &body) {
- SmallVector<OpAsmParser::OperandType, 16> regionArgs;
+ SmallVector<OpAsmParser::UnresolvedOperand, 16> regionArgs;
if (failed(parser.parseLParen())) {
return failure();
}
@@ -327,10 +328,12 @@
//===----------------------------------------------------------------------===//
static ParseResult parseExplicitResourceRegion(
- OpAsmParser &parser, SmallVectorImpl<OpAsmParser::OperandType> &operands,
+ OpAsmParser &parser,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &operands,
SmallVectorImpl<Type> &operandTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &operandSizes, Region &body) {
- SmallVector<OpAsmParser::OperandType, 16> regionArgs;
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &operandSizes,
+ Region &body) {
+ SmallVector<OpAsmParser::UnresolvedOperand, 16> regionArgs;
if (failed(parser.parseLParen())) {
return failure();
}
@@ -399,7 +402,7 @@
static ParseResult parsePackSliceRanges(
OpAsmParser &parser, ArrayAttr &lifetimeIntervals,
- SmallVectorImpl<OpAsmParser::OperandType> &dynamicSliceSizes,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &dynamicSliceSizes,
SmallVectorImpl<Type> &packedOffsetTypes) {
auto indexType = parser.getBuilder().getIndexType();
SmallVector<Attribute> lifetimeRangeValues;
@@ -407,7 +410,7 @@
if (failed(parser.parseOptionalLSquare())) break;
IntegerAttr lifetimeStart;
IntegerAttr lifetimeEnd;
- OpAsmParser::OperandType dynamicSliceSize;
+ OpAsmParser::UnresolvedOperand dynamicSliceSize;
if (failed(parser.parseAttribute(lifetimeStart, indexType)) ||
failed(parser.parseComma()) ||
failed(parser.parseAttribute(lifetimeEnd, indexType)) ||
@@ -455,11 +458,12 @@
static ParseResult parseConstantValueList(
OpAsmParser &parser, SmallVectorImpl<Type> &resultTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resultSizes, ArrayAttr &values) {
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultSizes,
+ ArrayAttr &values) {
SmallVector<Attribute> valueAttrs;
do {
Type resultType;
- OpAsmParser::OperandType resultSize;
+ OpAsmParser::UnresolvedOperand resultSize;
Attribute valueAttr;
if (failed(parseSizeAwareType(parser, resultType, resultSize)) ||
failed(parser.parseEqual()) ||
@@ -1660,11 +1664,12 @@
}
static ParseResult parseDispatchResources(
- OpAsmParser &parser, SmallVectorImpl<OpAsmParser::OperandType> &resources,
+ OpAsmParser &parser,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resources,
SmallVectorImpl<Type> &resourceTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resourceSizes,
- SmallVectorImpl<OpAsmParser::OperandType> &resourceOffsets,
- SmallVectorImpl<OpAsmParser::OperandType> &resourceLengths,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resourceSizes,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resourceOffsets,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resourceLengths,
ArrayAttr &resourceAccesses) {
SmallVector<Attribute> accessAttrs;
do {
diff --git a/iree/compiler/Dialect/Util/IR/UtilOps.cpp b/iree/compiler/Dialect/Util/IR/UtilOps.cpp
index 31e5233..c41c874 100644
--- a/iree/compiler/Dialect/Util/IR/UtilOps.cpp
+++ b/iree/compiler/Dialect/Util/IR/UtilOps.cpp
@@ -150,12 +150,13 @@
//===----------------------------------------------------------------------===//
// [%offset for %length], [%offset for %length], ...
-ParseResult parseRangeList(OpAsmParser &parser,
- SmallVectorImpl<OpAsmParser::OperandType> &offsets,
- SmallVectorImpl<OpAsmParser::OperandType> &lengths) {
+ParseResult parseRangeList(
+ OpAsmParser &parser,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &offsets,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &lengths) {
do {
- OpAsmParser::OperandType offset;
- OpAsmParser::OperandType length;
+ OpAsmParser::UnresolvedOperand offset;
+ OpAsmParser::UnresolvedOperand length;
if (failed(parser.parseLSquare()) || failed(parser.parseOperand(offset)) ||
failed(parser.parseKeyword("for")) ||
failed(parser.parseOperand(length)) || failed(parser.parseRSquare())) {
@@ -186,7 +187,7 @@
// type{%size}
ParseResult parseSizeAwareType(OpAsmParser &parser, Type &type,
- OpAsmParser::OperandType &size) {
+ OpAsmParser::UnresolvedOperand &size) {
if (failed(parser.parseType(type)) || failed(parser.parseLBrace()) ||
failed(parser.parseOperand(size)) || failed(parser.parseRBrace())) {
return failure();
@@ -208,12 +209,12 @@
ParseResult parseSizeAwareTypeList(
OpAsmParser &parser, SmallVectorImpl<Type> &types,
- SmallVectorImpl<OpAsmParser::OperandType> &sizes) {
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &sizes) {
do {
Type type;
if (failed(parser.parseType(type))) return failure();
if (type.isa<IREE::Util::SizeAwareTypeInterface>()) {
- OpAsmParser::OperandType size;
+ OpAsmParser::UnresolvedOperand size;
if (failed(parser.parseLBrace()) || failed(parser.parseOperand(size)) ||
failed(parser.parseRBrace())) {
return failure();
@@ -241,7 +242,7 @@
ParseResult parseSizeAwareTypeList(
OpAsmParser &parser, SmallVectorImpl<Type> &types0,
SmallVectorImpl<Type> &types1,
- SmallVectorImpl<OpAsmParser::OperandType> &sizes) {
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &sizes) {
if (failed(parseSizeAwareTypeList(parser, types0, sizes))) return failure();
types1 = types0;
return success();
@@ -260,16 +261,16 @@
ParseResult parseShapedTiedResult(
OpAsmParser &parser, Type &resultType,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims) {
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims) {
ArrayAttr tiedOperands;
return parseShapedTiedResult(parser, resultType, resultDims, tiedOperands);
}
ParseResult parseShapedTiedResult(
OpAsmParser &parser, Type &resultType,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims,
ArrayAttr &tiedOperands) {
- OpAsmParser::OperandType tiedResult;
+ OpAsmParser::UnresolvedOperand tiedResult;
auto res = parser.parseOptionalOperand(tiedResult);
int64_t tiedOperandIndex = IREE::Util::TiedOpInterface::kUntiedIndex;
if (res.hasValue() && succeeded(res.getValue())) {
@@ -279,7 +280,7 @@
if (failed(parser.parseType(resultType))) return failure();
if (auto shapedType = resultType.dyn_cast<ShapedType>()) {
if (!shapedType.hasStaticShape()) {
- SmallVector<OpAsmParser::OperandType, 4> dynamicDims;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> dynamicDims;
if (failed(parser.parseLBrace()) ||
failed(parser.parseOperandList(dynamicDims,
shapedType.getNumDynamicDims(),
@@ -291,7 +292,7 @@
}
} else if (auto sizedType =
resultType.dyn_cast<IREE::Util::SizeAwareTypeInterface>()) {
- OpAsmParser::OperandType size;
+ OpAsmParser::UnresolvedOperand size;
if (failed(parser.parseLBrace()) || failed(parser.parseOperand(size)) ||
failed(parser.parseRBrace())) {
return failure();
@@ -346,13 +347,13 @@
static ParseResult parseShapedOperandList(
OpAsmParser &parser, SmallVectorImpl<Type> &types,
- SmallVectorImpl<OpAsmParser::OperandType> &dims) {
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &dims) {
do {
Type type;
if (failed(parser.parseType(type))) return failure();
if (auto shapedType = type.dyn_cast<ShapedType>()) {
if (!shapedType.hasStaticShape()) {
- SmallVector<OpAsmParser::OperandType, 4> dynamicDims;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> dynamicDims;
if (failed(parser.parseLBrace()) ||
failed(parser.parseOperandList(dynamicDims,
shapedType.getNumDynamicDims(),
@@ -364,7 +365,7 @@
}
} else if (auto sizedType =
type.dyn_cast<IREE::Util::SizeAwareTypeInterface>()) {
- OpAsmParser::OperandType size;
+ OpAsmParser::UnresolvedOperand size;
if (failed(parser.parseLBrace()) || failed(parser.parseOperand(size)) ||
failed(parser.parseRBrace())) {
return failure();
@@ -378,8 +379,9 @@
// Finds the operand index in |operands| that |tiedResult| references.
// Returns TiedOpInterface::kUntiedIndex if no operand is found.
-static int64_t findTiedOperand(OpAsmParser::OperandType tiedResult,
- ArrayRef<OpAsmParser::OperandType> operands) {
+static int64_t findTiedOperand(
+ OpAsmParser::UnresolvedOperand tiedResult,
+ ArrayRef<OpAsmParser::UnresolvedOperand> operands) {
int64_t operandIndex = IREE::Util::TiedOpInterface::kUntiedIndex;
for (int64_t i = 0; i < operands.size(); ++i) {
if (operands[i].name == tiedResult.name &&
@@ -392,14 +394,15 @@
}
ParseResult parseShapedResultList(
- OpAsmParser &parser, ArrayRef<OpAsmParser::OperandType> operands,
- TypeRange operandTypes, ArrayRef<OpAsmParser::OperandType> operandDims,
+ OpAsmParser &parser, ArrayRef<OpAsmParser::UnresolvedOperand> operands,
+ TypeRange operandTypes,
+ ArrayRef<OpAsmParser::UnresolvedOperand> operandDims,
SmallVectorImpl<Type> &resultTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims,
ArrayAttr &tiedOperands) {
SmallVector<int64_t, 4> tiedOperandIndices;
do {
- OpAsmParser::OperandType tiedResult;
+ OpAsmParser::UnresolvedOperand tiedResult;
auto res = parser.parseOptionalOperand(tiedResult);
Type type;
int64_t tiedOperandIndex = IREE::Util::TiedOpInterface::kUntiedIndex;
@@ -422,7 +425,7 @@
}
if (auto shapedType = type.dyn_cast<ShapedType>()) {
if (!shapedType.hasStaticShape()) {
- SmallVector<OpAsmParser::OperandType, 4> dynamicDims;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> dynamicDims;
if (failed(parser.parseLBrace()) ||
failed(parser.parseOperandList(dynamicDims,
shapedType.getNumDynamicDims(),
@@ -434,7 +437,7 @@
}
} else if (auto sizedType =
type.dyn_cast<IREE::Util::SizeAwareTypeInterface>()) {
- OpAsmParser::OperandType size;
+ OpAsmParser::UnresolvedOperand size;
if (failed(parser.parseLBrace()) || failed(parser.parseOperand(size)) ||
failed(parser.parseRBrace())) {
return failure();
@@ -497,11 +500,11 @@
}
ParseResult parseShapedFunctionType(
- OpAsmParser &parser, ArrayRef<OpAsmParser::OperandType> operands,
+ OpAsmParser &parser, ArrayRef<OpAsmParser::UnresolvedOperand> operands,
SmallVectorImpl<Type> &operandTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &operandDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &operandDims,
SmallVectorImpl<Type> &resultTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims,
ArrayAttr &tiedOperands) {
if (failed(parser.parseLParen())) return failure();
if (failed(parser.parseOptionalRParen())) {
@@ -579,7 +582,7 @@
}
ParseResult DoNotOptimizeOp::parse(OpAsmParser &parser, OperationState &state) {
- SmallVector<OpAsmParser::OperandType, 2> args;
+ SmallVector<OpAsmParser::UnresolvedOperand, 2> args;
// Operands and results have the same types.
auto &operandTypes = state.types;
diff --git a/iree/compiler/Dialect/Util/IR/UtilOps.h b/iree/compiler/Dialect/Util/IR/UtilOps.h
index 0793c49..86711d9 100644
--- a/iree/compiler/Dialect/Util/IR/UtilOps.h
+++ b/iree/compiler/Dialect/Util/IR/UtilOps.h
@@ -82,7 +82,7 @@
// type{%size}
ParseResult parseSizeAwareType(OpAsmParser &parser, Type &type,
- OpAsmParser::OperandType &size);
+ OpAsmParser::UnresolvedOperand &size);
void printSizeAwareType(OpAsmPrinter &p, Operation *op, Type type, Value size);
//===----------------------------------------------------------------------===//
@@ -92,13 +92,13 @@
ParseResult parseSizeAwareTypeList(
OpAsmParser &parser, SmallVectorImpl<Type> &types,
- SmallVectorImpl<OpAsmParser::OperandType> &sizes);
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &sizes);
void printSizeAwareTypeList(OpAsmPrinter &p, Operation *op, TypeRange types,
OperandRange sizes);
ParseResult parseSizeAwareTypeList(
OpAsmParser &parser, SmallVectorImpl<Type> &types0,
SmallVectorImpl<Type> &types1,
- SmallVectorImpl<OpAsmParser::OperandType> &sizes);
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &sizes);
void printSizeAwareTypeList(OpAsmPrinter &p, Operation *op, TypeRange types0,
TypeRange types1, OperandRange sizes);
@@ -110,10 +110,11 @@
ParseResult parseShapedTiedResult(
OpAsmParser &parser, Type &resultType,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims);
-inline ParseResult parseShapedTiedResult(OpAsmParser &parser, Type &resultType,
- OpAsmParser::OperandType &resultDim) {
- SmallVector<OpAsmParser::OperandType, 1> resultDims;
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims);
+inline ParseResult parseShapedTiedResult(
+ OpAsmParser &parser, Type &resultType,
+ OpAsmParser::UnresolvedOperand &resultDim) {
+ SmallVector<OpAsmParser::UnresolvedOperand, 1> resultDims;
if (failed(parseShapedTiedResult(parser, resultType, resultDims))) {
return failure();
}
@@ -126,15 +127,15 @@
ParseResult parseShapedTiedResult(
OpAsmParser &parser, Type &resultType,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims,
ArrayAttr &tiedOperands);
void printShapedTiedResult(OpAsmPrinter &p, Operation *op, Type resultType,
ValueRange resultDims, ArrayAttr tiedOperands);
-inline ParseResult parseShapedTiedResult(OpAsmParser &parser, Type &resultType,
- OpAsmParser::OperandType &resultDim,
- ArrayAttr &tiedOperands) {
- SmallVector<OpAsmParser::OperandType> resultDims;
+inline ParseResult parseShapedTiedResult(
+ OpAsmParser &parser, Type &resultType,
+ OpAsmParser::UnresolvedOperand &resultDim, ArrayAttr &tiedOperands) {
+ SmallVector<OpAsmParser::UnresolvedOperand> resultDims;
if (failed(parseShapedTiedResult(parser, resultType, resultDims,
tiedOperands))) {
return failure();
@@ -150,10 +151,11 @@
}
ParseResult parseShapedResultList(
- OpAsmParser &parser, ArrayRef<OpAsmParser::OperandType> operands,
- TypeRange operandTypes, ArrayRef<OpAsmParser::OperandType> operandDims,
+ OpAsmParser &parser, ArrayRef<OpAsmParser::UnresolvedOperand> operands,
+ TypeRange operandTypes,
+ ArrayRef<OpAsmParser::UnresolvedOperand> operandDims,
SmallVectorImpl<Type> &resultTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims,
ArrayAttr &tiedOperands);
void printShapedResultList(OpAsmPrinter &p, Operation *op, ValueRange operands,
TypeRange operandTypes, ValueRange operandDims,
@@ -166,11 +168,11 @@
// (type, type{%dim0, %dim1}, type) -> (type{%dim2}, %operand4)
ParseResult parseShapedFunctionType(
- OpAsmParser &parser, ArrayRef<OpAsmParser::OperandType> operands,
+ OpAsmParser &parser, ArrayRef<OpAsmParser::UnresolvedOperand> operands,
SmallVectorImpl<Type> &operandTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &operandDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &operandDims,
SmallVectorImpl<Type> &resultTypes,
- SmallVectorImpl<OpAsmParser::OperandType> &resultDims,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &resultDims,
ArrayAttr &tiedOperands);
void printShapedFunctionType(OpAsmPrinter &p, Operation *op,
ValueRange operands, TypeRange operandTypes,
diff --git a/iree/compiler/Dialect/VM/Conversion/ImportUtils.h b/iree/compiler/Dialect/VM/Conversion/ImportUtils.h
index cf2440b..d60fc5e 100644
--- a/iree/compiler/Dialect/VM/Conversion/ImportUtils.h
+++ b/iree/compiler/Dialect/VM/Conversion/ImportUtils.h
@@ -110,7 +110,7 @@
}))));
}
- auto *callOp = rewriter.createOperation(state);
+ auto *callOp = rewriter.create(state);
copyImportAttrs(importOp, callOp);
return SmallVector<Value>(callOp->getResults());
}
diff --git a/iree/compiler/Dialect/VM/IR/VMOps.cpp b/iree/compiler/Dialect/VM/IR/VMOps.cpp
index d9a2064..ddfb09a 100644
--- a/iree/compiler/Dialect/VM/IR/VMOps.cpp
+++ b/iree/compiler/Dialect/VM/IR/VMOps.cpp
@@ -213,7 +213,7 @@
SmallVector<DictionaryAttr, 8> argAttrs;
SmallVector<Type, 8> argTypes;
while (failed(parser.parseOptionalRParen())) {
- OpAsmParser::OperandType operand;
+ OpAsmParser::UnresolvedOperand operand;
Type operandType;
auto operandLoc = parser.getCurrentLocation();
if (failed(parser.parseOperand(operand)) ||
@@ -865,9 +865,9 @@
//===----------------------------------------------------------------------===//
static ParseResult parseSwitchOp(OpAsmParser &parser, OperationState &result) {
- SmallVector<OpAsmParser::OperandType, 4> values;
- OpAsmParser::OperandType index;
- OpAsmParser::OperandType defaultValue;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> values;
+ OpAsmParser::UnresolvedOperand index;
+ OpAsmParser::UnresolvedOperand defaultValue;
Type type;
if (failed(parser.parseOperand(index)) ||
failed(parser.parseOperandList(values, OpAsmParser::Delimiter::Square)) ||
@@ -1060,17 +1060,17 @@
// We'll instead parse each segment as a flat list so `[(%a, %b), (%c, %d)]`
// parses as `[%a, %b, %c, %d]` and then do the accounting below when parsing
// types.
- SmallVector<OpAsmParser::OperandType, 4> flatOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> flatOperands;
SmallVector<int16_t, 4> flatSegmentSizes;
while (failed(parser.parseOptionalRParen())) {
if (succeeded(parser.parseOptionalLSquare())) {
// Variadic list.
- SmallVector<OpAsmParser::OperandType, 4> flatSegmentOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> flatSegmentOperands;
while (failed(parser.parseOptionalRSquare())) {
if (succeeded(parser.parseOptionalLParen())) {
// List contains tuples, so track the () and parse inside of it.
while (failed(parser.parseOptionalRParen())) {
- OpAsmParser::OperandType segmentOperand;
+ OpAsmParser::UnresolvedOperand segmentOperand;
if (failed(parser.parseOperand(segmentOperand))) {
return parser.emitError(parser.getCurrentLocation())
<< "invalid operand";
@@ -1086,7 +1086,7 @@
}
} else {
// Flat list of operands.
- OpAsmParser::OperandType segmentOperand;
+ OpAsmParser::UnresolvedOperand segmentOperand;
if (failed(parser.parseOperand(segmentOperand))) {
return parser.emitError(parser.getCurrentLocation())
<< "invalid operand";
@@ -1106,7 +1106,7 @@
flatSegmentOperands.end());
} else {
// Normal single operand.
- OpAsmParser::OperandType operand;
+ OpAsmParser::UnresolvedOperand operand;
if (failed(parser.parseOperand(operand))) {
return parser.emitError(parser.getCurrentLocation())
<< "malformed non-variadic operand";
@@ -1276,7 +1276,7 @@
ParseResult CondFailOp::parse(OpAsmParser &parser, OperationState &result) {
// First operand is either 'condition' or 'status', both i32.
- OpAsmParser::OperandType condition;
+ OpAsmParser::UnresolvedOperand condition;
if (failed(parser.parseOperand(condition))) {
return failure();
}
@@ -1284,7 +1284,7 @@
// First try looking for an operand after a comma. If no operand, keep track
// of the already parsed comma to avoid checking for a comma later on.
bool trailingComma = false;
- OpAsmParser::OperandType status = condition;
+ OpAsmParser::UnresolvedOperand status = condition;
if (succeeded(parser.parseOptionalComma()) &&
!parser.parseOptionalOperand(status).hasValue()) {
trailingComma = true;
diff --git a/iree/compiler/InputConversion/Common/IREEImportPublic.cpp b/iree/compiler/InputConversion/Common/IREEImportPublic.cpp
index dabf718..6b3f11e 100644
--- a/iree/compiler/InputConversion/Common/IREEImportPublic.cpp
+++ b/iree/compiler/InputConversion/Common/IREEImportPublic.cpp
@@ -75,7 +75,7 @@
OperationState state(srcOp->getLoc(), targetName, operands, resultTypes,
srcOp->getAttrs());
- Operation *targetOp = rewriter.createOperation(state);
+ Operation *targetOp = rewriter.create(state);
rewriter.replaceOp(srcOp, targetOp->getResults());
return success();
}
@@ -247,7 +247,7 @@
newRegion->getArgumentTypes(), result);
rewriter.applySignatureConversion(newRegion, result);
}
- Operation *newOp = rewriter.createOperation(state);
+ Operation *newOp = rewriter.create(state);
rewriter.replaceOp(op, newOp->getResults());
return success();
}
diff --git a/iree/compiler/InputConversion/MHLO/LegalizeInputTypes.cpp b/iree/compiler/InputConversion/MHLO/LegalizeInputTypes.cpp
index ac40eca..7f6f763 100644
--- a/iree/compiler/InputConversion/MHLO/LegalizeInputTypes.cpp
+++ b/iree/compiler/InputConversion/MHLO/LegalizeInputTypes.cpp
@@ -127,7 +127,7 @@
}
}
- auto *newOp = builder.createOperation(state);
+ auto *newOp = builder.create(state);
for (auto oldNewResult :
llvm::zip(oldOp->getResults(), newOp->getResults())) {
diff --git a/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp b/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp
index 3e94508..0040ae1 100644
--- a/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp
+++ b/iree/compiler/InputConversion/MHLO/MHLOToLinalgOnTensors.cpp
@@ -290,7 +290,7 @@
}
rewriter.applySignatureConversion(newRegion, result);
}
- Operation *newOp = rewriter.createOperation(state);
+ Operation *newOp = rewriter.create(state);
rewriter.replaceOp(op, newOp->getResults());
return success();
}
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td
index 4ae75cc..d72c312 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/IR/LinalgExtInterfaces.td
@@ -421,7 +421,7 @@
$_op->getAttrs());
for (Region &r : $_op->getRegions())
r.cloneInto(state.addRegion(), bvm);
- return b.createOperation(state);
+ return b.create(state);
}]
>
];
diff --git a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/Transforms/Transforms.h b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/Transforms/Transforms.h
index a5644d4..311ed01 100644
--- a/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/Transforms/Transforms.h
+++ b/llvm-external-projects/iree-dialects/include/iree-dialects/Dialect/LinalgExt/Transforms/Transforms.h
@@ -7,6 +7,7 @@
#ifndef IREE_DIALECTS_DIALECT_LINALGEXT_TRANSFORMS_TRANSFORMS_H_
#define IREE_DIALECTS_DIALECT_LINALGEXT_TRANSFORMS_TRANSFORMS_H_
+#include "iree-dialects/Dialect/LinalgExt/IR/LinalgExtOps.h"
#include "mlir/Dialect/Linalg/Transforms/Transforms.h"
#include "mlir/IR/PatternMatch.h"
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp
index 6c06913..723e10c 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgExt/IR/LinalgExtOps.cpp
@@ -1327,13 +1327,13 @@
ParseResult TileOp::parse(OpAsmParser &parser, OperationState &result) {
auto &builder = parser.getBuilder();
- OpAsmParser::OperandType tileSizes;
+ OpAsmParser::UnresolvedOperand tileSizes;
// TODO: also allow tensor<..xindex> and figure out a good syntax.
// Type tensorOfIndexType =
// RankedTensorType::get({ShapedType::kDynamicSize}, indexType);
Type tileSizesType = builder.getIndexType();
SmallVector<Type> outsTypes;
- SmallVector<OpAsmParser::OperandType, 4> outsOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 4> outsOperands;
llvm::SMLoc outputsOperandsLoc;
if (parser.parseOperand(tileSizes) ||
@@ -1369,7 +1369,7 @@
if (parser.parseArrowTypeList(result.types))
return failure();
- SmallVector<OpAsmParser::OperandType, 8> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 8> regionOperands;
std::unique_ptr<Region> region = std::make_unique<Region>();
SmallVector<Type, 8> operandTypes, regionTypes;
if (parser.parseRegion(*region, regionOperands, regionTypes))
@@ -1431,7 +1431,7 @@
ParseResult InParallelOp::parse(OpAsmParser &parser, OperationState &result) {
auto &builder = parser.getBuilder();
- OpAsmParser::OperandType numThreads;
+ OpAsmParser::UnresolvedOperand numThreads;
Type indexType = builder.getIndexType();
if (parser.parseOperand(numThreads) ||
@@ -1440,7 +1440,7 @@
if (parser.parseArrowTypeList(result.types))
return failure();
- SmallVector<OpAsmParser::OperandType, 8> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 8> regionOperands;
SmallVector<Type, 8> regionTypes;
std::unique_ptr<Region> region = std::make_unique<Region>();
if (parser.parseRegion(*region, regionOperands, regionTypes))
@@ -1608,7 +1608,7 @@
OperationState &result) {
auto &builder = parser.getBuilder();
- SmallVector<OpAsmParser::OperandType, 8> regionOperands;
+ SmallVector<OpAsmParser::UnresolvedOperand, 8> regionOperands;
SmallVector<Type, 8> regionTypes;
std::unique_ptr<Region> region = std::make_unique<Region>();
if (parser.parseRegion(*region, regionOperands, regionTypes))
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
index c2fea6b..a5b7458 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/LinalgTransformOps.cpp
@@ -428,7 +428,7 @@
ParseResult transform::VectorizeOp::parse(OpAsmParser &parser,
OperationState &result) {
auto operationType = pdl::OperationType::get(parser.getContext());
- OpAsmParser::OperandType target;
+ OpAsmParser::UnresolvedOperand target;
OptionalParseResult parseResult = parser.parseOptionalOperand(target);
if (parseResult.hasValue()) {
if (parseResult.getValue().failed() ||
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp
index e8d9477..0a39f85 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/LinalgTransform/IR/PDL.cpp
@@ -10,6 +10,7 @@
#include "mlir/Dialect/Arithmetic/Utils/Utils.h"
#include "mlir/Dialect/Linalg/Transforms/Transforms.h"
#include "mlir/Dialect/PDL/IR/PDLOps.h"
+#include "mlir/IR/Attributes.h"
#include "mlir/IR/SymbolTable.h"
#include "mlir/Rewrite/FrozenRewritePatternSet.h"
#include "mlir/Rewrite/PatternApplicator.h"
@@ -34,26 +35,28 @@
});
}
-/// Hook for PDL driver to check if an operation (`value`) is directly nested in
-/// a function with the name provided as constant parameter.
+/// Hook for PDL driver to check if an operation (`values[0]`) is directly
+/// nested in a function with the name provided by an attribute (`values[1]`).
/// TODO: PDL needs user-defined "questions".
-static LogicalResult nestedInFunc(PDLValue value, ArrayAttr constantParams,
+static LogicalResult nestedInFunc(ArrayRef<PDLValue> values,
PatternRewriter &rewriter) {
- auto *operation = value.cast<Operation *>();
- auto func = operation->getParentOfType<FuncOp>();
- assert(constantParams.size() == 1 &&
- "expected a constant param with function name");
- auto functionSymbol = constantParams[0].dyn_cast<SymbolRefAttr>();
- assert(functionSymbol && "expected a function name");
+ assert(values.size() == 2 && "expected two arguments");
+ auto *operation = values[0].cast<Operation *>();
+ auto attr = values[1].cast<Attribute>();
+
+ auto func = operation->getParentOfType<func::FuncOp>();
+ auto functionSymbol = attr.dyn_cast<SymbolRefAttr>();
if (!func)
return rewriter.notifyMatchFailure(operation, "not nested in a function");
+ if (!functionSymbol)
+ return rewriter.notifyMatchFailure(operation, "not a function identifier");
return success(functionSymbol.getLeafReference() == func.getName());
}
/// PDL rewrite hook that does nothing.
-static void noOpRewriter(ArrayRef<PDLValue> args, ArrayAttr constantParams,
- PatternRewriter &rewriter, PDLResultList &results) {
+static void noOpRewriter(ArrayRef<PDLValue> args, PatternRewriter &rewriter,
+ PDLResultList &results) {
assert(args.size() == 1 && "expected one argument");
#ifndef NDEBUG
args.front().cast<Operation *>()->setAttr("iree_linalg_transform.matched",
@@ -130,48 +133,44 @@
return haveEquivalentBodies(linalgOp, linalgModelOp, rewriter);
}
-/// Check whether the unique Operation* `op` stored in `value` (assumed) is
-/// equivalent to the unique StringRefAttr operation name passed in
-/// `constantParams`.
+/// Check whether the unique Operation* stored in `values[0]` (assumed) is
+/// equivalent to the unique StringRefAttr passed in `values[1]` (assumed).
/// Equivalence is achieved when either:
-/// 1. `op` has the name stored in `constantParams`.
-/// 2. `op` and `constantParams` are both linalg ops and their structured
+/// 1. `values[0]` has the name stored in `values[1]`.
+/// 2. `values[0]` and `values[1]` are both linalg ops and their structured
/// interfaces as well as their bodies are equivalent.
/// Structured interfaces equivalence is a simple attribute level check.
/// Body equivalence is more involved and currently limited:
/// a. the current impl constructs an instance of the op whose name is
-/// specified in `constantParams` and checks for exact body equality.
+/// specified in `values[1]` and checks for exact body equality.
/// b. a more advanced version would "subtract" the bodies and fold, cse
/// and canonicalize to fixed point. If the result is "all zeros",
/// then the bodies would be equivalent (really isomorphic).
/// 3. other cases TBD (e.g. vector.generic when available).
-static LogicalResult isEquivalentToOp(PDLValue value, ArrayAttr constantParams,
+static LogicalResult isEquivalentToOp(ArrayRef<PDLValue> values,
PatternRewriter &rewriter) {
- auto *maybeOp = value.dyn_cast<Operation *>();
- if (!maybeOp)
- return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
- Operation *op = maybeOp;
+ assert(values.size() == 2 && "expected two arguments");
+ auto *operation = values[0].cast<Operation *>();
+ auto attribute = values[1].cast<Attribute>();
- ArrayRef<Attribute> attrs = constantParams.getValue();
- if (attrs.size() != 1)
- return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
- auto modelOpNameAttr = attrs.front().dyn_cast<StringAttr>();
+ auto modelOpNameAttr = attribute.dyn_cast<StringAttr>();
if (!modelOpNameAttr)
return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
auto modelOpName = modelOpNameAttr.strref();
// 1. If op has name `modelOpName`, the match is trivial.
- if (op->getName().getStringRef() == modelOpName)
+ if (operation->getName().getStringRef() == modelOpName)
return success();
// 2. Linalg vs Linalg.
- // Create op from `constantParams`.
- OperationState modelOpState(op->getLoc(), modelOpName, op->getOperands(),
- op->getResultTypes(), op->getAttrs());
+ // Create op from `modelOpName`.
+ OperationState modelOpState(
+ operation->getLoc(), modelOpName, operation->getOperands(),
+ operation->getResultTypes(), operation->getAttrs());
modelOpState.addRegion();
- Operation *modelOp = rewriter.createOperation(modelOpState);
+ Operation *modelOp = rewriter.create(modelOpState);
auto g1 = llvm::make_scope_exit([&]() { rewriter.eraseOp(modelOp); });
- LinalgOp linalgOp = dyn_cast<LinalgOp>(op);
+ LinalgOp linalgOp = dyn_cast<LinalgOp>(operation);
LinalgOp linalgModelOp = dyn_cast<LinalgOp>(modelOp);
if (linalgOp && linalgModelOp)
return isEquivalentToOpImpl(linalgOp, linalgModelOp, rewriter);
@@ -181,21 +180,20 @@
}
/// Assume that:
-/// 1. `value` is an operands range
-/// 2. `constantParams` contains a DictAttr with `operand_number`, `dim` and
+/// 1. `values[0]` is an operands range
+/// 2. `values[1]` contains a DictAttr with `operand_number`, `dim` and
/// `divisor` IntegerAttr entries.
-/// Succeed if `value`[`operand_number`] is a ranked type whose `dim` is a
+/// Succeed if `operands`[`operand_number`] is a ranked type whose `dim` is a
/// multiple of `divisor`.
/// Note: 0 is the convention to express "do not tile", it is considered to
/// divide everything.
-static LogicalResult isDimMultipleOf(PDLValue value, ArrayAttr constantParams,
+static LogicalResult isDimMultipleOf(ArrayRef<PDLValue> values,
PatternRewriter &rewriter) {
- auto maybeOperands = value.dyn_cast<ValueRange>();
- if (!maybeOperands)
- return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
- auto operands = *maybeOperands;
+ assert(values.size() == 2 && "expected two arguments");
+ auto operands = values[0].cast<ValueRange>();
+ auto attribute = values[1].cast<Attribute>();
- auto dict = constantParams.begin()->dyn_cast<DictionaryAttr>();
+ auto dict = attribute.dyn_cast<DictionaryAttr>();
if (!dict)
return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
@@ -227,19 +225,18 @@
}
/// Assume that:
-/// 1. `value` is an operands range
-/// 2. `constantParams` contains a DictAttr with `operand_number` and `dim`
+/// 1. `values[0]` is an operands range
+/// 2. `values[1]` contains a DictAttr with `operand_number` and `dim`
/// IntegerAttr entries.
/// Succeed if `value`[`operand_number`] is a ranked type whose `dim` is
/// dynamic.
-static LogicalResult isDimStatic(PDLValue value, ArrayAttr constantParams,
+static LogicalResult isDimStatic(ArrayRef<PDLValue> values,
PatternRewriter &rewriter) {
- auto maybeOperands = value.dyn_cast<ValueRange>();
- if (!maybeOperands)
- return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
- auto operands = *maybeOperands;
+ assert(values.size() == 2 && "expected two arguments");
+ auto operands = values[0].cast<ValueRange>();
+ auto attribute = values[1].cast<Attribute>();
- auto dict = constantParams.begin()->dyn_cast<DictionaryAttr>();
+ auto dict = attribute.dyn_cast<DictionaryAttr>();
if (!dict)
return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
@@ -262,19 +259,18 @@
}
/// Assume that:
-/// 1. `value` is an operands range
-/// 2. `constantParams` contains a DictAttr with `operand_number` and `dim`
+/// 1. `values[0]` is an operands range
+/// 2. `values[1]` contains a DictAttr with `operand_number` and `dim`
/// IntegerAttr entries.
/// Succeed if `value`[`operand_number`] is a ranked type whose `dim` is
/// dynamic.
-static LogicalResult isDimDynamic(PDLValue value, ArrayAttr constantParams,
+static LogicalResult isDimDynamic(ArrayRef<PDLValue> values,
PatternRewriter &rewriter) {
- auto maybeOperands = value.dyn_cast<ValueRange>();
- if (!maybeOperands)
- return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
- auto operands = *maybeOperands;
+ assert(values.size() == 2 && "expected two arguments");
+ auto operands = values[0].cast<ValueRange>();
+ auto attribute = values[1].cast<Attribute>();
- auto dict = constantParams.begin()->dyn_cast<DictionaryAttr>();
+ auto dict = attribute.dyn_cast<DictionaryAttr>();
if (!dict)
return failure(); // TODO: notifyMatchFailure needs an Operation* handle.
diff --git a/llvm-external-projects/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp b/llvm-external-projects/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp
index f4ad03a..6b00086 100644
--- a/llvm-external-projects/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp
+++ b/llvm-external-projects/iree-dialects/lib/Dialect/PyDM/IR/PyDMOps.cpp
@@ -458,7 +458,7 @@
Region *elseRegion = result.addRegion();
auto &builder = parser.getBuilder();
- OpAsmParser::OperandType cond;
+ OpAsmParser::UnresolvedOperand cond;
Type conditionType = builder.getType<PyBoolType>();
if (parser.parseOperand(cond) ||
parser.resolveOperand(cond, conditionType, result.operands))
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/convert_to_loops.mlir b/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/convert_to_loops.mlir
index f4871a8..a739875 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/convert_to_loops.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/convert_to_loops.mlir
@@ -382,12 +382,11 @@
// CHECK-DAG: %[[C16:.+]] = arith.constant 16 : index
// CHECK-DAG: %[[COEFF:.+]] = arith.constant -3.14159274 : f32
// CHECK: scf.for %[[K:.+]] = %[[C0]] to %[[C16]] step %[[C2]]
-// CHECK-DAG: %[[HM:.+]] = arith.shrsi %[[C2]], %[[C1]] : index
-// CHECK: %[[L_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[K]]] [%[[HM]]] [1]
-// CHECK: %[[L_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[K]]] [%[[HM]]] [1]
-// CHECK: %[[R_OFFSET:.+]] = arith.addi %[[K]], %[[HM]] : index
-// CHECK: %[[R_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[R_OFFSET]]] [%[[HM]]] [1]
-// CHECK: %[[R_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[R_OFFSET]]] [%[[HM]]] [1]
+// CHECK: %[[L_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[K]]] [%[[C1]]] [1]
+// CHECK: %[[L_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[K]]] [%[[C1]]] [1]
+// CHECK: %[[R_OFFSET:.+]] = arith.addi %[[K]], %[[C1]] : index
+// CHECK: %[[R_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[R_OFFSET]]] [%[[C1]]] [1]
+// CHECK: %[[R_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[R_OFFSET]]] [%[[C1]]] [1]
// CHECK: linalg.generic
// CHECK-SAME: indexing_maps = [#[[MAP1]], #[[MAP1]], #[[MAP1]], #[[MAP1]]]
// CHECK-SAME: iterator_types = ["parallel"]
@@ -441,12 +440,11 @@
// CHECK-DAG: %[[D0:.+]] = memref.dim %[[REAL]], %[[C0]] : memref<?x16xf32>
// CHECK: scf.for %[[I:.+]] = %[[C0]] to %[[D0]] step %[[C1]]
// CHECK: scf.for %[[K:.+]] = %[[C0]] to %[[C16]] step %[[C4]]
-// CHECK-DAG: %[[HM:.+]] = arith.shrsi %[[C4]], %[[C1]] : index
-// CHECK: %[[L_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[K]]] [1, %[[HM]]] [1, 1]
-// CHECK: %[[L_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[K]]] [1, %[[HM]]] [1, 1]
-// CHECK: %[[R_OFFSET:.+]] = arith.addi %[[K]], %[[HM]] : index
-// CHECK: %[[R_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[R_OFFSET]]] [1, %[[HM]]] [1, 1]
-// CHECK: %[[R_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[R_OFFSET]]] [1, %[[HM]]] [1, 1]
+// CHECK: %[[L_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[K]]] [1, %[[C2]]] [1, 1]
+// CHECK: %[[L_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[K]]] [1, %[[C2]]] [1, 1]
+// CHECK: %[[R_OFFSET:.+]] = arith.addi %[[K]], %[[C2]] : index
+// CHECK: %[[R_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[R_OFFSET]]] [1, %[[C2]]] [1, 1]
+// CHECK: %[[R_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[R_OFFSET]]] [1, %[[C2]]] [1, 1]
// CHECK: linalg.generic
// CHECK-SAME: indexing_maps = [#[[MAP1]], #[[MAP1]], #[[MAP1]], #[[MAP1]]]
// CHECK-SAME: iterator_types = ["parallel", "parallel"]
@@ -479,12 +477,11 @@
// CHECK-DAG: %[[D0:.+]] = memref.dim %[[REAL]], %[[C0]] : memref<?x16xf32>
// CHECK: scf.for %[[I:.+]] = %[[C0]] to %[[D0]] step %[[C1]]
// CHECK: scf.for %[[K:.+]] = %[[C0]] to %[[C16]] step %[[C2]]
-// CHECK-DAG: %[[HM:.+]] = arith.shrsi %[[C2]], %[[C1]] : index
-// CHECK: %[[L_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[K]]] [1, %[[HM]]] [1, 1]
-// CHECK: %[[L_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[K]]] [1, %[[HM]]] [1, 1]
-// CHECK: %[[R_OFFSET:.+]] = arith.addi %[[K]], %[[HM]] : index
-// CHECK: %[[R_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[R_OFFSET]]] [1, %[[HM]]] [1, 1]
-// CHECK: %[[R_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[R_OFFSET]]] [1, %[[HM]]] [1, 1]
+// CHECK: %[[L_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[K]]] [1, %[[C1]]] [1, 1]
+// CHECK: %[[L_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[K]]] [1, %[[C1]]] [1, 1]
+// CHECK: %[[R_OFFSET:.+]] = arith.addi %[[K]], %[[C1]] : index
+// CHECK: %[[R_REAL_SLICE:.+]] = memref.subview %[[REAL]][%[[I]], %[[R_OFFSET]]] [1, %[[C1]]] [1, 1]
+// CHECK: %[[R_IMAG_SLICE:.+]] = memref.subview %[[IMAG]][%[[I]], %[[R_OFFSET]]] [1, %[[C1]]] [1, 1]
// CHECK: linalg.generic
// CHECK-SAME: indexing_maps = [#[[MAP1]], #[[MAP1]], #[[MAP2]], #[[MAP2]], #[[MAP2]], #[[MAP2]]]
// CHECK-SAME: iterator_types = ["parallel", "parallel"]
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/tiling-to-tile-op.mlir b/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/tiling-to-tile-op.mlir
index 0e0ea93..0e540d7 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/tiling-to-tile-op.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/iree_linalg_ext/tiling-to-tile-op.mlir
@@ -1,6 +1,6 @@
// RUN: iree-dialects-opt %s -linalg-interp-transforms --split-input-file | FileCheck %s
-// CHECK: #[[$MAP:.+]] = affine_map<(d0, d1)[s0] -> (d0, -d1 + s0)>
+// CHECK: #[[$MAP:.+]] = affine_map<(d0, d1)[s0] -> (-d1 + s0, d0)>
module {
// CHECK-LABEL: matmul(
// CHECK-SAME: %[[A:[0-9a-z]+]]: tensor<?x?xf32>
@@ -12,11 +12,11 @@
// CHECK: ^bb0(%[[OFF:.*]]: index, %[[SZ:.*]]: index, %[[C_ITER:.*]]: tensor<?x?xf32>):
// CHECK: %[[tA:.*]] = tensor.extract_slice %[[A]]{{.*}} : tensor<?x?xf32> to tensor<?x?xf32>
// CHECK: %[[tB:.*]] = tensor.extract_slice %[[B]]{{.*}} : tensor<?x?xf32> to tensor<?x?xf32>
- // CHECK: %[[RES:.*]] = linalg.matmul
+ // CHECK: %[[RES:.*]] = linalg.matmul
// CHECK-SAME: ins(%[[tA]], %[[tB]] : tensor<?x?xf32>, tensor<?x?xf32>)
// CHECK-SAME: outs(%[[C_ITER]] : tensor<?x?xf32>) -> tensor<?x?xf32>
// CHECK: iree_linalg_ext.tile_yield %[[RES]] : tensor<?x?xf32>
- %0 = linalg.matmul ins(%A, %B : tensor<?x?xf32>, tensor<?x?xf32>)
+ %0 = linalg.matmul ins(%A, %B : tensor<?x?xf32>, tensor<?x?xf32>)
outs(%C : tensor<?x?xf32>) -> (tensor<?x?xf32>)
return %0 : tensor<?x?xf32>
}
@@ -34,7 +34,7 @@
// -----
-// CHECK: #[[$MAP:.+]] = affine_map<(d0, d1) -> (d0, -d1 + 100)>
+// CHECK: #[[$MAP:.+]] = affine_map<(d0, d1) -> (-d1 + 100, d0)>
module {
// CHECK-LABEL: matmul_static(
// CHECK-SAME: %[[A:[0-9a-z]+]]: tensor<100x200xf32>
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/bufferize.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/bufferize.mlir
index b4b7bde..c2dc9ec 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/bufferize.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/bufferize.mlir
@@ -23,7 +23,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/double-tiling.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/double-tiling.mlir
index 74d6cff..b6bd4c0 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/double-tiling.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/double-tiling.mlir
@@ -31,7 +31,8 @@
%args = operands
%results= types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
rewrite %0 with "iree_linalg_transform.apply"
}
iree_linalg_transform.sequence {
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/drop-schedule.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/drop-schedule.mlir
index c82252b..1ce44dc 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/drop-schedule.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/drop-schedule.mlir
@@ -1,7 +1,7 @@
// RUN: iree-dialects-opt -linalg-drop-schedule %s | FileCheck %s
func @matmul_tensors(
- %arg0: tensor<128x128xf32>, %arg1: tensor<128x128xf32>, %arg2: tensor<128x128xf32> { linalg.inplaceable = true})
+ %arg0: tensor<128x128xf32>, %arg1: tensor<128x128xf32>, %arg2: tensor<128x128xf32> { linalg.inplaceable = true})
-> tensor<128x128xf32> {
%0 = linalg.matmul ins(%arg0, %arg1: tensor<128x128xf32>, tensor<128x128xf32>)
outs(%arg2: tensor<128x128xf32>)
@@ -14,7 +14,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/expert.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/expert.mlir
index b5825ee..7bbbb6d 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/expert.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/expert.mlir
@@ -18,7 +18,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
@@ -100,7 +101,8 @@
%args = pdl.operands
%results = pdl.types
%0 = pdl.operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- pdl.apply_native_constraint "nestedInFunc"[@matmul_tensors2](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors2
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
pdl.rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir
index f0ecf7c..971db0b 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/failure.mlir
@@ -118,7 +118,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@no_replacement](%0 : !pdl.operation)
+ %1 = pdl.attribute @no_replacement
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
@@ -148,7 +149,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@repeated_match](%0 : !pdl.operation)
+ %1 = pdl.attribute @repeated_match
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
@@ -158,7 +160,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@repeated_match](%0 : !pdl.operation)
+ %1 = pdl.attribute @repeated_match
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
@@ -169,7 +172,7 @@
// expected-error @below {{failed to apply}}
// expected-note @below {{handle}}
%1 = match @pdl_target2
-
+
// Add references to handles produced by match so that they are not DCE'd.
tile %0
tile %1
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/fuse.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/fuse.mlir
index 6a78eb3..4d2d060 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/fuse.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/fuse.mlir
@@ -20,7 +20,8 @@
%args = operands
%results = types
%0 = pdl.operation "linalg.elemwise_binary"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@fuse_unary](%0 : !pdl.operation)
+ %1 = pdl.attribute @fuse_unary
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/generalize.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/generalize.mlir
index ea12b9a..916e591 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/generalize.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/generalize.mlir
@@ -16,7 +16,8 @@
%args = operands
%results = types
%0 = pdl.operation "linalg.elemwise_unary"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@generalize_unary](%0 : !pdl.operation)
+ %1 = pdl.attribute @generalize_unary
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/interchange.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/interchange.mlir
index e988133..77c1bbc 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/interchange.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/interchange.mlir
@@ -23,7 +23,8 @@
%args = operands
%results = types
%0 = pdl.operation "linalg.generic"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@interchange_generic](%0 : !pdl.operation)
+ %1 = pdl.attribute @interchange_generic
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/pad.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/pad.mlir
index d6d627b..24ebc1c 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/pad.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/pad.mlir
@@ -31,7 +31,8 @@
%args = operands
%results = types
%0 = pdl.operation "linalg.elemwise_unary"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@pad_unary](%0 : !pdl.operation)
+ %1 = pdl.attribute @pad_unary
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/peel.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/peel.mlir
index f6c0a7c..774671f 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/peel.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/peel.mlir
@@ -37,7 +37,8 @@
%args = operands
%results = types
%0 = pdl.operation "scf.for"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@fully_dynamic_bounds](%0 : !pdl.operation)
+ %1 = pdl.attribute @fully_dynamic_bounds
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/print.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/print.mlir
new file mode 100644
index 0000000..e9cf0ee
--- /dev/null
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/print.mlir
@@ -0,0 +1,8 @@
+// RUN: iree-dialects-opt -linalg-interp-transforms %s | FileCheck %s
+
+// CHECK-LABEL: IR printer: test print
+// CHECK-NEXT: module
+// CHECK-NEXT: iree_linalg_transform.sequence
+iree_linalg_transform.sequence {
+ print {name = "test print"}
+}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/selective-targeting.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/selective-targeting.mlir
index fdcd2f9..58bca60 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/selective-targeting.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/selective-targeting.mlir
@@ -52,7 +52,8 @@
%results = types
%attr = attribute
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) {"test.attrA" = %attr}-> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
@@ -63,7 +64,8 @@
%results = types
%attr = attribute
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) {"test.attrC" = %attr}-> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
@@ -99,7 +101,8 @@
%results = types
%attr = attribute
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) {"test.attrA" = %attr}-> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@vectorize_one](%0 : !pdl.operation)
+ %1 = pdl.attribute @vectorize_one
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir
index adffa86..ea4caf8 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/single-tiling-full-script.mlir
@@ -18,7 +18,8 @@
%args = operands
%results = types
%0 = pdl.operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile-interchange.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile-interchange.mlir
index 88286aa..4c8f712 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile-interchange.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile-interchange.mlir
@@ -23,7 +23,8 @@
%0 = operands
%1 = types
%2 = operation "linalg.generic"(%0 : !pdl.range<value>) -> (%1 : !pdl.range<type>)
- apply_native_constraint "nestedInFunc" [@matmul_021](%2 : !pdl.operation)
+ %3 = pdl.attribute @matmul_021
+ apply_native_constraint "nestedInFunc"(%2, %3 : !pdl.operation, !pdl.attribute)
rewrite %2 with "iree_linalg_transform.apply"
}
@@ -60,7 +61,8 @@
%0 = operands
%1 = types
%2 = operation "linalg.generic"(%0 : !pdl.range<value>) -> (%1 : !pdl.range<type>)
- apply_native_constraint "nestedInFunc" [@matmul_210](%2 : !pdl.operation)
+ %3 = pdl.attribute @matmul_210
+ apply_native_constraint "nestedInFunc"(%2, %3 : !pdl.operation, !pdl.attribute)
rewrite %2 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile.mlir
index ba94d44..d940527 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/tile.mlir
@@ -33,7 +33,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/vectorize-transforms.mlir b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/vectorize-transforms.mlir
index 60864ee..4a609b6 100644
--- a/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/vectorize-transforms.mlir
+++ b/llvm-external-projects/iree-dialects/test/Dialect/linalg_transform/vectorize-transforms.mlir
@@ -5,7 +5,8 @@
%args = operands
%results = types
%0 = operation "linalg.matmul"(%args : !pdl.range<value>) -> (%results : !pdl.range<type>)
- apply_native_constraint "nestedInFunc"[@matmul_tensors](%0 : !pdl.operation)
+ %1 = pdl.attribute @matmul_tensors
+ apply_native_constraint "nestedInFunc"(%0, %1 : !pdl.operation, !pdl.attribute)
// TODO: we don't want this, but it is the required terminator for pdl.pattern
rewrite %0 with "iree_linalg_transform.apply"
}
diff --git a/third_party/llvm-project b/third_party/llvm-project
index 7e5e146..5c116d5 160000
--- a/third_party/llvm-project
+++ b/third_party/llvm-project
@@ -1 +1 @@
-Subproject commit 7e5e146f0f31fab1e45e5554ce93068655098fcb
+Subproject commit 5c116d50e42f93ef4fa9a9719121378ec6b99b69
diff --git a/third_party/mlir-hlo b/third_party/mlir-hlo
index 467cd37..e918d22 160000
--- a/third_party/mlir-hlo
+++ b/third_party/mlir-hlo
@@ -1 +1 @@
-Subproject commit 467cd37703dc0c4195ce6351617ef320bb60e927
+Subproject commit e918d22b258375050a140b320eeb1d1167079e43