summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis
Commit message (Collapse)AuthorAgeFilesLines
...
* [llvm-exegesis] Output the unscaled value as well as the scaled one.Clement Courbet2018-09-2611-31/+45
| | | | | | | | | | | | Summary: See PR38936 for context. Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52500 llvm-svn: 343081
* [llvm-exegesis] Serializes registers initial values.Guillaume Chatelet2018-09-253-20/+70
| | | | | | | | | | | | Summary: Adds the registers initial values to the YAML output of llvm-exegesis. Reviewers: courbet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52460 llvm-svn: 342982
* [llvm-exegesis] Fix missing document separator in YAML output.Guillaume Chatelet2018-09-251-0/+2
| | | | | | | | | | Reviewers: courbet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52496 llvm-svn: 342981
* [llvm-exegesis] Add lit tests (v2).Clement Courbet2018-09-251-4/+2
| | | | | | | | | | | | Summary: This revisits rL342953 by adding detection of host support. Reviewers: gchatelet, lebedev.ri, alexshap Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52464 llvm-svn: 342975
* [llvm-exegesis][NFC] Rewrite of the YAML serialization.Guillaume Chatelet2018-09-253-201/+156
| | | | | | | | | | | | | | Summary: This is a NFC in preparation of exporting the initial registers as part of the YAML dump Reviewers: courbet Reviewed By: courbet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52427 llvm-svn: 342967
* [llvm-exegesis] Add MCParser to LLVM_LINK_COMPONENTSHeejin Ahn2018-09-251-1/+1
| | | | | | We need this to make builds with `-DBUILD_SHARED_LIBS=ON` work. llvm-svn: 342952
* [llvm-exegesis] Allow benchmarking arbitrary code snippets.Clement Courbet2018-09-255-55/+229
| | | | | | | | | | | | | | | | | Summary: This is a step towards fixing PR38048. Note that right now the measurements are given per instruction. We'll need to give measurements a per code snippet and update the analysis (PR38731). Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D52041 llvm-svn: 342947
* [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] Improve Register Setup (roll forward of D51856).Guillaume Chatelet2018-09-2010-157/+151
| | | | | | | | | | | | | | Summary: Added function to set a register to a particular value + tests. Add EFLAGS test, use new setRegTo instead of setRegToConstant. Reviewers: courbet, javed.absar Subscribers: llvm-commits, tschuett, mgorny Differential Revision: https://reviews.llvm.org/D52297 llvm-svn: 342644
* Revert rL342465: Added function to set a register to a particular value + tests.Simon Pilgrim2018-09-185-69/+99
| | | | | | rL342465 is breaking the MSVC buildbots. llvm-svn: 342490
* Revert rL342466: [llvm-exegesis] Improve Register Setup.Simon Pilgrim2018-09-1810-118/+95
| | | | | | | | | | | | | | | | rL342465 is breaking the MSVC buildbots, but I need to revert this dependent revision as well. Summary: Added function to set a register to a particular value + tests. Add EFLAGS test, use new setRegTo instead of setRegToConstant. Reviewers: courbet, javed.absar Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D51856 llvm-svn: 342489
* [llvm-exegesis] Improve Register Setup.Guillaume Chatelet2018-09-1810-95/+118
| | | | | | | | | | | | | | Summary: Added function to set a register to a particular value + tests. Add EFLAGS test, use new setRegTo instead of setRegToConstant. Reviewers: courbet, javed.absar Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D51856 llvm-svn: 342466
* Added function to set a register to a particular value + tests.Guillaume Chatelet2018-09-185-99/+69
| | | | llvm-svn: 342465
* Improve Register SetupGuillaume Chatelet2018-09-184-57/+174
| | | | llvm-svn: 342464
* Fix "not all control paths return a value" MSVC warning. NFCI.Simon Pilgrim2018-09-171-0/+1
| | | | llvm-svn: 342394
* [llvm-exegesis] Add predefined floating point values so we can test impact ↵Guillaume Chatelet2018-09-173-0/+87
| | | | | | | | | | | | | | 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-154-32/+28
| | | | | | | 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
* [llvm-exegesis] Add missing MC dependency to CMakeLists.txtSam Clegg2018-09-131-0/+1
| | | | | | | | | | | See rL342148 This probably only shows up in BUILD_SHARED_LIBS=ON builds which might explain how it crept in. Differential Revision: https://reviews.llvm.org/D52054 llvm-svn: 342180
* [cmake] Fix missing DEPENDS.Richard Diamond2018-09-134-0/+12
| | | | | | 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-133-28/+19
| | | | llvm-svn: 342148
* [llvm-exegesis][NFC] Remove dead parameter.Clement Courbet2018-09-131-3/+2
| | | | llvm-svn: 342118
* [llvm-exegesis][NFC] Split BenchmarkRunner classClement Courbet2018-09-1314-210/+372
| | | | | | | | | | | | | | | 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][NFC]Remove dead function parameterClement Courbet2018-09-122-3/+2
| | | | llvm-svn: 342035
* [llvm-exegesis] Ignore double spaced separators in asm stringsSimon Pilgrim2018-09-101-1/+1
| | | | | | | | Some asm has double spaces between operands, the deserializer was keeping these empty split pieces, causing assertions later on: 'ADC16mi RDI i_0x1x i_0x0x i_0x1x' llvm-svn: 341799
* [llvm-exegesis] Renaming classes and functions.Guillaume Chatelet2018-08-039-181/+174
| | | | | | | | | | | | Summary: Functional No Op. Reviewers: gchatelet Subscribers: tschuett, courbet, llvm-commits Differential Revision: https://reviews.llvm.org/D50231 llvm-svn: 338836
* [llvm-exegesis] Rename InstructionInstance into InstructionBuilder.Guillaume Chatelet2018-08-029-82/+82
| | | | | | | | | | Summary: Non functional change. Subscribers: tschuett, courbet, llvm-commits Differential Revision: https://reviews.llvm.org/D50176 llvm-svn: 338701
* [llvm-exegesis] Provide a way to handle memory instructions.Guillaume Chatelet2018-08-0114-56/+271
| | | | | | | | | | | | | | | | | Summary: And implement memory instructions on X86. This fixes PR36906. Reviewers: gchatelet Reviewed By: gchatelet Subscribers: lebedev.ri, filcab, mgorny, tschuett, RKSimon, llvm-commits Differential Revision: https://reviews.llvm.org/D48935 llvm-svn: 338567
* [llvm-exegesis] Add uop computation for more X87 instruction classes.Clement Courbet2018-07-054-70/+85
| | | | | | | | | | | | | | Summary: This allows measuring comparisons (UCOM_FpIr32,UCOM_Fpr32,...), conditional moves (CMOVBE_Fp32,...) Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48713 llvm-svn: 336352
* [llvm-exegesis][NFC]clang-formatClement Courbet2018-07-051-7/+7
| | | | llvm-svn: 336343
* [llvm-exegesis] Remove dead comment.Clement Courbet2018-07-041-2/+0
| | | | llvm-svn: 336266
* [llvm-exegesis] Add an AArch64 targetJohn Brawn2018-07-034-0/+98
| | | | | | | | | 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] ExegisX86Target::setRegToConstant() should depend on the ↵Clement Courbet2018-07-033-12/+28
| | | | | | | | | | | | | | subtarget features. Summary: This fixes PR38008. Reviewers: gchatelet, RKSimon Subscribers: tschuett, craig.topper, llvm-commits Differential Revision: https://reviews.llvm.org/D48820 llvm-svn: 336171
* [llvm-exegesis] Change how the native architecture is determinedJohn Brawn2018-07-022-2/+3
| | | | | | | | | | | | 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] Delegate the decision of cycle counter name to the targetJohn Brawn2018-07-023-9/+16
| | | | | | | | | | | Currently the cycle counter is taken from the subtarget schedule model, which isn't any use if the subtarget doesn't have one. Delegate the decision to the target benchmark runner, as it may know better what to do in that case, with the default being the current behaviour. Differential Revision: https://reviews.llvm.org/D48779 llvm-svn: 336099
* [llvm-exegesis][NFC] Cleanup useless braces.Clement Courbet2018-07-021-16/+8
| | | | llvm-svn: 336076
* [llvm-exegesis] Add partial X87 support.Clement Courbet2018-06-285-69/+135
| | | | | | | | | | | | | | Summary: This enables the X86-specific X86FloatingPointStackifierPass, and allow llvm-exegesis to generate and measure X87 latency/uops for some FP ops. Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48592 llvm-svn: 335815
* [llvm-exegesis][NFC] Fix windows warning in rL335465.Clement Courbet2018-06-261-1/+1
| | | | llvm-svn: 335591
* [llvm-exegesis] Get the BenchmarkRunner from the ExegesisTarget.Clement Courbet2018-06-2617-162/+177
| | | | | | | | | | | | | | | 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
* [llvm-exegesis][NFC] Remove unnecessary member variables.Clement Courbet2018-06-254-12/+9
| | | | llvm-svn: 335470
* [llvm-exegesis] Fix warning in r22752: Initialize IsSnippetSetupComplete.Clement Courbet2018-06-251-1/+1
| | | | llvm-svn: 335467
* [llvm-exegesis] Generate snippet setup code.Clement Courbet2018-06-2510-23/+220
| | | | | | | | | | | | | | | Summary: This ensures that the snippet always sees the same values for registers, making measurements reproducible. This will also allow exploring different values. Reviewers: gchatelet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48542 llvm-svn: 335465
* [llvm-exegesis][NFC] Simplify BenchmarkRunner ctor.Clement Courbet2018-06-251-2/+1
| | | | llvm-svn: 335456
* [llvm-exegesis][NFC] clang-formatClement Courbet2018-06-256-20/+19
| | | | llvm-svn: 335452
* [llvm-exegesis][NFC] Fix `Operand` class comments.Clement Courbet2018-06-251-2/+2
| | | | llvm-svn: 335450
* [llvm-exegesis][NFC] Simplify BenchmarkRunner.Clement Courbet2018-06-211-21/+12
| | | | | | Get rid of createExecutableFunction(). llvm-svn: 335240
* [llvm-exegesis][NFC] Simplify LLVMState.Clement Courbet2018-06-213-34/+39
| | | | | | | | | | | | Summary: Pretty much everything we need is in llvm::TargetMachine. Reviewers: gchatelet Subscribers: llvm-commits, tschuett Differential Revision: https://reviews.llvm.org/D48428 llvm-svn: 335237
* [llvm-exegesis] Add mechanism to add target-specific passes.Clement Courbet2018-06-205-5/+31
| | | | | | | | | | | | | | Summary: createX86FloatingPointStackifierPass is disabled until we handle TracksLiveness correctly. Reviewers: gchatelet Subscribers: mgorny, tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48360 llvm-svn: 335117
* [llvm-exegesis] Remove noexcept in r335105.Clement Courbet2018-06-202-7/+8
| | | | | | gcc checks for transitivity (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53903) llvm-svn: 335109
* [llvm-exegesis] Fix missing move in r335105.Clement Courbet2018-06-202-6/+6
| | | | llvm-svn: 335108
* [llvm-exegesis] Use a Prototype to defer picking a value for free vars.Guillaume Chatelet2018-06-208-93/+146
| | | | | | | | | | | | Summary: Introducing a Prototype object to capture Variables that must be set but keeps degrees of freedom as Invalid. This allows exploring non constraint variables later on. Reviewers: courbet Subscribers: tschuett, llvm-commits Differential Revision: https://reviews.llvm.org/D48316 llvm-svn: 335105
OpenPOWER on IntegriCloud