Wrap cl::opt flags within passes in a category with the pass name. This improves the help output of tools like mlir-opt.
Example:
dma-generate options:
-dma-fast-mem-capacity - Set fast memory space ...
-dma-fast-mem-space=<uint> - Set fast memory space ...
loop-fusion options:
-fusion-compute-tolerance=<number> - Fractional increase in ...
-fusion-maximal - Enables maximal loop fusion
loop-tile options:
-tile-size=<uint> - Use this tile size for ...
loop-unroll options:
-unroll-factor=<uint> - Use this unroll factor ...
-unroll-full - Fully unroll loops
-unroll-full-threshold=<uint> - Unroll all loops with ...
-unroll-num-reps=<uint> - Unroll innermost loops ...
loop-unroll-jam options:
-unroll-jam-factor=<uint> - Use this unroll jam factor ...
PiperOrigin-RevId: 231019363
diff --git a/mlir/lib/Transforms/DmaGeneration.cpp b/mlir/lib/Transforms/DmaGeneration.cpp
index 0796584..0437fb1 100644
--- a/mlir/lib/Transforms/DmaGeneration.cpp
+++ b/mlir/lib/Transforms/DmaGeneration.cpp
@@ -39,13 +39,17 @@
using namespace mlir;
using llvm::SmallMapVector;
+static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options");
+
static llvm::cl::opt<unsigned> clFastMemorySpace(
"dma-fast-mem-space", llvm::cl::Hidden,
- llvm::cl::desc("Set fast memory space id for DMA generation"));
+ llvm::cl::desc("Set fast memory space id for DMA generation"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<uint64_t> clFastMemoryCapacity(
"dma-fast-mem-capacity", llvm::cl::Hidden,
- llvm::cl::desc("Set fast memory space capacity in KiB"));
+ llvm::cl::desc("Set fast memory space capacity in KiB"),
+ llvm::cl::cat(clOptionsCategory));
namespace {
diff --git a/mlir/lib/Transforms/LoopFusion.cpp b/mlir/lib/Transforms/LoopFusion.cpp
index 0add797..77a4559 100644
--- a/mlir/lib/Transforms/LoopFusion.cpp
+++ b/mlir/lib/Transforms/LoopFusion.cpp
@@ -47,16 +47,20 @@
using namespace mlir;
+static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options");
+
/// Disables fusion profitability check and fuses if valid.
static llvm::cl::opt<bool>
clMaximalLoopFusion("fusion-maximal", llvm::cl::Hidden,
- llvm::cl::desc("Enables maximal loop fusion"));
+ llvm::cl::desc("Enables maximal loop fusion"),
+ llvm::cl::cat(clOptionsCategory));
/// A threshold in percent of additional computation allowed when fusing.
static llvm::cl::opt<double> clFusionAddlComputeTolerance(
"fusion-compute-tolerance", llvm::cl::Hidden,
llvm::cl::desc("Fractional increase in additional"
- "computation tolerated while fusing"));
+ " computation tolerated while fusing"),
+ llvm::cl::cat(clOptionsCategory));
namespace {
diff --git a/mlir/lib/Transforms/LoopTiling.cpp b/mlir/lib/Transforms/LoopTiling.cpp
index ee66c9b..2a4b7bc 100644
--- a/mlir/lib/Transforms/LoopTiling.cpp
+++ b/mlir/lib/Transforms/LoopTiling.cpp
@@ -31,10 +31,15 @@
using namespace mlir;
+#define DEBUG_TYPE "loop-tile"
+
+static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options");
+
// Tile size for all loops.
static llvm::cl::opt<unsigned>
clTileSize("tile-size", llvm::cl::Hidden,
- llvm::cl::desc("Use this tile size for all loops"));
+ llvm::cl::desc("Use this tile size for all loops"),
+ llvm::cl::cat(clOptionsCategory));
namespace {
diff --git a/mlir/lib/Transforms/LoopUnroll.cpp b/mlir/lib/Transforms/LoopUnroll.cpp
index 554fbc2..39ef758 100644
--- a/mlir/lib/Transforms/LoopUnroll.cpp
+++ b/mlir/lib/Transforms/LoopUnroll.cpp
@@ -35,22 +35,30 @@
using namespace mlir;
+#define DEBUG_TYPE "loop-unroll"
+
+static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options");
+
// Loop unrolling factor.
static llvm::cl::opt<unsigned> clUnrollFactor(
"unroll-factor", llvm::cl::Hidden,
- llvm::cl::desc("Use this unroll factor for all loops being unrolled"));
+ llvm::cl::desc("Use this unroll factor for all loops being unrolled"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<bool> clUnrollFull("unroll-full", llvm::cl::Hidden,
- llvm::cl::desc("Fully unroll loops"));
+ llvm::cl::desc("Fully unroll loops"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<unsigned> clUnrollNumRepetitions(
"unroll-num-reps", llvm::cl::Hidden,
- llvm::cl::desc("Unroll innermost loops repeatedly this many times"));
+ llvm::cl::desc("Unroll innermost loops repeatedly this many times"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<unsigned> clUnrollFullThreshold(
"unroll-full-threshold", llvm::cl::Hidden,
llvm::cl::desc(
- "Unroll all loops with trip count less than or equal to this"));
+ "Unroll all loops with trip count less than or equal to this"),
+ llvm::cl::cat(clOptionsCategory));
namespace {
/// Loop unrolling pass. Unrolls all innermost loops unless full unrolling and a
diff --git a/mlir/lib/Transforms/LoopUnrollAndJam.cpp b/mlir/lib/Transforms/LoopUnrollAndJam.cpp
index d0cf278..71d7781 100644
--- a/mlir/lib/Transforms/LoopUnrollAndJam.cpp
+++ b/mlir/lib/Transforms/LoopUnrollAndJam.cpp
@@ -57,11 +57,16 @@
using namespace mlir;
+#define DEBUG_TYPE "loop-unroll-jam"
+
+static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options");
+
// Loop unroll and jam factor.
static llvm::cl::opt<unsigned>
clUnrollJamFactor("unroll-jam-factor", llvm::cl::Hidden,
llvm::cl::desc("Use this unroll jam factor for all loops"
- " (default 4)"));
+ " (default 4)"),
+ llvm::cl::cat(clOptionsCategory));
namespace {
/// Loop unroll jam pass. Currently, this just unroll jams the first
diff --git a/mlir/lib/Transforms/Vectorization/VectorizerTestPass.cpp b/mlir/lib/Transforms/Vectorization/VectorizerTestPass.cpp
index ad966e8..c08ffd4 100644
--- a/mlir/lib/Transforms/Vectorization/VectorizerTestPass.cpp
+++ b/mlir/lib/Transforms/Vectorization/VectorizerTestPass.cpp
@@ -43,36 +43,41 @@
using functional::map;
+static llvm::cl::OptionCategory clOptionsCategory(DEBUG_TYPE " options");
+
static llvm::cl::list<int> clTestVectorShapeRatio(
"vector-shape-ratio",
llvm::cl::desc("Specify the HW vector size for vectorization"),
- llvm::cl::ZeroOrMore);
+ llvm::cl::ZeroOrMore, llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<bool> clTestForwardSlicingAnalysis(
"forward-slicing",
- llvm::cl::desc(
- "Specify to enable testing forward static slicing and topological sort "
- "functionalities"));
+ llvm::cl::desc("Enable testing forward static slicing and topological sort "
+ "functionalities"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<bool> clTestBackwardSlicingAnalysis(
"backward-slicing",
- llvm::cl::desc("Specify to enable testing backward static slicing and "
- "topological sort functionalities"));
+ llvm::cl::desc("Enable testing backward static slicing and "
+ "topological sort functionalities"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<bool> clTestSlicingAnalysis(
"slicing",
- llvm::cl::desc(
- "Specify to enable testing static slicing and topological sort "
- "functionalities"));
+ llvm::cl::desc("Enable testing static slicing and topological sort "
+ "functionalities"),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<bool> clTestComposeMaps(
"compose-maps",
llvm::cl::desc(
- "Specify to enable testing the composition of AffineMap where each "
+ "Enable testing the composition of AffineMap where each "
"AffineMap in the composition is specified as the affine_map attribute "
- "in a constant op."));
+ "in a constant op."),
+ llvm::cl::cat(clOptionsCategory));
static llvm::cl::opt<bool> clTestNormalizeMaps(
"normalize-maps",
llvm::cl::desc(
- "Specify to enable testing the normalization of AffineAffineApplyOp "
+ "Enable testing the normalization of AffineAffineApplyOp "
"where each AffineAffineApplyOp in the composition is a single output "
- "instruction."));
+ "instruction."),
+ llvm::cl::cat(clOptionsCategory));
namespace {
diff --git a/mlir/lib/Transforms/Vectorize.cpp b/mlir/lib/Transforms/Vectorize.cpp
index 3ad82fa..29a9799 100644
--- a/mlir/lib/Transforms/Vectorize.cpp
+++ b/mlir/lib/Transforms/Vectorize.cpp
@@ -547,10 +547,12 @@
using llvm::DenseSet;
using llvm::SetVector;
+static llvm::cl::OptionCategory clOptionsCategory("vectorize options");
+
static llvm::cl::list<int> clVirtualVectorSize(
"virtual-vector-size",
llvm::cl::desc("Specify n-D virtual vector size for early vectorization"),
- llvm::cl::ZeroOrMore);
+ llvm::cl::ZeroOrMore, llvm::cl::cat(clOptionsCategory));
static llvm::cl::list<int> clFastestVaryingPattern(
"test-fastest-varying",
@@ -558,7 +560,7 @@
"Specify a 1-D, 2-D or 3-D pattern of fastest varying memory"
" dimensions to match. See defaultPatterns in Vectorize.cpp for a"
" description and examples. This is used for testing purposes"),
- llvm::cl::ZeroOrMore);
+ llvm::cl::ZeroOrMore, llvm::cl::cat(clOptionsCategory));
/// Forward declaration.
static FilterFunctionType