Changeset View
Changeset View
Standalone View
Standalone View
mlir/tools/mlir-linalg-ods-gen/mlir-linalg-ods-gen.cpp
Show First 20 Lines • Show All 1,449 Lines • ▼ Show 20 Lines | const char *header = R"FMT( def {0} : LinalgStructuredBase_Op<"{1}", [ | ||||
AttrSizedOperandSegments, | AttrSizedOperandSegments, | ||||
SingleBlockImplicitTerminator<"YieldOp">]> { | SingleBlockImplicitTerminator<"YieldOp">]> { | ||||
let arguments = (ins Variadic<AnyShaped>:$inputs, | let arguments = (ins Variadic<AnyShaped>:$inputs, | ||||
Variadic<AnyMemRef>:$output_buffers, | Variadic<AnyMemRef>:$output_buffers, | ||||
Variadic<AnyRankedTensor>:$init_tensors); | Variadic<AnyRankedTensor>:$init_tensors); | ||||
let results = (outs Variadic<AnyRankedTensor>:$result_tensors); | let results = (outs Variadic<AnyRankedTensor>:$result_tensors); | ||||
let regions = (region AnyRegion:$region); | let regions = (region AnyRegion:$region); | ||||
let skipDefaultBuilders = 1; | |||||
let builders = [ OpBuilder< | let builders = [ OpBuilder< | ||||
"OpBuilder &b, OperationState &result," | "OpBuilder &b, OperationState &result, " | ||||
"ValueRange inputs, ValueRange outputBuffers", | "ValueRange inputs, ValueRange outputBuffers", | ||||
[{{ | [{{ | ||||
result.addOperands(inputs); | result.addOperands(inputs); | ||||
result.addOperands(outputBuffers); | result.addOperands(outputBuffers); | ||||
result.addAttribute( | result.addAttribute( | ||||
"operand_segment_sizes", | "operand_segment_sizes", | ||||
b.getI32VectorAttr({{static_cast<int32_t>(inputs.size()), | b.getI32VectorAttr({{static_cast<int32_t>(inputs.size()), | ||||
static_cast<int32_t>(outputBuffers.size()), | static_cast<int32_t>(outputBuffers.size()), | ||||
Show All 20 Lines | SingleBlockImplicitTerminator<"YieldOp">]> { | ||||
static_cast<int32_t>(initTensors.size())})); | static_cast<int32_t>(initTensors.size())})); | ||||
buildNamedStructuredOpRegionAndAttributes<{0}>( | buildNamedStructuredOpRegionAndAttributes<{0}>( | ||||
b, | b, | ||||
result, | result, | ||||
TypeRange(inputs), | TypeRange(inputs), | ||||
TypeRange(outputBuffers), | TypeRange(outputBuffers), | ||||
TypeRange(initTensors), | TypeRange(initTensors), | ||||
resultTensorTypes); | resultTensorTypes); | ||||
}]>, OpBuilder< | |||||
"OpBuilder &b, OperationState &result, TypeRange resultTensorTypes," | |||||
"ValueRange operands, ArrayRef<NamedAttribute> attributes = {{}", | |||||
[{{ | |||||
result.addOperands(operands); | |||||
result.addAttributes(attributes); | |||||
result.addTypes(resultTensorTypes); | |||||
(void)result.addRegion(); | |||||
}]> | }]> | ||||
]; | ]; | ||||
let printer = [{{ return ::printNamedStructuredOp(p, *this); }]; | let printer = [{{ return ::printNamedStructuredOp(p, *this); }]; | ||||
let parser = [{{ return ::parseNamedStructuredOp<{0}>(parser, result); }]; | let parser = [{{ return ::parseNamedStructuredOp<{0}>(parser, result); }]; | ||||
let verifier = [{{ return ::verifyNamedStructuredOp(*this); }]; | let verifier = [{{ return ::verifyNamedStructuredOp(*this); }]; | ||||
let hasFolder = 1; | let hasFolder = 1; | ||||
let hasCanonicalizer = 1; | let hasCanonicalizer = 1; | ||||
▲ Show 20 Lines • Show All 235 Lines • Show Last 20 Lines |