[Mlir-commits] [mlir] [mlir][SPIRV] Add support for dense_resource in arith to spirv (PR #91318)
Kunwar Grover
llvmlistbot at llvm.org
Fri May 10 08:31:38 PDT 2024
================
@@ -229,16 +230,29 @@ struct ConstantCompositeOpPattern final
if (!srcType || srcType.getNumElements() == 1)
return failure();
- // arith.constant should only have vector or tenor types.
+ // arith.constant should only have vector or tensor types.
assert((isa<VectorType, RankedTensorType>(srcType)));
Type dstType = getTypeConverter()->convertType(srcType);
if (!dstType)
return failure();
- auto dstElementsAttr = dyn_cast<DenseElementsAttr>(constOp.getValue());
- if (!dstElementsAttr)
- return failure();
+ // Import the resource into the IR to make use of the special handling of
+ // element types later on.
+ mlir::DenseElementsAttr dstElementsAttr;
+ if (auto denseElementsAttr =
+ dyn_cast<DenseElementsAttr>(constOp.getValue())) {
+ dstElementsAttr = denseElementsAttr;
+ } else if (auto resourceAttr =
+ dyn_cast<DenseResourceElementsAttr>(constOp.getValue())) {
+
+ ArrayRef<char> ptr = resourceAttr.getRawHandle().getBlob()->getData();
+ dstElementsAttr =
+ DenseElementsAttr::getFromRawBuffer(resourceAttr.getType(), ptr);
----------------
Groverkss wrote:
Can this conversion always happen? the raw buffer can contain some junk also. Can we emit a nice error message if something fails here?
https://github.com/llvm/llvm-project/pull/91318
More information about the Mlir-commits
mailing list