[Mlir-commits] [mlir] [MLIR][XeGPU] make offsets optional for create_nd_tdesc (PR #148335)
Chao Chen
llvmlistbot at llvm.org
Wed Jul 16 07:47:26 PDT 2025
================
@@ -221,6 +279,66 @@ LogicalResult CreateNdDescOp::verify() {
return success();
}
+ParseResult parseOptionalDynamicIndexList(
+ OpAsmParser &parser,
+ SmallVectorImpl<OpAsmParser::UnresolvedOperand> &values,
+ DenseI64ArrayAttr &integers, SmallVectorImpl<Type> *valueTypes = nullptr,
+ AsmParser::Delimiter delimiter = AsmParser::Delimiter::Square) {
+
+ SmallVector<int64_t, 4> integerVals;
+ auto parseIntegerOrValue = [&]() {
+ OpAsmParser::UnresolvedOperand operand;
+ auto res = parser.parseOptionalOperand(operand);
+
+ if (res.has_value() && succeeded(res.value())) {
+ values.push_back(operand);
+ integerVals.push_back(ShapedType::kDynamic);
+ if (valueTypes && parser.parseColonType(valueTypes->emplace_back()))
+ return failure();
+ } else {
+ int64_t integer;
+ if (failed(parser.parseInteger(integer)))
+ return failure();
+ integerVals.push_back(integer);
+ }
+
+ return success();
+ };
+ if (parser.parseOptionalLSquare().succeeded()) {
+ if (parser.parseCommaSeparatedList(parseIntegerOrValue) ||
+ parser.parseRSquare())
+ return parser.emitError(parser.getNameLoc())
+ << "expected SSA value or integer";
+ integers = parser.getBuilder().getDenseI64ArrayAttr(integerVals);
+ return success();
+ }
+ return success();
+}
+
+void printOptionalDynamicIndexList(OpAsmPrinter &printer, Operation *op,
+ OperandRange values,
+ ArrayRef<int64_t> integers,
+ TypeRange valueTypes = TypeRange()) {
+
+ if (values.empty() && llvm::all_of(integers, [](int64_t i) {
+ return i == std::numeric_limits<int64_t>::max();
----------------
chencha3 wrote:
Maybe we can remove the valueTypes and related logic, since it is not used.
https://github.com/llvm/llvm-project/pull/148335
More information about the Mlir-commits
mailing list