if (!outputType.getElementType().isIntOrIndexOrFloat())
return failure();
- DenseElementsAttr inputValues;
+ ElementsAttr inputValues;
if (!matchPattern(op.getInput1(), m_Constant(&inputValues)))
return failure();
// Make sure the input is a constant that has a single user.
// index.
auto attrValues = inputValues.getValues<Attribute>();
ArrayRef<int64_t> outputShape = outputType.getShape();
- for (int srcLinearIndex = 0; srcLinearIndex < numElements;
- ++srcLinearIndex) {
+ for (const auto &it : llvm::enumerate(attrValues)) {
SmallVector<uint64_t, 6> srcIndices(inputType.getRank(), 0);
- int totalCount = srcLinearIndex;
+ int totalCount = it.index();
for (int dim = inputType.getRank() - 1; dim >= 0; --dim) {
srcIndices[dim] = totalCount % inputShape[dim];
totalCount /= inputShape[dim];
for (int dim = 1; dim < outputType.getRank(); ++dim)
dstLinearIndex = dstLinearIndex * outputShape[dim] + dstIndices[dim];
- outputValues[dstLinearIndex] = attrValues[srcIndices];
+ outputValues[dstLinearIndex] = it.value();
}
rewriter.replaceOpWithNewOp<tosa::ConstOp>(