forked from OSchip/llvm-project
[mlir] Remove more OpBuilder args which are now injected
NFC. Some small changes to make things more consistent but primarily avoiding old behavior without any further change.
This commit is contained in:
parent
26ee8aff2b
commit
4f0e0d9217
|
@ -490,15 +490,14 @@ def ConstantOp : Toy_Op<"constant"> {
|
|||
// using `builder.create<ConstantOp>(...)`.
|
||||
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">
|
||||
];
|
||||
}
|
||||
```
|
||||
|
|
|
@ -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<void(OpBuilder "
|
||||
"&, Location, Value, ValueRange)> 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<void(OpBuilder &, Location, Value, ValueRange)> "
|
||||
|
@ -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<string mnemonic, list<OpTrait> 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<AtomicRMWKind> reductions, "
|
||||
"ArrayRef<int64_t> ranges">,
|
||||
OpBuilder<"OpBuilder &builder, OperationState &result, "
|
||||
"TypeRange resultTypes, "
|
||||
OpBuilder<"TypeRange resultTypes, "
|
||||
"ArrayRef<AtomicRMWKind> reductions, "
|
||||
"AffineMap lbMap, ValueRange lbArgs, "
|
||||
"AffineMap ubMap, ValueRange ubArgs">,
|
||||
OpBuilder<"OpBuilder &builder, OperationState &result, "
|
||||
"TypeRange resultTypes, "
|
||||
OpBuilder<"TypeRange resultTypes, "
|
||||
"ArrayRef<AtomicRMWKind> 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<Value> mapOperands, bool isWrite,"
|
||||
"Value memref, AffineMap map, ArrayRef<Value> 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<AnyType>:$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))?";
|
||||
}
|
||||
|
|
|
@ -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<NamedAttribute> 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);
|
||||
|
|
|
@ -23,23 +23,22 @@ class LLVM_Builder<string builder> {
|
|||
}
|
||||
|
||||
def LLVM_OneResultOpBuilder : OpBuilder<
|
||||
"OpBuilder &, OperationState &result, Type resultType, "
|
||||
"ValueRange operands, ArrayRef<NamedAttribute> attributes = {}",
|
||||
"Type resultType, ValueRange operands, "
|
||||
"ArrayRef<NamedAttribute> 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<NamedAttribute> attributes = {}",
|
||||
"ValueRange operands, ArrayRef<NamedAttribute> 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<string mnemonic, list<OpTrait> 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<NamedAttribute> attributes = {}",
|
||||
"Type resultType, ValueRange operands, ArrayRef<NamedAttribute> attributes = {}",
|
||||
[{
|
||||
auto llvmType = resultType.dyn_cast<LLVMType>(); (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<string mnemonic, list<OpTrait> traits = []> :
|
|||
|
||||
// Opaque builder used for terminator operations that contain successors.
|
||||
def LLVM_TerminatorPassthroughOpBuilder : OpBuilder<
|
||||
"OpBuilder &, OperationState &result, ValueRange operands, "
|
||||
"SuccessorRange destinations, ArrayRef<NamedAttribute> attributes = {}",
|
||||
"ValueRange operands, SuccessorRange destinations, "
|
||||
"ArrayRef<NamedAttribute> 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<int64_t>(predicate)), lhs, rhs);
|
||||
"ICmpPredicate predicate, Value lhs, Value rhs", [{
|
||||
build($_builder, $_state, LLVMType::getInt1Ty(lhs.getType().getContext()),
|
||||
$_builder.getI64IntegerAttr(static_cast<int64_t>(predicate)), lhs, rhs);
|
||||
}]>];
|
||||
let parser = [{ return parseCmpOp<ICmpPredicate>(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<int64_t>(predicate)), lhs, rhs);
|
||||
"FCmpPredicate predicate, Value lhs, Value rhs", [{
|
||||
build($_builder, $_state, LLVMType::getInt1Ty(lhs.getType().getContext()),
|
||||
$_builder.getI64IntegerAttr(static_cast<int64_t>(predicate)), lhs, rhs);
|
||||
}]>];
|
||||
let parser = [{ return parseCmpOp<FCmpPredicate>(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<LLVMType>().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<LLVM_Type>)>,
|
||||
Results<(outs Variadic<LLVM_Type>)> {
|
||||
let builders = [OpBuilder<
|
||||
"OpBuilder &builder, OperationState &result, LLVMFuncOp func,"
|
||||
"ValueRange operands, ArrayRef<NamedAttribute> attributes = {}",
|
||||
"LLVMFuncOp func, ValueRange operands, "
|
||||
"ArrayRef<NamedAttribute> 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<NamedAttribute> attrs = {}">];
|
||||
"Value vector, Value position, ArrayRef<NamedAttribute> 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<NamedAttribute> attrs = {}">];
|
||||
"Value v1, Value v2, ArrayAttr mask, ArrayRef<NamedAttribute> attrs = {}">];
|
||||
let verifier = [{
|
||||
auto wrappedVectorType1 = v1().getType().cast<LLVMType>();
|
||||
auto wrappedVectorType2 = v2().getType().cast<LLVMType>();
|
||||
|
@ -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<std::pair<uint32_t, uint32_t>> weights = {}", [{
|
||||
ElementsAttr weightsAttr;
|
||||
if (weights) {
|
||||
weightsAttr =
|
||||
builder.getI32VectorAttr({static_cast<int32_t>(weights->first),
|
||||
$_builder.getI32VectorAttr({static_cast<int32_t>(weights->first),
|
||||
static_cast<int32_t>(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<NamedAttribute> 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<NamedAttribute> 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<NamedAttribute> 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<NamedAttribute> 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<NamedAttribute> attrs = {}, "
|
||||
"ArrayRef<MutableDictionaryAttr> argAttrs = {}">
|
||||
|
|
|
@ -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<void(OpBuilder &, Location, Value, ValueRange)>"
|
||||
" = 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<void (OpBuilder &, Location, "
|
||||
"ValueRange, ValueRange)>"
|
||||
" bodyBuilderFn = nullptr">,
|
||||
OpBuilder<"OpBuilder &builder, OperationState &result, "
|
||||
"ValueRange lowerBounds, ValueRange upperBounds, "
|
||||
OpBuilder<"ValueRange lowerBounds, ValueRange upperBounds, "
|
||||
"ValueRange steps, "
|
||||
"function_ref<void (OpBuilder &, Location, ValueRange)>"
|
||||
" 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<void (OpBuilder &, Location, Value, Value)>"
|
||||
" bodyBuilderFn = nullptr">
|
||||
];
|
||||
|
|
|
@ -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); }];
|
||||
|
|
|
@ -50,8 +50,8 @@ class CastOp<string mnemonic, list<OpTrait> 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<string mnemonic,
|
|||
let results = (outs Res<AnyMemRef, "", [MemAlloc<resource>]>);
|
||||
|
||||
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<AnyType>:$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<AnyType>);
|
||||
|
||||
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<AnyType>:$results);
|
||||
|
||||
let builders = [OpBuilder<
|
||||
"OpBuilder &, OperationState &result, Value callee,"
|
||||
"ValueRange operands = {}", [{
|
||||
result.operands.push_back(callee);
|
||||
result.addOperands(operands);
|
||||
result.addTypes(callee.getType().cast<FunctionType>().getResults());
|
||||
"Value callee, ValueRange operands = {}", [{
|
||||
$_state.operands.push_back(callee);
|
||||
$_state.addOperands(operands);
|
||||
$_state.addTypes(callee.getType().cast<FunctionType>().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<void(OpBuilder &, Location, ValueRange)>">,
|
||||
];
|
||||
|
||||
|
@ -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<ShapedType>()
|
||||
.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<MemRefType>();
|
||||
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<AnyType>:$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<Index>:$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<int64_t> staticOffsets, ArrayRef<int64_t> staticSizes,"
|
||||
"ArrayRef<int64_t> staticStrides, ValueRange offsets, ValueRange sizes, "
|
||||
"ValueRange strides, ArrayRef<NamedAttribute> attrs = {}">,
|
||||
"Value source, ArrayRef<int64_t> staticOffsets, "
|
||||
"ArrayRef<int64_t> staticSizes, ArrayRef<int64_t> staticStrides, "
|
||||
"ValueRange offsets, ValueRange sizes, ValueRange strides, "
|
||||
"ArrayRef<NamedAttribute> 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<NamedAttribute> 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<TensorType>())
|
||||
return resultType.cast<TensorType>();
|
||||
|
@ -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 = [{
|
||||
|
|
|
@ -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<ArrayRef<AffineExpr>> indexingExprs, "
|
||||
"ArrayRef<StringRef> iteratorTypes">];
|
||||
let builders = [
|
||||
OpBuilder<"Value lhs, Value rhs, Value acc, ArrayAttr indexingMaps, "
|
||||
"ArrayAttr iteratorTypes">,
|
||||
OpBuilder<"Value lhs, Value rhs, Value acc, "
|
||||
"ArrayRef<ArrayRef<AffineExpr>> indexingExprs, "
|
||||
"ArrayRef<StringRef> iteratorTypes">
|
||||
];
|
||||
let extraClassDeclaration = [{
|
||||
VectorType getLhsType() {
|
||||
return lhs().getType().cast<VectorType>();
|
||||
|
@ -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<int64_t>">];
|
||||
let builders = [
|
||||
OpBuilder<"Value v1, Value v2, ArrayRef<int64_t>">
|
||||
];
|
||||
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<VectorType>();
|
||||
|
@ -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<int64_t> position">,
|
||||
let builders = [
|
||||
OpBuilder<"Value source, ArrayRef<int64_t> 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<int64_t> sizes, " #
|
||||
"ArrayRef<int64_t> strides">];
|
||||
let builders = [
|
||||
OpBuilder<"TupleType tupleType, Value vector, ArrayRef<int64_t> sizes, "
|
||||
"ArrayRef<int64_t> strides">
|
||||
];
|
||||
let extraClassDeclaration = [{
|
||||
VectorType getSourceVectorType() {
|
||||
return vector().getType().cast<VectorType>();
|
||||
|
@ -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<VectorType>(); }
|
||||
}];
|
||||
|
@ -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<int64_t> position">,
|
||||
let builders = [
|
||||
OpBuilder<"Value source, Value dest, ArrayRef<int64_t> 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<int64_t> offsets, ArrayRef<int64_t> strides">];
|
||||
let builders = [
|
||||
OpBuilder<"Value source, Value dest, ArrayRef<int64_t> offsets, "
|
||||
"ArrayRef<int64_t> 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<VectorType>();
|
||||
|
@ -904,10 +899,10 @@ def Vector_ExtractStridedSliceOp :
|
|||
vector<4x8x16xf32> to vector<2x4x16xf32>
|
||||
```
|
||||
}];
|
||||
let builders = [OpBuilder<
|
||||
"OpBuilder &builder, OperationState &result, Value source, " #
|
||||
"ArrayRef<int64_t> offsets, ArrayRef<int64_t> sizes, " #
|
||||
"ArrayRef<int64_t> strides">];
|
||||
let builders = [
|
||||
OpBuilder<"Value source, ArrayRef<int64_t> offsets, "
|
||||
"ArrayRef<int64_t> sizes, ArrayRef<int64_t> 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<bool> maybeMasked = {}">,
|
||||
OpBuilder<"VectorType vector, Value memref, ValueRange indices, "
|
||||
"AffineMap permutationMap, ArrayRef<bool> 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<bool> 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<bool> 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<vector<4 x 5 x 6 x f32>>.
|
||||
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<int64_t> transp">];
|
||||
let builders = [
|
||||
OpBuilder<"Value vector, ArrayRef<int64_t> transp">
|
||||
];
|
||||
let extraClassDeclaration = [{
|
||||
VectorType getVectorType() {
|
||||
return vector().getType().cast<VectorType>();
|
||||
|
@ -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<VectorType>().getElementType()));
|
||||
}]>,
|
||||
];
|
||||
|
|
|
@ -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<IllegalOpTerminator>(state.location);
|
||||
let builders = [OpBuilder<"",
|
||||
[{ Region *bodyRegion = $_state.addRegion();
|
||||
OpBuilder::InsertionGuard g($_builder);
|
||||
Block *body = $_builder.createBlock(bodyRegion);
|
||||
$_builder.setInsertionPointToEnd(body);
|
||||
$_builder.create<IllegalOpTerminator>($_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<AnyType>);
|
||||
let builders = [
|
||||
OpBuilder<"OpBuilder &builder, OperationState &state",
|
||||
[{ build(builder, state, {}); }]>
|
||||
OpBuilder<"", [{ build($_builder, $_state, {}); }]>
|
||||
];
|
||||
}
|
||||
def TestCastOp : TEST_Op<"cast">,
|
||||
|
|
Loading…
Reference in New Issue