[AArch64][Isel] For fixed length vectors use sve for bitreverse when available (#196025)
Lowering bitreverse via the SVE path seems to be giving significant
performance improvements for fixed width vectors
Speedups after the patch
uint8x8_t 1.01x
uint16x4_t 2.02x
uint32x2_t 2.01x
uint64x1_t 2.02x
uint8x16_t 1.00x
uint16x8_t 2.03x
uint32x4_t 2.03x
uint64x2_t 2.02x
[TableGen] Emit the primary input file in -d depfile output (#197061)
This fixes a bug where old, but still supported, versions of CMake and
ninja perpetually consider zero-include tablegen files to be out of
date. It also matches what Clang and GCC do for regular C compilations.
When a .td input has no `include` directives, the depfile produced by
`-d` contains only `<output>:` followed by zero dependencies. My version
(3.27) of CMake's `cmake_transform_depfile` step then writes a 0-byte
file, which old versions of ninja treat as a missing depfile and re-run
the rule on every incremental build (e.g. Attributes.td, ValueTypes.td).
Here's the effect on Attributes.inc.d:
```
$ cat ./build/include/llvm/IR/Attributes.inc.d
Attributes.inc:
# switch branches and rebuild...
$ cat ./build/include/llvm/IR/Attributes.inc.d
[3 lines not shown]
[Instrumentor] Allow multiple config files with different filters
To instrument different functions in different ways we allow to provide
multiple config files now. Each file will result in one instrumentation
run. Multiple files can be passed via command line option or listed in
a "summary" file that is passed via command line option (to keep the
command length managable).
[Instrumentor] Add a global function regexp to limit the instrumentation
Only functions that match the "function_regex" will be instrumented,
or if they have the instrumentation attribute.
[Instrumentor] Add unreachable support; unreachable stack trace printing
Allow to instrument unreachable and provide a use case for stack trace
printing.
[Instrumentor] Allow multiple config files with different filters
To instrument different functions in different ways we allow to provide
multiple config files now. Each file will result in one instrumentation
run. Multiple files can be passed via command line option or listed in
a "summary" file that is passed via command line option (to keep the
command length managable).
[Instrumentor] Add a global function regexp to limit the instrumentation
Only functions that match the "function_regex" will be instrumented,
or if they have the instrumentation attribute.
[clang-tidy][docs] Remove outdated Phabricator reference (#196997)
Removed the old Phabricator mention from the clang-tidy contributing
guide. Since LLVM uses GitHub for code review now, this updates the
wording to match the current contribution workflow.
[Instrumentor] Add unreachable support; unreachable stack trace printing
Allow to instrument unreachable and provide a use case for stack trace
printing.
[LV][RISCV] Simplify strided-accesses test checks by ignoring loop metadata. nfc (#196026)
Use --replace-value-regex to ignore specific !llvm.loop metadata numbers
since the metadata IDs are not important for this test.
[Instrumentor][NFC] Add docs and config-wizard script
This commit adds initial documentation for the instrumentor to the
html/man pages and provides a script that helps new users to setup the
config and stubs file interactively.
[Instrumentor][NFC] Add docs and config-wizard script
This commit adds initial documentation for the instrumentor to the
html/man pages and provides a script that helps new users to setup the
config and stubs file interactively.
[SSAF][WPA] Add PointerFlowReachableAnalysis (#193097)
PointerFlowReachableAnalysis uses PointerFlow and UnsafeBufferUsage
summaries. It computes reachable nodes in the PointerFlow graph from
unsafe buffer nodes in the UnsafeBufferUsage summary.
rdar://174874942
---------
Co-authored-by: Balázs Benics <benicsbalazs at gmail.com>
Co-authored-by: Jan Korous <jkorous at apple.com>
[llvm-gsymutil] Replace truncated DWARF names with mangled names from symbol table (#184221)
## Summary
- During `GsymCreator::finalize()`, when deduplicating entries with the
same address range, check if the DWARF
entry's name is a truncated version of the symbol table's mangled name
- If the DWARF name is a substring of the demangled symbol table name,
replace it with the full mangled name
before discarding the symbol table entry
- This allows downstream tools to properly demangle and display full
function signatures
## Test plan
### Unit tests
- `TestMangledNameReplacement`: Verifies DWARF name `make_ftype` is
replaced with `_Z10make_ftypePci` and line
table is preserved
- `TestMangledNameReplacementNegative`: Verifies no replacement when
[41 lines not shown]
[mlir][OpenMP] Add iterator support to map/motion clause
Extend map/motion clause to support `!omp.iterated<Ty>` handles
alongside map/motion locators.
This is part of feature work for #188061
Assisted with copilot
[Instrumentor] Add Alloca and Function support; stack usage example
This adds support for alloca instrumentation and function pre/post
instrumentation. Alloca support follows load/store support directly.
Functions require special care to determine the insertion points.
Together, we can showcase how the stack high watermark can be profiled,
see InstrumentorStackUsage.cpp.