Revision tags: llvmorg-21-init |
|
#
ff1b01bb |
| 16-Jan-2025 |
Craig Topper <craig.topper@sifive.com> |
[llvm-exegesis] Begin replacing unsigned with MCRegister. NFC (#123109)
Some of this was needed to fix implicit conversions from MCRegister to
unsigned when calling getReg() on MCOperand for exampl
[llvm-exegesis] Begin replacing unsigned with MCRegister. NFC (#123109)
Some of this was needed to fix implicit conversions from MCRegister to
unsigned when calling getReg() on MCOperand for example.
The majority was done by reviewing parts of the code that dealt with
registers, converting them to MCRegister and then seeing what new
implicit conversions were created and fixing those.
There were a few places where I used MCPhysReg instead of MCRegiser for
static arrays since its uint16_t instead of unsigned.
show more ...
|
Revision tags: llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0 |
|
#
5823ac0a |
| 10-Sep-2024 |
Aiden Grossman <aidengrossman@google.com> |
[llvm-exegesis] Refactor getting register number from name to LLVMState (#107895)
This patch refactors the procedure of getting the register number from a
register name to LLVMState rather than hav
[llvm-exegesis] Refactor getting register number from name to LLVMState (#107895)
This patch refactors the procedure of getting the register number from a
register name to LLVMState rather than having individual users get the
values themselves by getting a reference to the map from LLVMState. This
is primarily intended to make some downstream usage in Gematria simpler,
but also cleans up a little bit upstream by pulling the actual map
searching out and just leaving error handling to the clients.
The original getter is left to enable downstream migration in Gematria,
particularly before it gets imported into google internal.
show more ...
|
#
3b1146e0 |
| 09-Sep-2024 |
Aiden Grossman <aidengrossman@google.com> |
[llvm-exegesis] Use MCRegister instead of unsigned to hold registers (#107820)
|
Revision tags: llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4 |
|
#
8b84de26 |
| 21-Feb-2024 |
Clement Courbet <courbet@google.com> |
[llvm-exegesis][NFC] Refactor all `ValidationEvent` info in a single … (#82256)
…table.
All data is derived from a single table rather than being spread out
over an enum, a table and the main en
[llvm-exegesis][NFC] Refactor all `ValidationEvent` info in a single … (#82256)
…table.
All data is derived from a single table rather than being spread out
over an enum, a table and the main entry point.
This is intended as a replacement for #82092.
show more ...
|
Revision tags: llvmorg-18.1.0-rc3 |
|
#
93db5b7b |
| 19-Feb-2024 |
Aiden Grossman <agrossman154@yahoo.com> |
[llvm-exegesis] Add debug option to print per-measurement values (#81219)
This patch adds a debug option to print per measurement latency and
validation counter values. This makes it easier to debu
[llvm-exegesis] Add debug option to print per-measurement values (#81219)
This patch adds a debug option to print per measurement latency and
validation counter values. This makes it easier to debug certain
transient issues that can be hard to spot just using the summary view at
the end.
I've hacked print statements into this part of the code base enough
times for debugging various things that I think it makes sense to be a
proper debug macro.
show more ...
|
#
63dd08b1 |
| 19-Feb-2024 |
Aiden Grossman <agrossman154@yahoo.com> |
[llvm-exegesis] Add branch miss validation counter (#81094)
This patch adds a branch miss validation counter so that it is easy to
quantify the number of missed branches when using the loop repetit
[llvm-exegesis] Add branch miss validation counter (#81094)
This patch adds a branch miss validation counter so that it is easy to
quantify the number of missed branches when using the loop repetition
mode.
show more ...
|
Revision tags: llvmorg-18.1.0-rc2 |
|
#
415bf200 |
| 01-Feb-2024 |
Aiden Grossman <agrossman154@yahoo.com> |
[llvm-exegesis] Replace --num-repetitions with --min-instructions (#77153)
This patch replaces --num-repetitions with --min-instructions to make it
more clear that the value refers to the minimum n
[llvm-exegesis] Replace --num-repetitions with --min-instructions (#77153)
This patch replaces --num-repetitions with --min-instructions to make it
more clear that the value refers to the minimum number of instructions
in the final assembled snippet rather than the number of repetitions of
the snippet. This patch also refactors some llvm-exegesis internal
variable names to reflect the name change.
Fixes #76890.
show more ...
|
Revision tags: llvmorg-18.1.0-rc1, llvmorg-19-init |
|
#
7da76958 |
| 23-Jan-2024 |
Aiden Grossman <agrossman154@yahoo.com> |
[llvm-exegesis] Add additional validation counters (#76788)
This patch adds support for additional types of validation counters and
also adds mappings between these new validation counter types and
[llvm-exegesis] Add additional validation counters (#76788)
This patch adds support for additional types of validation counters and
also adds mappings between these new validation counter types and
physical counters on the hardware for microarchitectures that I have the
ability to test on.
show more ...
|
#
aac1a41c |
| 19-Jan-2024 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
[llvm-exegesis] Fix MSVC "not all control paths return a value" warning. NFC.
|
#
f670112a |
| 19-Jan-2024 |
Aiden Grossman <agrossman154@yahoo.com> |
[llvm-exegesis] Add support for validation counters (#76653)
This patch adds support for validation counters. Validation counters can
be used to measure events that occur during snippet execution l
[llvm-exegesis] Add support for validation counters (#76653)
This patch adds support for validation counters. Validation counters can
be used to measure events that occur during snippet execution like cache
misses to ensure that certain assumed invariants about the benchmark
actually hold. Validation counters are setup within a perf event group,
so are turned on and off at exactly the same time as the "group leader"
counter that measures the desired value.
show more ...
|
Revision tags: llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3 |
|
#
643b2ccd |
| 14-Oct-2023 |
Kazu Hirata <kazu@google.com> |
[tools] Stop including llvm/ADT/StringMap.h (NFC)
These source files do not use StringMap.h.
|
Revision tags: llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1 |
|
#
389bf5d8 |
| 27-Mar-2023 |
Aiden Grossman <agrossman154@yahoo.com> |
[llvm-exegesis] Refactor InstructionBenchmark to Benchmark
When llvm-exegesis was first introduced, it only supported benchmarking individual instructions, hence the name for the data structure stor
[llvm-exegesis] Refactor InstructionBenchmark to Benchmark
When llvm-exegesis was first introduced, it only supported benchmarking individual instructions, hence the name for the data structure storing the data corresponding to a benchmark being called InstructionBenchmark made sense. However, now that benchmarking arbitrary snippets is supported, InstructionBenchmark doesn't correspond to a single instruction. This patch refactors InstructionBenchmark to be called Benchmark to clean up this little bit of technical debt.
Reviewed By: courbet
Differential Revision: https://reviews.llvm.org/D146884
show more ...
|
Revision tags: llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7 |
|
#
8c3a8359 |
| 19-Dec-2022 |
Roman Lebedev <lebedev.ri@gmail.com> |
[NFC][llvm-exegesis] Try to fix GCC7 build
https://lab.llvm.org/staging/#/builders/235/builds/1121
|
#
e9972a71 |
| 19-Dec-2022 |
Roman Lebedev <lebedev.ri@gmail.com> |
[NFC][llvm-exegesis] Try to fix GCC7 build
https://lab.llvm.org/staging/#/builders/235/builds/1090
|
#
a3400191 |
| 18-Dec-2022 |
Roman Lebedev <lebedev.ri@gmail.com> |
[llvm-exegesis] Unbreak `--benchmarks-file=<f>`
I'm absolutely flabbergasted by this. I was absolutely sure this worked. But apparently not.
When outputting to the file, we'd write a single `Instru
[llvm-exegesis] Unbreak `--benchmarks-file=<f>`
I'm absolutely flabbergasted by this. I was absolutely sure this worked. But apparently not.
When outputting to the file, we'd write a single `InstructionBenchmark` to it, and then close the file. And for the next `InstructionBenchmark`, we'd reopen the file, truncating it in process, and thus the first `InstructionBenchmark` would be gone...
show more ...
|
#
5b1592b5 |
| 17-Dec-2022 |
Roman Lebedev <lebedev.ri@gmail.com> |
[NFC][llvm-exegesis] LLVMState: only store references to reg/op names
We know that the original reference from which we've built these maps will persist, so we do not need to copy the names.
|
#
da2f5d0a |
| 14-Dec-2022 |
Fangrui Song <i@maskray.me> |
[tools] llvm::Optional => std::optional
|
#
079cd4a5 |
| 12-Dec-2022 |
Roman Lebedev <lebedev.ri@gmail.com> |
[NFC][Exegesis] Don't recompute opcode/reg names on each YAML write (-38% runtime)
This reducer runtime of ``` $ ./bin/llvm-exegesis -mode=inverse_throughput --opcode-index=-1 --benchmarks-file=/dev
[NFC][Exegesis] Don't recompute opcode/reg names on each YAML write (-38% runtime)
This reducer runtime of ``` $ ./bin/llvm-exegesis -mode=inverse_throughput --opcode-index=-1 --benchmarks-file=/dev/null --dump-object-to-disk=0 --measurements-print-progress --skip-measurements ``` from 3m44s to 2m17s, aka -38%. But more importantly, we go from 400 *million* memory allocations down to just 100 million, aka -75%.
But really, the big missing thing is doing everything in a single thread. Sure, we can't do anything when measuring, but when we are not measuring, we should just prepare (codegen) everything via all threads. That should parallelize quite well.
show more ...
|
#
b4482f7c |
| 03-Dec-2022 |
Kazu Hirata <kazu@google.com> |
[tools] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of m
[tools] Use std::nullopt instead of None (NFC)
This patch mechanically replaces None with std::nullopt where the compiler would warn if None were deprecated. The intent is to reduce the amount of manual work required in migrating from Optional to std::optional.
This is part of an effort to migrate from llvm::Optional to std::optional:
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
show more ...
|
Revision tags: llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, working, llvmorg-15.0.2 |
|
#
e52f8406 |
| 22-Sep-2022 |
Clement Courbet <courbet@google.com> |
Re-land "[llvm-exegesis] Support analyzing results from a different target."
With Mips fixes.
This reverts commit 7daf60e3440b22b79084bb325d823aa3ad8df0f3.
|
#
7daf60e3 |
| 22-Sep-2022 |
Clement Courbet <courbet@google.com> |
Revert "[llvm-exegesis] Support analyzing results from a different target."
Breaks MIPS compile.
This reverts commit cc61c822e05c51e494c50d1e72f963750116ef08.
|
Revision tags: llvmorg-15.0.1 |
|
#
cc61c822 |
| 12-Sep-2022 |
Clement Courbet <courbet@google.com> |
[llvm-exegesis] Support analyzing results from a different target.
We were using the native triple to parse the benchmarks. Use the triple from the benchmarks file.
Right now this still only allows
[llvm-exegesis] Support analyzing results from a different target.
We were using the native triple to parse the benchmarks. Use the triple from the benchmarks file.
Right now this still only allows analyzing files produced by the current target until D133605 is in.
This also makes the `Analysis` class much less ad-hoc.
Differential Revision: https://reviews.llvm.org/D133697
show more ...
|
Revision tags: llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3, llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1, llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3, llvmorg-13.0.0-rc2, llvmorg-13.0.0-rc1, llvmorg-14-init |
|
#
dbefcde6 |
| 27-Jul-2021 |
Tom Stellard <tstellar@redhat.com> |
Merge all the llvm-exegesis unit tests into a single binary
These tests access private symbols in the backends, so they cannot link against libLLVM.so and must be statically linked. Linking these t
Merge all the llvm-exegesis unit tests into a single binary
These tests access private symbols in the backends, so they cannot link against libLLVM.so and must be statically linked. Linking these tests can be slow and with debug builds the resulting binaries use a lot of disk space.
By merging them into a single test binary means we now only need to statically link 1 test instead of 6, which helps reduce the build times and saves disk space.
Reviewed By: courbet
Differential Revision: https://reviews.llvm.org/D106464
show more ...
|
Revision tags: llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2 |
|
#
61cdaf66 |
| 11-Jun-2021 |
Simon Pilgrim <llvm-dev@redking.me.uk> |
[ADT] Remove APInt/APSInt toString() std::string variants
<string> is currently the highest impact header in a clang+llvm build:
https://commondatastorage.googleapis.com/chromium-browser-clang/llvm
[ADT] Remove APInt/APSInt toString() std::string variants
<string> is currently the highest impact header in a clang+llvm build:
https://commondatastorage.googleapis.com/chromium-browser-clang/llvm-include-analysis.html
One of the most common places this is being included is the APInt.h header, which needs it for an old toString() implementation that returns std::string - an inefficient method compared to the SmallString versions that it actually wraps.
This patch replaces these APInt/APSInt methods with a pair of llvm::toString() helpers inside StringExtras.h, adjusts users accordingly and removes the <string> from APInt.h - I was hoping that more of these users could be converted to use the SmallString methods, but it appears that most end up creating a std::string anyhow. I avoided trying to use the raw_ostream << operators as well as I didn't want to lose having the integer radix explicit in the code.
Differential Revision: https://reviews.llvm.org/D103888
show more ...
|
Revision tags: llvmorg-12.0.1-rc1 |
|
#
e71994a2 |
| 16-Apr-2021 |
Jonathan Crowther <jonathan.crowther@ibm.com> |
[SystemZ][z/OS] Add IsText Argument to GetFile and GetFileOrSTDIN
Add the `IsText` argument to `GetFile` and `GetFileOrSTDIN` which will help z/OS distinguish between text and binary correctly. This
[SystemZ][z/OS] Add IsText Argument to GetFile and GetFileOrSTDIN
Add the `IsText` argument to `GetFile` and `GetFileOrSTDIN` which will help z/OS distinguish between text and binary correctly. This is an extension to [this patch](https://reviews.llvm.org/D97785)
Reviewed By: abhina.sreeskantharajan, amccarth
Differential Revision: https://reviews.llvm.org/D100488
show more ...
|