LLVM/project 731f891 — llvm/lib/Analysis InstructionSimplify.cpp, llvm/test/Transforms/InstSimplify bitinsert-bitextract.ll

[InstSimplify] Simplify vector `bitinsert` and `bitextract` with out-of-range offsets
DeltaFile
+24-5llvm/lib/Analysis/InstructionSimplify.cpp
+2-4llvm/test/Transforms/InstSimplify/bitinsert-bitextract.ll
+26-92 files

LLVM/project d41c8ae — llvm/test/Transforms/InstSimplify bitinsert-bitextract.ll

[InstSimplify] Pre-commit tests for vector `bitinsert` and `bitextract` with out-of-range offsets
DeltaFile
+20-0llvm/test/Transforms/InstSimplify/bitinsert-bitextract.ll
+20-01 files

LLVM/project fa66fc5 — llvm/lib/Analysis InstructionSimplify.cpp, llvm/test/Transforms/InstSimplify bitinsert-bitextract.ll

[InstSimplify] Simplify vector `bitinsert` and `bitextract` with out-of-range offsets
DeltaFile
+24-5llvm/lib/Analysis/InstructionSimplify.cpp
+2-4llvm/test/Transforms/InstSimplify/bitinsert-bitextract.ll
+26-92 files

LLVM/project f7b5fe9 — llvm/test/Transforms/InstSimplify bitinsert-bitextract.ll

[InstSimplify] Pre-commit tests for vector `bitinsert` and `bitextract` with out-of-range offsets
DeltaFile
+20-0llvm/test/Transforms/InstSimplify/bitinsert-bitextract.ll
+20-01 files

LLVM/project f32560f — llvm/test/CodeGen/ARM twoaddrinstr.ll constantpool-align.ll, llvm/test/CodeGen/Thumb2 mve-store-constant.ll

