forked from OSchip/llvm-project
[llvm-exegesis] Optionally ignore instructions without a sched class.
Summary: See PR37602. Reviewers: RKSimon Subscribers: llvm-commits, tschuett Differential Revision: https://reviews.llvm.org/D48267 llvm-svn: 334932
This commit is contained in:
parent
d521c4353e
commit
e752fd65e8
|
@ -174,6 +174,10 @@ OPTIONS
|
|||
Specify the numPoints parameters to be used for DBSCAN clustering
|
||||
(`analysis` mode).
|
||||
|
||||
.. option:: -ignore-invalid-sched-class=false
|
||||
|
||||
If set, ignore instructions that do not have a sched class (class idx = 0).
|
||||
|
||||
|
||||
EXIT STATUS
|
||||
-----------
|
||||
|
|
|
@ -60,6 +60,11 @@ static llvm::cl::opt<unsigned>
|
|||
llvm::cl::desc("number of time to repeat the asm snippet"),
|
||||
llvm::cl::init(10000));
|
||||
|
||||
static llvm::cl::opt<bool> IgnoreInvalidSchedClass(
|
||||
"ignore-invalid-sched-class",
|
||||
llvm::cl::desc("ignore instructions that do not define a sched class"),
|
||||
llvm::cl::init(false));
|
||||
|
||||
static llvm::cl::opt<unsigned> AnalysisNumPoints(
|
||||
"analysis-numpoints",
|
||||
llvm::cl::desc("minimum number of points in an analysis cluster"),
|
||||
|
@ -120,6 +125,15 @@ void benchmarkMain() {
|
|||
X86Filter Filter;
|
||||
|
||||
const LLVMState State;
|
||||
const auto Opcode = GetOpcodeOrDie(State.getInstrInfo());
|
||||
|
||||
// Ignore instructions without a sched class if -ignore-invalid-sched-class is
|
||||
// passed.
|
||||
if (IgnoreInvalidSchedClass &&
|
||||
State.getInstrInfo().get(Opcode).getSchedClass() == 0) {
|
||||
llvm::errs() << "ignoring instruction without sched class\n";
|
||||
return;
|
||||
}
|
||||
|
||||
// FIXME: Do not require SchedModel for latency.
|
||||
if (!State.getSubtargetInfo().getSchedModel().hasExtraProcessorInfo())
|
||||
|
@ -145,8 +159,8 @@ void benchmarkMain() {
|
|||
BenchmarkFile = "-";
|
||||
|
||||
const BenchmarkResultContext Context = getBenchmarkResultContext(State);
|
||||
std::vector<InstructionBenchmark> Results = ExitOnErr(Runner->run(
|
||||
GetOpcodeOrDie(State.getInstrInfo()), Filter, NumRepetitions));
|
||||
std::vector<InstructionBenchmark> Results =
|
||||
ExitOnErr(Runner->run(Opcode, Filter, NumRepetitions));
|
||||
for (InstructionBenchmark &Result : Results)
|
||||
ExitOnErr(Result.writeYaml(Context, BenchmarkFile));
|
||||
|
||||
|
|
Loading…
Reference in New Issue