LLVM/project dd371a3 — cross-project-tests/intrinsic-header-tests riscv_packed_simd.c

[RISCV][P-ext] Check more of the emitted instructions for the pset intrinsics in riscv_packed_simd.c. NFC (#241151)
DeltaFile
+47-14cross-project-tests/intrinsic-header-tests/riscv_packed_simd.c
+47-141 files

LLVM/project fc69e0d — llvm/lib/Target/Hexagon HexagonVLIWPacketizer.cpp, llvm/test/CodeGen/Hexagon hlx-load-anti-packet.mir hlx-pseudo-store-packet.mir

[Hexagon] Prevent invalid packets with HLX loads and stores (#241439)

The HLX load and store pseudos are expanded after packetization into a
memory access and a register copy in the same packet. Make the
packetizer account for this:

- A store pseudo packetized with a later definition of the stored
register makes the copy and the definition both write the register. A
load pseudo packetized with an earlier reader of the loaded register
makes the reader see the temporary loaded value. Reject both pairings.
- The expansion takes two packet slots, so adding a constant-extended
instruction to a packet that holds a pseudo and one more instruction
exceeds the four-word packet limit. Reject this case in
shouldAddToPacket, which the global scheduler also uses.
- On V65 and later, a load and a possibly aliasing store may share a
:mem_noshuf packet only for non-vector accesses, but only HVX accesses
were treated as vector. Treat HLX accesses like HVX accesses.

Co-authored-by: Ikhlas Ajbar <iajbar at qti.qualcomm.com>

    [3 lines not shown]
DeltaFile
+53-0llvm/test/CodeGen/Hexagon/hlx-packet-alias.mir
+46-0llvm/test/CodeGen/Hexagon/hlx-pseudo-pullup.mir
+36-3llvm/lib/Target/Hexagon/HexagonVLIWPacketizer.cpp
+21-6llvm/test/CodeGen/Hexagon/hlx-pseudo-store-packet.mir
+22-0llvm/test/CodeGen/Hexagon/hlx-load-anti-packet.mir
+178-95 files

LLVM/project d737d3d — .github new-prs-labeler.yml

github: Add Attributor files to the PR labeler

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+11-0.github/new-prs-labeler.yml
+11-01 files

LLVM/project 465500f — llvm/test/CodeGen/Hexagon hlx-no-select-zext-i1.ll hlx-copy-expand.mir

[Hexagon] Fix HLX copy, masked load/store and zext-i1 select lowering (#241442)

Fix several issues that made HLX vector code crash or generate worse
code than HVX:

- copyPhysReg did not handle copies between HLX vector registers or
register pairs, and the LX_lo/LX_hi pseudos were not expanded after
register allocation. Lower the copies to LX_assign/LX_assign_w and
expand LX_lo/LX_hi to a copy of the corresponding sub-register, as is
done for V6_lo/V6_hi.
- isLegalMaskedLoad/isLegalMaskedStore only accepted HVX types, so HLX
masked loads and stores were scalarized before instruction selection,
which then crashed. Report them as legal for HLX vector types too.
- ppHoistZextI1 runs after legalization, so a select it creates for an
HLX vector type is never custom-lowered and fails to select. Skip the
transformation for HLX vector types.
- Teach HexagonBitSimplify's getSubregMask and getFinalVRegClass about
the HLX register pair class, as is done for HVX pairs, so copies of HLX
pair halves are replaced with direct sub-register uses.

    [14 lines not shown]
DeltaFile
+67-0llvm/test/CodeGen/Hexagon/hlx-masked-load-store.ll
+31-0llvm/test/CodeGen/Hexagon/bit-hlx-subreg.mir
+23-0llvm/test/CodeGen/Hexagon/hlx-vselect-i32cond.ll
+23-0llvm/test/CodeGen/Hexagon/copy-to-combine-hlx.mir
+22-0llvm/test/CodeGen/Hexagon/hlx-copy-expand.mir
+20-0llvm/test/CodeGen/Hexagon/hlx-no-select-zext-i1.ll
+186-05 files not shown
+226-511 files

LLVM/project 645735e — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 phi-external-use-unreachable-incoming.ll

[SLP]Fix crash on PHI incoming from unreachable block

Fixes #241472

Pull-request: https://github.com/llvm/llvm-project/pull/241516
DeltaFile
+86-0llvm/test/Transforms/SLPVectorizer/X86/phi-external-use-unreachable-incoming.ll
+3-0llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+89-02 files

LLVM/project 3322dea — .github/workflows libc-shared-tests.yml libc-fullbuild-tests.yml

[libc] Use new Docker image with qemu-system-arm (#241386)

This will be used to run baremetal Arm tests

---------

Co-authored-by: Aiden Grossman <aidengrossman at google.com>
DeltaFile
+3-3.github/workflows/libc-overlay-tests.yml
+2-2.github/workflows/libc-shared-tests.yml
+2-2.github/workflows/libc-fullbuild-tests.yml
+2-2.github/workflows/compiler-rt-libc-builtins-tests.yml
+9-94 files

LLVM/project 12f0928 — lldb/include/lldb/Target Language.h, lldb/include/lldb/Version Version.h

[lldb] Let language plugins extend the version string (#241057)

LLDB's version string ends with the revisions of the clang and LLVM it
embeds, which lldb_private::GetVersion() reads directly from clangBasic.

This patch moves the Clang and LLVM revisions into a new
Language::GetVersionInfo() method, and adds
Language::GetVersionWithLanguageInfo(), which appends each language
plugin's information to GetVersion(). This removes lldbVersion's
dependency on clangBasic.

The output of the version command doesn't change, and neither does
SBDebugger::GetVersionString() once LLDB is initialized.

Both lldb-server and assertion messages now print the bare GetVersion().

Assisted-by: Claude
DeltaFile
+19-0lldb/source/Target/Language.cpp
+14-0lldb/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
+14-0lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
+0-13lldb/source/Version/Version.cpp
+6-2lldb/include/lldb/Version/Version.h
+8-0lldb/include/lldb/Target/Language.h
+61-1511 files not shown
+87-2817 files

LLVM/project 5b22e65 — llvm/lib/Target/Hexagon HexagonDepMappings.td, llvm/lib/Target/Hexagon/MCTargetDesc HexagonMCChecker.h HexagonMCChecker.cpp

[Hexagon] Add llvm-mc -mhlx, HLX register aliases, 64-bit reg check (#241438)

- Add a -mhlx option to llvm-mc that enables the HLX feature.
- Accept "Ld = Lu" and "Ldd = Luu" as aliases of the HLX register
transfers, and "Ld = #0" and "Ldd = #0" as aliases that zero an HLX
register or register pair.
- An HLX instruction that reads a 64-bit scalar register cannot share a
packet with another HLX instruction that uses a scalar register or an
immediate; HLX loads and stores are exempt. The packetizer already
enforces this for generated code. Diagnose it in the MC checker too.

Co-authored-by: Alexey Karyakin <akaryaki at qti.qualcomm.com>
Co-authored-by: Rishabh Bali <rbali at qti.qualcomm.com>

Assisted by AI

Co-authored-by: Alexey Karyakin <akaryaki at qti.qualcomm.com>
Co-authored-by: Rishabh Bali <rbali at qti.qualcomm.com>
DeltaFile
+65-0llvm/test/MC/Hexagon/hlx-64bit-reg-packet.s
+37-1llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp
+19-0llvm/test/MC/Hexagon/hlx-alias.s
+5-0llvm/test/MC/Hexagon/hlx-feature.s
+4-0llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.h
+4-0llvm/lib/Target/Hexagon/HexagonDepMappings.td
+134-11 files not shown
+137-17 files

LLVM/project 1793a4b — llvm/include/llvm/Transforms/IPO Attributor.h, llvm/lib/Transforms/IPO Attributor.cpp

Collect IPO amendable functions in initializeInformationCache

Instead of caching the answer lazily in isFunctionIPOAmendable, compute
whether a function has an exact definition or is inlineable once, when its
information is initialized (review feedback).

Assisted-by: Claude Opus 5.5
DeltaFile
+16-15llvm/include/llvm/Transforms/IPO/Attributor.h
+2-0llvm/lib/Transforms/IPO/Attributor.cpp
+18-152 files

LLVM/project 233894a — llvm/test/MachineVerifier/AMDGPU verify-scale-offset.mir

[AMDGPU] Add tests for scale_offset machine verifier. NFC
DeltaFile
+22-0llvm/test/MachineVerifier/AMDGPU/verify-scale-offset.mir
+22-01 files

LLVM/project 8cbb6d6 — llvm/test/Transforms/Util/DeclareRuntimeLibcalls hexagon.ll arm.ll

RuntimeLibcalls: Add attributes to compiler-rt helper libcalls

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+740-740llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+664-664llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+524-524llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+498-498llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+376-376llvm/test/Transforms/Util/DeclareRuntimeLibcalls/arm.ll
+328-328llvm/test/Transforms/Util/DeclareRuntimeLibcalls/hexagon.ll
+3,130-3,13011 files not shown
+5,236-5,23617 files

LLVM/project f44279d — llvm/test/Transforms/Util/DeclareRuntimeLibcalls sparc.ll systemz.ll

RuntimeLibcalls: Add missing attributes to libm libcalls

Add the function and memory attributes inferLibFuncAttributes would
give the scalar libm functions.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+697-682llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+652-645llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+629-617llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+575-566llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+451-445llvm/test/Transforms/Util/DeclareRuntimeLibcalls/systemz.ll
+352-346llvm/test/Transforms/Util/DeclareRuntimeLibcalls/sparc.ll
+3,356-3,30112 files not shown
+5,224-5,10518 files

LLVM/project 057f745 — llvm/include/llvm/IR RuntimeLibcalls.td, llvm/test/Transforms/Util/DeclareRuntimeLibcalls divmod.ll bsd.ll

RuntimeLibcalls: Add missing attributes to memory and allocator libcalls

Add the attributes inferLibFuncAttributes would give these functions.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+53-21llvm/include/llvm/IR/RuntimeLibcalls.td
+35-24llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ppc.ll
+26-21llvm/test/Transforms/Util/DeclareRuntimeLibcalls/aarch64.ll
+20-16llvm/test/Transforms/Util/DeclareRuntimeLibcalls/windows.ll
+15-12llvm/test/Transforms/Util/DeclareRuntimeLibcalls/bsd.ll
+10-10llvm/test/Transforms/Util/DeclareRuntimeLibcalls/divmod.ll
+159-10416 files not shown
+274-18422 files

LLVM/project fe55427 — mlir/lib/Target/LLVM/XeVM Target.cpp

[MLIR][XeVM] Use findProgramByName to locate tools on PATH (#240622)

SerializeGPUModuleBase::findTool looked up tools on PATH via
llvm::sys::Process::FindInEnvPath, which checks for the exact file name.
On Windows the tool is named e.g. `ocloc.exe`, so the lookup always
failed with "Couldn't find the `ocloc` binary" even when the tool was on
PATH.

Use llvm::sys::findProgramByName instead, which handles executable
extensions on Windows and behaves the same on POSIX.
DeltaFile
+1-3mlir/lib/Target/LLVM/XeVM/Target.cpp
+1-31 files

LLVM/project 3c390b0 — llvm/lib/Analysis ValueTracking.cpp, llvm/test/Analysis/ValueTracking knownbits-rem-euclid.ll

[ValueTracking] Teach LLVM that rem_euclid is always positive (#236900)

Teach ValueTracking to infer that scalar Euclidean remainder expressions
R + (R < 0 ? A : 0) are non-negative, where R = srem X, Y and A is
either Y (when known non-negative) or abs(Y). Enables folding
comparisons of the result against zero.

Fixes #224449
DeltaFile
+291-0llvm/test/Analysis/ValueTracking/knownbits-rem-euclid.ll
+67-4llvm/lib/Analysis/ValueTracking.cpp
+358-42 files

LLVM/project ef54099 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination sadd-with-overflow.ll minmax.ll

[ConstraintElim] Split signed min/max across their operands when checking a compare

The existing constraint systems only record the bounds that hold for both
operands of a min/max (smax(a, b) >= a and >= b, smin(a, b) <= a and <= b). The
other direction is a disjunction, which cannot be recorded as a fact. When a
compare of signed decompositions involves a min/max result, split it into its
operands: the decomposition is monotonic in that result, so it is the max or min
of its values on each side, and the relation holds for all or for either side
respectively.

https://alive2.llvm.org/ce/z/zsGkJ-
DeltaFile
+366-3llvm/test/Transforms/ConstraintElimination/minmax.ll
+111-0llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+4-8llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+481-113 files

LLVM/project d4fe279 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination ssub-with-overflow.ll sadd-with-overflow.ll

[ConstraintElim] Prove sadd/ssub.with.overflow cannot overflow from the exact sum

Decompose the operands and show that the sum lies in the range of the type. This
handles patterns like A + (B - A), as well as sums involving signed min/max
results, which are split across their respective operands using monotonicity
(for example start + smax(end - start - 1, 0) <= end).

https://alive2.llvm.org/ce/z/ze8LCk
DeltaFile
+571-0llvm/test/Transforms/ConstraintElimination/sadd-with-overflow.ll
+159-3llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+100-0llvm/test/Transforms/ConstraintElimination/ssub-with-overflow.ll
+830-33 files

LLVM/project 7801496 — llvm/lib/Transforms/Scalar ConstraintElimination.cpp

clang-format
DeltaFile
+12-6llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+12-61 files

LLVM/project d63e64d — llvm/test/Transforms/SLPVectorizer/X86 traverse-down-cmp-chain.ll

[SLP][NFC] Pre-commit tests for compare chains feeding heterogeneous sinks (#240778)

Add tests covering compares that feed a uniform single-use chain whose
sinks are heterogeneous. vectorizeCmpInsts() roots the SLP tree at the
compares, so today only the compares are vectorized and the chain they
feed is left scalar, with one extract per lane.

No functional change.

Co-authored-by: Balakrishna Bandlapalli <bbandlap at gmail.com>
DeltaFile
+160-0llvm/test/Transforms/SLPVectorizer/X86/traverse-down-cmp-chain.ll
+160-01 files

LLVM/project b4f4419 — llvm/test/CodeGen/RISCV machine-copyprop-simplifyinstruction.mir, llvm/test/CodeGen/RISCV/GlobalISel/legalizer legalize-div-rv64.mir legalize-icmp-rv32.mir

[RISCV](NFC) Set accurate liveness information on all MIR tests (#241339)
DeltaFile
+284-142llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-icmp-rv64.mir
+244-123llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-icmp-rv32.mir
+185-171llvm/test/CodeGen/RISCV/rvv/zvlsseg-copy.mir
+204-125llvm/test/CodeGen/RISCV/machine-copyprop-simplifyinstruction.mir
+54-223llvm/test/CodeGen/RISCV/rvv/vl-opt-op-info.mir
+98-44llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-div-rv64.mir
+1,069-82876 files not shown
+3,085-1,93882 files

LLVM/project 66e6ede — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 reduce-or-bitpack.ll

[SLP]Fix bit pack lane cost for interchangeable lanes

A lane like add %x, 0 in the shl node is an interchangeable shl, so
check the op it matches instead of its own opcode.

Fixes #241471

Pull-request: https://github.com/llvm/llvm-project/pull/241485
DeltaFile
+26-0llvm/test/Transforms/SLPVectorizer/X86/reduce-or-bitpack.ll
+3-1llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+29-12 files

LLVM/project 776e8a3 — clang/lib/Headers acev1intrin.h, clang/test/CodeGen/X86 acev1_inline_asm.c

[X86][ACEV1] Address review comments

- Drop the AMX_TILE dependency; under acev1 enable only the AMX
  instructions that ACE v1 actually shares.
- Namespace the ACE-invented intrinsics under llvm.x86.acev1.* and leave
  the shared AMX-AVX512 ones in the flat llvm.x86.* namespace.
- Sync the public intrinsic and builtin names with GCC, and add the
  helper macros from the ACE v1 spec.
- Tighten Sema checking of the outer-product group bits, and add driver,
  preprocessor and feature-error test coverage.
- Spell BSR0 literally in the AsmStrings with Defs/Uses instead of
  carrying it as a custom operand, which removes the bespoke handling
  from X86AsmParser and both instruction printers.
- Drop the unused BSR register class; like TMMCFG, BSR0 needs only its
  X86Reg definition and the getReservedRegs entry.
- Adopt the operand-type record naming convention, 't' for a TILE and
  'e' for a GR32 index, on both the instructions and their pseudos,
  retiring the ad-hoc _REG suffix.
- Use WriteSystem rather than WriteVecLogic for the tile outer products

    [3 lines not shown]
DeltaFile
+174-269llvm/lib/Target/X86/X86InstrACE.td
+239-116clang/lib/Headers/acev1intrin.h
+68-132llvm/include/llvm/IR/IntrinsicsX86.td
+90-90llvm/test/CodeGen/X86/ACEV1/acev1-intrinsics.ll
+83-83llvm/lib/Target/X86/X86ISelLowering.cpp
+55-109clang/test/CodeGen/X86/acev1_inline_asm.c
+709-79936 files not shown
+1,261-1,49842 files

LLVM/project 6141ce1 — lldb/test/Shell CMakeLists.txt, lldb/test/Shell/helper toolchain.py

[lldb][test] Write the Shell tests' lit-lldb-init files from lit (#236887)

The %lldb substitutions source lit-lldb-init-quiet from the test
execution root, and CMake wrote that file and lit-lldb-init into the
build directory. Write them from the lit config instead, when the
substitutions are set up. The test execution root is where lit already
writes test outputs, so this works for any build system that can run lit
with a writable execution root, including ones that cannot add generated
files to it ahead of time, like Bazel.
DeltaFile
+29-0lldb/test/Shell/helper/toolchain.py
+0-6lldb/test/Shell/CMakeLists.txt
+29-62 files

LLVM/project c76f759 — llvm/unittests/TargetParser TripleTest.cpp

Update TripleTest (and fix typo in test name)
DeltaFile
+4-4llvm/unittests/TargetParser/TripleTest.cpp
+4-41 files

LLVM/project cc6fe60 — clang/test/CodeGenCXX module-funcs-from-imports.cppm

[NFC][test] AIX: Skip Clang IR steps in module-funcs-from-imports.cppm (#241451)

The Clang IR steps encounter:
```
error: C++ ABI 'xl' is not yet supported by CIR
```

Tracking issue: https://github.com/llvm/llvm-project/issues/241433

Resolves CI failure from
https://github.com/llvm/llvm-project/pull/239686.

Co-authored-by: Hubert Tong <hstong at ca.ibm.com>
DeltaFile
+4-2clang/test/CodeGenCXX/module-funcs-from-imports.cppm
+4-21 files

LLVM/project 4a6c93c — llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 sad.ll

[X86] combineBasicSADPattern - incorrect vector element count (#240005)

Ensure we determine the vector element count from the reduction ROOT,
not the first vector in the chain - to correctly handle cases where the
ROOT is split during reduction

Fixes #239204
DeltaFile
+5-5llvm/lib/Target/X86/X86ISelLowering.cpp
+6-2llvm/test/CodeGen/X86/sad.ll
+11-72 files

LLVM/project fadf32a — llvm/test/MachineVerifier/AMDGPU verify-scale-offset.mir

[AMDGPU] Add tests for scale_offset machine verifier. NFC
DeltaFile
+23-0llvm/test/MachineVerifier/AMDGPU/verify-scale-offset.mir
+23-01 files

LLVM/project c4fb621 — mlir/lib/Dialect/Vector/IR VectorOps.cpp, mlir/test/Dialect/Vector invalid.mlir

[mlir][vector] Reject `vector.mask` on Xfer ops that have a mask operand (#240797)

`vector.transfer_{read,write}` already have a _mask operand_, so
wrapping them in `vector.mask` gives two ways to express the same thing
and risks double masking. This PR makes `vector.mask` reject a masked
Xfer op that already has a mask operand.

Changes:
- Add a check to `MaskOp::verify` that fails if the op has a mask
operand.
- Add two _negative_ tests for `vector.transfer_{read,write}`.

Part of #239511.

RFC:
https://discourse.llvm.org/t/rfc-unify-masking-in-the-vector-dialect/92675

---------

Signed-off-by: Federico Bruzzone <federico.bruzzone.i at gmail.com>
DeltaFile
+20-0mlir/test/Dialect/Vector/invalid.mlir
+7-0mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+27-02 files

LLVM/project 16137bc — .github/workflows/containers/libc Dockerfile

[GitHub][libc] Bump LLVM to 24 in container image (#241368)

Otherwise we get errors about having an out of date clang (e.g., CMake
error in libc-fullbuild on AMDGPU).
DeltaFile
+6-4.github/workflows/containers/libc/Dockerfile
+6-41 files

LLVM/project a75ed02 — clang/test/CIR/CodeGenSYCL sycl-kernel-entry-point-exceptions.cpp, libc/test/src/time time_utils_test.cpp

Merge branch 'users/topperc/extract-nsrl' into users/topperc/insert-subvector
DeltaFile
+482-0llvm/test/Transforms/Util/DeclareRuntimeLibcalls/ve.ll
+222-0llvm/test/Transforms/SLPVectorizer/AMDGPU/latency-bound-data-movement.ll
+197-0libc/test/src/time/time_utils_test.cpp
+196-0llvm/test/Transforms/Attributor/musttail-function-info.ll
+162-8llvm/test/CodeGen/AMDGPU/waitcnt-vavdst-ordered-xdl.mir
+158-0clang/test/CIR/CodeGenSYCL/sycl-kernel-entry-point-exceptions.cpp
+1,417-8139 files not shown
+3,695-1,078145 files