Index: llvm/trunk/docs/CommandGuide/llvm-exegesis.rst =================================================================== --- llvm/trunk/docs/CommandGuide/llvm-exegesis.rst +++ llvm/trunk/docs/CommandGuide/llvm-exegesis.rst @@ -190,7 +190,9 @@ .. option:: -mode=[latency|uops|inverse_throughput|analysis] - Specify the run mode. + Specify the run mode. Note that if you pick `analysis` mode, you also need + to specify at least one of the `-analysis-clusters-output-file=` and + `-analysis-inconsistencies-output-file=`. .. option:: -num-repetitions= @@ -205,12 +207,12 @@ .. option:: -analysis-clusters-output-file= If provided, write the analysis clusters as CSV to this file. "-" prints to - stdout. + stdout. By default, this analysis is not run. .. option:: -analysis-inconsistencies-output-file= If non-empty, write inconsistencies found during analysis to this file. `-` - prints to stdout. + prints to stdout. By default, this analysis is not run. .. option:: -analysis-numpoints= Index: llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops-backwards.test =================================================================== --- llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops-backwards.test +++ llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops-backwards.test @@ -1,5 +1,5 @@ # This tests backwards-compatibility of the yaml schema (see PR39082). -# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-inconsistencies-output-file="" -analysis-numpoints=1 | FileCheck %s +# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-numpoints=1 | FileCheck %s # CHECK: cluster_id,opcode_name,config,sched_class,HWPort0,HWPort1,HWPort2,HWPort3,HWPort4,HWPort5,HWPort6,HWPort7,NumMicroOps # CHECK-NEXT: vzeroall Index: llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops-variant.test =================================================================== --- llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops-variant.test +++ llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops-variant.test @@ -1,4 +1,4 @@ -# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-inconsistencies-output-file="" -analysis-numpoints=1 | FileCheck %s +# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-numpoints=1 | FileCheck %s # REQUIRES: asserts # (sched class name is NDEBUG only) Index: llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops.test =================================================================== --- llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops.test +++ llvm/trunk/test/tools/llvm-exegesis/X86/analysis-uops.test @@ -1,4 +1,4 @@ -# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-inconsistencies-output-file="" -analysis-numpoints=1 | FileCheck %s +# RUN: llvm-exegesis -mode=analysis -benchmarks-file=%s -analysis-clusters-output-file=- -analysis-numpoints=1 | FileCheck %s # CHECK: cluster_id,opcode_name,config,sched_class,HWPort0,HWPort1,HWPort2,HWPort3,HWPort4,HWPort5,HWPort6,HWPort7,NumMicroOps # CHECK-NEXT: vzeroall Index: llvm/trunk/tools/llvm-exegesis/llvm-exegesis.cpp =================================================================== --- llvm/trunk/tools/llvm-exegesis/llvm-exegesis.cpp +++ llvm/trunk/tools/llvm-exegesis/llvm-exegesis.cpp @@ -91,10 +91,10 @@ static cl::opt AnalysisClustersOutputFile("analysis-clusters-output-file", cl::desc(""), - cl::init("-")); + cl::init("")); static cl::opt AnalysisInconsistenciesOutputFile("analysis-inconsistencies-output-file", - cl::desc(""), cl::init("-")); + cl::desc(""), cl::init("")); static cl::opt CpuName("mcpu", @@ -404,6 +404,13 @@ if (BenchmarkFile.empty()) llvm::report_fatal_error("--benchmarks-file must be set."); + if (AnalysisClustersOutputFile.empty() && + AnalysisInconsistenciesOutputFile.empty()) { + llvm::report_fatal_error( + "At least one of --analysis-clusters-output-file and " + "--analysis-inconsistencies-output-file must be specified."); + } + llvm::InitializeNativeTarget(); llvm::InitializeNativeTargetAsmPrinter(); llvm::InitializeNativeTargetDisassembler();