[LLVM][Maintainers] Volunteer for LoopUnroll (#207802)
I've been reviewing and contributing PRs to the unroller for the past
few months. Since I plan on keeping that up, I figured I'd formally
volunteer as a maintainer.
I'm certainly not an expert on every aspect of the unroller, so no
worries if we feel that we need someone more experienced to fill this
gap.
[flang][OpenMP] Implement collapse for imperfectly nested loops (#202435)
Fixes #199092
Flang previously rejected intervening code between associated loops in a
collapsed nest (e.g. `collapse(2)` with statements between the outer and
inner DO). This patch removes that restriction and implements correct
lowering.
**Semantics:** accept intervening code retroactively for all versions,
except when perfect nesting is still required
OpenMP 5.0 introduced support for collapsing imperfectly nested loops
for worksharing-loop, simd, taskloop, and distribute constructs. OpenMP
5.1 later formalized this under the Canonical Loop Nest (CLN)
definition. This support is applied retroactively for all OpenMP
versions, since the semantics are safe to implement regardless of
version and for compatibility with other compilers.
[27 lines not shown]
AMDGPU/GlobalISel: Switch RegBankLegalize lowering to extended LLTs
Stop using LLT::scalar for lowering in AMDGPURegBankLegalizeHelper
Affects integer lowering code for RegBankLLTMappingApplyID and
custom cpp for LoweringMethodID.
[GitHub] Post ./utils/compare.py results in /test-suite (#208154)
llvm-test-suite comes with a ./utils/compare.py script which can compare
metrics across different builds. This PR adds support for displaying
these results in the GitHub comment as markdown table.
For now it just shows the difference in code size (the size..text
metric), but in future it can be extended to show the reuslts of any
arbitrary LLVM statistic.
It also posts the link to the result json files themselves in case the
user wants to do some more analysis locally.
archivers/unrar: update to 7.23
Security fixes:
* heap overflow when reconstructing data from RAR5 recovery volumes
* a specially crafted RAR archive could create a symbolic link pointing
outside of the intended destination folder during extraction
[flang][OpenMP] Fix host-associated user-defined operator reduction (#207413)
A DECLARE REDUCTION for a user-defined operator (e.g.
reduction(.myadd.:x)) was rejected with "Invalid reduction operator in
REDUCTION clause" when the operator was host-associated.
CheckReductionOperator looked up the mangled reduction name in the scope
that owns the operator symbol (the scope where the operator interface is
declared) instead of the scope where the reduction clause appears. The
user-defined reduction is stored in the latter (a child scope), so the
lookup in the operator's owning scope could not find it and the clause
was reported as invalid.
Look up the reduction in the scope of the clause via
context_.FindScope(source). FindUserReduction already searches enclosing
scopes, so this both finds a locally declared reduction and continues to
find one that is host- or use-associated. The lowering side already
resolves the reduction in the current scope, so no lowering change is
needed.
This is a follow-up of PR #202474.
[offload] Add the ability to record and replay IR bitcode modules (#207278)
This PR allows the user to use JIT with kernel record & replay by
expanding the latter to also work with IR bitcode images.
- Add a new field to `DeviceImageTy` for storing the IR image.
- Expand `RecordReplayTy::FileTy` to also include IR bitcode and
associate it with the file extension `.bc`
- Add the `--load-bitcode` command line option to
`llvm-omp-kernel-replay` tool.
---------
Co-authored-by: Giorgi Gvalia <gvalia1 at llnl.gov>
linux: batch DMU reads of non-resident pages in mappedread()
When a range being read has at least one page in the page cache,
zfs_read() routes the whole chunk through mappedread(), which falls
back to a separate dmu_read_uio_dbuf() call for every non-resident
PAGE_SIZE piece. Since cached pages outlive munmap(), a file which
was mapped at some point may sit mostly outside the page cache and
still pay this cost: one DMU call per 4K page instead of one per
chunk, measured in #16031 as a 4-10x sequential read slowdown.
Commit 39be46f43 ("Linux 5.18+ compat: Detect filemap_range_has_page")
fixed the detection side so fully uncached chunks bypass mappedread()
again, but a chunk holding even one resident page still degrades to
page-sized DMU reads for everything else.
Instead of issuing one DMU read per absent page, probe the page cache
with find_get_page() and extend the read over the whole run of
non-resident pages which follows, restoring chunk-sized DMU reads for
the uncached parts of a mapped file.
[30 lines not shown]
[AMDGPU][NFC] Templatise and roundtrip gfx12_asm_vopc.s
This is just an amended version of the corresponding gfx11 test.
Eliminates the current largest contributor into the undesired
delta vs the downstream True16 branch across MC tests.
Reland "[Clang] Enable -Wunused-template under -Wall" (#208001)
Reland of #206123, which was reverted in #207848.
What has changed since:
- flang-rt occurrences are fixed in #207979
- openmp had one more occurrence which is fixed in #207983
- The remaining -Wunused-template hits anywhere in CI logs are the tsan
Go runtime warnings, which are warnings only (buildgo.sh does not use
-Werror on Linux)
Marked as draft until #207979 and #207983 land.
Closes #202945
AMDGPU/GlobalISel: Switch legalizer custom lowering to extended LLTs
Stop using LLT::scalar in custom lowering in AMDGPULegalizerInfo.
The exception is S1 since it seems to work fine.
Does not change legalizer actions. In general this is intended as a
mechanical step in amdgpu's switch to extended LLTs, just try to
avoid LLT::scalar in instructions generated after IRtranslator,
since it seems like a step in the right direction. Some tests remove
-global-isel-abort=2 since GIM_SwitchType no longer fails on
LLT::scalar. Exposes a couple of new failures with 16bit bitcast.
AMDGPU/GlobalISel: Switch CallLowering to extended LLTs
Stop using LLT::scalar for argument lowering in AMDGPUCallLowering.
Mostly straightforward, worth noting that some places now require
a bitcast between integer and float.