[Mlir-commits] [mlir] [mlir][spirv] Add basic support for SPV_EXT_replicated_composites (PR #147067)

Jakub Kuderski llvmlistbot at llvm.org
Thu Jul 10 07:31:52 PDT 2025


================
@@ -765,6 +765,52 @@ void mlir::spirv::AddressOfOp::getAsmResultNames(
   setNameFn(getResult(), specialName.str());
 }
 
+//===----------------------------------------------------------------------===//
+// spirv.EXTConstantCompositeReplicate
+//===----------------------------------------------------------------------===//
+
+ParseResult
+spirv::EXTConstantCompositeReplicateOp::parse(OpAsmParser &parser,
+                                              OperationState &result) {
+
+  Attribute value;
+  StringRef valueAttrName =
+      spirv::EXTConstantCompositeReplicateOp::getValueAttrName(result.name);
+  Type resultType;
+
+  if (parser.parseLSquare() ||
+      parser.parseAttribute(value, valueAttrName, result.attributes) ||
+      parser.parseRSquare() || parser.parseColonType(resultType))
+    return failure();
+
+  if (isa<NoneType, TensorType>(resultType))
+    if (parser.parseColonType(resultType))
+      return failure();
+
+  return parser.addTypeToList(resultType, result.types);
+}
+
+void spirv::EXTConstantCompositeReplicateOp::print(OpAsmPrinter &printer) {
+  printer << " [" << getValue() << "] : " << getType();
+}
+
+LogicalResult spirv::EXTConstantCompositeReplicateOp::verify() {
+  Type valueType = dyn_cast<TypedAttr>(getValue()).getType();
+  Type compositeElementType =
+      dyn_cast<spirv::CompositeType>(getType()).getElementType(0);
+  while (compositeElementType != valueType &&
+         isa<spirv::CompositeType>(compositeElementType)) {
+    compositeElementType =
+        dyn_cast<spirv::CompositeType>(compositeElementType).getElementType(0);
----------------
kuhar wrote:

Not addressed

https://github.com/llvm/llvm-project/pull/147067


More information about the Mlir-commits mailing list