@@ -240,7 +240,7 @@ Operation *AffineDialect::materializeConstant(OpBuilder &builder,
240
240
Attribute value, Type type,
241
241
Location loc) {
242
242
if (auto poison = dyn_cast<ub::PoisonAttr>(value))
243
- return builder. create < ub::PoisonOp>( loc, type, poison);
243
+ return ub::PoisonOp::create (builder, loc, type, poison);
244
244
return arith::ConstantOp::materialize (builder, value, type, loc);
245
245
}
246
246
@@ -1282,7 +1282,7 @@ mlir::affine::makeComposedAffineApply(OpBuilder &b, Location loc, AffineMap map,
1282
1282
map = foldAttributesIntoMap (b, map, operands, valueOperands);
1283
1283
composeAffineMapAndOperands (&map, &valueOperands, composeAffineMin);
1284
1284
assert (map);
1285
- return b. create < AffineApplyOp>( loc, map, valueOperands);
1285
+ return AffineApplyOp::create (b, loc, map, valueOperands);
1286
1286
}
1287
1287
1288
1288
AffineApplyOp
@@ -1389,7 +1389,7 @@ static OpTy makeComposedMinMax(OpBuilder &b, Location loc, AffineMap map,
1389
1389
SmallVector<Value> valueOperands;
1390
1390
map = foldAttributesIntoMap (b, map, operands, valueOperands);
1391
1391
composeMultiResultAffineMap (map, valueOperands);
1392
- return b. create < OpTy>( loc, b.getIndexType (), map, valueOperands);
1392
+ return OpTy::create (b, loc, b.getIndexType (), map, valueOperands);
1393
1393
}
1394
1394
1395
1395
AffineMinOp
@@ -1747,6 +1747,32 @@ void AffineDmaStartOp::build(OpBuilder &builder, OperationState &result,
1747
1747
}
1748
1748
}
1749
1749
1750
+ AffineDmaStartOp AffineDmaStartOp::create (
1751
+ OpBuilder &builder, Location location, Value srcMemRef, AffineMap srcMap,
1752
+ ValueRange srcIndices, Value destMemRef, AffineMap dstMap,
1753
+ ValueRange destIndices, Value tagMemRef, AffineMap tagMap,
1754
+ ValueRange tagIndices, Value numElements, Value stride,
1755
+ Value elementsPerStride) {
1756
+ mlir::OperationState state (location, getOperationName ());
1757
+ build (builder, state, srcMemRef, srcMap, srcIndices, destMemRef, dstMap,
1758
+ destIndices, tagMemRef, tagMap, tagIndices, numElements, stride,
1759
+ elementsPerStride);
1760
+ auto result = llvm::dyn_cast<AffineDmaStartOp>(builder.create (state));
1761
+ assert (result && " builder didn't return the right type" );
1762
+ return result;
1763
+ }
1764
+
1765
+ AffineDmaStartOp AffineDmaStartOp::create (
1766
+ ImplicitLocOpBuilder &builder, Value srcMemRef, AffineMap srcMap,
1767
+ ValueRange srcIndices, Value destMemRef, AffineMap dstMap,
1768
+ ValueRange destIndices, Value tagMemRef, AffineMap tagMap,
1769
+ ValueRange tagIndices, Value numElements, Value stride,
1770
+ Value elementsPerStride) {
1771
+ return create (builder, builder.getLoc (), srcMemRef, srcMap, srcIndices,
1772
+ destMemRef, dstMap, destIndices, tagMemRef, tagMap, tagIndices,
1773
+ numElements, stride, elementsPerStride);
1774
+ }
1775
+
1750
1776
void AffineDmaStartOp::print (OpAsmPrinter &p) {
1751
1777
p << " " << getSrcMemRef () << ' [' ;
1752
1778
p.printAffineMapOfSSAIds (getSrcMapAttr (), getSrcIndices ());
@@ -1917,6 +1943,25 @@ void AffineDmaWaitOp::build(OpBuilder &builder, OperationState &result,
1917
1943
result.addOperands (numElements);
1918
1944
}
1919
1945
1946
+ AffineDmaWaitOp AffineDmaWaitOp::create (OpBuilder &builder, Location location,
1947
+ Value tagMemRef, AffineMap tagMap,
1948
+ ValueRange tagIndices,
1949
+ Value numElements) {
1950
+ mlir::OperationState state (location, getOperationName ());
1951
+ build (builder, state, tagMemRef, tagMap, tagIndices, numElements);
1952
+ auto result = llvm::dyn_cast<AffineDmaWaitOp>(builder.create (state));
1953
+ assert (result && " builder didn't return the right type" );
1954
+ return result;
1955
+ }
1956
+
1957
+ AffineDmaWaitOp AffineDmaWaitOp::create (ImplicitLocOpBuilder &builder,
1958
+ Value tagMemRef, AffineMap tagMap,
1959
+ ValueRange tagIndices,
1960
+ Value numElements) {
1961
+ return create (builder, builder.getLoc (), tagMemRef, tagMap, tagIndices,
1962
+ numElements);
1963
+ }
1964
+
1920
1965
void AffineDmaWaitOp::print (OpAsmPrinter &p) {
1921
1966
p << " " << getTagMemRef () << ' [' ;
1922
1967
SmallVector<Value, 2 > operands (getTagIndices ());
@@ -2688,8 +2733,8 @@ FailureOr<LoopLikeOpInterface> AffineForOp::replaceWithAdditionalYields(
2688
2733
rewriter.setInsertionPoint (getOperation ());
2689
2734
auto inits = llvm::to_vector (getInits ());
2690
2735
inits.append (newInitOperands.begin (), newInitOperands.end ());
2691
- AffineForOp newLoop = rewriter. create < AffineForOp> (
2692
- getLoc (), getLowerBoundOperands (), getLowerBoundMap (),
2736
+ AffineForOp newLoop = AffineForOp::create (
2737
+ rewriter, getLoc (), getLowerBoundOperands (), getLowerBoundMap (),
2693
2738
getUpperBoundOperands (), getUpperBoundMap (), getStepAsInt (), inits);
2694
2739
2695
2740
// Generate the new yield values and append them to the scf.yield operation.
@@ -2831,7 +2876,7 @@ static void buildAffineLoopNestImpl(
2831
2876
OpBuilder::InsertionGuard nestedGuard (nestedBuilder);
2832
2877
bodyBuilderFn (nestedBuilder, nestedLoc, ivs);
2833
2878
}
2834
- nestedBuilder. create < AffineYieldOp>( nestedLoc);
2879
+ AffineYieldOp::create (nestedBuilder, nestedLoc);
2835
2880
};
2836
2881
2837
2882
// Delegate actual loop creation to the callback in order to dispatch
@@ -2846,8 +2891,8 @@ static AffineForOp
2846
2891
buildAffineLoopFromConstants (OpBuilder &builder, Location loc, int64_t lb,
2847
2892
int64_t ub, int64_t step,
2848
2893
AffineForOp::BodyBuilderFn bodyBuilderFn) {
2849
- return builder. create < AffineForOp>( loc, lb, ub, step,
2850
- /* iterArgs=*/ ValueRange (), bodyBuilderFn);
2894
+ return AffineForOp::create (builder, loc, lb, ub, step,
2895
+ /* iterArgs=*/ ValueRange (), bodyBuilderFn);
2851
2896
}
2852
2897
2853
2898
// / Creates an affine loop from the bounds that may or may not be constants.
@@ -2860,9 +2905,9 @@ buildAffineLoopFromValues(OpBuilder &builder, Location loc, Value lb, Value ub,
2860
2905
if (lbConst && ubConst)
2861
2906
return buildAffineLoopFromConstants (builder, loc, lbConst.value (),
2862
2907
ubConst.value (), step, bodyBuilderFn);
2863
- return builder. create < AffineForOp>( loc, lb, builder.getDimIdentityMap (), ub,
2864
- builder.getDimIdentityMap (), step,
2865
- /* iterArgs=*/ ValueRange (), bodyBuilderFn);
2908
+ return AffineForOp::create (builder, loc, lb, builder.getDimIdentityMap (), ub,
2909
+ builder.getDimIdentityMap (), step,
2910
+ /* iterArgs=*/ ValueRange (), bodyBuilderFn);
2866
2911
}
2867
2912
2868
2913
void mlir::affine::buildAffineLoopNest (
@@ -4883,7 +4928,7 @@ struct DropUnitExtentBasis
4883
4928
Location loc = delinearizeOp->getLoc ();
4884
4929
auto getZero = [&]() -> Value {
4885
4930
if (!zero)
4886
- zero = rewriter. create < arith::ConstantIndexOp>( loc, 0 );
4931
+ zero = arith::ConstantIndexOp::create (rewriter, loc, 0 );
4887
4932
return zero.value ();
4888
4933
};
4889
4934
@@ -4906,8 +4951,8 @@ struct DropUnitExtentBasis
4906
4951
4907
4952
if (!newBasis.empty ()) {
4908
4953
// Will drop the leading nullptr from `basis` if there was no outer bound.
4909
- auto newDelinearizeOp = rewriter. create < affine::AffineDelinearizeIndexOp> (
4910
- loc, delinearizeOp.getLinearIndex (), newBasis);
4954
+ auto newDelinearizeOp = affine::AffineDelinearizeIndexOp::create (
4955
+ rewriter, loc, delinearizeOp.getLinearIndex (), newBasis);
4911
4956
int newIndex = 0 ;
4912
4957
// Map back the new delinearized indices to the values they replace.
4913
4958
for (auto &replacement : replacements) {
@@ -4971,12 +5016,12 @@ struct CancelDelinearizeOfLinearizeDisjointExactTail
4971
5016
return success ();
4972
5017
}
4973
5018
4974
- Value newLinearize = rewriter. create < affine::AffineLinearizeIndexOp> (
4975
- linearizeOp.getLoc (), linearizeIns.drop_back (numMatches),
5019
+ Value newLinearize = affine::AffineLinearizeIndexOp::create (
5020
+ rewriter, linearizeOp.getLoc (), linearizeIns.drop_back (numMatches),
4976
5021
ArrayRef<OpFoldResult>{linearizeBasis}.drop_back (numMatches),
4977
5022
linearizeOp.getDisjoint ());
4978
- auto newDelinearize = rewriter. create < affine::AffineDelinearizeIndexOp> (
4979
- delinearizeOp.getLoc (), newLinearize,
5023
+ auto newDelinearize = affine::AffineDelinearizeIndexOp::create (
5024
+ rewriter, delinearizeOp.getLoc (), newLinearize,
4980
5025
ArrayRef<OpFoldResult>{delinearizeBasis}.drop_back (numMatches),
4981
5026
delinearizeOp.hasOuterBound ());
4982
5027
SmallVector<Value> mergedResults (newDelinearize.getResults ());
@@ -5048,19 +5093,16 @@ struct SplitDelinearizeSpanningLastLinearizeArg final
5048
5093
delinearizeOp,
5049
5094
" need at least two elements to form the basis product" );
5050
5095
5051
- Value linearizeWithoutBack =
5052
- rewriter.create <affine::AffineLinearizeIndexOp>(
5053
- linearizeOp.getLoc (), linearizeOp.getMultiIndex ().drop_back (),
5054
- linearizeOp.getDynamicBasis (),
5055
- linearizeOp.getStaticBasis ().drop_back (),
5056
- linearizeOp.getDisjoint ());
5057
- auto delinearizeWithoutSplitPart =
5058
- rewriter.create <affine::AffineDelinearizeIndexOp>(
5059
- delinearizeOp.getLoc (), linearizeWithoutBack,
5060
- delinearizeOp.getDynamicBasis (), basis.drop_back (elemsToSplit),
5061
- delinearizeOp.hasOuterBound ());
5062
- auto delinearizeBack = rewriter.create <affine::AffineDelinearizeIndexOp>(
5063
- delinearizeOp.getLoc (), linearizeOp.getMultiIndex ().back (),
5096
+ Value linearizeWithoutBack = affine::AffineLinearizeIndexOp::create (
5097
+ rewriter, linearizeOp.getLoc (), linearizeOp.getMultiIndex ().drop_back (),
5098
+ linearizeOp.getDynamicBasis (), linearizeOp.getStaticBasis ().drop_back (),
5099
+ linearizeOp.getDisjoint ());
5100
+ auto delinearizeWithoutSplitPart = affine::AffineDelinearizeIndexOp::create (
5101
+ rewriter, delinearizeOp.getLoc (), linearizeWithoutBack,
5102
+ delinearizeOp.getDynamicBasis (), basis.drop_back (elemsToSplit),
5103
+ delinearizeOp.hasOuterBound ());
5104
+ auto delinearizeBack = affine::AffineDelinearizeIndexOp::create (
5105
+ rewriter, delinearizeOp.getLoc (), linearizeOp.getMultiIndex ().back (),
5064
5106
basis.take_back (elemsToSplit), /* hasOuterBound=*/ true );
5065
5107
SmallVector<Value> results = llvm::to_vector (
5066
5108
llvm::concat<Value>(delinearizeWithoutSplitPart.getResults (),
@@ -5272,7 +5314,7 @@ OpFoldResult computeProduct(Location loc, OpBuilder &builder,
5272
5314
}
5273
5315
if (auto constant = dyn_cast<AffineConstantExpr>(result))
5274
5316
return getAsIndexOpFoldResult (builder.getContext (), constant.getValue ());
5275
- return builder. create < AffineApplyOp>( loc, result, dynamicPart).getResult ();
5317
+ return AffineApplyOp::create (builder, loc, result, dynamicPart).getResult ();
5276
5318
}
5277
5319
5278
5320
// / If conseceutive outputs of a delinearize_index are linearized with the same
@@ -5437,16 +5479,16 @@ struct CancelLinearizeOfDelinearizePortion final
5437
5479
newDelinBasis.erase (newDelinBasis.begin () + m.delinStart ,
5438
5480
newDelinBasis.begin () + m.delinStart + m.length );
5439
5481
newDelinBasis.insert (newDelinBasis.begin () + m.delinStart , newSize);
5440
- auto newDelinearize = rewriter. create < AffineDelinearizeIndexOp> (
5441
- m.delinearize .getLoc (), m.delinearize .getLinearIndex (),
5482
+ auto newDelinearize = AffineDelinearizeIndexOp::create (
5483
+ rewriter, m.delinearize .getLoc (), m.delinearize .getLinearIndex (),
5442
5484
newDelinBasis);
5443
5485
5444
5486
// Since there may be other uses of the indices we just merged together,
5445
5487
// create a residual affine.delinearize_index that delinearizes the
5446
5488
// merged output into its component parts.
5447
5489
Value combinedElem = newDelinearize.getResult (m.delinStart );
5448
- auto residualDelinearize = rewriter. create < AffineDelinearizeIndexOp> (
5449
- m.delinearize .getLoc (), combinedElem, basisToMerge);
5490
+ auto residualDelinearize = AffineDelinearizeIndexOp::create (
5491
+ rewriter, m.delinearize .getLoc (), combinedElem, basisToMerge);
5450
5492
5451
5493
// Swap all the uses of the unaffected delinearize outputs to the new
5452
5494
// delinearization so that the old code can be removed if this
0 commit comments