summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/llvm-exegesis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools/llvm-exegesis/llvm-exegesis.cpp')
-rw-r--r--llvm/tools/llvm-exegesis/llvm-exegesis.cpp115
1 files changed, 0 insertions, 115 deletions
diff --git a/llvm/tools/llvm-exegesis/llvm-exegesis.cpp b/llvm/tools/llvm-exegesis/llvm-exegesis.cpp
deleted file mode 100644
index f71f99469d1..00000000000
--- a/llvm/tools/llvm-exegesis/llvm-exegesis.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//===-- llvm-exegesis.cpp ---------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-///
-/// \file
-/// Measures execution properties (latencies/uops) of an instruction.
-///
-//===----------------------------------------------------------------------===//
-
-#include "lib/BenchmarkResult.h"
-#include "lib/BenchmarkRunner.h"
-#include "lib/Latency.h"
-#include "lib/LlvmState.h"
-#include "lib/PerfHelper.h"
-#include "lib/Uops.h"
-#include "lib/X86.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ADT/Twine.h"
-#include "llvm/MC/MCInstBuilder.h"
-#include "llvm/MC/MCRegisterInfo.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/Path.h"
-#include <algorithm>
-#include <random>
-#include <string>
-#include <unordered_map>
-
-static llvm::cl::opt<unsigned>
- OpcodeIndex("opcode-index", llvm::cl::desc("opcode to measure, by index"),
- llvm::cl::init(0));
-
-static llvm::cl::opt<std::string>
- OpcodeName("opcode-name", llvm::cl::desc("opcode to measure, by name"),
- llvm::cl::init(""));
-
-enum class BenchmarkModeE { Latency, Uops };
-static llvm::cl::opt<BenchmarkModeE>
- BenchmarkMode("benchmark-mode", llvm::cl::desc("the benchmark mode to run"),
- llvm::cl::values(clEnumValN(BenchmarkModeE::Latency,
- "latency", "Instruction Latency"),
- clEnumValN(BenchmarkModeE::Uops, "uops",
- "Uop Decomposition")));
-
-static llvm::cl::opt<unsigned>
- NumRepetitions("num-repetitions",
- llvm::cl::desc("number of time to repeat the asm snippet"),
- llvm::cl::init(10000));
-
-namespace exegesis {
-
-void main() {
- if (OpcodeName.empty() == (OpcodeIndex == 0)) {
- llvm::report_fatal_error(
- "please provide one and only one of 'opcode-index' or 'opcode-name' ");
- }
-
- LLVMInitializeX86Target();
- LLVMInitializeX86TargetInfo();
- LLVMInitializeX86TargetMC();
- LLVMInitializeX86AsmPrinter();
-
- // FIXME: Target-specific filter.
- X86Filter Filter;
-
- const LLVMState State;
-
- unsigned Opcode = OpcodeIndex;
- if (Opcode == 0) {
- // Resolve opcode name -> opcode.
- for (unsigned I = 0, E = State.getInstrInfo().getNumOpcodes(); I < E; ++I) {
- if (State.getInstrInfo().getName(I) == OpcodeName) {
- Opcode = I;
- break;
- }
- }
- if (Opcode == 0) {
- llvm::report_fatal_error(
- llvm::Twine("unknown opcode ").concat(OpcodeName));
- }
- }
-
- std::unique_ptr<BenchmarkRunner> Runner;
- switch (BenchmarkMode) {
- case BenchmarkModeE::Latency:
- Runner = llvm::make_unique<LatencyBenchmarkRunner>();
- break;
- case BenchmarkModeE::Uops:
- Runner = llvm::make_unique<UopsBenchmarkRunner>();
- break;
- }
-
- Runner->run(State, Opcode, NumRepetitions > 0 ? NumRepetitions : 1, Filter)
- .writeYamlOrDie("-");
-}
-
-} // namespace exegesis
-
-int main(int Argc, char **Argv) {
- llvm::cl::ParseCommandLineOptions(Argc, Argv, "");
-
- if (exegesis::pfm::pfmInitialize()) {
- llvm::errs() << "cannot initialize libpfm\n";
- return EXIT_FAILURE;
- }
-
- exegesis::main();
-
- exegesis::pfm::pfmTerminate();
- return EXIT_SUCCESS;
-}
OpenPOWER on IntegriCloud