[clang] [CIR] Add offload container attribute (PR #206576)
Henrich Lauko via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 8 02:19:22 PDT 2026
================
@@ -110,6 +111,87 @@ Operation *cir::CIRDialect::materializeConstant(mlir::OpBuilder &builder,
mlir::cast<mlir::TypedAttr>(value));
}
+//===----------------------------------------------------------------------===//
+// Dialect attribute verification
+//===----------------------------------------------------------------------===//
+
+static LogicalResult verifyOffloadKind(mlir::ModuleOp module,
+ cir::OffloadKind expected) {
+ auto attr = module->getAttrOfType<cir::OffloadKindAttr>(
+ cir::CIRDialect::getOffloadKindAttrName());
+ if (!attr)
+ return module.emitOpError()
+ << "expects '" << cir::CIRDialect::getOffloadKindAttrName()
+ << "' offload kind attribute";
+ if (attr.getValue() != expected)
+ return module.emitOpError()
+ << "expects '" << cir::CIRDialect::getOffloadKindAttrName()
+ << "' value '" << cir::stringifyOffloadKind(expected) << "'";
+ return success();
+}
+
+// A module marked with `cir.offload.container` holds the host module followed
+// by one or more device modules, each tagged with `cir.offload.kind`. Keeping
+// the host module first gives later offload passes a simple convention for
+// finding the host side while iterating the remaining device modules.
+static LogicalResult verifyOffloadContainer(mlir::Operation *op) {
+ auto container = mlir::dyn_cast<mlir::ModuleOp>(op);
+ if (!container)
+ return op->emitError() << "expects '"
----------------
xlauko wrote:
nit: emitOpError as everywhere else?
https://github.com/llvm/llvm-project/pull/206576
More information about the cfe-commits
mailing list