[Mlir-commits] [mlir] [mlir][spirv] Add basic support for SPV_EXT_replicated_composites (PR #147067)
Mohammadreza Ameri Mahabadian
llvmlistbot at llvm.org
Mon Jul 7 09:11:27 PDT 2025
================
@@ -765,6 +765,67 @@ void mlir::spirv::AddressOfOp::getAsmResultNames(
setNameFn(getResult(), specialName.str());
}
+//===----------------------------------------------------------------------===//
+// spirv.EXTConstantCompositeReplicate
+//===----------------------------------------------------------------------===//
+
+ParseResult
+spirv::EXTConstantCompositeReplicateOp::parse(OpAsmParser &parser,
+ OperationState &result) {
+ OpAsmParser::UnresolvedOperand constOperand;
+ Type compositeType;
+ if (parser.parseOperand(constOperand) ||
+ parser.parseColonType(compositeType)) {
+ return failure();
+ }
+
+ if (isa<TensorType>(compositeType)) {
+ if (parser.parseColonType(compositeType))
+ return failure();
+ }
+
+ Type constType = cast<spirv::CompositeType>(compositeType).getElementType(0);
+ while (auto type = dyn_cast<spirv::ArrayType>(constType)) {
+ constType = type.getElementType();
+ }
+
+ if (parser.resolveOperand(constOperand, constType, result.operands))
+ return failure();
+
+ return parser.addTypeToList(compositeType, result.types);
+}
+
+void spirv::EXTConstantCompositeReplicateOp::print(OpAsmPrinter &printer) {
+ printer << ' ' << getConstant() << " : " << getType();
+}
+
+LogicalResult spirv::EXTConstantCompositeReplicateOp::verify() {
+ auto compositeType = dyn_cast<spirv::CompositeType>(getType());
+ if (!compositeType)
+ return emitError("result type must be a composite type, but provided ")
+ << getType();
+
+ auto constantDefiningOp = getConstant().getDefiningOp();
----------------
mahabadm wrote:
Done.
https://github.com/llvm/llvm-project/pull/147067
More information about the Mlir-commits
mailing list