25static ::llvm::LogicalResult __mlir_ods_local_type_constraint_Ops1(
26 ::mlir::Operation *op, ::mlir::Type type, ::llvm::StringRef valueKind,
27 unsigned valueIndex) {
29 return op->emitOpError(valueKind) <<
" #" << valueIndex
30 <<
" must be a valid LLZK type, but got " << type;
32 return ::mlir::success();
50 return ::mlir::success();
54 ::mlir::DictionaryAttr dict = ::llvm::dyn_cast<::mlir::DictionaryAttr>(attr);
56 emitError() <<
"expected DictionaryAttr to set properties";
57 return ::mlir::failure();
59 return ::mlir::success();
63 ::mlir::SmallVector<::mlir::NamedAttribute> attrs;
64 ::mlir::Builder odsBuilder{ctx};
67 return odsBuilder.getDictionaryAttr(attrs);
72 using llvm::hash_value;
73 return llvm::hash_combine();
86::llvm::LogicalResult
NonDetOp::verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) {
87 return ::mlir::success();
90void NonDetOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res) {
91 odsState.addTypes(res);
96 build(builder, __state__, std::forward<
decltype(res)>(res));
97 auto __res__ = ::llvm::dyn_cast<NonDetOp>(builder.create(__state__));
98 assert(__res__ &&
"builder didn't return the right type");
103 return create(builder, builder.getLoc(), std::forward<
decltype(res)>(res));
106void NonDetOp::build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes) {
107 assert(resultTypes.size() == 1u &&
"mismatched number of results");
108 odsState.addTypes(resultTypes);
113 build(builder, __state__, std::forward<
decltype(resultTypes)>(resultTypes));
114 auto __res__ = ::llvm::dyn_cast<NonDetOp>(builder.create(__state__));
115 assert(__res__ &&
"builder didn't return the right type");
120 return create(builder, builder.getLoc(), std::forward<
decltype(resultTypes)>(resultTypes));
123void NonDetOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
124 assert(operands.size() == 0u &&
"mismatched number of parameters");
125 odsState.addOperands(operands);
126 odsState.addAttributes(attributes);
127 assert(resultTypes.size() == 1u &&
"mismatched number of return types");
128 odsState.addTypes(resultTypes);
131NonDetOp NonDetOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
133 build(builder, __state__, std::forward<
decltype(resultTypes)>(resultTypes), std::forward<
decltype(operands)>(operands), std::forward<
decltype(attributes)>(attributes));
134 auto __res__ = ::llvm::dyn_cast<NonDetOp>(builder.create(__state__));
135 assert(__res__ &&
"builder didn't return the right type");
139NonDetOp NonDetOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands, ::llvm::ArrayRef<::mlir::NamedAttribute> attributes) {
140 return create(builder, builder.getLoc(), std::forward<
decltype(resultTypes)>(resultTypes), std::forward<
decltype(operands)>(operands), std::forward<
decltype(attributes)>(attributes));
143void NonDetOp::build(::mlir::OpBuilder &, ::mlir::OperationState &odsState, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands,
const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
144 assert(operands.size() == 0u &&
"mismatched number of parameters");
145 odsState.addOperands(operands);
146 odsState.useProperties(
const_cast<Properties&
>(properties));
147 odsState.addAttributes(discardableAttributes);
148 assert(resultTypes.size() == 1u &&
"mismatched number of return types");
149 odsState.addTypes(resultTypes);
152NonDetOp NonDetOp::create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands,
const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
154 build(builder, __state__, std::forward<
decltype(resultTypes)>(resultTypes), std::forward<
decltype(operands)>(operands), std::forward<
decltype(properties)>(properties), std::forward<
decltype(discardableAttributes)>(discardableAttributes));
155 auto __res__ = ::llvm::dyn_cast<NonDetOp>(builder.create(__state__));
156 assert(__res__ &&
"builder didn't return the right type");
160NonDetOp NonDetOp::create(::mlir::ImplicitLocOpBuilder &builder, ::mlir::TypeRange resultTypes, ::mlir::ValueRange operands,
const Properties &properties, ::llvm::ArrayRef<::mlir::NamedAttribute> discardableAttributes) {
161 return create(builder, builder.getLoc(), std::forward<
decltype(resultTypes)>(resultTypes), std::forward<
decltype(operands)>(operands), std::forward<
decltype(properties)>(properties), std::forward<
decltype(discardableAttributes)>(discardableAttributes));
166 unsigned index = 0; (void)index;
169 for (
auto v : valueGroup0) {
170 if (::mlir::failed(__mlir_ods_local_type_constraint_Ops1(*
this, v.getType(),
"result", index++)))
171 return ::mlir::failure();
174 return ::mlir::success();
181::mlir::ParseResult
NonDetOp::parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result) {
182 ::mlir::Type resRawType{};
183 ::llvm::ArrayRef<::mlir::Type> resTypes(&resRawType, 1);
184 if (parser.parseColon())
185 return ::mlir::failure();
189 if (parser.parseCustomTypeWithFallback(type))
190 return ::mlir::failure();
194 auto loc = parser.getCurrentLocation();(void)loc;
195 if (parser.parseOptionalAttrDict(result.attributes))
196 return ::mlir::failure();
198 return parser.emitError(loc) <<
"'" << result.name.getStringRef() <<
"' op ";
200 return ::mlir::failure();
202 result.addTypes(resTypes);
203 return ::mlir::success();
207 _odsPrinter <<
' ' <<
":";
210 auto type =
getRes().getType();
211 if (
auto validType = ::llvm::dyn_cast<::mlir::Type>(type))
212 _odsPrinter.printStrippedAttrOrType(validType);
216 ::llvm::SmallVector<::llvm::StringRef, 2> elidedAttrs;
217 _odsPrinter.printOptionalAttrDict((*this)->getAttrs(), elidedAttrs);
NonDetOpGenericAdaptor(RangeT values, ::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
::llvm::LogicalResult verify(::mlir::Location loc)
NonDetOpAdaptor(NonDetOp op)
::mlir::ValueRange getOperands()
::llvm::LogicalResult setPropertiesFromAttr(Properties &prop, ::mlir::Attribute attr, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
::mlir::Operation::result_range getODSResults(unsigned index)
::mlir::TypedValue<::mlir::Type > getRes()
::llvm::LogicalResult verifyInherentAttrs(::mlir::OperationName opName, ::mlir::NamedAttrList &attrs, llvm::function_ref<::mlir::InFlightDiagnostic()> emitError)
::llvm::LogicalResult verifyInvariantsImpl()
static llvm::hash_code computePropertiesHash(const Properties &prop)
::mlir::Attribute getPropertiesAsAttr(::mlir::MLIRContext *ctx, const Properties &prop)
static NonDetOp create(::mlir::OpBuilder &builder, ::mlir::Location location, ::mlir::Type res)
void print(::mlir::OpAsmPrinter &_odsPrinter)
static void populateInherentAttrs(::mlir::MLIRContext *ctx, const Properties &prop, ::mlir::NamedAttrList &attrs)
FoldAdaptor::Properties Properties
static std::optional< mlir::Attribute > getInherentAttr(::mlir::MLIRContext *ctx, const Properties &prop, llvm::StringRef name)
static constexpr ::llvm::StringLiteral getOperationName()
static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, ::mlir::Type res)
::llvm::LogicalResult verifyInvariants()
static void setInherentAttr(Properties &prop, llvm::StringRef name, mlir::Attribute value)
::mlir::ParseResult parse(::mlir::OpAsmParser &parser, ::mlir::OperationState &result)
::mlir::DictionaryAttr odsAttrs
NonDetOpGenericAdaptorBase(::mlir::DictionaryAttr attrs, const Properties &properties, ::mlir::RegionRange regions={})
const Properties & getProperties()
::std::optional<::mlir::OperationName > odsOpName
::mlir::RegionRange odsRegions
Common interface for constant parameter-like symbol operations that can be defined within a TemplateO...
bool isValidType(Type type)