summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/lib/CMakeLists.txt
Commit message (Collapse)AuthorAgeFilesLines
* [Mips][llvm-exegesis] Add a Mips targetSimon Atanasyan2019-10-111-0/+4
| | | | | | | | | | | The target does just enough to be able to run llvm-exegesis in latency mode for at least some opcodes. Patch by Miloš Stojanović. Differential Revision: https://reviews.llvm.org/D68649 llvm-svn: 374590
* [llvm-exegesis/lib] Fix missing linkage to MCParserMichal Gorny2019-10-011-0/+1
| | | | | | | | | | | Otherwise, shared-lib build fails with: lib64/libLLVMExegesis.a(SnippetFile.cpp.o): In function `llvm::exegesis::readSnippets(llvm::exegesis::LLVMState const&, llvm::StringRef)': SnippetFile.cpp:(.text._ZN4llvm8exegesis12readSnippetsERKNS0_9LLVMStateENS_9StringRefE+0x31f): undefined reference to `llvm::createMCAsmParser(llvm::SourceMgr&, llvm::MCContext&, llvm::MCStreamer&, llvm::MCAsmInfo const&, unsigned int)' SnippetFile.cpp:(.text._ZN4llvm8exegesis12readSnippetsERKNS0_9LLVMStateENS_9StringRefE+0x41c): undefined reference to `llvm::MCAsmParser::setTargetParser(llvm::MCTargetAsmParser&)' collect2: error: ld returned 1 exit status llvm-svn: 373332
* [llvm-exegesis][NFC] Refactor snippet file reading out of tool main.Clement Courbet2019-09-301-0/+1
| | | | | | | | | | | | | | Summary: Add unit tests. Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68212 llvm-svn: 373202
* [llvm-exegesis] Add loop mode for repeating the snippet.Clement Courbet2019-09-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Before this change the Executable function was made by duplicating the snippet. This change adds a --repetion-mode={loop|duplicate} flag that allows choosing between this behaviour and wrapping the snippet instructions in a loop. The new mode can help measurements when the snippet fits in the DSB by short-cirtcuiting decoding. The loop adds a dec + jmp to the measurements, but since these are not part of the critical path, they execute in parallel with the measured code and do not impact measurements in practice. Overview of the change: - New SnippetRepetitor abstraction that handles repeating the snippet. The assembler delegates repeating the instructions to this class. - ExegesisTarget learns how to decrement loop counter and jump. - Some refactoring of the assembler into FunctionFiller/BasicBlockFiller. Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D68125 llvm-svn: 373083
* [NFC][llvm-exegesis] Refactor ResolvedSchedClass & friendsRoman Lebedev2019-03-291-1/+2
| | | | | | | | | | | | | | | | | | | | | Summary: `ResolvedSchedClass` will need to be used outside of `Analysis` (before `InstructionBenchmarkClustering` even), therefore promote it into a non-private top-level class, and while there also move all of the functions that are only called by `ResolvedSchedClass` into that same new file. Reviewers: courbet, gchatelet Reviewed By: courbet Subscribers: mgorny, tschuett, mgrang, jdoerfert, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59993 llvm-svn: 357259
* [PowerPC][llvm-exegesis] Add a PowerPC targetJinsong Ji2018-11-081-0/+4
| | | | | | | | | This is patch to add PowerPC target to llvm-exegesis. The target does just enough to be able to run llvm-exegesis in latency mode for at least some opcodes. Differential Revision: https://reviews.llvm.org/D54185 llvm-svn: 346411
* Revert "[llvm-exegesis] Add a snippet generator to generate snippets to ↵Clement Courbet2018-11-081-1/+0
| | | | | | | | compute ROB sizes." This reverts accidental commit rL346394. llvm-svn: 346398
* [llvm-exegesis] Add a snippet generator to generate snippets to compute ROB ↵Clement Courbet2018-11-081-0/+1
| | | | | | sizes. llvm-svn: 346394
* [llvm-exegesis][NFC] Move CodeTemplate to it's own file.Guillaume Chatelet2018-09-261-0/+1
| | | | | | | | | | | | | | Summary: This is is preparation of exploring value ranges. Reviewers: courbet Reviewed By: courbet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52542 llvm-svn: 343098
* [llvm-exegesis] Fix PR39021.Clement Courbet2018-09-241-2/+6
| | | | | | | | | | | | | | Summary: The `set` statements was incorrectly reading the value of the local variable and setting the value of the parent variable. Reviewers: tycho, gchatelet, john.brawn Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52343 llvm-svn: 342865
* [llvm-exegesis] Add predefined floating point values so we can test impact ↵Guillaume Chatelet2018-09-171-0/+1
| | | | | | | | | | | | | | of special values on latency. Summary: This will be useful to generate many configurations and test instruction regimes (NaN, Inf, subnormal, normal). Reviewers: courbet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D51858 llvm-svn: 342369
* Revert r342148 (and follow-on fix attempts r342154, r342180, r342182, r342193)Nico Weber2018-09-151-14/+12
| | | | | | | Many bots buildling with make have been broken for several days, e.g. http://lab.llvm.org:8011/builders/lld-x86_64-darwin13 llvm-svn: 342336
* [cmake] Fix missing DEPENDS.Richard Diamond2018-09-131-0/+3
| | | | | | Not sure how I didn't catch this. llvm-svn: 342154
* Renovate CMake files in the `llvm-(cfi-verify|exegesis|mca)` tools.Richard Diamond2018-09-131-12/+11
| | | | llvm-svn: 342148
* [llvm-exegesis][NFC] Split BenchmarkRunner classClement Courbet2018-09-131-0/+1
| | | | | | | | | | | | | | | Summary: The snippet-generation part goes to the SnippetGenerator class. This will allow benchmarking arbitrary code (see PR38437). Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D51979 llvm-svn: 342117
* [llvm-exegesis] Add an AArch64 targetJohn Brawn2018-07-031-0/+4
| | | | | | | | | The target does just enough to be able to run llvm-exegesis in latency mode for at least some opcodes. Differential Revision: https://reviews.llvm.org/D48780 llvm-svn: 336187
* [llvm-exegesis] Change how the native architecture is determinedJohn Brawn2018-07-021-0/+1
| | | | | | | | | | | | Currently the llvm-exegesis native architecture is determined by comparing the llvm native architecture with X86, so to add a new target would mean adding a new check. Change this to building up a list of the targets llvm-exegesis supports then using that, as this means that when adding a new target you just add the target to the list of supported targets. Differential Revision: https://reviews.llvm.org/D48778 llvm-svn: 336105
* [llvm-exegesis] Get the BenchmarkRunner from the ExegesisTarget.Clement Courbet2018-06-261-1/+0
| | | | | | | | | | | | | | | Summary: This allows targets to override code generation for some instructions. As an example of override, this also moves ad-hoc instruction filtering for X86 into the X86 ExegesisTarget. Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48587 llvm-svn: 335582
* Re-land r335038 "[llvm-exegesis] A mechanism to add target-specific ↵Clement Courbet2018-06-191-0/+5
| | | | | | | | functionality."" Fix typo: LLVM_NATIVE_ARCH -> LLVM_EXEGESIS_NATIVE_ARCH. llvm-svn: 335041
* Revert r335038 "[llvm-exegesis] A mechanism to add target-specific ↵Clement Courbet2018-06-191-5/+0
| | | | | | | | functionality." Breaks buildbots. llvm-svn: 335040
* [llvm-exegesis] A mechanism to add target-specific functionality.Clement Courbet2018-06-191-0/+5
| | | | | | | | | | | | Summary: This is a step towards implementing memory operands and X87. Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48210 llvm-svn: 335038
* [llvm-exegesis] Print the whole snippet in analysis.Clement Courbet2018-06-151-0/+2
| | | | | | | | | | | | | | | | | Summary: On hover, the whole asm snippet is displayed, including operands. This requires the actual assembly output instead of just the MCInsts: This is because some pseudo-instructions get lowered to actual target instructions during codegen (e.g. ABS_Fp32 -> SSE or X87). Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48164 llvm-svn: 334805
* [llvm-exegesis] Move libpfm linking to LLVMExegesis.Guillaume Chatelet2018-06-121-0/+4
| | | | | | | | | | | | Summary: This patch moves linking of libpfm from different places to a single one. Reviewers: courbet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48075 llvm-svn: 334499
* reland r332579: [llvm-exegesis] Update to cover latency through another opcode.Clement Courbet2018-05-171-3/+3
| | | | | | | | | | | | | | Restructuring the code to measure latency and uops. The end goal is to have this program spawn another process to deal with SIGILL and other malformed programs. It is not yet the case in this redesign, it is still the main program that runs the code (and may crash). It now uses BitVector instead of Graph for performance reasons. https://reviews.llvm.org/D46821 (with fixed ARM tests) Authored by Guillaume Chatelet llvm-svn: 332592
* Revert r332579 "[llvm-exegesis] Update to cover latency through another opcode."Clement Courbet2018-05-171-3/+3
| | | | | | The revision failed to update the ARM tests. llvm-svn: 332580
* [llvm-exegesis] Update to cover latency through another opcode.Clement Courbet2018-05-171-3/+3
| | | | | | | | | | | | Restructuring the code to measure latency and uops. The end goal is to have this program spawn another process to deal with SIGILL and other malformed programs. It is not yet the case in this redesign, it is still the main program that runs the code (and may crash). It now uses BitVector instead of Graph for performance reasons. https://reviews.llvm.org/D46821 Authored by Guillaume Chatelet llvm-svn: 332579
* [llvm-exegesis] Add an analysis mode.Clement Courbet2018-05-151-0/+1
| | | | | | | | | | | | | | | | Summary: The analysis mode gives the user a clustered view of the measurement results. Next steps are (requires the split ok AsmTemplate.Name into {mnemonic, mode}): - Show the sched class. - Highlight any inconsistencies with the checked-in data. Reviewers: gchatelet Subscribers: mgorny, llvm-commits, tschuett Differential Revision: https://reviews.llvm.org/D46865 llvm-svn: 332344
* [llvm-exegesis] InMemoryAssembler: handle return-less targets (e.g. arm).Clement Courbet2018-05-151-0/+1
| | | | | | | | | | | | Summary: Arm does not have a ret code per se. Reviewers: gchatelet Subscribers: mgorny, javed.absar, kristof.beyls, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D45672 llvm-svn: 332331
* [llvm-exegesis] Revert accidentally commited code.Clement Courbet2018-05-141-1/+0
| | | | llvm-svn: 332231
* [llvm-exegesis] Add an analysis mode.Clement Courbet2018-05-141-0/+1
| | | | | | | The analysis mode gives the user a clustered view of the measurement results and highlights any inconsistencies with the checked-in data. llvm-svn: 332229
* Re-land r331622 "[llvm-exegesis] Add a library to cluster benchmark results."Clement Courbet2018-05-071-0/+1
| | | | | | Add missing move. llvm-svn: 331624
* Revert r331622 "[llvm-exegesis] Add a library to cluster benchmark results."Clement Courbet2018-05-071-1/+0
| | | | | | Breaks build over llvm::Error copy construction. llvm-svn: 331623
* [llvm-exegesis] Add a library to cluster benchmark results.Clement Courbet2018-05-071-0/+1
| | | | | | | | | | Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D46432 llvm-svn: 331622
* [llvm-exegesis] Add missing link libraries.Clement Courbet2018-04-041-0/+3
| | | | llvm-svn: 329185
* Re-land r329156 "Add llvm-exegesis tool."Clement Courbet2018-04-041-0/+25
| | | | | | Fixed to depend on and initialize the native target instead of X86. llvm-svn: 329169
* Revert r329156 "Add llvm-exegesis tool."Clement Courbet2018-04-041-25/+0
| | | | | | Breaks a bunch of bots. llvm-svn: 329157
* Add llvm-exegesis tool.Clement Courbet2018-04-041-0/+25
Summary: [llvm-exegesis][RFC] Automatic Measurement of Instruction Latency/Uops This is the code corresponding to the RFC "llvm-exegesis Automatic Measurement of Instruction Latency/Uops". The RFC is available on the LLVM mailing lists as well as the following document for easier reading: https://docs.google.com/document/d/1QidaJMJUyQdRrFKD66vE1_N55whe0coQ3h1GpFzz27M/edit?usp=sharing Subscribers: mgorny, gchatelet, orwant, llvm-commits Differential Revision: https://reviews.llvm.org/D44519 llvm-svn: 329156
OpenPOWER on IntegriCloud