LLVM/project 463f320 — libc/src/math fminf80.h fmaxf80.h, libc/src/math/generic fminf80.cpp fmaxf80.cpp

nits
DeltaFile
+0-1libc/test/src/math/smoke/fminf80_test.cpp
+0-1libc/test/src/math/smoke/fmaxf80_test.cpp
+0-1libc/src/math/generic/fminf80.cpp
+0-1libc/src/math/generic/fmaxf80.cpp
+0-1libc/src/math/fminf80.h
+0-1libc/src/math/fmaxf80.h
+0-64 files not shown
+0-1010 files

LLVM/project e311055 — libc/src/__support/math fmaxf80.h fminf80.h, libc/src/math/generic fminf80.cpp fmaxf80.cpp

initial commit
DeltaFile
+38-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+34-0libc/src/__support/math/fmaxf80.h
+34-0libc/src/__support/math/fminf80.h
+31-0libc/src/math/generic/fminf80.cpp
+31-0libc/src/math/generic/fmaxf80.cpp
+30-0libc/test/src/math/smoke/CMakeLists.txt
+198-027 files not shown
+453-033 files

LLVM/project b03a708 — flang/lib/Evaluate real-value-impl.cpp, flang/unittests/Evaluate RealValueTest.cpp

[flang] Undefine HUGE after including cmath (#236221)

Older glibc versions expose HUGE through <cmath> after Flang's headers
have undefined it. This breaks the RealValueImpl::HUGE definition and
calls, as well as the RealValue unit tests and their HUGE test name.

The glibc version I could reproduce the issue on was 2.26.
DeltaFile
+4-0flang/unittests/Evaluate/RealValueTest.cpp
+4-0flang/lib/Evaluate/real-value-impl.cpp
+8-02 files

LLVM/project 2fbd46e — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt epoll_pwait.h, libc/src/sys/epoll/linux CMakeLists.txt epoll_pwait.cpp

[libc] Use a syscall wrapper for epoll_pwait
DeltaFile
+40-0libc/src/__support/OSUtil/linux/syscall_wrappers/epoll_pwait.h
+19-3utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+7-14libc/src/sys/epoll/linux/epoll_pwait.cpp
+15-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+4-5libc/src/sys/epoll/linux/CMakeLists.txt
+85-225 files

LLVM/project 8e62621 — llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

remove ptr type handling
DeltaFile
+3-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+3-81 files

LLVM/project 560952b — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt epoll_create.h, libc/src/sys/epoll/linux CMakeLists.txt epoll_create.cpp

[libc] Use a syscall wrapper for epoll_create
DeltaFile
+44-0libc/src/__support/OSUtil/linux/syscall_wrappers/epoll_create.h
+6-22libc/src/sys/epoll/linux/epoll_create.cpp
+17-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+13-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+4-2libc/src/sys/epoll/linux/CMakeLists.txt
+84-255 files

LLVM/project fafd000 — clang/lib/AST/ByteCode InterpBuiltinBitCast.cpp, clang/test/AST/ByteCode builtin-bit-cast.cpp

[clang][bytecode] Fix assertion with string pointers in `DoBitCast` (#236337)

Make sure we support bitcasting _from_ string pointers here.
DeltaFile
+9-0clang/test/AST/ByteCode/builtin-bit-cast.cpp
+2-2clang/lib/AST/ByteCode/InterpBuiltinBitCast.cpp
+11-22 files

LLVM/project 1961971 — llvm/lib/Target/AMDGPU/Utils AMDGPUPALMetadata.h, llvm/test/CodeGen/AMDGPU amdpal-chain-metadata.ll

More tests and minor fixes
DeltaFile
+17-1llvm/test/CodeGen/AMDGPU/amdpal-chain-metadata.ll
+1-1llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.h
+18-22 files

LLVM/project 44868d2 — llvm/lib/Analysis ValueTracking.cpp, llvm/lib/Transforms/InstCombine InstCombineCompares.cpp

[InstCombine] Generalize existing pattern from "abs(val) != 0 -> val != 0" to "abs(val) == 0 -> val == 0" (#233763)

Generalize fold of `(c ? x : -x) != 0` to `x != 0` by moving the pattern
to stripNullTest() and thus also supporting `==` predicates and other
patterns supported by that helper.

The missed pattern is noticed in Google Abseil's demangler
(https://github.com/abseil/abseil-cpp/blob/master/absl/debugging/internal/demangle.cc).

Proof: https://alive2.llvm.org/ce/z/7WQeXT

Fixes #233753

Assisted-by: Qwen3.7-Plus, which helps me locate the existing pattern
instead of opening a new pattern.
DeltaFile
+24-0llvm/test/Transforms/InstCombine/icmp.ll
+0-16llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+8-0llvm/lib/Analysis/ValueTracking.cpp
+32-163 files

LLVM/project 4215403 — llvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU insert_vector_elt.v2i16.ll insert_vector_elt.v2bf16.ll

[AMDGPU] Custom lower dynamic insertelt on wide vectors of 16-bit elements (#232288)

Currently, in case of dynamic-index `insertelement` into v8, v16 and v32
of i16, f16 and bf16 was set to Expand. At -O1 and above, single inserts
were expanded into a select per element and chains of inserts were
folded into a stack temporary. At -O0, every insert went through the
stack unconditionally.

This patch extends the existing `v_bfi_b32` custom lowering, previously
limited to 64-bit vectors, to the 16-bit wide vectors as well, making
`INSERT_VECTOR_ELT` as now Custom for them, so legalization uses the
custom lowering at all optimization levels, and the generic DAGCombiner
chain fold, which only applies to Expand types, no longer fires.

In 'lowerINSERT_VECTOR_ELT' each 64-bit sized piece updates with `(Mask
& splat(Val)) | (~Mask & Piece)`, where only the piece holding the index
gets a nonzero mask, alongwith skipping `performInsertVectorEltCombine`
that use select-per-element expansion for such types, since the custom
lowering is cheaper. wider i8 vectors still use the stack.
DeltaFile
+1,013-90llvm/test/CodeGen/AMDGPU/insert_vector_dynelt.ll
+251-587llvm/test/CodeGen/AMDGPU/insert_vector_elt.v2bf16.ll
+187-463llvm/test/CodeGen/AMDGPU/insert_vector_elt.v2i16.ll
+58-25llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+1,509-1,1654 files

LLVM/project b723001 — flang/lib/Optimizer/Transforms AddAliasTags.cpp, flang/test/Transforms tbaa-omp-private.fir

[flang][AddAliasTags] OpenMP privatization is a local allocation (#236201)

OpenMP privatization generates code which looks a bit like this
```
%host = ...
omp.parallel private(@privatizer %host -> %private_copy : !fir.ref<type>) {
  %priv = fir.declare %private_copy ... -> !fir.ref<type>
}
```

`fir::AliasAnalysis` already correctly categorises accesses to these
private variables (`%priv` in this example) as local allocations. It
reports the source operation for the allocation as being the
`fir.declare` operation (as there is no allocation operation visible in
mlir).

When AddAliasTags processed this access it did not handle allocations
having `fir.declare` as their source and so was not able to give it the
local allocation tag. This commit fixes that by treating `fir.declare`

    [15 lines not shown]
DeltaFile
+198-0flang/test/Transforms/tbaa-omp-private.fir
+14-2flang/lib/Optimizer/Transforms/AddAliasTags.cpp
+212-22 files

LLVM/project cc717ca — libc/src/__support/math cospif16.h, libc/test/src/math/smoke cospif16_test.cpp

[libc][math] Fix  error handling
DeltaFile
+9-4libc/src/__support/math/cospif16.h
+4-1libc/test/src/math/smoke/cospif16_test.cpp
+13-52 files

LLVM/project 32dbc53 — mlir/include/mlir/Dialect/SPIRV/IR SPIRVStructureOps.td, mlir/lib/Dialect/SPIRV/IR SPIRVOps.cpp

[mlir][SPIR-V] Move symbol lookups into verifySymbolUses (#235042)

Looking up symbols in verify() made verification quadratic
DeltaFile
+44-28mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
+16-7mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
+15-0mlir/test/Dialect/SPIRV/IR/structure-ops.mlir
+75-353 files

LLVM/project 9e6672d — clang/test/Analysis lifetime-end-order.cpp

Add helper to the foor loop test case.
DeltaFile
+3-0clang/test/Analysis/lifetime-end-order.cpp
+3-01 files

LLVM/project ac4bd3c — mlir/test/lib/IR CMakeLists.txt

[MLIR] Fix regression in linking to `MLIRAnalysisBase` via dylib (#236359)

Fix the regression introduced in #232793 where the `MLIRTestIR` library
ends up linking directly to `MLIRAnalysisBase` rather than to `MLIR`
dylib, and therefore duplicate it and all the static libraries it
depends on the linker command line.

Signed-off-by: Michał Górny <mgorny at gentoo.org>
DeltaFile
+2-2mlir/test/lib/IR/CMakeLists.txt
+2-21 files

LLVM/project 7ce39ab — llvm/include/llvm/CodeGen TargetLowering.h, llvm/test/CodeGen/AArch64 partial-reduce-non-power-of-two-elts.ll

[AArch64][ISel] Fix crash for partial reduction actions (#236179)

getPartialReduceMLAAction assumed that the provided VTs would always be
simple, and crashed if not. So we should just bail out in such cases
(e.g. invalid non-power-of-two element types) by defaulting to Expand.
DeltaFile
+39-0llvm/test/CodeGen/AArch64/partial-reduce-non-power-of-two-elts.ll
+4-0llvm/include/llvm/CodeGen/TargetLowering.h
+43-02 files

LLVM/project 1040982 — llvm/lib/Target/AMDGPU AMDGPUCodeGenPrepare.cpp, llvm/test/CodeGen/AMDGPU amdgpu-codegenprepare-mul24-mad64.ll mad_u64_u32_mul24.ll

address review feedback
DeltaFile
+186-66llvm/test/CodeGen/AMDGPU/mad_u64_u32_mul24.ll
+100-27llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-mul24-mad64.ll
+4-0llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
+290-933 files

LLVM/project 6a18408 — llvm/test/CodeGen/AArch64 shiftregister-from-and.ll wide-scalar-shift-legalization.ll, llvm/test/CodeGen/AArch64/GlobalISel split-wide-shifts-multiway.ll

[AArch64] Allow selecting shifted register from and with UBFX. (#233882)

For LSL/LSR, it required a mask or field extending to MSB, but UBFX can
extract smaller fields.
DeltaFile
+140-150llvm/test/CodeGen/AArch64/div-i256.ll
+131-151llvm/test/CodeGen/AArch64/fcvt-i256.ll
+24-30llvm/test/CodeGen/AArch64/GlobalISel/split-wide-shifts-multiway.ll
+20-23llvm/test/CodeGen/AArch64/shift-i256.ll
+17-20llvm/test/CodeGen/AArch64/wide-scalar-shift-legalization.ll
+10-13llvm/test/CodeGen/AArch64/shiftregister-from-and.ll
+342-3873 files not shown
+361-4099 files

LLVM/project e76a910 — clang/test/Analysis lifetime-end-order.cpp

Exercise the lifetime end of variables in the inner scope.
DeltaFile
+5-0clang/test/Analysis/lifetime-end-order.cpp
+5-01 files

LLVM/project 749d820 — libcxx CMakeLists.txt, libcxx/include/__configuration availability.h

[libc++] Make __thread_hardware_concurrency() an alias to an existing symbol (#234575)

This PR changes `__thread_hardware_concurrency()` to be an alias to
`std::thread::hardware_concurrency()`, which is already exported from
the ABI.
Also adds the `_LIBCPP_ABI_NAMESPACE_LEN` macro to simplify the name
mangling.
DeltaFile
+23-26libcxx/src/thread.cpp
+18-4libcxx/include/__thread/hardware_concurrency.h
+0-8libcxx/include/__thread/thread.h
+0-6libcxx/lib/abi/CHANGELOG.TXT
+0-6libcxx/include/__configuration/availability.h
+2-0libcxx/CMakeLists.txt
+43-5010 files not shown
+44-5916 files

LLVM/project cba58dc — llvm/lib/Transforms/Scalar CorrelatedValuePropagation.cpp

[CVP] Restructure pass to use `CVPImpl` implementation class, unify style (NFC) (#236038)

CorrelatedValuePropagation instruction-processing routines and helpers
have been abstracted out into a dedicated implementation class, so as to
avoid threading LVI, among other things. Minor opportunity to modernize
code and unify style where possible.
DeltaFile
+222-187llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
+222-1871 files

LLVM/project a6b20ab — mlir/include/mlir/IR Operation.h

[mlir] Read the attr dictionary directly in getDialectAttrs (#236339)

getAttrs also copies attrs from properties on every call, but dialect
attrs are never stored there

LLVM IR translation calls getDialectAttrs() on every op, skipping the
dictionary rebuild for ops with properties makes translation faster,
visible on large modules
DeltaFile
+3-3mlir/include/mlir/IR/Operation.h
+3-31 files

LLVM/project f9e6e69 — lldb/test/API/functionalities/gdb_remote_client TestAttachWaitConnected.py

[lldb][test] Disable TestAttachWaitConnected.py on Linux (#236357)

It has been flaky on the AArch64 Linux buildbot and I do not think the
reason will be related to the architecture.

See #236354.
DeltaFile
+2-0lldb/test/API/functionalities/gdb_remote_client/TestAttachWaitConnected.py
+2-01 files

LLVM/project ae35701 — llvm/docs AMDGPUUsage.md

Move docs to md instead of rst
DeltaFile
+6-1llvm/docs/AMDGPUUsage.md
+6-11 files

LLVM/project f33e143 — llvm/lib/Target/AMDGPU GCNRegPressure.cpp, llvm/test/CodeGen/AMDGPU print-max-reg-pressure-av-vgpr.mir

[AMDGPU] Count only the requested register kind in dumpMaxRegPressure()

dumpMaxRegPressure() found the instruction with the most registers of the requested kind from the maximum of an upward tracker. That maximum takes the VGPR and AVGPR components from the same point, so for Kind == VGPR it can miss the VGPR peak. When no instruction had a VGPR in the maximum, the function dereferenced a null instruction.

The function now counts the registers of the requested kind from the live sets at the early-clobber and register slots of each instruction, as it already did for the chosen instruction. It prints a short message when no register of that kind is live.

Add print-max-reg-pressure-av-vgpr.mir.
DeltaFile
+26-26llvm/lib/Target/AMDGPU/GCNRegPressure.cpp
+33-0llvm/test/CodeGen/AMDGPU/print-max-reg-pressure-av-vgpr.mir
+59-262 files

LLVM/project fd01a4e — llvm/docs AMDGPUDwarfExtensionsForHeterogeneousDebugging.md AMDGPUUsage.md, llvm/test/CodeGen/AMDGPU amdgcn.bitcast.512bit.ll amdgcn.bitcast.1024bit.ll

Merge branch 'stack-size-no-chain-callees' into backend-stack-size-callees
DeltaFile
+14,649-17,027llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+0-22,233llvm/docs/AMDGPUUsage.rst
+18,097-0llvm/docs/AMDGPUUsage.md
+4,663-5,725llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+9,687-0llvm/test/TableGen/x86-fold-tables.inc
+5,324-0llvm/docs/AMDGPUDwarfExtensionsForHeterogeneousDebugging.md
+52,420-44,9854,493 files not shown
+268,639-151,2464,499 files

LLVM/project 5bb6d92 — clang/lib/Driver/ToolChains Clang.cpp, clang/test/Driver sparc-ias-Wa.s

[SPARC] Enable +ua2007 for -Av8plusd/-Av9d (#234060)

FMA instructions are modeled under ua2007, but the mappings for
-Av8plusd/-Av9d omitted it, so `fmadds` failed to assemble with
"instruction requires a CPU feature not currently enabled". Add +ua2007
to match GNU as.

Fix #225925.
DeltaFile
+4-2clang/lib/Driver/ToolChains/Clang.cpp
+4-0clang/test/Driver/sparc-ias-Wa.s
+8-22 files

LLVM/project 918fb7e — llvm/include/llvm/Analysis ScalarEvolution.h, llvm/lib/Analysis ScalarEvolution.cpp

[SCEV][NFC] Factor getMonotonicPredicate out of getLoopInvariantPredicate

Move the code that finds a monotonic predicate into a private utility.
For a compare of an AddRec against an invariant, it returns the
predicate with the AddRec on the left, and whether the predicate
turns to false or to true as the loop runs.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+22-10llvm/lib/Analysis/ScalarEvolution.cpp
+17-0llvm/include/llvm/Analysis/ScalarEvolution.h
+39-102 files

LLVM/project 10f04b3 — llvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Transforms/IndVarSimplify iv-widen-elim-ext.ll trivial-guard.ll

[SCEV] Prove monotonic predicates from loop entry

SCEV's isKnownOnEveryIteration proves a predicate on every iteration
of a loop by proving it on loop entry and on the backedge. The
backedge part often fails, e.g. when the loop exit only bounds the IV
from above.

Now, if the predicate compares a recurrence of the loop with a
loop-invariant value and can only change from false to true as the
loop runs, prove it from loop entry alone.

In iv-widen-elim-ext.ll, the comment on @foo3 said its zext must stay.
The zext is now removed: the add it extends is non-negative on every
iteration.

One exit truncation loses nuw: the exit test is now on the wide IV,
so IndVars rewrites it with a new truncation that has no nuw. It is
marked with TODO.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+10-12llvm/test/Transforms/IndVarSimplify/widen-nsw-iv-offset-guarded-start.ll
+13-3llvm/lib/Analysis/ScalarEvolution.cpp
+4-7llvm/test/Transforms/IndVarSimplify/eliminate-comparison.ll
+4-2llvm/test/Transforms/IndVarSimplify/trivial-guard.ll
+1-4llvm/test/Transforms/IndVarSimplify/iv-widen-elim-ext.ll
+32-285 files

LLVM/project d13ebbf — llvm/include/llvm/Analysis ScalarEvolution.h, llvm/lib/Analysis ScalarEvolution.cpp

[SCEV][NFC] Factor isKnownOnEveryIteration out of isKnownViaInduction

Move the check that proves a predicate on loop entry and on the backedge
from isKnownViaInduction into a private utility isKnownOnEveryIteration.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+30-24llvm/lib/Analysis/ScalarEvolution.cpp
+5-0llvm/include/llvm/Analysis/ScalarEvolution.h
+35-242 files