diff --git a/mlir/docs/Tutorials/Toy/Ch-2.md b/mlir/docs/Tutorials/Toy/Ch-2.md index cc5b380a9f62..89134e264aa0 100644 --- a/mlir/docs/Tutorials/Toy/Ch-2.md +++ b/mlir/docs/Tutorials/Toy/Ch-2.md @@ -490,15 +490,14 @@ def ConstantOp : Toy_Op<"constant"> { // using `builder.create(...)`. let builders = [ // Build a constant with a given constant tensor value. - OpBuilder<"OpBuilder &builder, OperationState &result, " - "DenseElementsAttr value", [{ + OpBuilder<"DenseElementsAttr value", [{ // Call into an autogenerated `build` method. build(builder, result, value.getType(), value); }]>, // Build a constant with a given constant floating-point value. This builder // creates a declaration for `ConstantOp::build` with the given parameters. - OpBuilder<"OpBuilder &builder, OperationState &result, double value"> + OpBuilder<"double value"> ]; } ``` diff --git a/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td index 4294b88553f4..c47dcd3d5fe2 100644 --- a/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td +++ b/mlir/include/mlir/Dialect/Affine/IR/AffineOps.td @@ -73,9 +73,8 @@ def AffineApplyOp : Affine_Op<"apply", [NoSideEffect]> { // has a constant builder. That way we wouldn't need to explicitly specify the // result types here. let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "AffineMap map, ValueRange mapOperands", [{ - build(builder, result, builder.getIndexType(), map, mapOperands); + OpBuilder<"AffineMap map, ValueRange mapOperands", [{ + build($_builder, $_state, $_builder.getIndexType(), map, mapOperands); }]> ]; @@ -214,12 +213,10 @@ def AffineForOp : Affine_Op<"for", let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "int64_t lowerBound, int64_t upperBound, int64_t step = 1, " + OpBuilder<"int64_t lowerBound, int64_t upperBound, int64_t step = 1, " "ValueRange iterArgs = llvm::None, function_ref bodyBuilder = nullptr">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "ValueRange lbOperands, AffineMap lbMap, " + OpBuilder<"ValueRange lbOperands, AffineMap lbMap, " "ValueRange ubOperands, AffineMap ubMap, " "int64_t step = 1, ValueRange iterArgs = llvm::None, " "function_ref " @@ -413,10 +410,8 @@ def AffineIfOp : Affine_Op<"if", let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "IntegerSet set, ValueRange args, bool withElseRegion">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "TypeRange resultTypes, IntegerSet set, ValueRange args," + OpBuilder<"IntegerSet set, ValueRange args, bool withElseRegion">, + OpBuilder<"TypeRange resultTypes, IntegerSet set, ValueRange args," "bool withElseRegion">, ]; @@ -508,14 +503,11 @@ def AffineLoadOp : AffineLoadOpBase<"load"> { let builders = [ /// Builds an affine load op with the specified map and operands. - OpBuilder<"OpBuilder &builder, OperationState &result, AffineMap map, " - "ValueRange operands">, + OpBuilder<"AffineMap map, ValueRange operands">, /// Builds an affine load op with an identity map and operands. - OpBuilder<"OpBuilder &builder, OperationState &result, Value memref, " - "ValueRange indices = {}">, + OpBuilder<"Value memref, ValueRange indices = {}">, /// Builds an affine load op with the specified map and its operands. - OpBuilder<"OpBuilder &builder, OperationState &result, Value memref, " - "AffineMap map, ValueRange mapOperands"> + OpBuilder<"Value memref, AffineMap map, ValueRange mapOperands"> ]; let extraClassDeclaration = extraClassDeclarationBase; @@ -530,10 +522,9 @@ class AffineMinMaxOpBase traits = []> : let results = (outs Index); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, AffineMap affineMap, " - "ValueRange mapOperands", + OpBuilder<"AffineMap affineMap, ValueRange mapOperands", [{ - build(builder, result, builder.getIndexType(), affineMap, mapOperands); + build($_builder, $_state, $_builder.getIndexType(), affineMap, mapOperands); }]> ]; @@ -656,17 +647,14 @@ def AffineParallelOp : Affine_Op<"parallel", let regions = (region SizedRegion<1>:$region); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "TypeRange resultTypes, " + OpBuilder<"TypeRange resultTypes, " "ArrayRef reductions, " "ArrayRef ranges">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "TypeRange resultTypes, " + OpBuilder<"TypeRange resultTypes, " "ArrayRef reductions, " "AffineMap lbMap, ValueRange lbArgs, " "AffineMap ubMap, ValueRange ubArgs">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "TypeRange resultTypes, " + OpBuilder<"TypeRange resultTypes, " "ArrayRef reductions, " "AffineMap lbMap, ValueRange lbArgs, " "AffineMap ubMap, ValueRange ubArgs, " @@ -736,21 +724,20 @@ def AffinePrefetchOp : Affine_Op<"prefetch"> { BoolAttr:$isDataCache); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value memref," - "AffineMap map, ArrayRef mapOperands, bool isWrite," + "Value memref, AffineMap map, ArrayRef mapOperands, bool isWrite," "unsigned localityHint, bool isDataCache", [{ assert(map.getNumInputs() == mapOperands.size() && "inconsistent index info"); - auto localityHintAttr = builder.getI32IntegerAttr(localityHint); - auto isWriteAttr = builder.getBoolAttr(isWrite); - auto isDataCacheAttr = builder.getBoolAttr(isDataCache); - result.addOperands(memref); - result.addAttribute(getMapAttrName(), AffineMapAttr::get(map)); - result.addOperands(mapOperands); - result.addAttribute(getLocalityHintAttrName(), localityHintAttr); - result.addAttribute(getIsWriteAttrName(), isWriteAttr); - result.addAttribute(getIsDataCacheAttrName(), isDataCacheAttr); + auto localityHintAttr = $_builder.getI32IntegerAttr(localityHint); + auto isWriteAttr = $_builder.getBoolAttr(isWrite); + auto isDataCacheAttr = $_builder.getBoolAttr(isDataCache); + $_state.addOperands(memref); + $_state.addAttribute(getMapAttrName(), AffineMapAttr::get(map)); + $_state.addOperands(mapOperands); + $_state.addAttribute(getLocalityHintAttrName(), localityHintAttr); + $_state.addAttribute(getIsWriteAttrName(), isWriteAttr); + $_state.addAttribute(getIsDataCacheAttrName(), isDataCacheAttr); }]>]; let extraClassDeclaration = [{ @@ -844,11 +831,9 @@ def AffineStoreOp : AffineStoreOpBase<"store"> { let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value valueToStore, Value memref, ValueRange indices">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value valueToStore, Value memref, AffineMap map, " - "ValueRange mapOperands"> + OpBuilder<"Value valueToStore, Value memref, ValueRange indices">, + OpBuilder<"Value valueToStore, Value memref, AffineMap map, " + "ValueRange mapOperands"> ]; let extraClassDeclaration = extraClassDeclarationBase; @@ -874,9 +859,9 @@ def AffineYieldOp : Affine_Op<"yield", [NoSideEffect, Terminator, ReturnLike]> { let arguments = (ins Variadic:$operands); - let builders = [OpBuilder< - "OpBuilder &b, OperationState &result", [{ build(b, result, llvm::None); }] - >]; + let builders = [ + OpBuilder<"", [{ build($_builder, $_state, llvm::None); }]> + ]; let assemblyFormat = "attr-dict ($operands^ `:` type($operands))?"; } diff --git a/mlir/include/mlir/Dialect/GPU/GPUOps.td b/mlir/include/mlir/Dialect/GPU/GPUOps.td index fd43065e9693..03d0a89bbcda 100644 --- a/mlir/include/mlir/Dialect/GPU/GPUOps.td +++ b/mlir/include/mlir/Dialect/GPU/GPUOps.td @@ -201,7 +201,7 @@ def GPU_GPUFuncOp : GPU_Op<"func", [HasParent<"GPUModuleOp">, let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, StringRef name, " + OpBuilder<"StringRef name, " "FunctionType type, TypeRange workgroupAttributions = {}, " "TypeRange privateAttributions = {}, " "ArrayRef attrs = {}"> @@ -371,11 +371,11 @@ def GPU_LaunchFuncOp : GPU_Op<"launch_func">, let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, GPUFuncOp kernelFunc, " + OpBuilder<"GPUFuncOp kernelFunc, " "Value gridSizeX, Value gridSizeY, Value gridSizeZ, " "Value blockSizeX, Value blockSizeY, Value blockSizeZ, " "ValueRange kernelOperands">, - OpBuilder<"OpBuilder &builder, OperationState &result, GPUFuncOp kernelFunc, " + OpBuilder<"GPUFuncOp kernelFunc, " "KernelDim3 gridSize, KernelDim3 blockSize, " "ValueRange kernelOperands"> ]; @@ -490,7 +490,7 @@ def GPU_LaunchOp : GPU_Op<"launch">, let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, Value gridSizeX," + OpBuilder<"Value gridSizeX," "Value gridSizeY, Value gridSizeZ, Value blockSizeX," "Value blockSizeY, Value blockSizeZ"> ]; @@ -716,8 +716,7 @@ def GPU_GPUModuleOp : GPU_Op<"module", [ ``` }]; - let builders = [OpBuilder<"OpBuilder &builder, OperationState &result, " - "StringRef name">]; + let builders = [OpBuilder<"StringRef name">]; let parser = [{ return ::parseGPUModuleOp(parser, result); }]; let printer = [{ return ::print(p, *this); }]; let regions = (region SizedRegion<1>:$body); diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td index 39f22855e80e..b5b8e45eb21f 100644 --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td @@ -23,23 +23,22 @@ class LLVM_Builder { } def LLVM_OneResultOpBuilder : OpBuilder< - "OpBuilder &, OperationState &result, Type resultType, " - "ValueRange operands, ArrayRef attributes = {}", + "Type resultType, ValueRange operands, " + "ArrayRef attributes = {}", [{ - if (resultType) result.addTypes(resultType); - result.addOperands(operands); + if (resultType) $_state.addTypes(resultType); + $_state.addOperands(operands); for (auto namedAttr : attributes) { - result.addAttribute(namedAttr.first, namedAttr.second); + $_state.addAttribute(namedAttr.first, namedAttr.second); } }]>; def LLVM_ZeroResultOpBuilder : OpBuilder< - "OpBuilder &, OperationState &result, ValueRange operands, " - "ArrayRef attributes = {}", + "ValueRange operands, ArrayRef attributes = {}", [{ - result.addOperands(operands); + $_state.addOperands(operands); for (auto namedAttr : attributes) { - result.addAttribute(namedAttr.first, namedAttr.second); + $_state.addAttribute(namedAttr.first, namedAttr.second); } }]>; @@ -56,14 +55,13 @@ class LLVM_OneResultOp traits = []> : // Compatibility builder that takes an instance of wrapped llvm::VoidType // to indicate no result. def LLVM_VoidResultTypeOpBuilder : OpBuilder< - "OpBuilder &builder, OperationState &result, Type resultType, " - "ValueRange operands, ArrayRef attributes = {}", + "Type resultType, ValueRange operands, ArrayRef attributes = {}", [{ auto llvmType = resultType.dyn_cast(); (void)llvmType; assert(llvmType && "result must be an LLVM type"); assert(llvmType.isVoidTy() && "for zero-result operands, only 'void' is accepted as result type"); - build(builder, result, operands, attributes); + build($_builder, $_state, operands, attributes); }]>; // Base class for LLVM operations with zero results. @@ -73,12 +71,12 @@ class LLVM_ZeroResultOp traits = []> : // Opaque builder used for terminator operations that contain successors. def LLVM_TerminatorPassthroughOpBuilder : OpBuilder< - "OpBuilder &, OperationState &result, ValueRange operands, " - "SuccessorRange destinations, ArrayRef attributes = {}", + "ValueRange operands, SuccessorRange destinations, " + "ArrayRef attributes = {}", [{ - result.addOperands(operands); - result.addSuccessors(destinations); - result.addAttributes(attributes); + $_state.addOperands(operands); + $_state.addSuccessors(destinations); + $_state.addAttributes(attributes); }]>; // Base class for LLVM terminator operations. All terminator operations have @@ -161,10 +159,9 @@ def LLVM_ICmpOp : LLVM_OneResultOp<"icmp", [NoSideEffect]>, $res = builder.CreateICmp(getLLVMCmpPredicate($predicate), $lhs, $rhs); }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, ICmpPredicate predicate, Value lhs, " - "Value rhs", [{ - build(b, result, LLVMType::getInt1Ty(lhs.getType().getContext()), - b.getI64IntegerAttr(static_cast(predicate)), lhs, rhs); + "ICmpPredicate predicate, Value lhs, Value rhs", [{ + build($_builder, $_state, LLVMType::getInt1Ty(lhs.getType().getContext()), + $_builder.getI64IntegerAttr(static_cast(predicate)), lhs, rhs); }]>]; let parser = [{ return parseCmpOp(parser, result); }]; let printer = [{ printICmpOp(p, *this); }]; @@ -208,10 +205,9 @@ def LLVM_FCmpOp : LLVM_OneResultOp<"fcmp", [NoSideEffect]>, $res = builder.CreateFCmp(getLLVMCmpPredicate($predicate), $lhs, $rhs); }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, FCmpPredicate predicate, Value lhs, " - "Value rhs", [{ - build(b, result, LLVMType::getInt1Ty(lhs.getType().getContext()), - b.getI64IntegerAttr(static_cast(predicate)), lhs, rhs); + "FCmpPredicate predicate, Value lhs, Value rhs", [{ + build($_builder, $_state, LLVMType::getInt1Ty(lhs.getType().getContext()), + $_builder.getI64IntegerAttr(static_cast(predicate)), lhs, rhs); }]>]; let parser = [{ return parseCmpOp(parser, result); }]; let printer = [{ printFCmpOp(p, *this); }]; @@ -264,12 +260,12 @@ def LLVM_AllocaOp : $res = inst; }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Type resultType, Value arraySize, " - "unsigned alignment", + "Type resultType, Value arraySize, unsigned alignment", [{ if (alignment == 0) - return build(b, result, resultType, arraySize, IntegerAttr()); - build(b, result, resultType, arraySize, b.getI64IntegerAttr(alignment)); + return build($_builder, $_state, resultType, arraySize, IntegerAttr()); + build($_builder, $_state, resultType, arraySize, + $_builder.getI64IntegerAttr(alignment)); }]>]; let parser = [{ return parseAllocaOp(parser, result); }]; let printer = [{ printAllocaOp(p, *this); }]; @@ -297,16 +293,14 @@ def LLVM_LoadOp : $res = inst; }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value addr, " - "unsigned alignment = 0, bool isVolatile = false, " + "Value addr, unsigned alignment = 0, bool isVolatile = false, " "bool isNonTemporal = false", [{ auto type = addr.getType().cast().getPointerElementTy(); - build(b, result, type, addr, alignment, isVolatile, isNonTemporal); + build($_builder, $_state, type, addr, alignment, isVolatile, isNonTemporal); }]>, OpBuilder< - "OpBuilder &b, OperationState &result, Type t, Value addr, " - "unsigned alignment = 0, bool isVolatile = false, " + "Type t, Value addr, unsigned alignment = 0, bool isVolatile = false, " "bool isNonTemporal = false">]; let parser = [{ return parseLoadOp(parser, result); }]; let printer = [{ printLoadOp(p, *this); }]; @@ -323,8 +317,7 @@ def LLVM_StoreOp : auto *inst = builder.CreateStore($value, $addr, $volatile_); }] # setAlignmentCode # setNonTemporalMetadataCode; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value value, Value addr, " - "unsigned alignment = 0, bool isVolatile = false, " + "Value value, Value addr, unsigned alignment = 0, bool isVolatile = false, " "bool isNonTemporal = false"> ]; let parser = [{ return parseStoreOp(parser, result); }]; @@ -383,19 +376,17 @@ def LLVM_InvokeOp : LLVM_Op<"invoke", [ AnySuccessor:$unwindDest); let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, TypeRange tys, " - "FlatSymbolRefAttr callee, ValueRange ops, Block* normal, " + "TypeRange tys, FlatSymbolRefAttr callee, ValueRange ops, Block* normal, " "ValueRange normalOps, Block* unwind, ValueRange unwindOps", [{ - result.addAttribute("callee", callee); - build(b, result, tys, ops, normal, normalOps, unwind, unwindOps); + $_state.addAttribute("callee", callee); + build($_builder, $_state, tys, ops, normal, normalOps, unwind, unwindOps); }]>, OpBuilder< - "OpBuilder &b, OperationState &result, TypeRange tys, " - "ValueRange ops, Block* normal, " + "TypeRange tys, ValueRange ops, Block* normal, " "ValueRange normalOps, Block* unwind, ValueRange unwindOps", [{ - build(b, result, tys, /*callee=*/FlatSymbolRefAttr(), ops, normalOps, + build($_builder, $_state, tys, /*callee=*/FlatSymbolRefAttr(), ops, normalOps, unwindOps, normal, unwind); }]>]; let verifier = [{ return ::verify(*this); }]; @@ -416,15 +407,15 @@ def LLVM_CallOp : LLVM_Op<"call">, Variadic)>, Results<(outs Variadic)> { let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, LLVMFuncOp func," - "ValueRange operands, ArrayRef attributes = {}", + "LLVMFuncOp func, ValueRange operands, " + "ArrayRef attributes = {}", [{ LLVMType resultType = func.getType().getFunctionResultType(); if (!resultType.isVoidTy()) - result.addTypes(resultType); - result.addAttribute("callee", builder.getSymbolRefAttr(func)); - result.addAttributes(attributes); - result.addOperands(operands); + $_state.addTypes(resultType); + $_state.addAttribute("callee", $_builder.getSymbolRefAttr(func)); + $_state.addAttributes(attributes); + $_state.addOperands(operands); }]>]; let verifier = [{ if (getNumResults() > 1) @@ -441,8 +432,7 @@ def LLVM_ExtractElementOp : LLVM_OneResultOp<"extractelement", [NoSideEffect]>, $res = builder.CreateExtractElement($vector, $position); }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value vector, Value position," - "ArrayRef attrs = {}">]; + "Value vector, Value position, ArrayRef attrs = {}">]; let parser = [{ return parseExtractElementOp(parser, result); }]; let printer = [{ printExtractElementOp(p, *this); }]; } @@ -474,10 +464,9 @@ def LLVM_InsertValueOp : LLVM_OneResultOp<"insertvalue", [NoSideEffect]>, extractPosition($position)); }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value container, Value value, " - "ArrayAttr position", + "Value container, Value value, ArrayAttr position", [{ - build(b, result, container.getType(), container, value, position); + build($_builder, $_state, container.getType(), container, value, position); }]>]; let parser = [{ return parseInsertValueOp(parser, result); }]; let printer = [{ printInsertValueOp(p, *this); }]; @@ -491,8 +480,7 @@ def LLVM_ShuffleVectorOp $res = builder.CreateShuffleVector($v1, $v2, mask); }]; let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value v1, Value v2, " - "ArrayAttr mask, ArrayRef attrs = {}">]; + "Value v1, Value v2, ArrayAttr mask, ArrayRef attrs = {}">]; let verifier = [{ auto wrappedVectorType1 = v1().getType().cast(); auto wrappedVectorType2 = v2().getType().cast(); @@ -517,9 +505,8 @@ def LLVM_SelectOp LLVM_Builder< "$res = builder.CreateSelect($condition, $trueValue, $falseValue);"> { let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value condition, Value lhs, " - "Value rhs", [{ - build(b, result, lhs.getType(), condition, lhs, rhs); + "Value condition, Value lhs, Value rhs", [{ + build($_builder, $_state, lhs.getType(), condition, lhs, rhs); }]>]; let assemblyFormat = "operands attr-dict `:` type($condition) `,` type($res)"; } @@ -555,22 +542,21 @@ def LLVM_CondBrOp : LLVM_TerminatorOp<"cond_br", }]; let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value condition," - "Block *trueDest, ValueRange trueOperands," + "Value condition, Block *trueDest, ValueRange trueOperands," "Block *falseDest, ValueRange falseOperands," "Optional> weights = {}", [{ ElementsAttr weightsAttr; if (weights) { weightsAttr = - builder.getI32VectorAttr({static_cast(weights->first), + $_builder.getI32VectorAttr({static_cast(weights->first), static_cast(weights->second)}); } - build(builder, result, condition, trueOperands, falseOperands, weightsAttr, + build($_builder, $_state, condition, trueOperands, falseOperands, weightsAttr, trueDest, falseDest); }]>, OpBuilder< - "OpBuilder &builder, OperationState &result, Value condition," - "Block *trueDest, Block *falseDest, ValueRange falseOperands = {}", [{ - build(builder, result, condition, trueDest, ValueRange(), falseDest, + "Value condition, Block *trueDest, Block *falseDest, " + "ValueRange falseOperands = {}", [{ + build($_builder, $_state, condition, trueDest, ValueRange(), falseDest, falseOperands); }]>, LLVM_TerminatorPassthroughOpBuilder]; } @@ -660,21 +646,21 @@ def LLVM_AddressOfOp let summary = "Creates a pointer pointing to a global or a function"; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, LLVMType resType, " + OpBuilder<"LLVMType resType, " "StringRef name, ArrayRef attrs = {}", [{ - result.addAttribute("global_name", builder.getSymbolRefAttr(name)); - result.addAttributes(attrs); - result.addTypes(resType);}]>, + $_state.addAttribute("global_name",$_builder.getSymbolRefAttr(name)); + $_state.addAttributes(attrs); + $_state.addTypes(resType);}]>, - OpBuilder<"OpBuilder &builder, OperationState &result, GlobalOp global, " + OpBuilder<"GlobalOp global, " "ArrayRef attrs = {}", [{ - build(builder, result, + build($_builder, $_state, global.getType().getPointerTo(global.addr_space()), global.sym_name(), attrs);}]>, - OpBuilder<"OpBuilder &builder, OperationState &result, LLVMFuncOp func, " + OpBuilder<"LLVMFuncOp func, " "ArrayRef attrs = {}", [{ - build(builder, result, + build($_builder, $_state, func.getType().getPointerTo(), func.getName(), attrs);}]> ]; @@ -721,7 +707,7 @@ def LLVM_GlobalOp let regions = (region AnyRegion:$initializer); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, LLVMType type, " + OpBuilder<"LLVMType type, " "bool isConstant, Linkage linkage, StringRef name, " "Attribute value, unsigned addrSpace = 0, " "ArrayRef attrs = {}"> @@ -769,7 +755,7 @@ def LLVM_LLVMFuncOp let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, StringRef name, " + OpBuilder<"StringRef name, " "LLVMType type, Linkage linkage = Linkage::External, " "ArrayRef attrs = {}, " "ArrayRef argAttrs = {}"> diff --git a/mlir/include/mlir/Dialect/SCF/SCFOps.td b/mlir/include/mlir/Dialect/SCF/SCFOps.td index 179b4d773a3a..1011e0d7ef68 100644 --- a/mlir/include/mlir/Dialect/SCF/SCFOps.td +++ b/mlir/include/mlir/Dialect/SCF/SCFOps.td @@ -135,8 +135,7 @@ def ForOp : SCF_Op<"for", let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value lowerBound, Value upperBound, Value step, " + OpBuilder<"Value lowerBound, Value upperBound, Value step, " "ValueRange iterArgs = llvm::None, " "function_ref" " = nullptr"> @@ -236,10 +235,8 @@ def IfOp : SCF_Op<"if", let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value cond, bool withElseRegion">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "TypeRange resultTypes, Value cond, bool withElseRegion">, + OpBuilder<"Value cond, bool withElseRegion">, + OpBuilder<"TypeRange resultTypes, Value cond, bool withElseRegion">, OpBuilder< "OpBuilder &builder, OperationState &result, TypeRange resultTypes, " "Value cond, " @@ -327,14 +324,12 @@ def ParallelOp : SCF_Op<"parallel", let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "ValueRange lowerBounds, ValueRange upperBounds, " + OpBuilder<"ValueRange lowerBounds, ValueRange upperBounds, " "ValueRange steps, ValueRange initVals, " "function_ref" " bodyBuilderFn = nullptr">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "ValueRange lowerBounds, ValueRange upperBounds, " + OpBuilder<"ValueRange lowerBounds, ValueRange upperBounds, " "ValueRange steps, " "function_ref" " bodyBuilderFn = nullptr">, @@ -390,8 +385,7 @@ def ReduceOp : SCF_Op<"reduce", [HasParent<"ParallelOp">]> { let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value operand, " + OpBuilder<"Value operand, " "function_ref" " bodyBuilderFn = nullptr"> ]; diff --git a/mlir/include/mlir/Dialect/Shape/IR/ShapeOps.td b/mlir/include/mlir/Dialect/Shape/IR/ShapeOps.td index b944b34b1d9d..235a22a2ce3d 100644 --- a/mlir/include/mlir/Dialect/Shape/IR/ShapeOps.td +++ b/mlir/include/mlir/Dialect/Shape/IR/ShapeOps.td @@ -124,7 +124,7 @@ def Shape_ConstSizeOp : Shape_Op<"const_size", [ let results = (outs Shape_SizeType:$result); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, int64_t value"> + OpBuilder<"int64_t value"> ]; let assemblyFormat = "$value attr-dict"; @@ -231,7 +231,7 @@ def Shape_GetExtentOp : Shape_Op<"get_extent", [NoSideEffect]> { let builders = [ // Builder that allows passing a constant dimension as a simple integer. - OpBuilder<"OpBuilder &builder, OperationState &result, Value shape, " + OpBuilder<"Value shape, " "int64_t dim"> ]; @@ -332,7 +332,7 @@ def Shape_NumElementsOp : Shape_Op<"num_elements", [NoSideEffect]> { let results = (outs Shape_SizeOrIndexType:$result); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, Value shape">, + OpBuilder<"Value shape">, ]; let assemblyFormat = "$shape `:` type($shape) `->` type($result) attr-dict"; @@ -383,8 +383,7 @@ def Shape_ReduceOp : Shape_Op<"reduce", let regions = (region SizedRegion<1>:$region); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value shape, ValueRange initVals">, + OpBuilder<"Value shape, ValueRange initVals">, ]; let verifier = [{ return ::verify(*this); }]; @@ -406,7 +405,7 @@ def Shape_ShapeOfOp : Shape_Op<"shape_of", [NoSideEffect]> { let assemblyFormat = "$arg `:` type($arg) `->` type($result) attr-dict"; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, Value arg"> + OpBuilder<"Value arg"> ]; let verifier = [{ return ::verifyShapeOrExtentTensorOp(*this); }]; diff --git a/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td b/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td index 649e941050a3..43d47941d0ab 100644 --- a/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td +++ b/mlir/include/mlir/Dialect/StandardOps/IR/Ops.td @@ -50,8 +50,8 @@ class CastOp traits = []> : let results = (outs AnyType); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, Type destType", [{ - impl::buildCastOp(builder, result, source, destType); + "Value source, Type destType", [{ + impl::buildCastOp($_builder, $_state, source, destType); }]>]; let parser = [{ @@ -162,16 +162,16 @@ class AllocLikeOp]>); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, MemRefType memrefType", [{ - result.types.push_back(memrefType); + "MemRefType memrefType", [{ + $_state.types.push_back(memrefType); }]>, OpBuilder< - "OpBuilder &builder, OperationState &result, MemRefType memrefType, " # - "ValueRange operands, IntegerAttr alignment = IntegerAttr()", [{ - result.addOperands(operands); - result.types.push_back(memrefType); + "MemRefType memrefType, ValueRange operands, " + "IntegerAttr alignment = IntegerAttr()", [{ + $_state.addOperands(operands); + $_state.types.push_back(memrefType); if (alignment) - result.addAttribute(getAlignmentAttrName(), alignment); + $_state.addAttribute(getAlignmentAttrName(), alignment); }]>]; let extraClassDeclaration = [{ @@ -612,8 +612,7 @@ def GenericAtomicRMWOp : Std_Op<"generic_atomic_rmw", [ let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value memref, ValueRange ivs"> + OpBuilder<"Value memref, ValueRange ivs"> ]; let extraClassDeclaration = [{ @@ -668,10 +667,9 @@ def BranchOp : Std_Op<"br", let arguments = (ins Variadic:$destOperands); let successors = (successor AnySuccessor:$dest); - let builders = [OpBuilder<"OpBuilder &, OperationState &result, Block *dest, " - "ValueRange destOperands = {}", [{ - result.addSuccessors(dest); - result.addOperands(destOperands); + let builders = [OpBuilder<"Block *dest, ValueRange destOperands = {}", [{ + $_state.addSuccessors(dest); + $_state.addOperands(destOperands); }]>]; // BranchOp is fully verified by traits. @@ -714,21 +712,18 @@ def CallOp : Std_Op<"call", [CallOpInterface, MemRefsNormalizable]> { let results = (outs Variadic); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, FuncOp callee," - "ValueRange operands = {}", [{ - result.addOperands(operands); - result.addAttribute("callee", builder.getSymbolRefAttr(callee)); - result.addTypes(callee.getType().getResults()); + "FuncOp callee, ValueRange operands = {}", [{ + $_state.addOperands(operands); + $_state.addAttribute("callee",$_builder.getSymbolRefAttr(callee)); + $_state.addTypes(callee.getType().getResults()); }]>, OpBuilder< - "OpBuilder &builder, OperationState &result, SymbolRefAttr callee," - "TypeRange results, ValueRange operands = {}", [{ - result.addOperands(operands); - result.addAttribute("callee", callee); - result.addTypes(results); + "SymbolRefAttr callee, TypeRange results, ValueRange operands = {}", [{ + $_state.addOperands(operands); + $_state.addAttribute("callee", callee); + $_state.addTypes(results); }]>, OpBuilder< - "OpBuilder &builder, OperationState &result, StringRef callee," - "TypeRange results, ValueRange operands = {}", [{ - build(builder, result, builder.getSymbolRefAttr(callee), results, + "StringRef callee, TypeRange results, ValueRange operands = {}", [{ + build($_builder, $_state, $_builder.getSymbolRefAttr(callee), results, operands); }]>]; @@ -790,11 +785,10 @@ def CallIndirectOp : Std_Op<"call_indirect", [ let results = (outs Variadic:$results); let builders = [OpBuilder< - "OpBuilder &, OperationState &result, Value callee," - "ValueRange operands = {}", [{ - result.operands.push_back(callee); - result.addOperands(operands); - result.addTypes(callee.getType().cast().getResults()); + "Value callee, ValueRange operands = {}", [{ + $_state.operands.push_back(callee); + $_state.addOperands(operands); + $_state.addTypes(callee.getType().cast().getResults()); }]>]; let extraClassDeclaration = [{ @@ -956,9 +950,8 @@ def CmpFOp : Std_Op<"cmpf", let results = (outs BoolLike:$result); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, CmpFPredicate predicate," - "Value lhs, Value rhs", [{ - ::buildCmpFOp(builder, result, predicate, lhs, rhs); + "CmpFPredicate predicate, Value lhs, Value rhs", [{ + ::buildCmpFOp($_builder, $_state, predicate, lhs, rhs); }]>]; let extraClassDeclaration = [{ @@ -1078,9 +1071,8 @@ def CmpIOp : Std_Op<"cmpi", let results = (outs BoolLike:$result); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, CmpIPredicate predicate," - "Value lhs, Value rhs", [{ - ::buildCmpIOp(builder, result, predicate, lhs, rhs); + "CmpIPredicate predicate, Value lhs, Value rhs", [{ + ::buildCmpIOp($_builder, $_state, predicate, lhs, rhs); }]>]; let extraClassDeclaration = [{ @@ -1176,15 +1168,14 @@ def CondBranchOp : Std_Op<"cond_br", let successors = (successor AnySuccessor:$trueDest, AnySuccessor:$falseDest); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value condition," - "Block *trueDest, ValueRange trueOperands," + "Value condition, Block *trueDest, ValueRange trueOperands," "Block *falseDest, ValueRange falseOperands", [{ - build(builder, result, condition, trueOperands, falseOperands, trueDest, + build($_builder, $_state, condition, trueOperands, falseOperands, trueDest, falseDest); }]>, OpBuilder< - "OpBuilder &builder, OperationState &result, Value condition," - "Block *trueDest, Block *falseDest, ValueRange falseOperands = {}", [{ - build(builder, result, condition, trueDest, ValueRange(), falseDest, + "Value condition, Block *trueDest, Block *falseDest, " + "ValueRange falseOperands = {}", [{ + build($_builder, $_state, condition, trueDest, ValueRange(), falseDest, falseOperands); }]>]; @@ -1309,9 +1300,8 @@ def ConstantOp : Std_Op<"constant", let arguments = (ins AnyAttr:$value); let results = (outs AnyType); - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Attribute value", - [{ build(builder, result, value.getType(), value); }]>]; + let builders = [OpBuilder<"Attribute value", + [{ build($_builder, $_state, value.getType(), value); }]>]; let extraClassDeclaration = [{ Attribute getValue() { return getAttr("value"); } @@ -1493,10 +1483,8 @@ def DimOp : Std_Op<"dim", [NoSideEffect]> { }]; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value memrefOrTensor, int64_t index">, - OpBuilder<"OpBuilder &builder, OperationState &result, " - "Value memrefOrTensor, Value index"> + OpBuilder<"Value memrefOrTensor, int64_t index">, + OpBuilder<"Value memrefOrTensor, Value index"> ]; let extraClassDeclaration = [{ @@ -1547,8 +1535,7 @@ def DynamicTensorFromElementsOp : Std_Op<"dynamic_tensor_from_elements", let builders = [ // Build op and populate its body per callback function. - OpBuilder<"OpBuilder &b, OperationState &result, Type resultTy, " - "ValueRange dynamicExtents, " + OpBuilder<"Type resultTy, ValueRange dynamicExtents, " "function_ref">, ]; @@ -1627,11 +1614,10 @@ def ExtractElementOp : Std_Op<"extract_element", let results = (outs AnyType:$result); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value aggregate," - "ValueRange indices = {}", [{ + "Value aggregate, ValueRange indices = {}", [{ auto resType = aggregate.getType().cast() .getElementType(); - build(builder, result, resType, aggregate, indices); + build($_builder, $_state, resType, aggregate, indices); }]>]; let extraClassDeclaration = [{ @@ -1681,10 +1667,9 @@ def TensorFromElementsOp : Std_Op<"tensor_from_elements", [ let skipDefaultBuilders = 1; let builders = [ - OpBuilder<"OpBuilder &b, OperationState &result, Type elementType," - "ValueRange elements">, + OpBuilder<"Type elementType, ValueRange elements">, // Special case builder for when `elements` has size >=1. - OpBuilder<"OpBuilder &b, OperationState &result, ValueRange elements"> + OpBuilder<"ValueRange elements"> ]; let hasCanonicalizer = 1; @@ -1877,12 +1862,11 @@ def LoadOp : Std_Op<"load", let results = (outs AnyType:$result); let builders = [OpBuilder< - "OpBuilder &, OperationState &result, Value memref," - "ValueRange indices = {}", [{ + "Value memref, ValueRange indices = {}", [{ auto memrefType = memref.getType().cast(); - result.addOperands(memref); - result.addOperands(indices); - result.types.push_back(memrefType.getElementType()); + $_state.addOperands(memref); + $_state.addOperands(indices); + $_state.types.push_back(memrefType.getElementType()); }]>]; let extraClassDeclaration = [{ @@ -2169,9 +2153,9 @@ def RankOp : Std_Op<"rank", [NoSideEffect]> { let verifier = ?; let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value tensor", [{ - auto indexType = builder.getIndexType(); - build(builder, result, indexType, tensor); + "Value tensor", [{ + auto indexType = $_builder.getIndexType(); + build($_builder, $_state, indexType, tensor); }]>]; let hasFolder = 1; @@ -2241,9 +2225,7 @@ def ReturnOp : Std_Op<"return", [NoSideEffect, HasParent<"FuncOp">, let arguments = (ins Variadic:$operands); - let builders = [OpBuilder< - "OpBuilder &b, OperationState &result", [{ build(b, result, llvm::None); }] - >]; + let builders = [OpBuilder<"", [{ build($_builder, $_state, llvm::None); }]>]; let assemblyFormat = "attr-dict ($operands^ `:` type($operands))?"; } @@ -2307,10 +2289,9 @@ def SelectOp : Std_Op<"select", [NoSideEffect, let results = (outs AnyType:$result); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value condition," - "Value trueValue, Value falseValue", [{ - result.addOperands({condition, trueValue, falseValue}); - result.addTypes(trueValue.getType()); + "Value condition, Value trueValue, Value falseValue", [{ + $_state.addOperands({condition, trueValue, falseValue}); + $_state.addTypes(trueValue.getType()); }]>]; let extraClassDeclaration = [{ @@ -2465,10 +2446,9 @@ def SignExtendIOp : Std_Op<"sexti", let arguments = (ins SignlessIntegerLike:$value); let results = (outs SignlessIntegerLike); - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value value, Type destType", [{ - result.addOperands(value); - result.addTypes(destType); + let builders = [OpBuilder<"Value value, Type destType", [{ + $_state.addOperands(value); + $_state.addTypes(destType); }]>]; let parser = [{ @@ -2540,9 +2520,8 @@ def SplatOp : Std_Op<"splat", [NoSideEffect, let results = (outs AnyTypeOf<[AnyVector, AnyStaticShapeTensor]>:$aggregate); let builders = - [OpBuilder<"OpBuilder &builder, OperationState &result, Value element, " - "Type aggregateType", - [{ build(builder, result, aggregateType, element); }]>]; + [OpBuilder<"Value element, Type aggregateType", + [{ build($_builder, $_state, aggregateType, element); }]>]; let hasFolder = 1; @@ -2619,9 +2598,9 @@ def StoreOp : Std_Op<"store", Variadic:$indices); let builders = [OpBuilder< - "OpBuilder &, OperationState &result, Value valueToStore, Value memref", [{ - result.addOperands(valueToStore); - result.addOperands(memref); + "Value valueToStore, Value memref", [{ + $_state.addOperands(valueToStore); + $_state.addOperands(memref); }]>]; let extraClassDeclaration = [{ @@ -2816,14 +2795,13 @@ def SubViewOp : Std_Op<"subview", [ let builders = [ // Build a SubViewOp with mixed static and dynamic entries. OpBuilder< - "OpBuilder &b, OperationState &result, Value source, " - "ArrayRef staticOffsets, ArrayRef staticSizes," - "ArrayRef staticStrides, ValueRange offsets, ValueRange sizes, " - "ValueRange strides, ArrayRef attrs = {}">, + "Value source, ArrayRef staticOffsets, " + "ArrayRef staticSizes, ArrayRef staticStrides, " + "ValueRange offsets, ValueRange sizes, ValueRange strides, " + "ArrayRef attrs = {}">, // Build a SubViewOp with all dynamic entries. OpBuilder< - "OpBuilder &b, OperationState &result, Value source, " - "ValueRange offsets, ValueRange sizes, ValueRange strides, " + "Value source, ValueRange offsets, ValueRange sizes, ValueRange strides, " "ArrayRef attrs = {}"> ]; @@ -3073,14 +3051,14 @@ def TensorLoadOp : Std_Op<"tensor_load", let verifier = ?; let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value memref", [{ - result.addOperands(memref); - result.addTypes(getTensorTypeFromMemRefType(memref.getType())); + "Value memref", [{ + $_state.addOperands(memref); + $_state.addTypes(getTensorTypeFromMemRefType(memref.getType())); }]>]; let extraClassDeclaration = [{ /// The result of a tensor_load is always a tensor. - TensorType getType() { + TensorType getType() { Type resultType = getResult().getType(); if (resultType.isa()) return resultType.cast(); @@ -3150,9 +3128,9 @@ def TruncateIOp : Std_Op<"trunci", [NoSideEffect, SameOperandsAndResultShape]> { let results = (outs SignlessIntegerLike); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value value, Type destType", [{ - result.addOperands(value); - result.addTypes(destType); + "Value value, Type destType", [{ + $_state.addOperands(value); + $_state.addTypes(destType); }]>]; let parser = [{ @@ -3418,9 +3396,9 @@ def ZeroExtendIOp : Std_Op<"zexti", [NoSideEffect, SameOperandsAndResultShape]> let results = (outs SignlessIntegerLike); let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value value, Type destType", [{ - result.addOperands(value); - result.addTypes(destType); + "Value value, Type destType", [{ + $_state.addOperands(value); + $_state.addTypes(destType); }]>]; let parser = [{ diff --git a/mlir/include/mlir/Dialect/Vector/VectorOps.td b/mlir/include/mlir/Dialect/Vector/VectorOps.td index 2aaec4475ccb..ecac0a3d4b1f 100644 --- a/mlir/include/mlir/Dialect/Vector/VectorOps.td +++ b/mlir/include/mlir/Dialect/Vector/VectorOps.td @@ -148,13 +148,13 @@ def Vector_ContractionOp : : vector<10xf16>, vector<10xf16> into f32 ``` }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value lhs, Value rhs, " - "Value acc, ArrayAttr indexingMaps, ArrayAttr iteratorTypes">, - OpBuilder< - "OpBuilder &builder, OperationState &result, Value lhs, Value rhs, " - "Value acc, ArrayRef> indexingExprs, " - "ArrayRef iteratorTypes">]; + let builders = [ + OpBuilder<"Value lhs, Value rhs, Value acc, ArrayAttr indexingMaps, " + "ArrayAttr iteratorTypes">, + OpBuilder<"Value lhs, Value rhs, Value acc, " + "ArrayRef> indexingExprs, " + "ArrayRef iteratorTypes"> + ]; let extraClassDeclaration = [{ VectorType getLhsType() { return lhs().getType().cast(); @@ -311,8 +311,9 @@ def Vector_ShuffleOp : : vector<2xf32>, vector<2xf32> ; yields vector<4xf32> ``` }]; - let builders = [OpBuilder<"OpBuilder &builder, OperationState &result," - "Value v1, Value v2, ArrayRef">]; + let builders = [ + OpBuilder<"Value v1, Value v2, ArrayRef"> + ]; let extraClassDeclaration = [{ static StringRef getMaskAttrName() { return "mask"; } VectorType getV1VectorType() { @@ -353,12 +354,10 @@ def Vector_ExtractElementOp : $vector `[` $position `:` type($position) `]` attr-dict `:` type($vector) }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " - "int64_t position">, - OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " - "Value position">]; + let builders = [ + OpBuilder<"Value source, int64_t position">, + OpBuilder<"Value source, Value position"> + ]; let extraClassDeclaration = [{ VectorType getVectorType() { return vector().getType().cast(); @@ -384,13 +383,12 @@ def Vector_ExtractOp : %2 = vector.extract %0[3, 3, 3]: vector<4x8x16xf32> ``` }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source," - "ArrayRef position">, + let builders = [ + OpBuilder<"Value source, ArrayRef position">, // Convenience builder which assumes the values in `position` are defined by // ConstantIndexOp. - OpBuilder<"OpBuilder &builder, OperationState &result, Value source," - "ValueRange position">]; + OpBuilder<"Value source, ValueRange position"> + ]; let extraClassDeclaration = [{ static StringRef getPositionAttrName() { return "position"; } VectorType getVectorType() { @@ -435,10 +433,10 @@ def Vector_ExtractSlicesOp : vector<2x2xf32>, vector<2x1xf32>> ``` }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, TupleType tupleType, " # - "Value vector, ArrayRef sizes, " # - "ArrayRef strides">]; + let builders = [ + OpBuilder<"TupleType tupleType, Value vector, ArrayRef sizes, " + "ArrayRef strides"> + ]; let extraClassDeclaration = [{ VectorType getSourceVectorType() { return vector().getType().cast(); @@ -481,9 +479,10 @@ def Vector_FMAOp : // Fully specified by traits. let verifier = ?; let assemblyFormat = "$lhs `,` $rhs `,` $acc attr-dict `:` type($lhs)"; - let builders = [OpBuilder< - "OpBuilder &b, OperationState &result, Value lhs, Value rhs, Value acc", - "build(b, result, lhs.getType(), lhs, rhs, acc);">]; + let builders = [ + OpBuilder<"Value lhs, Value rhs, Value acc", + "build($_builder, $_state, lhs.getType(), lhs, rhs, acc);"> + ]; let extraClassDeclaration = [{ VectorType getVectorType() { return lhs().getType().cast(); } }]; @@ -520,12 +519,10 @@ def Vector_InsertElementOp : type($result) }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " - "Value dest, int64_t position">, - OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " - "Value dest, Value position">]; + let builders = [ + OpBuilder<"Value source, Value dest, int64_t position">, + OpBuilder<"Value source, Value dest, Value position"> + ]; let extraClassDeclaration = [{ Type getSourceType() { return source().getType(); } VectorType getDestVectorType() { @@ -559,13 +556,11 @@ def Vector_InsertOp : $source `,` $dest $position attr-dict `:` type($source) `into` type($dest) }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " - "Value dest, ArrayRef position">, + let builders = [ + OpBuilder<"Value source, Value dest, ArrayRef position">, // Convenience builder which assumes all values are constant indices. - OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " - "Value dest, ValueRange position">]; + OpBuilder<"Value source, Value dest, ValueRange position"> + ]; let extraClassDeclaration = [{ static StringRef getPositionAttrName() { return "position"; } Type getSourceType() { return source().getType(); } @@ -666,9 +661,10 @@ def Vector_InsertStridedSliceOp : $source `,` $dest attr-dict `:` type($source) `into` type($dest) }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, Value dest, " # - "ArrayRef offsets, ArrayRef strides">]; + let builders = [ + OpBuilder<"Value source, Value dest, ArrayRef offsets, " + "ArrayRef strides"> + ]; let extraClassDeclaration = [{ static StringRef getOffsetsAttrName() { return "offsets"; } static StringRef getStridesAttrName() { return "strides"; } @@ -730,9 +726,8 @@ def Vector_OuterProductOp : }]; let builders = [ // Build an op without mask, use the type of `acc` as the return type. - OpBuilder< - "OpBuilder &builder, OperationState &result, Value lhs, Value rhs, " - "Value acc">]; + OpBuilder<"Value lhs, Value rhs, Value acc"> + ]; let extraClassDeclaration = [{ VectorType getOperandVectorTypeLHS() { return lhs().getType().cast(); @@ -904,10 +899,10 @@ def Vector_ExtractStridedSliceOp : vector<4x8x16xf32> to vector<2x4x16xf32> ``` }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source, " # - "ArrayRef offsets, ArrayRef sizes, " # - "ArrayRef strides">]; + let builders = [ + OpBuilder<"Value source, ArrayRef offsets, " + "ArrayRef sizes, ArrayRef strides"> + ]; let extraClassDeclaration = [{ static StringRef getOffsetsAttrName() { return "offsets"; } static StringRef getSizesAttrName() { return "sizes"; } @@ -1069,13 +1064,11 @@ def Vector_TransferReadOp : let builders = [ // Builder that sets padding to zero. - OpBuilder<"OpBuilder &builder, OperationState &result, VectorType vector, " - "Value memref, ValueRange indices, AffineMap permutationMap, " - "ArrayRef maybeMasked = {}">, + OpBuilder<"VectorType vector, Value memref, ValueRange indices, " + "AffineMap permutationMap, ArrayRef maybeMasked = {}">, // Builder that sets permutation map (resp. padding) to // 'getMinorIdentityMap' (resp. zero). - OpBuilder<"OpBuilder &builder, OperationState &result, VectorType vector, " - "Value memref, ValueRange indices, " + OpBuilder<"VectorType vector, Value memref, ValueRange indices, " "ArrayRef maybeMasked = {}"> ]; @@ -1154,11 +1147,10 @@ def Vector_TransferWriteOp : let builders = [ // Builder that sets permutation map to 'getMinorIdentityMap'. - OpBuilder<"OpBuilder &builder, OperationState &result, Value vector, " - "Value memref, ValueRange indices, " + OpBuilder<"Value vector, Value memref, ValueRange indices, " "ArrayRef maybeMasked = {}">, - OpBuilder<"OpBuilder &builder, OperationState &result, Value vector, " - "Value memref, ValueRange indices, AffineMap permutationMap">, + OpBuilder<"Value vector, Value memref, ValueRange indices, " + "AffineMap permutationMap">, ]; let hasFolder = 1; @@ -1602,8 +1594,9 @@ def Vector_TypeCastOp : /// Build the canonical memRefType with a single vector. /// E.g. memref<4 x 5 x vector<6 x f32>> -> memref>. - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value source">]; + let builders = [ + OpBuilder<"Value source"> + ]; let extraClassDeclaration = [{ MemRefType getMemRefType() { @@ -1756,9 +1749,9 @@ def Vector_TransposeOp : [c, f] ] ``` }]; - let builders = [OpBuilder< - "OpBuilder &builder, OperationState &result, Value vector, " - "ArrayRef transp">]; + let builders = [ + OpBuilder<"Value vector, ArrayRef transp"> + ]; let extraClassDeclaration = [{ VectorType getVectorType() { return vector().getType().cast(); @@ -1902,14 +1895,14 @@ def Vector_MatmulOp : Vector_Op<"matrix_multiply", [NoSideEffect, ``` }]; let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &result, Value lhs, Value rhs, " - "unsigned lhsRows, unsigned lhsColumns, unsigned rhsColumns", + OpBuilder<"Value lhs, Value rhs, unsigned lhsRows, unsigned lhsColumns, " + "unsigned rhsColumns", [{ - result.addOperands({lhs, rhs}); - result.addAttribute("lhs_rows", builder.getI32IntegerAttr(lhsRows)); - result.addAttribute("lhs_columns", builder.getI32IntegerAttr(lhsColumns)); - result.addAttribute("rhs_columns", builder.getI32IntegerAttr(rhsColumns)); - result.addTypes(VectorType::get(lhsRows * rhsColumns, + $_state.addOperands({lhs, rhs}); + $_state.addAttribute("lhs_rows",$_builder.getI32IntegerAttr(lhsRows)); + $_state.addAttribute("lhs_columns",$_builder.getI32IntegerAttr(lhsColumns)); + $_state.addAttribute("rhs_columns",$_builder.getI32IntegerAttr(rhsColumns)); + $_state.addTypes(VectorType::get(lhsRows * rhsColumns, lhs.getType().cast().getElementType())); }]>, ]; diff --git a/mlir/test/lib/Dialect/Test/TestOps.td b/mlir/test/lib/Dialect/Test/TestOps.td index 3743e39d0566..6f3c8f5aee68 100644 --- a/mlir/test/lib/Dialect/Test/TestOps.td +++ b/mlir/test/lib/Dialect/Test/TestOps.td @@ -636,8 +636,7 @@ def OpFuncRef : TEST_Op<"op_funcref"> { let description = [{ The "test.op_funcref" is a test op with a reference to a function symbol. }]; - let builders = [OpBuilder<[{OpBuilder &builder, OperationState &state, - FuncOp function}]>]; + let builders = [OpBuilder<[{FuncOp function}]>]; } // Pattern add the argument plus a increasing static number hidden in @@ -1132,12 +1131,12 @@ def LegalOpB : TEST_Op<"legal_op_b">, Results<(outs I32)>; def IllegalOpTerminator : TEST_Op<"illegal_op_terminator", [Terminator]>; def IllegalOpWithRegion : TEST_Op<"illegal_op_with_region"> { let skipDefaultBuilders = 1; - let builders = [OpBuilder<"OpBuilder &builder, OperationState &state", - [{ Region *bodyRegion = state.addRegion(); - OpBuilder::InsertionGuard g(builder); - Block *body = builder.createBlock(bodyRegion); - builder.setInsertionPointToEnd(body); - builder.create(state.location); + let builders = [OpBuilder<"", + [{ Region *bodyRegion = $_state.addRegion(); + OpBuilder::InsertionGuard g($_builder); + Block *body = $_builder.createBlock(bodyRegion); + $_builder.setInsertionPointToEnd(body); + $_builder.create($_state.location); }]>]; } def IllegalOpWithRegionAnchor : TEST_Op<"illegal_op_with_region_anchor">; @@ -1176,8 +1175,7 @@ def TestRegionBuilderOp : TEST_Op<"region_builder">; def TestReturnOp : TEST_Op<"return", [ReturnLike, Terminator]> { let arguments = (ins Variadic); let builders = [ - OpBuilder<"OpBuilder &builder, OperationState &state", - [{ build(builder, state, {}); }]> + OpBuilder<"", [{ build($_builder, $_state, {}); }]> ]; } def TestCastOp : TEST_Op<"cast">,