diff options
| -rw-r--r-- | mlir/include/mlir/Support/Timing.h | 5 | ||||
| -rw-r--r-- | mlir/lib/Support/Timing.cpp | 18 |
2 files changed, 17 insertions, 6 deletions
diff --git a/mlir/include/mlir/Support/Timing.h b/mlir/include/mlir/Support/Timing.h index 3d61a0a..50ae847 100644 --- a/mlir/include/mlir/Support/Timing.h +++ b/mlir/include/mlir/Support/Timing.h @@ -473,6 +473,11 @@ void registerDefaultTimingManagerCLOptions(); /// 'registerDefaultTimingManagerOptions' to a `DefaultTimingManager`. void applyDefaultTimingManagerCLOptions(DefaultTimingManager &tm); +/// Create an output strategy for the specified format, to be passed to +/// DefaultTimingManager::setOutput(). +std::unique_ptr<OutputStrategy> +createOutputStrategy(DefaultTimingManager::OutputFormat fmt, raw_ostream &os); + } // namespace mlir #endif // MLIR_SUPPORT_TIMING_H diff --git a/mlir/lib/Support/Timing.cpp b/mlir/lib/Support/Timing.cpp index 2e92d9c..b0ac379 100644 --- a/mlir/lib/Support/Timing.cpp +++ b/mlir/lib/Support/Timing.cpp @@ -619,11 +619,17 @@ void mlir::applyDefaultTimingManagerCLOptions(DefaultTimingManager &tm) { return; tm.setEnabled(options->timing); tm.setDisplayMode(options->displayMode); + tm.setOutput(createOutputStrategy(options->outputFormat, llvm::errs())); +} - std::unique_ptr<OutputStrategy> printer; - if (options->outputFormat == OutputFormat::Text) - printer = std::make_unique<OutputTextStrategy>(llvm::errs()); - else if (options->outputFormat == OutputFormat::Json) - printer = std::make_unique<OutputJsonStrategy>(llvm::errs()); - tm.setOutput(std::move(printer)); +std::unique_ptr<OutputStrategy> +mlir::createOutputStrategy(DefaultTimingManager::OutputFormat fmt, + raw_ostream &os) { + switch (fmt) { + case OutputFormat::Text: + return std::make_unique<OutputTextStrategy>(os); + case OutputFormat::Json: + return std::make_unique<OutputJsonStrategy>(os); + } + llvm_unreachable("Invalid output format"); } |
