LLVM/project 9ea4278 — llvm/test/Transforms/IndVarSimplify loop-invariant-predicate-samesign.ll outer_phi.ll, llvm/test/Transforms/IndVarSimplify/X86 loop-invariant-conditions.ll

[IndVars] Hoist compares made loop-invariant to the preheader. (#241408)

To enable additional unswitching, hoist invariant compares into the
preheader.

Enables additional unswitching in a number of cases end-to-end:
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1977

Alternative to requesting another LICM run
(https://github.com/llvm/llvm-project/pull/215899) , just to create the
invariant condition outside the loop, as here we already know it is
invariant and we need to create a new instruction anyways.

See also https://github.com/llvm/llvm-project/pull/238580

PR: https://github.com/llvm/llvm-project/pull/241408
DeltaFile
+145-0llvm/test/Transforms/IndVarSimplify/hoist-invariant-cmp.ll
+64-0llvm/test/Transforms/PhaseOrdering/loop-access-checks.ll
+16-16llvm/test/Transforms/IndVarSimplify/iv-poison.ll
+7-7llvm/test/Transforms/IndVarSimplify/X86/loop-invariant-conditions.ll
+4-4llvm/test/Transforms/IndVarSimplify/outer_phi.ll
+3-3llvm/test/Transforms/IndVarSimplify/loop-invariant-predicate-samesign.ll
+239-305 files not shown
+246-3611 files

LLVM/project e91ef14 — llvm/lib/Transforms/InstCombine InstCombineInternal.h InstCombineCasts.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold vector `bitextract` of a `bitcast` to `shufflevector`
DeltaFile
+91-49llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+56-17llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+12-18llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+8-0llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+167-844 files

LLVM/project 2240bcb — libcxx/include generator

Fix generator initialization and allocator handling
DeltaFile
+19-10libcxx/include/generator
+19-101 files

LLVM/project 66f1413 — clang/lib/Headers arm_acle.h

[AArch64] Silence strict-prototype warnings (#242286)
DeltaFile
+2-2clang/lib/Headers/arm_acle.h
+2-21 files

LLVM/project f13cadd — llvm/lib/Transforms/InstCombine InstCombineInternal.h InstCombineCasts.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold vector `bitextract` of a `bitcast` to `shufflevector`
DeltaFile
+91-49llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+55-17llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+11-17llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+7-0llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+164-834 files

LLVM/project 30bda45 — llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Pre-commit tests for vector `bitextract` of a `bitcast`
DeltaFile
+157-0llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+157-01 files

LLVM/project 689a6b6 — llvm/lib/Transforms/InstCombine InstructionCombining.cpp InstCombineCasts.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold `bitextract` of a vector to `extractelement` or `shufflevector`
DeltaFile
+187-99llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+60-0llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+57-0llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+304-993 files

LLVM/project 5817833 — llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Pre-commit tests for `bitextract` of a vector
DeltaFile
+400-0llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+400-01 files

LLVM/project eda374a — llvm/lib/Remarks BitstreamRemarkParser.cpp, llvm/unittests/Remarks BitstreamRemarksParsingTest.cpp

[Remarks] Reject remarks of type Unknown in the bitstream parser (#242617)

The bitstream remark parser only rejected type values above
`Type::Last`, so a record with type 0, `Type::Unknown`, parsed as a
valid remark. Writing such a remark as YAML reaches
`llvm_unreachable("Unknown remark type")` in `YAMLRemarkSerializer.cpp`,
which is how `llvm-remarkutil bitstream2yaml` crashes on a container
with a zeroed type field. The YAML parser already rejects a remark
without a type.

Reject type 0 with the existing "Unknown remark type." error. The new
test serializes a remark without a type and expects that error.

Assisted-by: Claude Code (Claude Fable 5.2)
DeltaFile
+18-1llvm/unittests/Remarks/BitstreamRemarksParsingTest.cpp
+3-2llvm/lib/Remarks/BitstreamRemarkParser.cpp
+21-32 files

LLVM/project a2d61e4 — clang/test/Headers __clang_hip_math.hip, llvm/test/CodeGen/AMDGPU combine-carry-into-uadde-usube.ll

Merge branch 'main' into users/c8ef/generator-recovered
DeltaFile
+1,283-19,507utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+6,825-0utils/bazel/llvm-project-overlay/libc/src/__support/math/BUILD.bazel
+4,227-18llvm/test/CodeGen/AMDGPU/combine-carry-into-uadde-usube.ll
+3,674-0utils/bazel/llvm-project-overlay/libc/src/math/BUILD.bazel
+1,728-1,728clang/test/Headers/__clang_hip_math.hip
+1,512-1,574llvm/test/CodeGen/X86/clmul-vector.ll
+19,249-22,8273,107 files not shown
+126,287-68,8063,113 files

LLVM/project 35666e2 — llvm/lib/Target/Mips MipsTargetTransformInfo.h MipsTargetTransformInfo.cpp, llvm/test/Transforms/Coroutines coro-split-musttail-mips.ll

[Mips] Report tail call support only where the backend makes tail calls (#241817)

The MIPS backend makes tail calls only with -mips-tail-calls, which is
off by default, and never in MIPS16 code, and a call marked `musttail`
that it can't make is a fatal error. `MipsTTIImpl` doesn't override
`supportsTailCalls`, though, so it reports tail calls as supported, and
CoroSplit marks the resume call of every symmetric transfer `musttail`.
Any C++20 coroutine that resumes another one by symmetric transfer, as
from an `await_suspend` that returns a `coroutine_handle`, then fails to
compile for every MIPS ABI, at every optimization level:

```
fatal error: error in backend: failed to perform tail call elimination on a call site marked musttail
```

#198943 closed #47971, an earlier report of this, by making the resume
functions use the C calling convention, but the backend refuses every
tail call without -mips-tail-calls.


    [6 lines not shown]
DeltaFile
+62-0llvm/test/Transforms/Coroutines/coro-split-musttail-mips.ll
+6-0llvm/lib/Target/Mips/MipsTargetTransformInfo.cpp
+2-0llvm/lib/Target/Mips/MipsTargetTransformInfo.h
+70-03 files

LLVM/project 734d11e — llvm/lib/CodeGen/SelectionDAG SelectionDAGBuilder.cpp, llvm/test/CodeGen/AArch64 arm64_32-byte.ll

[SelectionDAG] Use the pointer memory type for byte `bitcast`, `bitinsert` and `bitextract`
DeltaFile
+203-0llvm/test/CodeGen/AArch64/arm64_32-byte.ll
+44-5llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+247-52 files

LLVM/project c989cba — llvm/lib/Transforms/InstCombine InstCombineInternal.h InstructionCombining.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold vector `bitextract` of a `bitcast` to `shufflevector`
DeltaFile
+91-49llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+58-20llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+27-20llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+11-0llvm/lib/Transforms/InstCombine/InstCombineInternal.h
+187-894 files

LLVM/project f154d33 — llvm/lib/Transforms/InstCombine InstructionCombining.cpp InstCombineCasts.cpp, llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Fold `bitextract` of a vector to `extractelement` or `shufflevector`
DeltaFile
+187-99llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+60-0llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp
+57-0llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
+304-993 files

LLVM/project 4ba189b — llvm/test/Transforms/InstCombine bitextract-of-vector.ll

[InstCombine] Pre-commit tests for `bitextract` of a vector
DeltaFile
+558-0llvm/test/Transforms/InstCombine/bitextract-of-vector.ll
+558-01 files

LLVM/project bf7f87b — llvm/lib/CodeGen/SelectionDAG SelectionDAGBuilder.cpp, llvm/test/CodeGen/AArch64 arm64_32-byte.ll

[SelectionDAG] Use the pointer memory type when lowering byte casts
DeltaFile
+216-0llvm/test/CodeGen/AArch64/arm64_32-byte.ll
+44-5llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+260-52 files

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

[mlir][SPIR-V] Add ComplexToSPIRV lowering for complex.pow (#242263)

Decomposes complex.pow using its polar-form decomposition into the real
and imaginary components, following the same pattern as the other
transcendental complex ops in this file
DeltaFile
+59-1mlir/lib/Conversion/ComplexToSPIRV/ComplexToSPIRV.cpp
+47-0mlir/test/Conversion/ComplexToSPIRV/complex-to-spirv.mlir
+106-12 files

LLVM/project cf368b2 — llvm/lib/Target/LoongArch/MCTargetDesc LoongArchMatInt.cpp, llvm/test/CodeGen/LoongArch imm.ll

Implement a much better version by construction
DeltaFile
+1-6llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchMatInt.cpp
+2-3llvm/test/CodeGen/LoongArch/imm.ll
+3-92 files

LLVM/project 0873ef0 — llvm/test/CodeGen/LoongArch imm.ll

[NFC] Add new baseline case for 0xC000080000000000
DeltaFile
+10-0llvm/test/CodeGen/LoongArch/imm.ll
+10-01 files

LLVM/project d859101 — llvm/lib/CodeGen/SelectionDAG SelectionDAGBuilder.cpp, llvm/test/CodeGen/AArch64 arm64_32-byte.ll

[SelectionDAG] Use the pointer memory type when lowering byte casts
DeltaFile
+215-0llvm/test/CodeGen/AArch64/arm64_32-byte.ll
+46-5llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+261-52 files

LLVM/project ca14e3d — llvm/lib/Transforms/Utils SCCPSolver.cpp, llvm/test/Transforms/FunctionSpecialization invalidate-function-address-use.ll

[SCCP] Only invalidate calls of a function when its return value is reset (#241671)

Fixes #241244.

When FunctionSpecializer resets the lattice of a function's return
value, SCCPInstVisitor::invalidate added every user of the function to
the invalidation list. That includes uses that only pass the function's
address, like `call @g(ptr @k)`. Nothing solves such a call again, so
its result stayed undef and IPSCCP folded it to undef.

Only direct calls of the function whose signature matches depend on its
return value, so invalidate now walks only those. The walk is separate
from the one for ordinary values.
DeltaFile
+46-0llvm/test/Transforms/FunctionSpecialization/invalidate-function-address-use.ll
+12-2llvm/lib/Transforms/Utils/SCCPSolver.cpp
+58-22 files

LLVM/project df6822f — llvm/lib/Target/RISCV RISCVInstrInfoP.td RISCVISelLowering.cpp

[RISCV][P-ext] Custom lower v8i8/v4i16 MUL on RV64. NFC (#242390)

Lower RV64 `v8i8`/`v4i16` multiplication through the existing
multiply-parts nodes and `PPAIRE`, extending the lowering used for
`v8i8` multiply-high operations. This replaces the nested machine
instructions in the TableGen patterns.
DeltaFile
+12-8llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+1-7llvm/lib/Target/RISCV/RISCVInstrInfoP.td
+13-152 files

LLVM/project 3f03766 — llvm/tools/llubi/lib Interpreter.cpp

[llubi][NFC] Extract arithmetic and vector intrinsic helpers (#242610)

This PR factors division/remainder, vector reductions, and trailing-zero
element counting into dedicated helpers to make them reusable for later
VP implementation.

Extracted from #229351.
DeltaFile
+256-282llvm/tools/llubi/lib/Interpreter.cpp
+256-2821 files

LLVM/project b4a3155 — mlir/docs/Rationale SideEffectsAndSpeculation.md

[mlir][docs] Add guidance on "non observable" side effect modeling
DeltaFile
+47-2mlir/docs/Rationale/SideEffectsAndSpeculation.md
+47-21 files

LLVM/project b68f5d6 — llvm/lib/Remarks BitstreamRemarkParser.cpp, llvm/unittests/Remarks BitstreamRemarksParsingTest.cpp

[Remarks] Return the error when the bitstream parser cannot enter a block

`BitstreamBlockParserHelperBase::enterBlock` tested the `Error` from `BitstreamCursor::EnterSubBlock` as a boolean and never consumed it. A container that ends right after a block header makes `EnterSubBlock` fail, and a build with `LLVM_ENABLE_ABI_BREAKING_CHECKS` then aborts with "Program aborted due to an unhandled Error" instead of reporting a parse error.

`enterBlock` now returns the error from `EnterSubBlock`, as the other bitstream readers do. The new test cuts a container written by the serializer after every 32-bit word and expects each prefix to fail. Without the fix it aborts in a build with ABI-breaking checks.

Assisted-by: Claude Code (Claude Fable 5.2)
DeltaFile
+28-2llvm/unittests/Remarks/BitstreamRemarksParsingTest.cpp
+1-3llvm/lib/Remarks/BitstreamRemarkParser.cpp
+29-52 files

LLVM/project 4c2a4a9 — llvm/test/CodeGen/Mips/GlobalISel/llvm-ir memset_inline.ll memcpy_inline.ll, llvm/test/CodeGen/RISCV/GlobalISel memset-inline.ll memcpy-inline.ll

[GlobalISel] Halve the bit width when lowering memory operations
DeltaFile
+167-564llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/memcpy_inline.ll
+119-282llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/memset_inline.ll
+40-120llvm/test/CodeGen/RISCV/GlobalISel/memcpy-inline.ll
+79-32llvm/test/CodeGen/RISCV/GlobalISel/memset-inline.ll
+4-14llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-memcpy-inline.mir
+4-10llvm/test/CodeGen/RISCV/GlobalISel/legalizer/legalize-memset-inline.mir
+413-1,0223 files not shown
+420-1,0349 files

LLVM/project 80e855e — llvm/test/CodeGen/Mips/GlobalISel/llvm-ir memset_inline.ll memcpy_inline.ll

[Mips][GlobalISel] Add baseline tests for inline memory operations
DeltaFile
+761-0llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/memcpy_inline.ll
+431-0llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/memset_inline.ll
+1,192-02 files

LLVM/project 71ae235 — llvm/test/CodeGen/RISCV/GlobalISel memset-inline.ll memcpy-inline.ll

[RISCV][GlobalISel] Add baseline tests for aligned inline memory operations
DeltaFile
+208-0llvm/test/CodeGen/RISCV/GlobalISel/memcpy-inline.ll
+56-0llvm/test/CodeGen/RISCV/GlobalISel/memset-inline.ll
+264-02 files

LLVM/project 57806b9 — llvm/lib/Transforms/InstCombine InstCombineCompares.cpp, llvm/test/Transforms/InstCombine load-cmp-wide-bitvector.ll

[InstCombine] Fix miscompile in foldCmpLoadFromIndexedGlobal (#242608)

The index check `i & 8` to delay checking for out-of-bounds (for the bit
vector) indices causes miscompiles when a global larger than 64 elements have
interesting elements between e.g. indices 65 and the next time the condition is
checked, which is 73.

The guard was also slightly incorrect according to its documentation: it'd need
to be `i & 7` instead of `i & 8`.

It was also unnecessary: each iteration does constant evaluation and updates a
state machine represented as 6 variables. 5 integer checks at the end of such a
loop does not make it any more slower than it already is, and in the worst case
causes 7 extra constant evaluations and state machine updates before bailing
out.
DeltaFile
+21-0llvm/test/Transforms/InstCombine/load-cmp-wide-bitvector.ll
+3-4llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+24-42 files

LLVM/project 7cf5897 — llvm/lib/Remarks BitstreamRemarkParser.h BitstreamRemarkParser.cpp, llvm/unittests/Remarks BitstreamRemarksParsingTest.cpp

[Remarks] Return the error when the bitstream parser cannot enter a block

`BitstreamBlockParserHelperBase::enterBlock` tested the `Error` from `BitstreamCursor::EnterSubBlock` as a boolean and never consumed it. A container that ends right after a block header makes `EnterSubBlock` fail, and a build with `LLVM_ENABLE_ABI_BREAKING_CHECKS` then aborts with "Program aborted due to an unhandled Error" instead of reporting a parse error.

`parseBlock` now calls `EnterSubBlock` itself and returns its error, as the other bitstream readers do. That leaves `enterBlock` without a job, so it is gone. The new test cuts a container written by the serializer after every 32-bit word and expects each prefix to fail. Without the fix it aborts in a build with ABI-breaking checks.

Assisted-by: Claude Code (Claude Fable 5.2)
DeltaFile
+28-2llvm/unittests/Remarks/BitstreamRemarksParsingTest.cpp
+0-6llvm/lib/Remarks/BitstreamRemarkParser.cpp
+1-3llvm/lib/Remarks/BitstreamRemarkParser.h
+29-113 files