[flang-commits] [flang] [flang][NFC] rename fircg op operand index accessors (PR #100584)
via flang-commits
flang-commits at lists.llvm.org
Thu Jul 25 08:06:06 PDT 2024
https://github.com/jeanPerier created https://github.com/llvm/llvm-project/pull/100584
fircg operations have xxxOffset members to give the operand index of operand xxx. This is a bit weird when looking at usage (e.g. `arrayCoor.shiftOffset` reads like it is shifting some offset). Rename them to getXxxOperandIndex.
>From 5e5cfa0bc3f8b60a2c1bca898a9a221a09e6c9e2 Mon Sep 17 00:00:00 2001
From: Jean Perier <jperier at nvidia.com>
Date: Thu, 25 Jul 2024 07:42:58 -0700
Subject: [PATCH] [flang][NFC] rename fircg op operand index accessors
---
.../include/flang/Optimizer/CodeGen/CGOps.td | 74 ++++++++++++-------
.../include/flang/Optimizer/Dialect/FIROps.td | 2 +-
flang/lib/Optimizer/CodeGen/CodeGen.cpp | 45 +++++------
3 files changed, 73 insertions(+), 48 deletions(-)
diff --git a/flang/include/flang/Optimizer/CodeGen/CGOps.td b/flang/include/flang/Optimizer/CodeGen/CGOps.td
index c375edee1fa77..f4740a263ffd2 100644
--- a/flang/include/flang/Optimizer/CodeGen/CGOps.td
+++ b/flang/include/flang/Optimizer/CodeGen/CGOps.td
@@ -78,16 +78,24 @@ def fircg_XEmboxOp : fircg_Op<"ext_embox", [AttrSizedOperandSegments]> {
unsigned getOutRank();
// The shape operands are mandatory and always start at 1.
- unsigned shapeOffset() { return 1; }
- unsigned shiftOffset() { return shapeOffset() + getShape().size(); }
- unsigned sliceOffset() { return shiftOffset() + getShift().size(); }
- unsigned subcomponentOffset() { return sliceOffset() + getSlice().size(); }
- unsigned substrOffset() {
- return subcomponentOffset() + getSubcomponent().size();
+ unsigned getShapeOperandIndex() { return 1; }
+ unsigned getShiftOperandIndex() {
+ return getShapeOperandIndex() + getShape().size();
}
- unsigned lenParamOffset() { return substrOffset() + getSubstr().size(); }
- unsigned getSourceBoxOffset() {
- return lenParamOffset() + getLenParams().size();
+ unsigned getSliceOperandIndex() {
+ return getShiftOperandIndex() + getShift().size();
+ }
+ unsigned getSubcomponentOperandIndex() {
+ return getSliceOperandIndex() + getSlice().size();
+ }
+ unsigned getSubstrOperandIndex() {
+ return getSubcomponentOperandIndex() + getSubcomponent().size();
+ }
+ unsigned getLenParamOperandIndex() {
+ return getSubstrOperandIndex() + getSubstr().size();
+ }
+ unsigned getSourceBoxOperandIndex() {
+ return getLenParamOperandIndex() + getLenParams().size();
}
}];
}
@@ -135,12 +143,18 @@ def fircg_XReboxOp : fircg_Op<"ext_rebox", [AttrSizedOperandSegments]> {
// The rank of the result box
unsigned getOutRank();
- unsigned shapeOffset() { return 1; }
- unsigned shiftOffset() { return shapeOffset() + getShape().size(); }
- unsigned sliceOffset() { return shiftOffset() + getShift().size(); }
- unsigned subcomponentOffset() { return sliceOffset() + getSlice().size(); }
- unsigned substrOffset() {
- return subcomponentOffset() + getSubcomponent().size();
+ unsigned getShapeOperandIndex() { return 1; }
+ unsigned getShiftOperandIndex() {
+ return getShapeOperandIndex() + getShape().size();
+ }
+ unsigned getSliceOperandIndex() {
+ return getShiftOperandIndex() + getShift().size();
+ }
+ unsigned getSubcomponentOperandIndex() {
+ return getSliceOperandIndex() + getSlice().size();
+ }
+ unsigned getSubstrOperandIndex() {
+ return getSubcomponentOperandIndex() + getSubcomponent().size();
}
}];
}
@@ -193,14 +207,22 @@ def fircg_XArrayCoorOp : fircg_Op<"ext_array_coor", [AttrSizedOperandSegments]>
unsigned getRank();
// Shape is optional, but if it exists, it will be at offset 1.
- unsigned shapeOffset() { return 1; }
- unsigned shiftOffset() { return shapeOffset() + getShape().size(); }
- unsigned sliceOffset() { return shiftOffset() + getShift().size(); }
- unsigned subcomponentOffset() { return sliceOffset() + getSlice().size(); }
- unsigned indicesOffset() {
- return subcomponentOffset() + getSubcomponent().size();
- }
- unsigned lenParamsOffset() { return indicesOffset() + getIndices().size(); }
+ unsigned getShapeOperandIndex() { return 1; }
+ unsigned getShiftOperandIndex() {
+ return getShapeOperandIndex() + getShape().size();
+ }
+ unsigned getSliceOperandIndex() {
+ return getShiftOperandIndex() + getShift().size();
+ }
+ unsigned getSubcomponentOperandIndex() {
+ return getSliceOperandIndex() + getSlice().size();
+ }
+ unsigned getIndicesOperandIndex() {
+ return getSubcomponentOperandIndex() + getSubcomponent().size();
+ }
+ unsigned getLenParamsOperandIndex() {
+ return getIndicesOperandIndex() + getIndices().size();
+ }
}];
}
@@ -231,8 +253,10 @@ def fircg_XDeclareOp : fircg_Op<"ext_declare", [AttrSizedOperandSegments]> {
let extraClassDeclaration = [{
// Shape is optional, but if it exists, it will be at offset 1.
- unsigned shapeOffset() { return 1; }
- unsigned shiftOffset() { return shapeOffset() + getShape().size(); }
+ unsigned getShapeOperandIndex() { return 1; }
+ unsigned getShiftOperandIndex() {
+ return getShapeOperandIndex() + getShape().size();
+ }
}];
}
diff --git a/flang/include/flang/Optimizer/Dialect/FIROps.td b/flang/include/flang/Optimizer/Dialect/FIROps.td
index 89c13fa7cebe6..bee8e8f603ce3 100644
--- a/flang/include/flang/Optimizer/Dialect/FIROps.td
+++ b/flang/include/flang/Optimizer/Dialect/FIROps.td
@@ -817,7 +817,7 @@ def fir_EmboxOp : fir_Op<"embox", [NoMemoryEffect, AttrSizedOperandSegments]> {
let extraClassDeclaration = [{
bool hasLenParams() { return !getTypeparams().empty(); }
unsigned numLenParams() { return getTypeparams().size(); }
- unsigned getSourceBoxOffset() {
+ unsigned getSourceBoxOperandIndex() {
return 1 + (getShape() ? 1 : 0) + (getSlice() ? 1 : 0)
+ numLenParams();
}
diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
index f9ea92a843b23..99f1453f1314b 100644
--- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp
+++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
@@ -1431,8 +1431,8 @@ struct EmboxCommonConversion : public fir::FIROpConversion<OP> {
fir::unwrapPassByRefType(memref.getType()))))
TODO(xbox.getLoc(),
"fir.embox codegen dynamic size component in derived type");
- indices.append(operands.begin() + xbox.subcomponentOffset(),
- operands.begin() + xbox.subcomponentOffset() +
+ indices.append(operands.begin() + xbox.getSubcomponentOperandIndex(),
+ operands.begin() + xbox.getSubcomponentOperandIndex() +
xbox.getSubcomponent().size());
}
@@ -1487,7 +1487,7 @@ struct EmboxOpConversion : public EmboxCommonConversion<fir::EmboxOp> {
mlir::Value sourceBox;
mlir::Type sourceBoxType;
if (embox.getSourceBox()) {
- sourceBox = operands[embox.getSourceBoxOffset()];
+ sourceBox = operands[embox.getSourceBoxOperandIndex()];
sourceBoxType = embox.getSourceBox().getType();
}
assert(!embox.getShape() && "There should be no dims on this embox op");
@@ -1519,7 +1519,7 @@ struct XEmboxOpConversion : public EmboxCommonConversion<fir::cg::XEmboxOp> {
mlir::Value sourceBox;
mlir::Type sourceBoxType;
if (xbox.getSourceBox()) {
- sourceBox = operands[xbox.getSourceBoxOffset()];
+ sourceBox = operands[xbox.getSourceBoxOperandIndex()];
sourceBoxType = xbox.getSourceBox().getType();
}
auto [boxTy, dest, resultEleSize] = consDescriptorPrefix(
@@ -1529,11 +1529,11 @@ struct XEmboxOpConversion : public EmboxCommonConversion<fir::cg::XEmboxOp> {
// Generate the triples in the dims field of the descriptor
auto i64Ty = mlir::IntegerType::get(xbox.getContext(), 64);
assert(!xbox.getShape().empty() && "must have a shape");
- unsigned shapeOffset = xbox.shapeOffset();
+ unsigned shapeOffset = xbox.getShapeOperandIndex();
bool hasShift = !xbox.getShift().empty();
- unsigned shiftOffset = xbox.shiftOffset();
+ unsigned shiftOffset = xbox.getShiftOperandIndex();
bool hasSlice = !xbox.getSlice().empty();
- unsigned sliceOffset = xbox.sliceOffset();
+ unsigned sliceOffset = xbox.getSliceOperandIndex();
mlir::Location loc = xbox.getLoc();
mlir::Value zero = genConstantIndex(loc, i64Ty, rewriter, 0);
mlir::Value one = genConstantIndex(loc, i64Ty, rewriter, 1);
@@ -1682,7 +1682,7 @@ struct XEmboxOpConversion : public EmboxCommonConversion<fir::cg::XEmboxOp> {
if (hasSubcomp)
getSubcomponentIndices(xbox, xbox.getMemref(), operands, fieldIndices);
if (hasSubstr)
- substringOffset = operands[xbox.substrOffset()];
+ substringOffset = operands[xbox.getSubstrOperandIndex()];
mlir::Type llvmBaseType =
convertType(fir::unwrapRefType(xbox.getMemref().getType()));
base = genBoxOffsetGep(rewriter, loc, base, llvmBaseType, ptrOffset,
@@ -1843,7 +1843,7 @@ struct XReboxOpConversion : public EmboxCommonConversion<fir::cg::XReboxOp> {
if (!rebox.getSubcomponent().empty())
getSubcomponentIndices(rebox, rebox.getBox(), operands, fieldIndices);
if (!rebox.getSubstr().empty())
- substringOffset = operands[rebox.substrOffset()];
+ substringOffset = operands[rebox.getSubstrOperandIndex()];
base = genBoxOffsetGep(rewriter, loc, base, llvmBaseObjectType, zero,
/*cstInteriorIndices=*/std::nullopt, fieldIndices,
substringOffset);
@@ -1862,8 +1862,8 @@ struct XReboxOpConversion : public EmboxCommonConversion<fir::cg::XReboxOp> {
llvm::SmallVector<mlir::Value> slicedStrides;
mlir::Value one = genConstantIndex(loc, idxTy, rewriter, 1);
const bool sliceHasOrigins = !rebox.getShift().empty();
- unsigned sliceOps = rebox.sliceOffset();
- unsigned shiftOps = rebox.shiftOffset();
+ unsigned sliceOps = rebox.getSliceOperandIndex();
+ unsigned shiftOps = rebox.getShiftOperandIndex();
auto strideOps = inputStrides.begin();
const unsigned inputRank = inputStrides.size();
for (unsigned i = 0; i < inputRank;
@@ -1912,9 +1912,10 @@ struct XReboxOpConversion : public EmboxCommonConversion<fir::cg::XReboxOp> {
mlir::Value base, mlir::ValueRange inputExtents,
mlir::ValueRange inputStrides, mlir::ValueRange operands,
mlir::ConversionPatternRewriter &rewriter) const {
- mlir::ValueRange reboxShifts{operands.begin() + rebox.shiftOffset(),
- operands.begin() + rebox.shiftOffset() +
- rebox.getShift().size()};
+ mlir::ValueRange reboxShifts{
+ operands.begin() + rebox.getShiftOperandIndex(),
+ operands.begin() + rebox.getShiftOperandIndex() +
+ rebox.getShift().size()};
if (rebox.getShape().empty()) {
// Only setting new lower bounds.
return finalizeRebox(rebox, destBoxTy, dest, base, reboxShifts,
@@ -1934,7 +1935,7 @@ struct XReboxOpConversion : public EmboxCommonConversion<fir::cg::XReboxOp> {
? genConstantIndex(loc, idxTy, rewriter, 1)
: inputStrides[0];
for (unsigned i = 0; i < rebox.getShape().size(); ++i) {
- mlir::Value rawExtent = operands[rebox.shapeOffset() + i];
+ mlir::Value rawExtent = operands[rebox.getShapeOperandIndex() + i];
mlir::Value extent = integerCast(loc, rewriter, idxTy, rawExtent);
newExtents.emplace_back(extent);
newStrides.emplace_back(stride);
@@ -2137,10 +2138,10 @@ struct XArrayCoorOpConversion
assert(coor.getShift().empty() || coor.getShift().size() == rank);
assert(coor.getSlice().empty() || coor.getSlice().size() == 3 * rank);
mlir::Type idxTy = lowerTy().indexType();
- unsigned indexOffset = coor.indicesOffset();
- unsigned shapeOffset = coor.shapeOffset();
- unsigned shiftOffset = coor.shiftOffset();
- unsigned sliceOffset = coor.sliceOffset();
+ unsigned indexOffset = coor.getIndicesOperandIndex();
+ unsigned shapeOffset = coor.getShapeOperandIndex();
+ unsigned shiftOffset = coor.getShiftOperandIndex();
+ unsigned sliceOffset = coor.getSliceOperandIndex();
auto sliceOps = coor.getSlice().begin();
mlir::Value one = genConstantIndex(loc, idxTy, rewriter, 1);
mlir::Value prevExt = one;
@@ -2238,7 +2239,7 @@ struct XArrayCoorOpConversion
}
llvm::SmallVector<mlir::Value> indices = convertSubcomponentIndices(
loc, elementType,
- operands.slice(coor.subcomponentOffset(),
+ operands.slice(coor.getSubcomponentOperandIndex(),
coor.getSubcomponent().size()));
args.append(indices.begin(), indices.end());
rewriter.replaceOpWithNewOp<mlir::LLVM::GEPOp>(coor, llvmPtrTy,
@@ -2262,7 +2263,7 @@ struct XArrayCoorOpConversion
if (fir::characterWithDynamicLen(eleTy)) {
assert(coor.getLenParams().size() == 1);
auto length = integerCast(loc, rewriter, idxTy,
- operands[coor.lenParamsOffset()]);
+ operands[coor.getLenParamsOperandIndex()]);
offset = rewriter.create<mlir::LLVM::MulOp>(loc, idxTy, offset,
length, nsw);
} else {
@@ -2275,7 +2276,7 @@ struct XArrayCoorOpConversion
args.push_back(offset);
llvm::SmallVector<mlir::Value> indices = convertSubcomponentIndices(
loc, gepObjectType,
- operands.slice(coor.subcomponentOffset(),
+ operands.slice(coor.getSubcomponentOperandIndex(),
coor.getSubcomponent().size()));
args.append(indices.begin(), indices.end());
}
More information about the flang-commits
mailing list