Skip to content

Commit 4f2f7eb

Browse files
committed
Address more review comments.
1 parent a0435d0 commit 4f2f7eb

File tree

5 files changed

+25
-32
lines changed

5 files changed

+25
-32
lines changed

flang/lib/Lower/OpenMP/ClauseProcessor.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -529,15 +529,9 @@ bool ClauseProcessor::processProcBind(
529529

530530
bool ClauseProcessor::processTileSizes(
531531
lower::pft::Evaluation &eval, mlir::omp::LoopNestOperands &result) const {
532-
bool found = false;
533-
llvm::SmallVector<int64_t> sizeValues;
534532
auto *ompCons{eval.getIf<parser::OpenMPConstruct>()};
535-
collectTileSizesFromOpenMPConstruct(ompCons, sizeValues, semaCtx);
536-
if (sizeValues.size() > 0) {
537-
found = true;
538-
result.tileSizes = sizeValues;
539-
}
540-
return found;
533+
collectTileSizesFromOpenMPConstruct(ompCons, result.tileSizes, semaCtx);
534+
return !result.tileSizes.empty();
541535
}
542536

543537
bool ClauseProcessor::processSafelen(

flang/lib/Lower/OpenMP/Utils.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,7 @@ static void convertLoopBounds(lower::AbstractConverter &converter,
599599
}
600600

601601
/// Populates the sizes vector with values if the given OpenMPConstruct
602-
/// Contains a loop construct with an inner tiling construct.
602+
/// contains a loop construct with an inner tiling construct.
603603
void collectTileSizesFromOpenMPConstruct(
604604
const parser::OpenMPConstruct *ompCons,
605605
llvm::SmallVectorImpl<int64_t> &tileSizes, SemanticsContext &semaCtx) {
@@ -632,6 +632,7 @@ void collectTileSizesFromOpenMPConstruct(
632632
if (const auto v{EvaluateInt64(semaCtx, tval)})
633633
tileSizes.push_back(*v);
634634
}
635+
break;
635636
}
636637
}
637638
}
@@ -685,15 +686,14 @@ int64_t collectLoopRelatedInfo(
685686
if (const auto tclause{
686687
std::get_if<parser::OmpClause::Sizes>(&clause.u)}) {
687688
sizesLengthValue = tclause->v.size();
689+
break;
688690
}
689691
}
690692
}
691693
}
692694
}
693695

694-
collapseValue = collapseValue - sizesLengthValue;
695-
collapseValue =
696-
collapseValue < sizesLengthValue ? sizesLengthValue : collapseValue;
696+
collapseValue = std::max(collapseValue, sizesLengthValue);
697697
std::size_t loopVarTypeSize = 0;
698698
do {
699699
lower::pft::Evaluation *doLoop =

mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,22 +1340,6 @@ class OpenMP_SimdlenClauseSkip<
13401340

13411341
def OpenMP_SimdlenClause : OpenMP_SimdlenClauseSkip<>;
13421342

1343-
//===----------------------------------------------------------------------===//
1344-
// V5.2: [9.1.1] `sizes` clause
1345-
//===----------------------------------------------------------------------===//
1346-
1347-
class OpenMP_TileSizesClauseSkip<
1348-
bit traits = false, bit arguments = false, bit assemblyFormat = false,
1349-
bit description = false, bit extraClassDeclaration = false
1350-
> : OpenMP_Clause<traits, arguments, assemblyFormat, description,
1351-
extraClassDeclaration> {
1352-
let arguments = (ins
1353-
OptionalAttr<DenseI64ArrayAttr>:$tile_sizes
1354-
);
1355-
}
1356-
1357-
def OpenMP_TileSizesClause : OpenMP_TileSizesClauseSkip<>;
1358-
13591343
//===----------------------------------------------------------------------===//
13601344
// V5.2: [5.5.9] `task_reduction` clause
13611345
//===----------------------------------------------------------------------===//
@@ -1418,6 +1402,22 @@ class OpenMP_ThreadLimitClauseSkip<
14181402

14191403
def OpenMP_ThreadLimitClause : OpenMP_ThreadLimitClauseSkip<>;
14201404

1405+
//===----------------------------------------------------------------------===//
1406+
// V5.2: [9.1.1] `sizes` clause
1407+
//===----------------------------------------------------------------------===//
1408+
1409+
class OpenMP_TileSizesClauseSkip<
1410+
bit traits = false, bit arguments = false, bit assemblyFormat = false,
1411+
bit description = false, bit extraClassDeclaration = false
1412+
> : OpenMP_Clause<traits, arguments, assemblyFormat, description,
1413+
extraClassDeclaration> {
1414+
let arguments = (ins
1415+
OptionalAttr<DenseI64ArrayAttr>:$tile_sizes
1416+
);
1417+
}
1418+
1419+
def OpenMP_TileSizesClause : OpenMP_TileSizesClauseSkip<>;
1420+
14211421
//===----------------------------------------------------------------------===//
14221422
// V5.2: [12.1] `untied` clause
14231423
//===----------------------------------------------------------------------===//

mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,6 @@ def LoopNestOp : OpenMP_Op<"loop_nest", traits = [
627627
that should be collapsed (1 if no collapse is done) after any tiling is
628628
performed. The tiling sizes is represented by the tile sizes clause.
629629

630-
631630
The lower and upper bounds specify a half-open range: the range includes the
632631
lower bound but does not include the upper bound. If the `loop_inclusive`
633632
attribute is specified then the upper bound is also included.
@@ -639,7 +638,7 @@ def LoopNestOp : OpenMP_Op<"loop_nest", traits = [
639638
`loop_steps` arguments.
640639

641640
```mlir
642-
omp.loop_nest (%i1, %i2) : i32 = (%c0, %c0) to (%c10, %c10) step (%c1, %c1) collapse(2) tiles(5,5) {
641+
omp.loop_nest (%i1, %i2) : i32 = (%c0, %c0) to (%c10, %c10) step (%c1, %c1) collapse(2) tiles(5,5) {
643642
%a = load %arrA[%i1, %i2] : memref<?x?xf32>
644643
%b = load %arrB[%i1, %i2] : memref<?x?xf32>
645644
%sum = arith.addf %a, %b : f32

mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3046,11 +3046,11 @@ convertOmpLoopNest(Operation &opInst, llvm::IRBuilderBase &builder,
30463046

30473047
// Do tiling.
30483048
if (const auto &tiles = loopOp.getTileSizes()) {
3049-
llvm::Type *IVType = loopInfos.front()->getIndVarType();
3049+
llvm::Type *ivType = loopInfos.front()->getIndVarType();
30503050
SmallVector<llvm::Value *> TileSizes;
30513051

30523052
for (auto tile : tiles.value()) {
3053-
llvm::Value *TileVal = llvm::ConstantInt::get(IVType, tile);
3053+
llvm::Value *TileVal = llvm::ConstantInt::get(ivType, tile);
30543054
TileSizes.push_back(TileVal);
30553055
}
30563056

0 commit comments

Comments
 (0)