[ARM] Add store-constant test cases. NFC (#242814)
DeltaFile
+81-0llvm/test/CodeGen/ARM/neon-store-constant.ll
+76-0llvm/test/CodeGen/Thumb2/mve-store-constant.ll
+46-15llvm/test/CodeGen/ARM/constantpool-align.ll
+15-13llvm/test/CodeGen/ARM/twoaddrinstr.ll
+218-284 files

LLVM/project 857a709 — llvm/lib/Transforms/Vectorize VPlanUtils.cpp

[VPlan] Build SCEV of VPDerivedIVRecipe like its expansion (NFC). (#242804)

Compute the SCEV of a VPDerivedIVRecipe as Start + zext-or-trunc(Index)
* Step, matching expandVPDerivedIV. Previously Start and Step were
truncated or sign-extended to the type of Index, so the SCEV had Index's
type rather than the recipe's, and VPScalarIVStepsRecipe truncated it
back. Remove that truncate.

All derived IVs queried today have an Index at least as wide as Start,
where both forms fold to the same SCEV.
DeltaFile
+9-9llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+9-91 files

LLVM/project 8fea0b4 — llvm/lib/Analysis ConstantFolding.cpp, llvm/test/Transforms/InstSimplify ptrtoaddr.ll

[ConstantFolding] Use the pointer width for ptrtoint of inttoptr (#237878)

Previously, folding `ptrtoint (inttoptr C)` truncated C to the address
width and dropped the non-address bits; use the pointer width instead.

Fixes #235642.

Assisted-by: Claude Opus 5.5
DeltaFile
+10-0llvm/test/Transforms/InstSimplify/ptrtoaddr.ll
+4-5llvm/lib/Analysis/ConstantFolding.cpp
+14-52 files

LLVM/project 163b471 — clang/test/Headers __clang_hip_math.hip, flang/lib/Semantics resolve-directives.cpp

Merge branch 'main' into users/zero9178/nvvm-dialect-op-partitions
DeltaFile
+1,275-19,674utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+6,864-0utils/bazel/llvm-project-overlay/libc/src/__support/math/BUILD.bazel
+3,684-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
+1,434-1,354flang/lib/Semantics/resolve-directives.cpp
+16,497-24,3301,489 files not shown
+62,191-50,8851,495 files

LLVM/project 6fd40e0 — llvm/lib/Analysis ConstantFolding.cpp, llvm/test/Transforms/InstSimplify/ConstProp bitinsert-bitextract.ll

[ConstantFolding] Fold vector `bitinsert` and `bitextract`
DeltaFile
+67-6llvm/lib/Analysis/ConstantFolding.cpp
+12-27llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+79-332 files

LLVM/project 31d8b8c — llvm/test/Transforms/InstSimplify/ConstProp bitinsert-bitextract.ll

[ConstantFolding] Pre-commit tests for vector `bitinsert` and `bitextract`
DeltaFile
+112-0llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+112-01 files

LLVM/project 46a6a91 — llvm/lib/Analysis ConstantFolding.cpp, llvm/test/Transforms/InstSimplify bitcast-vector-fold.ll

[ConstantFolding] Fold constant vector `bitcast`s to scalar bytes
DeltaFile
+20-8llvm/test/Transforms/InstSimplify/bitcast-vector-fold.ll
+19-5llvm/lib/Analysis/ConstantFolding.cpp
+2-4llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+41-173 files

LLVM/project 1ce0d02 — llvm/test/Transforms/InstSimplify bitcast-vector-fold.ll, llvm/test/Transforms/InstSimplify/ConstProp bitinsert-bitextract.ll

[ConstantFolding] Pre-commit tests for constant vector `bitcast`s to scalar bytes
DeltaFile
+69-0llvm/test/Transforms/InstSimplify/bitcast-vector-fold.ll
+20-0llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+89-02 files

LLVM/project e2a8eb6 — clang/test/CodeGen hexagon-hlx-vector-pair-half.c hexagon-hlx-vector-pair-copy.c

Revert "[Hexagon] Test lowering of Clang HLX vector pair locals at -O0 (#242403) (#242803)

This reverts commit 351abdb04162065e75b007840aaf20ec7ac99a2b.

The tests fail in release builds because the values are unnamed.
DeltaFile
+0-34clang/test/CodeGen/hexagon-hlx-vector-pair-copy.c
+0-27clang/test/CodeGen/hexagon-hlx-vector-pair-half.c
+0-612 files

LLVM/project 069b424 — mlir/include/mlir/Dialect/OpenACC OpenACC.h OpenACCCGAttributes.td, mlir/test/Dialect/OpenACC ops-cg.mlir

[mlir][acc] Add the #acc.offload_packager offloading handler

Add an offloading handler attribute for gpu.module and gpu.binary that
is meant to embed the device images in the host object as LLVM offloading
binaries of kind OpenACC, for the offloading linker wrapper to link and
register with the OpenACC runtime.

Assisted-by: Claude Sonnet 5.5
DeltaFile
+19-0mlir/include/mlir/Dialect/OpenACC/OpenACCCGAttributes.td
+11-0mlir/test/Dialect/OpenACC/ops-cg.mlir
+1-0mlir/include/mlir/Dialect/OpenACC/OpenACC.h
+31-03 files

LLVM/project db84b80 — mlir/include/mlir/Dialect/OpenACC OpenACC.h, mlir/lib/Target/LLVMIR/Dialect/OpenACC CMakeLists.txt OpenACCToLLVMIRTranslation.cpp

[mlir][acc] Translate the acc.offload_entry attribute to an offloading entry

Add the acc.offload_entry unit attribute, which marks a global host symbol
(either a function or a global variable) that the offload runtime must be able
to associate with its device counterpart. The translation emits entries that
are registered with the OpenACC runtime libacctarget.

Assisted-by: Claude Sonnet 5.5
DeltaFile
+47-0mlir/lib/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.cpp
+24-2mlir/test/Target/LLVMIR/openacc-offload.mlir
+7-0mlir/include/mlir/Dialect/OpenACC/OpenACC.h
+1-0mlir/lib/Target/LLVMIR/Dialect/OpenACC/CMakeLists.txt
+79-24 files

LLVM/project 7d0debe — mlir/include/mlir/Target/LLVMIR/Dialect All.h, mlir/include/mlir/Target/LLVMIR/Dialect/OpenACC OpenACCToLLVMIRTranslation.h

[mlir][acc] Translate #acc.offload_packager to LLVM IR

Add a translation library for the OpenACC dialect that implements the
offloading translation interface of #acc.offload_packager. Each object
of a gpu.binary is wrapped in an offloading binary of kind OpenACC,
carrying the target triple and architecture, and the images are placed
in the .llvm.offloading section of the host module for the offloading
linker wrapper to extract.

Assisted-by: Claude Sonnet 5.5
DeltaFile
+173-0mlir/lib/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.cpp
+43-0mlir/test/Target/LLVMIR/openacc-offload.mlir
+29-0mlir/include/mlir/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.h
+23-0mlir/test/Target/LLVMIR/openacc-offload-objdump.mlir
+20-0mlir/lib/Target/LLVMIR/Dialect/OpenACC/CMakeLists.txt
+2-0mlir/include/mlir/Target/LLVMIR/Dialect/All.h
+290-04 files not shown
+294-010 files

LLVM/project c0bac6f — llvm/lib/Analysis ConstantFolding.cpp, llvm/test/Transforms/InstSimplify bitcast-vector-fold.ll

[ConstantFolding] Fold constant vector `bitcast`s to scalar bytes
DeltaFile
+20-8llvm/test/Transforms/InstSimplify/bitcast-vector-fold.ll
+19-5llvm/lib/Analysis/ConstantFolding.cpp
+2-4llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+41-173 files

LLVM/project 33b6589 — llvm/test/Transforms/InstSimplify bitcast-vector-fold.ll, llvm/test/Transforms/InstSimplify/ConstProp bitinsert-bitextract.ll

[ConstantFolding] Pre-commit tests for constant vector `bitcast`s to scalar bytes
DeltaFile
+61-0llvm/test/Transforms/InstSimplify/bitcast-vector-fold.ll
+20-0llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+81-02 files

LLVM/project 02dfd59 — llvm/lib/Analysis ConstantFolding.cpp, llvm/test/Transforms/InstSimplify/ConstProp bitinsert-bitextract.ll

[ConstantFolding] Fold vector `bitinsert` and `bitextract`
DeltaFile
+67-6llvm/lib/Analysis/ConstantFolding.cpp
+10-23llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+77-292 files

LLVM/project 2301bd7 — llvm/test/Transforms/InstSimplify/ConstProp bitinsert-bitextract.ll

[ConstantFolding] Pre-commit tests for vector `bitinsert` and `bitextract`
DeltaFile
+101-7llvm/test/Transforms/InstSimplify/ConstProp/bitinsert-bitextract.ll
+101-71 files

LLVM/project 6639eff — clang/include/clang/CIR/Dialect Passes.td, clang/lib/CIR/Dialect/IR CIRDialect.cpp

[CIR] Make cir-canonicalize a full canonicalizer

cir-canonicalize applied the CIR canonicalization patterns and folders
only to a hand-written list of operations. It now builds the pattern set
once in initialize() and runs the greedy driver over every operation, so
every pattern and folder applies everywhere. Only operations that
rewriting left dead are erased, such as the inputs of a folded
operation: CIR stays close to the source, so unused locals and ignored
expressions are kept as in classic codegen. Empty scopes and switches
were removed only because they were dead, so they get explicit
canonicalization patterns.

The pass uses the multi-op driver because the region driver always
erases blocks without a CFG predecessor, and a block that starts with
cir.label is reached only through cir.goto until the goto solver runs.
Region simplification stays off for the same reason. The new
test-convergence option fails the pass when the driver does not reach a
fixpoint, as in the upstream canonicalizer.

Assisted-by: Claude Code (claude-opus-5-5).
DeltaFile
+52-58clang/lib/CIR/Dialect/Transforms/CIRCanonicalize.cpp
+32-24clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+51-0clang/test/CIR/Transforms/canonicalize-dead-code.cir
+8-8clang/test/CIR/CodeGen/fold-during-cg.c
+10-2clang/include/clang/CIR/Dialect/Passes.td
+9-1clang/test/CIR/CodeGen/vla.c
+162-9314 files not shown
+202-9620 files

LLVM/project a723f0e — mlir/include/mlir/Transforms Passes.td GreedyPatternRewriteDriver.h, mlir/lib/Interfaces SideEffectInterfaces.cpp

[mlir] Add a dead code elimination mode to the greedy rewriter

The greedy pattern rewrite driver always erases trivially dead
operations, so a client that wants canonicalization patterns and
folders without dead code elimination has no way to get it. Add
GreedyRewriteConfig::setDeadCodeElimination and the matching
dead-code-elimination option of the canonicalizer pass, with three
modes:

- all, the default, erases every trivially dead operation as before.
- newly-dead erases an operation only once the erasure or replacement
  of another operation drops its last use, so the inputs that a fold
  leaves unused go away while operations that were dead before
  rewriting are kept.
- disabled erases an operation only by a pattern or by folding.

Region simplification is separate and still removes dead values unless
it is disabled too. The deadness cache skips invalidation while it is
empty, so a run that never queries it pays nothing for its tracking.

    [2 lines not shown]
DeltaFile
+28-0mlir/test/Transforms/canonicalize-dead-code-elimination.mlir
+26-1mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h
+24-2mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp
+14-0mlir/include/mlir/Transforms/Passes.td
+6-0mlir/lib/Interfaces/SideEffectInterfaces.cpp
+2-0mlir/lib/Transforms/Canonicalizer.cpp
+100-33 files not shown
+103-69 files

LLVM/project 1fb3e9e — clang/test/CodeGen hexagon-hlx-vector-pair-half.c hexagon-hlx-vector-pair-copy.c

Revert "[Hexagon] Test lowering of Clang HLX vector pair locals at -O0 (#242403)"

This reverts commit 351abdb04162065e75b007840aaf20ec7ac99a2b.
DeltaFile
+0-34clang/test/CodeGen/hexagon-hlx-vector-pair-copy.c
+0-27clang/test/CodeGen/hexagon-hlx-vector-pair-half.c
+0-612 files

LLVM/project 4762c69 — mlir/lib/Conversion/SPIRVToLLVM SPIRVToLLVM.cpp, mlir/test/Conversion/SPIRVToLLVM cl-ops-to-llvm.mlir

[mlir][SPIR-V] Add SPIRVToLLVM conversion for CL.printf (#238043)
DeltaFile
+34-6mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+15-0mlir/test/Conversion/SPIRVToLLVM/cl-ops-to-llvm.mlir
+49-62 files

LLVM/project 5dbd2e1 — llvm/lib/Target/Mips MipsSEISelLowering.cpp Mips32r6InstrInfo.td, llvm/test/CodeGen/Mips fma-r6.ll fp-intrinsics.ll

[Mips] Select MADDF and MSUBF instructions for scalar FMA on R6 (#233171)

Legalize FMA and STRICT_FMA for supported scalar floating-point types on
standard-encoding MIPS R6 targets, and match them to the existing MADDF
and MSUBF instructions instead of libcalls. Preserve tied accumulator
operands and strict FP exception semantics using the existing
instruction properties.
DeltaFile
+1,125-131llvm/test/CodeGen/Mips/fp-intrinsics.ll
+145-94llvm/test/CodeGen/Mips/msa/f16-llvm-ir.ll
+225-0llvm/test/CodeGen/Mips/fma-r6.ll
+18-4llvm/lib/Target/Mips/Mips32r6InstrInfo.td
+11-0llvm/lib/Target/Mips/MipsSEISelLowering.cpp
+1,524-2295 files

LLVM/project 123ae3d — clang/lib/CIR/Dialect/IR CIRDialect.cpp, clang/lib/CIR/Dialect/Transforms CIRCanonicalize.cpp

[CIR] Make cir-canonicalize a full canonicalizer

cir-canonicalize applied the CIR canonicalization patterns and folders
only to a hand-written list of operations. It now builds the pattern set
once in initialize() and runs the greedy driver over every operation, so
every pattern and folder applies everywhere. Dead code elimination is
disabled: CIR stays close to the source, so unused locals and ignored
expressions are kept as in classic codegen, and only the inputs of a
folded operation can be left unused. Empty scopes and switches were
removed only because they were dead, so they get explicit
canonicalization patterns.

The pass uses the multi-op driver because the region driver always
erases blocks without a CFG predecessor, and a block that starts with
cir.label is reached only through cir.goto until the goto solver runs.
Region simplification stays off for the same reason. The new
test-convergence option fails the pass when the driver does not reach a
fixpoint, as in the upstream canonicalizer.

Assisted-by: Claude Code (claude-opus-5-5).
DeltaFile
+51-58clang/lib/CIR/Dialect/Transforms/CIRCanonicalize.cpp
+62-0clang/test/CIR/Transforms/vector-cmp-fold.cir
+32-24clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+48-0clang/test/CIR/CodeGenOpenACC/compute-reduction-clause-default-ops.c
+40-0clang/test/CIR/Transforms/canonicalize-dead-code.cir
+32-2clang/test/CIR/Transforms/canonicalize.cir
+265-8439 files not shown
+439-9845 files

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

[CIR][NFC] Add isVolatileOrAtomic() to cir.load and cir.store (#242709)

Several places spell out `getIsVolatile() || getMemOrder()` to decide
whether a load or store must stay as written. This names that check once
on both ops and uses it in the load effects, mem2reg, `CIRSimplify` and
the ABI rewriter.

Assisted-by: Claude Code (claude-opus-5-5).
DeltaFile
+13-0clang/include/clang/CIR/Dialect/IR/CIROps.td
+2-4clang/lib/CIR/Dialect/IR/CIRMemorySlot.cpp
+2-3clang/lib/CIR/Dialect/Transforms/CIRSimplify.cpp
+1-2clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+1-1clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+19-105 files

LLVM/project 2277d3d — llvm/lib/Transforms/Scalar EarlyCSE.cpp, llvm/test/Transforms/EarlyCSE bitextract-bitinsert.ll

[EarlyCSE] Fold equivalent `bitextract` and `bitinsert` (#242720)

EarlyCSE replaces an instruction with an earlier one that computes the
same value. It only considers instructions accepted by
`SimpleValue::canHandle`, which lists the opcodes it knows.

`bitextract` and `bitinsert` were missing from that list. They use the
generic hash, which mixes the opcode and operands, so they are also
added to the assert that guards it.

This mirrors the GVN change in #242716.
DeltaFile
+130-0llvm/test/Transforms/EarlyCSE/bitextract-bitinsert.ll
+4-2llvm/lib/Transforms/Scalar/EarlyCSE.cpp
+134-22 files

LLVM/project 77f8b73 — llvm/lib/Transforms/Utils LoopSimplify.cpp, llvm/test/Transforms/LoopSimplify hoist-trunc-exit.ll

[LoopSimplify] Support trunc condition in `simplifyOneLoop` (#240504)

fix of regression from https://github.com/llvm/llvm-project/pull/184182
seen in
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1949/changes/ebe2f2c4600b4ab8f27ad4138fe8e387c85d36bf#r4516678686

benchmark result in
https://github.com/dtcxzyw/llvm-opt-benchmark-nightly/pull/1973

test reduced by copilot from regression
DeltaFile
+44-0llvm/test/Transforms/LoopSimplify/hoist-trunc-exit.ll
+6-2llvm/lib/Transforms/Utils/LoopSimplify.cpp
+50-22 files

LLVM/project 6964b69 — llvm/lib/Analysis ValueTracking.cpp

[ValueTracking][NFC] Check whether assume and context in isValidAssumeForContext are equal first (#242796)

This check is really cheap, so we should do it at the start.
DeltaFile
+5-6llvm/lib/Analysis/ValueTracking.cpp
+5-61 files