LLVM/project 066d4c2 — llvm/test/Transforms/SLPVectorizer/AArch64 gathered-slice-fmuladd.ll

[SLP][NFC]Add a test with missing fma pattern recognition, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/232346
DeltaFile
+93-0llvm/test/Transforms/SLPVectorizer/AArch64/gathered-slice-fmuladd.ll
+93-01 files

LLVM/project e063be7 — llvm/lib/TableGen Error.cpp, llvm/test/TableGen prep-diag11.td

[TableGen] Count errors reported via PrintError(const char *, ...) (#232271)

This overload called SrcMgr.PrintMessage directly instead of going
through PrintMessage, so it did not increment ErrorsPrinted. The lexer
uses it for several diagnostics, so e.g. an unterminated #ifdef printed
two errors followed by "1 errors.".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply at anthropic.com>
DeltaFile
+1-1llvm/lib/TableGen/Error.cpp
+1-0llvm/test/TableGen/prep-diag11.td
+2-12 files

LLVM/project 6605f11 — offload/include device.h, offload/libompaccsupport device.cpp

[Offload][Omp] Remove OmpABIVersion from PluginInterface (#232337)

Move the ABI version check for host kernels from the host plugin to
libomptarget. This allows to remove the field from the KernelLaunchArgs
in the PluginInterface.

Assisted by Claude.
DeltaFile
+30-16offload/libompaccsupport/device.cpp
+6-0offload/include/device.h
+0-3offload/plugins-nextgen/host/src/rtl.cpp
+0-3offload/plugins-nextgen/common/include/PluginInterface.h
+36-224 files

LLVM/project 2c33a52 — flang/include/flang/Optimizer/OpenACC Passes.td, flang/lib/Optimizer/OpenACC/Transforms ACCOptimizeFirstprivateMap.cpp

[flang][OpenACC] Hoist firstprivate loads of guarded optional variables (#231996)

`ACCOptimizeFirstprivateMap` did not optimize optional variables,
because loading an absent optional on the host is unsafe. When the
`acc.firstprivate_map` is in the then region of a `fir.if` on the
presence of the same variable, the variable is known to be present:
hoist its loads and fold the presence checks of the mapped value to
true.
DeltaFile
+339-0flang/test/Transforms/OpenACC/acc-optimize-firstprivate-map.fir
+49-13flang/lib/Optimizer/OpenACC/Transforms/ACCOptimizeFirstprivateMap.cpp
+2-1flang/include/flang/Optimizer/OpenACC/Passes.td
+390-143 files

LLVM/project efdbad9 — llvm/lib/Target/AMDGPU AMDGPUEventTracking.h AMDGPUEventTracking.cpp, llvm/unittests/Target/AMDGPU AMDGPUEventTrackingTest.cpp

[AMDGPU][NewInsertWaitcnt] Event Tracker (2/2)

See #226970 for context and history regarding this patch.
This is intended to begin review as a 1-1 equivalent of #226970 with only one change: a "Drain"
test that Claude added and I found useful, so I left it in.

Builds upon the previous patch to include the functionality needed to import
events from predecessor basic blocks into a basic block, so a MBB can be aware of
previous state.

This adds the "height" system, which is necessary to preserve chronology across control-flow edges,
especially in asymmetrical diamonds, alongside a way to import predecessor state via a `enterBlock`
function.

Assisted-by: AI Coding Assistants for basic boilerplate/research/etc. - no logic was written by LLMs except some unit tests.
DeltaFile
+458-0llvm/unittests/Target/AMDGPU/AMDGPUEventTrackingTest.cpp
+180-14llvm/lib/Target/AMDGPU/AMDGPUEventTracking.cpp
+106-14llvm/lib/Target/AMDGPU/AMDGPUEventTracking.h
+744-283 files

LLVM/project 7950bd9 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.cpp, llvm/test/Transforms/Inline/AArch64 sme-pstatesm-attrs.ll

Fixups
DeltaFile
+58-1llvm/test/Transforms/Inline/AArch64/sme-pstatesm-attrs.ll
+13-8llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+71-92 files

LLVM/project 61aea71 — llvm/include/llvm/Support AMDGPUAddrSpace.h

[AMDGPU] Reserve addrspace 19 for downstream use (#232092)

Add RESERVED_ADDRESS_SPACE_19 to AMDGPUAS, following the existing
reservations for address spaces 10, 11, 14, and 16-18. Address spaces
above MAX_AMDGPU_ADDRESS are already treated conservatively (global-like
in isFlatGlobalAddrSpace, may-alias in addrspacesMayAlias), so no
behavior changes; this only documents the number as taken so upstream
does not later assign it.

Codegen for addrspace(19) is already covered by
llvm/test/CodeGen/AMDGPU/nullptr.ll.

NFC

Assisted-by: Claude Code:claude-opus-5[1m]
DeltaFile
+2-0llvm/include/llvm/Support/AMDGPUAddrSpace.h
+2-01 files

LLVM/project 9c9aad3 — llvm/lib/Target/AMDGPU CMakeLists.txt AMDGPUHWEvents.h, llvm/unittests/Target/AMDGPU CMakeLists.txt AMDGPUEventTrackingTest.cpp

[AMDGPU][NewInsertWaitcnt] Event Tracker (1/2)

See #226970 for context and history regarding this patch.

Adds the basic infrastructure needed to track in-flight records for each InstCounterType.
This is not a full functional replacement of SIInsertWaitcnts::WaitcntBrackets and it does not
aim to be one, as we'd like to break up its functionality into multiple different pieces.

This patch only contains the functionality needed for tracking events in one block, without importing events from previous blocks.

Assisted-by: Claude Opus 5.5
After requests to split the patch, I used Claude to help me create this patch which is a subset of #226970 with all functionality pertaining to importing incoming events removed.
DeltaFile
+207-0llvm/unittests/Target/AMDGPU/AMDGPUEventTrackingTest.cpp
+206-0llvm/lib/Target/AMDGPU/AMDGPUEventTracking.cpp
+194-0llvm/lib/Target/AMDGPU/AMDGPUEventTracking.h
+27-0llvm/lib/Target/AMDGPU/AMDGPUHWEvents.h
+1-0llvm/unittests/Target/AMDGPU/CMakeLists.txt
+1-0llvm/lib/Target/AMDGPU/CMakeLists.txt
+636-06 files

LLVM/project e539335 — llvm/docs/CommandGuide llvm-readobj.md llvm-readelf.md

[llvm-readobj][docs] Update the --stack-sizes description

The description said that --stack-sizes is only implemented for GNU
style output, which hasn't been the case for a while. Describe the LLVM
and JSON output instead: each entry also identifies its function as
--call-graph-info does, by its address in a linked file, or by the
relocation that applies to it in a relocatable file.

Assisted-by: Gemini
DeltaFile
+4-2llvm/docs/CommandGuide/llvm-readobj.md
+4-2llvm/docs/CommandGuide/llvm-readelf.md
+8-42 files

LLVM/project 865b06e — llvm/test/tools/llvm-readobj/ELF stack-sizes.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print the relocation of each --stack-sizes entry

In a relocatable file, print the relocation that applies to each
.stack_sizes entry as a Relocation object in the LLVM and JSON output,
with the same fields as in --call-graph-info. The code that prints the
object is shared with --call-graph-info, so the addend of a SHT_REL
relocation is again the value stored in the address field.

Assisted-by: Gemini
DeltaFile
+135-3llvm/test/tools/llvm-readobj/ELF/stack-sizes.test
+72-33llvm/tools/llvm-readobj/ELFDumper.cpp
+207-362 files

LLVM/project eefa27b — llvm/test/tools/llvm-readobj/ELF stack-sizes.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print the address of each --stack-sizes entry

In a linked file, print the function address that each .stack_sizes
entry holds as Address in the LLVM and JSON output. The entries can then
be matched with --call-graph-info output by address, without looking up
function names.

Assisted-by: Gemini
DeltaFile
+19-9llvm/tools/llvm-readobj/ELFDumper.cpp
+25-2llvm/test/tools/llvm-readobj/ELF/stack-sizes.test
+44-112 files

LLVM/project 6b47cdc — llvm/test/tools/llvm-readobj/ELF stack-sizes.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Clear the Thumb bit from --stack-sizes addresses

On ARM, the address of a Thumb function has bit 0 set, but that bit is
not part of the function's address. --stack-sizes looked up function
symbols at the address with the bit set, so Thumb functions were
reported as unknown, with a warning. Clear the bit, as --call-graph-info
does, both from the address stored in a linked file and from the address
that a relocation resolves to in a relocatable file.

Assisted-by: Gemini
DeltaFile
+114-0llvm/test/tools/llvm-readobj/ELF/stack-sizes.test
+4-0llvm/tools/llvm-readobj/ELFDumper.cpp
+118-02 files

LLVM/project eec05ea — llvm/docs/CommandGuide llvm-readobj.md llvm-readelf.md

[llvm-readobj][docs] Update the --stack-sizes description

The description said that --stack-sizes is only implemented for GNU
style output, which hasn't been the case for a while. Describe the LLVM
and JSON output instead: each entry also identifies its function as
--call-graph-info does, by its address in a linked file, or by the
relocation that applies to it in a relocatable file.

Assisted-by: Gemini
DeltaFile
+4-2llvm/docs/CommandGuide/llvm-readobj.md
+4-2llvm/docs/CommandGuide/llvm-readelf.md
+8-42 files

LLVM/project b43c036 — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt sched_rr_get_interval.h, libc/src/sched/linux CMakeLists.txt sched_rr_get_interval.cpp

[libc] Use a syscall wrapper for `sched_rr_get_interval` (#232310)

This PR move `sched_rr_get_interval` behind the centralized syscall
wrappers, following `libc/docs/dev/syscall_wrapper_refactor.md`.
DeltaFile
+52-0libc/src/__support/OSUtil/linux/syscall_wrappers/sched_rr_get_interval.h
+32-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+4-19libc/src/sched/linux/sched_rr_get_interval.cpp
+14-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+4-2libc/src/sched/linux/CMakeLists.txt
+106-215 files

LLVM/project 05404ce — llvm/lib/Analysis ValueTracking.cpp, llvm/test/CodeGen/AArch64/GlobalISel knownfpclass-ops.mir

[ValueTracking] Check noundef before applying square (fmul_self) (#232178)

`computeKnownFPClass` for `ValueTracking.cpp` will now test
`isGuaranteedNotToBeUndef` before determining that `fmul %x, %x` is
squaring.

I also added a test for maybe-undef squaring for `computeKnownFPClass`
for `GISelValueTracking.cpp`

Resolves
https://github.com/llvm/llvm-project/pull/227248#discussion_r4207466257
DeltaFile
+15-0llvm/test/CodeGen/AArch64/GlobalISel/knownfpclass-ops.mir
+2-2llvm/lib/Analysis/ValueTracking.cpp
+1-1llvm/test/Transforms/Attributor/nofpclass-fmul.ll
+18-33 files

LLVM/project 6941494 —

[SCEVExpander] Simplify expanding AddRecs from the canonical IV (NFC). (#232287)

In canonical mode, visitAddRecExpr expands AddRecs with more than 2
operands literally, so all AddRecs handled afterwards are affine. Remove
the trivially true isAffine() checks and the unreachable expansion of
chains of recurrences via evaluateAtIteration.

When {0,+,F} is expanded from the canonical IV, the IV has the type of
the AddRec, so the truncate and extend are no-ops, and {0,+,1} needs no
special case, as the multiply by 1 folds away.

Also handle pointer AddRecs before splitting off the start, as the start
of a pointer AddRec is never zero, and build {0,+,F} directly from its
step, as S is affine.
DeltaFile
+0-00 files

LLVM/project e849295 — llvm/lib/Transforms/Utils ScalarEvolutionExpander.cpp

[SCEVExpander] Simplify expanding AddRecs from the canonical IV (NFC). (#232287)

In canonical mode, visitAddRecExpr expands AddRecs with more than 2
operands literally, so all AddRecs handled afterwards are affine. Remove
the trivially true isAffine() checks and the unreachable expansion of
chains of recurrences via evaluateAtIteration.

When {0,+,F} is expanded from the canonical IV, the IV has the type of
the AddRec, so the truncate and extend are no-ops, and {0,+,1} needs no
special case, as the multiply by 1 folds away.

Also handle pointer AddRecs before splitting off the start, as the start
of a pointer AddRec is never zero, and build {0,+,F} directly from its
step, as S is affine.
DeltaFile
+14-50llvm/lib/Transforms/Utils/ScalarEvolutionExpander.cpp
+14-501 files

LLVM/project 44a6d2f — flang/test/Semantics simple-ieee-arithmetic-functions.f90

[flang] Check SIMPLE on every IEEE_ARITHMETIC elemental function family (#231952)

Follow-up to #223254, test only.

`simple-ieee-arithmetic-functions.f90` checks that one specific,
`ieee_is_finite_a4`, is SIMPLE. The prefix is applied by 29 independent
`#define` macros in `flang-rt/lib/runtime/ieee_arithmetic.f90`, one per
elemental function family, so removing it from any other family passes
the test.

This references one specific per family and checks each with
`-fdebug-dump-symbols`, the same style as
`simple-ieee-arithmetic-operators.f90`. The CHECK lines follow the
dump's alphabetical order.

Assisted-by: AI
DeltaFile
+30-4flang/test/Semantics/simple-ieee-arithmetic-functions.f90
+30-41 files

LLVM/project 56abf41 — llvm/test/tools/llvm-readobj/ELF stack-sizes.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print the relocation of each --stack-sizes entry

In a relocatable file, print the relocation that applies to each
.stack_sizes entry as a Relocation object in the LLVM and JSON output,
with the same fields as in --call-graph-info. The code that prints the
object is shared with --call-graph-info.

As in --call-graph-info, clear the Thumb bit from the address that the
relocation resolves to on ARM, so that Thumb functions are found.

Assisted-by: Gemini
DeltaFile
+197-2llvm/test/tools/llvm-readobj/ELF/stack-sizes.test
+76-33llvm/tools/llvm-readobj/ELFDumper.cpp
+273-352 files

LLVM/project ca24671 — llvm/test/tools/llvm-readobj/ELF stack-sizes.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print the address of each --stack-sizes entry

In a linked file, print the function address that each .stack_sizes
entry holds as Address in the LLVM and JSON output. The entries can then
be matched with --call-graph-info output by address, without looking up
function names.

As --call-graph-info does, clear the Thumb bit from the address on ARM.
This also lets Thumb functions be found: they were reported as unknown,
with a warning.

Assisted-by: Gemini
DeltaFile
+70-2llvm/test/tools/llvm-readobj/ELF/stack-sizes.test
+23-9llvm/tools/llvm-readobj/ELFDumper.cpp
+93-112 files

LLVM/project 74b1c81 — llvm/test/Transforms/LoopVectorize/AArch64 sve-tail-folding.ll early_exit_with_stores_tail_folding.ll

[LV][NFC] Add SVE tests for uniform scatters with tail-folding (#232290)

Add SVE tests in preparation for

https://github.com/llvm/llvm-project/pull/172799
DeltaFile
+54-0llvm/test/Transforms/LoopVectorize/AArch64/early_exit_with_stores_tail_folding.ll
+42-0llvm/test/Transforms/LoopVectorize/AArch64/sve-tail-folding.ll
+96-02 files

LLVM/project d375d07 — llvm/test/CodeGen/ARM/Windows trap-unreachable.ll, llvm/test/CodeGen/X86 windows-trap-unreachable.ll

ARM, X86: Test code after noreturn calls against the exception model

Add ARM and X86 versions of the AArch64 windows-trap-unreachable test
from #229681

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+24-0llvm/test/CodeGen/X86/windows-trap-unreachable.ll
+23-0llvm/test/CodeGen/ARM/Windows/trap-unreachable.ll
+47-02 files

LLVM/project b621a34 — offload/liboffload/API Memory.td, offload/liboffload/src OffloadImpl.cpp

[Offload][omp] Move is_accessible_ptr to liboffload (#231801)

Implement a new method in liboffload to access isAccessiblePtr method in
GenericDeviceTy and use it in libomptarget to substitute the direct call
to GenericPluginTy.

Assisted by Claude.
DeltaFile
+173-0offload/unittests/OffloadAPI/memory/olMemIsAccessible.cpp
+34-0offload/liboffload/src/OffloadImpl.cpp
+18-0offload/liboffload/API/Memory.td
+0-16offload/plugins-nextgen/common/src/PluginInterface.cpp
+14-0offload/plugins-nextgen/common/include/OffloadError.h
+2-8offload/plugins-nextgen/level_zero/src/L0Queue.cpp
+241-244 files not shown
+256-2910 files

LLVM/project 07bfb20 — llvm/test/CodeGen/AMDGPU vgpr-large-tuple-alloc-error.ll

AMDGPU: Keep argument live in vgpr-large-tuple-alloc-error.ll (#232308)

The register pressure in this test comes from exporting the argument
to virtual registers. The export is only needed when the argument is
used outside the entry block, so use it in a second block. This avoids
breaking the test in a future patch which avoids emitting the
unnecessary copies.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+7-0llvm/test/CodeGen/AMDGPU/vgpr-large-tuple-alloc-error.ll
+7-01 files

LLVM/project 478116c — llvm/test/tools/llvm-readobj/ELF call-graph-info.test call-graph-info-warn-malformed.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print Names for call graph relocations (#230654)

In a relocatable object file, an entry identified by a relocation had no
Names. Compute the address that the relocation resolves to with
RelocationResolver, look up the functions at that address in the section
of the relocation's symbol, and print them as Names before the
Relocation object.

As with Names for an Address, the names follow --demangle. Nothing is
printed for an undefined symbol, or when no function is at the address.
A relocation type that RelocationResolver doesn't support, or a symbol
whose section can't be found, gets a warning.

Assisted-by: Gemini
DeltaFile
+60-3llvm/tools/llvm-readobj/ELFDumper.cpp
+52-0llvm/test/tools/llvm-readobj/ELF/call-graph-info-warn-malformed.test
+26-8llvm/test/tools/llvm-readobj/ELF/call-graph-info.test
+138-113 files

LLVM/project f23308b — llvm/test/tools/llvm-readobj/ELF call-graph-info-warn-malformed.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Fall back to Address when no single relocation applies (#230653)

In a relocatable object file, --call-graph-info identifies a function by
the relocation that applies to its address field. If a field had no
relocation, nothing in the output identified the function. If the
relocation section had an invalid sh_link, the dump stopped. If a field
had more than one relocation, the first one was used silently.

In all of these cases, print the value stored in the field as Address,
as for linked files. Warn once if a call graph section has no relocation
section, and warn about each field with no relocation or more than one.
If the relocations can't be read, only that is reported.

Assisted-by: Gemini
DeltaFile
+146-11llvm/test/tools/llvm-readobj/ELF/call-graph-info-warn-malformed.test
+70-48llvm/tools/llvm-readobj/ELFDumper.cpp
+216-592 files

LLVM/project 7ca8916 — llvm/test/tools/llvm-readobj/ELF call-graph-info.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print implicit addends of call graph relocations (#230652)

A SHT_REL relocation, or a SHT_CREL relocation without explicit addends,
keeps its addend in the field that it applies to. Print the
sign-extended field value as the Addend of such a relocation instead of
dropping it. The ARM test now uses SHT_REL and covers the same cases as
the SHT_RELA tests: named symbols, a negative addend, and a section
symbol with an addend.

Assisted-by: Gemini
DeltaFile
+41-13llvm/test/tools/llvm-readobj/ELF/call-graph-info.test
+5-1llvm/tools/llvm-readobj/ELFDumper.cpp
+46-142 files

LLVM/project e636999 — llvm/test/tools/llvm-readobj/ELF call-graph-info-warn-malformed.test call-graph-info.test, llvm/tools/llvm-readobj ELFDumper.cpp

[llvm-readobj][ELF] Print a Relocation object instead of Name in --call-graph-info (#230651)

In a relocatable file, the address fields of a call graph section hold
placeholders, and the relocation that applies to each field identifies
the function. Name showed only the relocation's symbol name, made up
from the section name for an unnamed section symbol, and dropped the
addend. So entries that refer to a function through a section symbol
couldn't be told apart.

Print a Relocation object instead, with the symbol index, the symbol
name exactly as recorded in st_name, and the addend if it is non-zero.
With --demangle, the demangled symbol name is printed as DemangledName.
If the symbol can't be read, the existing warning is reported and only
the symbol index is printed.

Assisted-by: Gemini
DeltaFile
+204-22llvm/test/tools/llvm-readobj/ELF/call-graph-info.test
+35-7llvm/tools/llvm-readobj/ELFDumper.cpp
+14-1llvm/test/tools/llvm-readobj/ELF/call-graph-info-warn-malformed.test
+253-303 files

LLVM/project 41e9cdb — llvm/test/TableGen getRegClassFromMatchKind.td RegisterClassCopyCost.td, llvm/utils/TableGen RegisterInfoEmitter.cpp

Revert "[TableGen] Declare `MCRegisterClassStorageType` as `constexpr` (NFC)" (#232303)

This has caused the buildbot to fail:
https://lab.llvm.org/buildbot/#/builders/46/builds/42846.

Reverts llvm/llvm-project#232010
DeltaFile
+1-1llvm/utils/TableGen/RegisterInfoEmitter.cpp
+1-1llvm/test/TableGen/getRegClassFromMatchKind.td
+1-1llvm/test/TableGen/RegisterClassCopyCost.td
+3-33 files

LLVM/project d7e800d — llvm/test/DebugInfo/MIR/Hexagon live-debug-values-bundled-entry-values.mir, llvm/test/DebugInfo/MIR/InstrRef out-of-scope-blocks.mir

DebugInfo: Fix contradictory dead flags in MIR tests

Remove the duplicate implicit-def dead $pc from Hexagon L4_return, and
drop the dead flag from sub-register defs that also have a live
super-register implicit-def. These will fail a future verifier rule.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+4-4llvm/test/DebugInfo/MIR/InstrRef/out-of-scope-blocks.mir
+1-1llvm/test/DebugInfo/X86/dwarf-gnu-call-target-clobbered.mir
+1-1llvm/test/DebugInfo/MIR/X86/live-debug-values.mir
+1-1llvm/test/DebugInfo/MIR/X86/kill-after-spill.mir
+1-1llvm/test/DebugInfo/MIR/X86/debug-loc-0.mir
+1-1llvm/test/DebugInfo/MIR/Hexagon/live-debug-values-bundled-entry-values.mir
+9-92 files not shown
+11-118 files