LLVM/project ae75b63 — llvm/test/Analysis/CostModel/AArch64 masked_expand_load.ll masked_compress_load.ll

[CostModel] NFC: Rename masked_compress_load.ll -> masked_compress_store.ll (#242259)

Also simplified masked_expand_load.ll and masked_compress_store.ll by
moving the target triple from the RUN line to the IR.
DeltaFile
+296-0llvm/test/Analysis/CostModel/AArch64/masked_compress_store.ll
+0-294llvm/test/Analysis/CostModel/AArch64/masked_compress_load.ll
+8-6llvm/test/Analysis/CostModel/AArch64/masked_expand_load.ll
+304-3003 files

LLVM/project a62842e — libc/test/src/math/smoke sinhf16_test.cpp expm1f16_test.cpp

[libc] Fix -Wunused-variable warnings

These variables may end up unused depending on the rounding mode in
place.
DeltaFile
+1-1libc/test/src/math/smoke/sinhf16_test.cpp
+1-1libc/test/src/math/smoke/expm1f16_test.cpp
+1-1libc/test/src/math/smoke/expf16_test.cpp
+1-1libc/test/src/math/smoke/exp2m1f16_test.cpp
+1-1libc/test/src/math/smoke/exp2f16_test.cpp
+1-1libc/test/src/math/smoke/exp10m1f16_test.cpp
+6-62 files not shown
+8-88 files

LLVM/project 982bc6f — libc/cmake/caches baremetal_common.cmake

[libc] Enable -Werror in baremetal_common.cmake cache file

After recent fixes, all the warnings are gone in baremetal builds.

Enable -Werror again so that we can catch warnings as they come.
DeltaFile
+1-2libc/cmake/caches/baremetal_common.cmake
+1-21 files

LLVM/project 9fcd40e — libc/src/__support/OSUtil/linux CMakeLists.txt auxv.h, libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt prctl.h

[libc] Use a syscall wrapper for auxv
DeltaFile
+35-0libc/src/__support/OSUtil/linux/syscall_wrappers/prctl.h
+16-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+7-8libc/src/__support/OSUtil/linux/auxv.h
+12-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+1-1libc/src/__support/OSUtil/linux/CMakeLists.txt
+71-105 files

LLVM/project 78d64a4 — mlir/lib/Conversion/ComplexToSPIRV ComplexToSPIRV.cpp, mlir/test/Conversion/ComplexToSPIRV complex-to-spirv.mlir

[mlir][SPIR-V] Add ComplexToSPIRV lowering for complex.tan and complex.tanh (#242054)

Both ops share a single pattern parameterized on which trig/hyperbolic
functions play the real and imaginary roles, decomposed using
GLSL.std.450/OpenCL extended instructions
DeltaFile
+70-0mlir/test/Conversion/ComplexToSPIRV/complex-to-spirv.mlir
+60-2mlir/lib/Conversion/ComplexToSPIRV/ComplexToSPIRV.cpp
+130-22 files

LLVM/project 999c1c8 — llvm/lib/Analysis InstructionSimplify.cpp, llvm/test/Transforms/InstSimplify saturating-shl.ll

[InstSimplify] Fold llvm.{sshl,ushl}.sat with saturated LHS (#242217)

Fold ushl.sat(-1, Y) -> -1.
Fold sshl.sat(SINT_MAX, Y) -> SINT_MAX and sshl.sat(SINT_MIN, Y) ->
SINT_MIN.
Also return Op0 directly on 0 << Y to preserve poison elements.

Follows
https://github.com/llvm/llvm-project/pull/241127#discussion_r4537251015.

Alive2: https://alive2.llvm.org/ce/z/E8L2xo
DeltaFile
+124-1llvm/test/Transforms/InstSimplify/saturating-shl.ll
+10-1llvm/lib/Analysis/InstructionSimplify.cpp
+134-22 files

LLVM/project 7e9053b — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt gettid.h, libc/src/unistd/linux CMakeLists.txt fork.cpp

[libc] Use syscall wrappers for fork
DeltaFile
+41-0libc/src/__support/OSUtil/linux/syscall_wrappers/fork.h
+34-2utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+31-0libc/src/__support/OSUtil/linux/syscall_wrappers/gettid.h
+14-16libc/src/unistd/linux/fork.cpp
+26-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+7-6libc/src/unistd/linux/CMakeLists.txt
+153-246 files

LLVM/project b002ab7 — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt sigaltstack.h, libc/src/signal/linux CMakeLists.txt sigaltstack.cpp

[libc] Use a syscall wrapper for sigaltstack
DeltaFile
+51-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+34-0libc/src/__support/OSUtil/linux/syscall_wrappers/sigaltstack.h
+13-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+5-6libc/src/signal/linux/sigaltstack.cpp
+4-2libc/src/signal/linux/CMakeLists.txt
+107-85 files

LLVM/project 072d27c — libc/src/__support/File/linux CMakeLists.txt dir.cpp, libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt getdents64.h

[libc] Use a syscall wrapper for the Linux Dir helpers
DeltaFile
+38-0libc/src/__support/OSUtil/linux/syscall_wrappers/getdents64.h
+16-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+2-11libc/src/__support/File/linux/dir.cpp
+13-0libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+2-2libc/src/__support/File/linux/CMakeLists.txt
+71-135 files

LLVM/project 6355508 — lld/MachO MarkLive.cpp

[lld-macho] Collect S_ATTR_LIVE_SUPPORT sections with the markLive roots

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Claude-Session: https://claude.ai/code/session_0151E9Zq69e8fCB8jwD3kGLe
DeltaFile
+39-29lld/MachO/MarkLive.cpp
+39-291 files

LLVM/project 182b701 — clang/include/clang/CIR/Dialect/IR CIROps.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Add folder for `cir.vec.fcmp` op (#240952)

Assisted-by: claude
DeltaFile
+342-0clang/test/CIR/Transforms/vector-cmp-fold.cir
+104-0clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+18-14clang/test/CIR/CodeGenBuiltins/X86/cmp-fp-builtins.c
+4-4clang/lib/CIR/Dialect/Transforms/CIRCanonicalize.cpp
+1-1clang/include/clang/CIR/Dialect/IR/CIROps.td
+469-195 files

LLVM/project fbaaca2 — clang/lib/CIR/CodeGen CIRGenFunction.h CIRGenExprAggregate.cpp, clang/test/CIR/CodeGen vla-lambda-capturing.cpp

[CIR] Add support for VLA captures (#238818)

This basically copies what classic codegen does and adopts a test from
there.

Assisted-by: claude
DeltaFile
+280-0clang/test/CIR/CodeGen/vla-lambda-capturing.cpp
+7-2clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+6-2clang/lib/CIR/CodeGen/CIRGenExprAggregate.cpp
+5-0clang/lib/CIR/CodeGen/CIRGenFunction.h
+298-44 files

LLVM/project db8f33a — mlir/lib/Dialect/Bufferization/Transforms EmptyTensorElimination.cpp, mlir/test/Dialect/Bufferization/Transforms one-shot-bufferize-empty-tensor-elimination.mlir

[MLIR][tensor] Missed Optimization: Incomplete elimination of a tensor.empty (#228032)

Earlier the replacement logic could only select one of the immediate
uses of tensor.empty. This patch fixes it by considering all the
immediate uses of tensor.empty (which is a potential candidate for
replacement) in different control flow paths.

So now for input.mlir:

```
module {
  func.func @shared_empty(%arg0: i1, %arg1: f32, %arg2: f32, %arg3: tensor<16xf32>) -> tensor<16xf32> {
    %0 = tensor.empty() : tensor<4xf32>
    %1 = scf.if %arg0 -> (tensor<4xf32>) {
      %2 = linalg.fill ins(%arg1 : f32) outs(%0 : tensor<4xf32>) -> tensor<4xf32>
      scf.yield %2 : tensor<4xf32>
    } else {
      %2 = linalg.fill ins(%arg2 : f32) outs(%0 : tensor<4xf32>) -> tensor<4xf32>
      scf.yield %2 : tensor<4xf32>

    [51 lines not shown]
DeltaFile
+31-26mlir/lib/Dialect/Bufferization/Transforms/EmptyTensorElimination.cpp
+37-0mlir/test/Dialect/Bufferization/Transforms/one-shot-bufferize-empty-tensor-elimination.mlir
+68-262 files

LLVM/project 795b012 — mlir/lib/Dialect/Bufferization/Transforms BufferDeallocationSimplification.cpp, mlir/test/Dialect/Bufferization/Transforms buffer-deallocation-simplification-wide.mlir

[mlir][bufferization] Avoid quadratic alias checks for known allocation roots (#242131)

### Summary

`SplitDeallocWhenNotAliasingAnyOther` currently rebuilds the remaining
operand list and performs pairwise alias checks for every memref in a
`bufferization.dealloc`. For a wide dealloc with distinct allocation
roots, this work scales quadratically with the number of operands.

This patch introduces an allocation-root fast path:

- Trace each candidate operand through `getViewBase` to a `memref.alloc`
root.
- Count occurrences of each root using `llvm::DenseMap<Value, int64_t>`.
- When all roots are known, determine whether a memref can split off by
checking if its root occurs exactly once.
- Keep the existing alias-analysis path for inputs with unknown origins.

The fast path avoids N copies of the operand list and N(N-1) pairwise

    [34 lines not shown]
DeltaFile
+79-0mlir/test/Dialect/Bufferization/Transforms/buffer-deallocation-simplification-wide.mlir
+29-4mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocationSimplification.cpp
+108-42 files

LLVM/project d8dfc6b — llvm/test/CodeGen/LoongArch/lasx bitset.ll bitrev.ll, llvm/test/CodeGen/LoongArch/lsx bitset.ll bitrev.ll

[LoongArch][NFC] Pre-commit tests for [x]vbitset/[x]vbitrev through bitcast

Add tests where the shift of splat(1) is done in a narrower element type
and then bitcast to the type of the or/xor operation.

Assisted-By: LLM
DeltaFile
+93-0llvm/test/CodeGen/LoongArch/lsx/bitset.ll
+93-0llvm/test/CodeGen/LoongArch/lsx/bitrev.ll
+93-0llvm/test/CodeGen/LoongArch/lasx/bitset.ll
+93-0llvm/test/CodeGen/LoongArch/lasx/bitrev.ll
+372-04 files

LLVM/project 77262f9 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lasx bitset.ll bitrev.ll

[LoongArch] Select [x]vbitset/[x]vbitrev for or/xor of bitcasted shl(splat(1), y)

When the shift of splat(1) is performed in a narrower element type than
the or/xor, e.g.

```llvm
  %s = shl <8 x i16> splat (i16 1), %y
  %m = bitcast <8 x i16> %s to <2 x i64>
  %r = xor <2 x i64> %x, %m
```

the existing [x]vbitset.{b/h/w} and [x]vbitrev.{b/h/w} patterns fail to
match and we emit vrepli + vsll + vor.v/vxor.v.

Fold OP(bitcast(shl(splat(1), y)), x) into
bitcast(OP(shl(splat(1), y), bitcast(x))) for OP in {or, xor} so that
the operation is done in the shift's element type and selected as a
single [x]vbitset or [x]vbitrev.

Assisted-By: LLM
DeltaFile
+39-0llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+6-18llvm/test/CodeGen/LoongArch/lsx/bitset.ll
+6-18llvm/test/CodeGen/LoongArch/lsx/bitrev.ll
+6-18llvm/test/CodeGen/LoongArch/lasx/bitset.ll
+6-18llvm/test/CodeGen/LoongArch/lasx/bitrev.ll
+63-725 files

LLVM/project 994f2c3 — llvm/lib/Target/WebAssembly WebAssemblyISelLowering.cpp, llvm/test/Analysis/CostModel/WebAssembly cast.ll

[WebAssembly] Truncate more with NARROW_U (#239626)

Add support for the following conversions:
- v4i16 -> v4i8
- v8i16 -> v8i8
- v4i32 -> v4 i16/i8
- v4i64 -> v4 i32/i16/i8
- v8i64 -> v8 16/i8

The cost model has also been updated.
DeltaFile
+209-3llvm/test/CodeGen/WebAssembly/simd-vector-trunc.ll
+90-118llvm/test/CodeGen/WebAssembly/memory-interleave.ll
+105-0llvm/test/Analysis/CostModel/WebAssembly/cast.ll
+100-0llvm/test/Transforms/LoopVectorize/WebAssembly/CostModel/quantize_3d.ll
+69-18llvm/test/CodeGen/WebAssembly/fpclamptosat_vec.ll
+60-19llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp
+633-1585 files not shown
+696-20011 files

LLVM/project d071e0d — llvm/lib/Transforms/Scalar CorrelatedValuePropagation.cpp, llvm/test/Transforms/CorrelatedValuePropagation stou-poison-dbgval.ll

Fix stou incorrect debug vals (#236950)

…sations

Fixes issues #218626 and #218627
DeltaFile
+71-0llvm/test/Transforms/CorrelatedValuePropagation/stou-poison-dbgval.ll
+2-0llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
+73-02 files

LLVM/project 052ea46 — llvm/lib/Analysis VectorUtils.cpp MetadataUtils.cpp, llvm/lib/Transforms/Scalar SROA.cpp ScalarizeMaskedMemIntrin.cpp

[Analysis] Centralize memory metadata utilities
DeltaFile
+642-0llvm/lib/Analysis/MetadataUtils.cpp
+390-0llvm/unittests/Analysis/MetadataUtilsTest.cpp
+1-304llvm/lib/Transforms/Utils/Local.cpp
+1-162llvm/lib/Analysis/VectorUtils.cpp
+27-105llvm/lib/Transforms/Scalar/ScalarizeMaskedMemIntrin.cpp
+35-89llvm/lib/Transforms/Scalar/SROA.cpp
+1,096-66025 files not shown
+1,572-1,02931 files

LLVM/project 0a2bfbb — llvm/test/Transforms/InstCombine memory-metadata.ll storemerge-metadata.ll, llvm/test/Transforms/SROA memory-metadata.ll

[Transforms] Add memory metadata tests
DeltaFile
+215-0llvm/test/Transforms/SROA/memory-metadata.ll
+213-0llvm/test/Transforms/InstCombine/storemerge-metadata.ll
+195-0llvm/test/Transforms/VectorCombine/memory-metadata.ll
+185-0llvm/test/Transforms/InstCombine/memory-metadata.ll
+150-0llvm/test/Transforms/Scalarizer/memory-metadata.ll
+72-0llvm/test/Transforms/VectorCombine/X86/memory-metadata.ll
+1,030-07 files not shown
+1,197-913 files

LLVM/project cbc2f2f — llvm/include/llvm/ADT APFloat.h, llvm/lib/Support APFloat.cpp

Revert "[APFloat] Support user defined bit conversions (#240920)"

This reverts commit 2be50053ae1b2e4d1a90683e93e451b065f56155.
DeltaFile
+353-406llvm/lib/Support/APFloat.cpp
+3-343llvm/unittests/ADT/APFloatTest.cpp
+62-91llvm/include/llvm/ADT/APFloat.h
+418-8403 files

LLVM/project 05b37c7 — clang/lib/CIR/CodeGen CIRGenBuiltin.cpp

[CIR] Return undef for unimplemented target builtin results (#236332)

A null RValue from an NYI target builtin crashed later uses of the
result

Return undef instead, like the other NYI paths in emitBuiltinExpr
DeltaFile
+4-3clang/lib/CIR/CodeGen/CIRGenBuiltin.cpp
+4-31 files

LLVM/project e2ae687 — mlir/test/lib/Dialect/Test TestAttributesSyntax.cpp TestAttributesCore.cpp, mlir/tools/mlir-tblgen AttrOrTypeDefGen.cpp

[mlir][ODS] Add partitions for attributes and types

Allow attributes and types to be grouped into named partitions, like
ops. Each def can set `partition` to a `Partition` record. Passing
`-attrdefs-partition=<name>` or `-typedefs-partition=<name>` to the
attrdef/typedef decls and defs generators then emits only the defs of
that partition. A large dialect can thus split its attributes and types
over several compilation units with narrower headers.

The implementation mirrors the approach used in op partitioning
with a `register<DialectClass>Attributes` function (or Types) is used to register every attribute (or type) of the dialect and dispatches to partition specific functions.
The `generated{Parser,Printer}` function saw the biggest change.
It is not generated as `generated<DialectClass>{Attribute,Type}{Parser,Printer}` which is a method with public linkage.
This method is also generated for non-partitioned dialects and the old `generated{Parser,Printer}` function soft-deprecated (but for now retained for migration purposes).

The additional testing, the test dialect's attributes and types are split into the
partitions `Core` and `Syntax`.
This roughly halves the compile time (15.1s -> 6.7s + 6.9s) and peak memory (721 MiB -> 385 and
376 MiB) of the largest test dialect attribute compilation unit.

    [2 lines not shown]
DeltaFile
+0-648mlir/test/lib/Dialect/Test/TestTypes.cpp
+0-614mlir/test/lib/Dialect/Test/TestAttributes.cpp
+502-0mlir/test/lib/Dialect/Test/TestTypesCore.cpp
+375-0mlir/test/lib/Dialect/Test/TestAttributesCore.cpp
+311-41mlir/tools/mlir-tblgen/AttrOrTypeDefGen.cpp
+260-0mlir/test/lib/Dialect/Test/TestAttributesSyntax.cpp
+1,448-1,30354 files not shown
+2,524-1,71360 files

LLVM/project bf1463b — libc/test/src/math/smoke expf16_test.cpp exp2m1f16_test.cpp

[libc] Fix -Wunused-variable warnings

These variables may end up unused depending on the rounding mode in
place.
DeltaFile
+1-1libc/test/src/math/smoke/expf16_test.cpp
+1-1libc/test/src/math/smoke/exp2m1f16_test.cpp
+1-1libc/test/src/math/smoke/exp2f16_test.cpp
+1-1libc/test/src/math/smoke/exp10m1f16_test.cpp
+1-1libc/test/src/math/smoke/exp10f16_test.cpp
+5-55 files

LLVM/project 971e1f1 — libc/cmake/caches baremetal_common.cmake

[libc] Enable -Werror in baremetal_common.cmake cache file

After recent fixes, all the warnings are gone in baremetal builds.

Enable -Werror again so that we can catch warnings as they come.
DeltaFile
+1-2libc/cmake/caches/baremetal_common.cmake
+1-21 files

LLVM/project fdc4aee — llvm/test/CodeGen/X86 pr241273.ll

[X86] Add test coverage to #241273 (#241932)
DeltaFile
+99-0llvm/test/CodeGen/X86/pr241273.ll
+99-01 files

LLVM/project d98f5ac — mlir/lib/Conversion/ComplexToSPIRV ComplexToSPIRV.cpp, mlir/test/Conversion/ComplexToSPIRV complex-to-spirv.mlir

[mlir][SPIR-V] Add ComplexToSPIRV lowering for complex.log and complex.log1p (#241709)

Decomposes both ops into their real/imaginary component formulas using
GLSL.std.450/OpenCL extended instructions, mirroring the existing
component-decomposition patterns in this file
DeltaFile
+71-0mlir/test/Conversion/ComplexToSPIRV/complex-to-spirv.mlir
+54-1mlir/lib/Conversion/ComplexToSPIRV/ComplexToSPIRV.cpp
+125-12 files

LLVM/project 5039b7d — lld/MachO MarkLive.cpp

Make addLiveSupport non-virtual

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Claude-Session: https://claude.ai/code/session_0151E9ZpY6Krqg1C84uMobNg
DeltaFile
+8-8lld/MachO/MarkLive.cpp
+8-81 files

LLVM/project c581738 — lld/MachO MarkLive.cpp

Store the thread count in MarkLive::numThreads

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Claude-Session: https://claude.ai/code/session_0151E9ZpY6Krqg1C84uMobNg
DeltaFile
+3-3lld/MachO/MarkLive.cpp
+3-31 files

LLVM/project 78b34b4 — lld/MachO MarkLive.cpp

Add live-support sections through MarkLive::addLiveSupport

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
Claude-Session: https://claude.ai/code/session_0151E9ZpY6Krqg1C84uMobNg
DeltaFile
+17-18lld/MachO/MarkLive.cpp
+17-181 files