LLVM/project 4153b05llvm/include/llvm/IR PatternMatch.h, llvm/lib/Transforms/AggressiveInstCombine AggressiveInstCombine.cpp

[PatternMatch] Add m_Ctpop / m_Ctlz / m_Cttz matchers (#195520)
DeltaFile
+8-11llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
+16-0llvm/include/llvm/IR/PatternMatch.h
+4-8llvm/lib/Transforms/AggressiveInstCombine/AggressiveInstCombine.cpp
+4-5llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
+3-6llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+4-4llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+39-347 files not shown
+48-4913 files

LLVM/project 8a68898llvm/lib/Transforms/Utils CloneFunction.cpp

[NFC][LLVM] Eliminate use of `getIntrinsicInfoTableEntries` from CloneFunction.cpp (#195448)

Simplify creation of constrained intrinsic calls by just using
`getOrInsertDeclaration` that accepts arg and return types of an
intrinsic and hence eliminating the need to look at the IIT descriptors
to map overload types.
DeltaFile
+7-28llvm/lib/Transforms/Utils/CloneFunction.cpp
+7-281 files

LLVM/project 79ebe71llvm/include/llvm/IR Intrinsics.h, llvm/lib/IR Intrinsics.cpp AutoUpgrade.cpp

[NFC][LLVM][Intrinsics] Add `hasStructReturnType` helper (#195457)

Add a helper function to query if an intrinsic has a struct return type
and use it in AutoUpgrade
DeltaFile
+7-0llvm/lib/IR/Intrinsics.cpp
+2-4llvm/lib/IR/AutoUpgrade.cpp
+3-0llvm/include/llvm/IR/Intrinsics.h
+12-43 files

LLVM/project 976817ellvm/test/Transforms/SLPVectorizer/X86 arith-sub-ssubo.ll arith-add-saddo.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+2,947-615llvm/test/Transforms/SLPVectorizer/X86/arith-sub-ssubo.ll
+2,947-615llvm/test/Transforms/SLPVectorizer/X86/arith-add-saddo.ll
+2,947-615llvm/test/Transforms/SLPVectorizer/X86/arith-add-uaddo.ll
+2,947-615llvm/test/Transforms/SLPVectorizer/X86/arith-sub-usubo.ll
+846-515llvm/test/Transforms/SLPVectorizer/X86/arith-mul-umulo.ll
+640-473llvm/test/Transforms/SLPVectorizer/X86/arith-mul-smulo.ll
+13,274-3,4483 files not shown
+13,618-3,6539 files

LLVM/project 204f489llvm/include/llvm/IR Intrinsics.h, llvm/lib/IR Intrinsics.cpp

[NFC][LLVM] Make `matchIntrinsicSignature` static and rename it (#195380)

Make `matchIntrinsicSignature` static, rename it to `isSignatureValid`,
and change the sense of its return value to match the new name.
DeltaFile
+24-13llvm/lib/IR/Intrinsics.cpp
+0-12llvm/include/llvm/IR/Intrinsics.h
+24-252 files

LLVM/project 32f06d8llvm/include/llvm/ADT ImmutableSet.h ImmutableList.h

[NFC][LLVM][ADT] Remove function names from Doxygen comments (#195469)

Adopt LLVM CS recommendation to not repeat function or class name is
Doxygen comments.

https://llvm.org/docs/CodingStandards.html#doxygen-use-in-documentation-comments
DeltaFile
+61-69llvm/include/llvm/ADT/ImmutableSet.h
+19-21llvm/include/llvm/ADT/ImmutableList.h
+9-9llvm/include/llvm/ADT/ImmutableMap.h
+89-993 files

LLVM/project 25d6d33llvm/include/llvm/ADT FoldingSet.h EquivalenceClasses.h

[NFC][LLVM][ADT] Remove function names from Doxygen comments (#195467)

Adopt LLVM CS recommendation to not repeat function or class name is
Doxygen comments.

https://llvm.org/docs/CodingStandards.html#doxygen-use-in-documentation-comments
DeltaFile
+94-105llvm/include/llvm/ADT/FoldingSet.h
+21-22llvm/include/llvm/ADT/EquivalenceClasses.h
+3-4llvm/include/llvm/ADT/DepthFirstIterator.h
+118-1313 files

LLVM/project 8901889llvm/lib/IR FPEnv.cpp

[NFC][LLVM][FPEnv] Minor cleanup in convert to string functions (#195461)

Return string value directly from the switch-case.
DeltaFile
+11-23llvm/lib/IR/FPEnv.cpp
+11-231 files

LLVM/project ad03b7allvm/include/llvm/ADT StringRef.h

[NFC][LLVM][StringRef] Remove function names from header comments (#195463)

Adopt LLVM CS recommendation to not repeat function or class name is
Doxygen comments.

https://llvm.org/docs/CodingStandards.html#doxygen-use-in-documentation-comments
DeltaFile
+13-14llvm/include/llvm/ADT/StringRef.h
+13-141 files

LLVM/project a3d8c1cllvm/include/llvm/IR Intrinsics.td, llvm/test/TableGen intrinsic-overload-dependent-type-validation.td intrinsic-arginfo-error.td

[LLVM][Intrinsic] Move overload index validation to C++ (#195297)

Move overload index validation to C++ to enable more descriptive error
messages when that validation fails.

Also delete the `intrinsic-arginfo-error.td` test as its redundant.
DeltaFile
+36-7llvm/utils/TableGen/Basic/CodeGenIntrinsics.cpp
+23-8llvm/test/TableGen/intrinsic-overload-dependent-type-validation.td
+0-21llvm/include/llvm/IR/Intrinsics.td
+0-9llvm/test/TableGen/intrinsic-arginfo-error.td
+59-454 files

LLVM/project 120b580llvm/test/Transforms/SLPVectorizer sincos.ll

[SLP][NFC]Add sincos test, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/195517
DeltaFile
+114-0llvm/test/Transforms/SLPVectorizer/sincos.ll
+114-01 files

LLVM/project 8e92d3bllvm/docs JITLink.rst

[JITLink][Docs] Update roadmap and availability sections (#195446)

This patch updates the JITLink documentation, in particular the
`Roadmap` and `JITLink Availability and Feature Status` to match the
latest code changes. I am not an expert on the JITLink codebase, so let
me know if I missed something.

Fixes #191781
DeltaFile
+33-16llvm/docs/JITLink.rst
+33-161 files

LLVM/project ef2815dllvm/test/Transforms/LoopVectorize/AArch64 call-costs.ll

[LV] Add test for cost modeling wide calls with mixed return types (NFC) (#195177)

Add missing test coverage for test with multiple calls with different
return types
DeltaFile
+69-7llvm/test/Transforms/LoopVectorize/AArch64/call-costs.ll
+69-71 files

LLVM/project 9eb57b6mlir/include/mlir/Dialect/LLVMIR NVVMOps.td

[MLIR][NVVM] Add `NVVM_F32UnaryApproxOp` Base Class (NFC) (#194378)

Add `NVVM_F32UnaryApproxOp` tablegen class to unify implementation
DeltaFile
+15-26mlir/include/mlir/Dialect/LLVMIR/NVVMOps.td
+15-261 files

LLVM/project efd429fllvm/lib/Transforms/Vectorize VPlanUnroll.cpp VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize hoist-predicated-loads-with-predicated-stores.ll struct-return-replicate.ll

[VPlan] Dissolve replicate regions with vector live-outs. (#189022)

Remove the scalar VF restriction and properly handle replicate regions
with vector live outs.

After unrolling the replicate regions, we end up with a set of scalar
VPPhis. The current patch post-processes them and converts them to
a chain of InsertElement + VPWidenPHiRecipes to match original codegen
as closely as possible.

An alternative would be to keep the phis scalar and combine them with
BuildVector at the end, but that would result in quite different
codegen.

Now that ::execute for replicate regions is dead, clean up
VPTransformState::Lane and various ::execute that relied on it.


Depends on https://github.com/llvm/llvm-project/pull/186252 

PR: https://github.com/llvm/llvm-project/pull/189022
DeltaFile
+120-200llvm/test/Transforms/LoopVectorize/X86/x86-interleaved-accesses-masked-group.ll
+50-96llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
+64-80llvm/test/Transforms/LoopVectorize/hoist-predicated-loads-with-predicated-stores.ll
+106-28llvm/lib/Transforms/Vectorize/VPlanUnroll.cpp
+26-108llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+39-43llvm/test/Transforms/LoopVectorize/struct-return-replicate.ll
+405-55543 files not shown
+600-95349 files

LLVM/project 5d79fb0llvm/lib/IR DebugInfo.cpp, llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign scalable-vector-memcpy.ll

[DebugInfo] Fix crash in declare-to-assign when memcpy writes to scalable-vector alloca (#194107)

## Problem

`declare-to-assign` (`AssignmentTrackingPass`) crashes with a fatal error when a fixed-size `memcpy` writes into a scalable-vector alloca (e.g. an RVV `vint32m1_t`):

Cannot implicitly convert a scalable size to a fixed-width size in TypeSize::operator ScalarTy()

**PS**: The compiler explorer always implicitly adds the '-g' option, when adding the '-g0', the crash will disappear: https://riscvc.godbolt.org/z/dEqhc4EoE

**Reproducer** (clang `-target riscv64-unknown-linux-gnu -march=rv64gcv -O1 -g`):
```c
#include <string.h>
#include <riscv_vector.h>
vint32m1_t get_i32x4(int* v) {
  vint32m1_t r;
  memcpy(&r, v, 16);
  return r;
}

    [13 lines not shown]
DeltaFile
+89-0llvm/test/DebugInfo/Generic/assignment-tracking/declare-to-assign/scalable-vector-memcpy.ll
+2-1llvm/lib/IR/DebugInfo.cpp
+91-12 files

LLVM/project b6fd155mlir/lib/Dialect/AMDGPU/Transforms FoldMemRefsOps.cpp

nits

Signed-off-by: Eric Feng <Eric.Feng at amd.com>
DeltaFile
+44-39mlir/lib/Dialect/AMDGPU/Transforms/FoldMemRefsOps.cpp
+44-391 files

LLVM/project d184d9allvm/tools/llubi/lib Interpreter.cpp

[llubi] Fix inconsistent intrinsic argument retrieval (#195499)

This PR fixes inconsistent intrinsic argument retrieval by making all
intrinsics fetch their arguments from `Args`. This change is a
prerequisite for handling parameter attributes in `enterCall`.
DeltaFile
+60-50llvm/tools/llubi/lib/Interpreter.cpp
+60-501 files

LLVM/project d873c55mlir/lib/Dialect/AMDGPU/IR AMDGPUOps.cpp, mlir/test/Dialect/AMDGPU invalid.mlir

nits

Signed-off-by: Eric Feng <Eric.Feng at amd.com>
DeltaFile
+11-15mlir/lib/Dialect/AMDGPU/IR/AMDGPUOps.cpp
+24-0mlir/test/Dialect/AMDGPU/invalid.mlir
+35-152 files

LLVM/project 9cf37dcmlir/include/mlir/Dialect/AMDGPU/IR AMDGPUOps.td, mlir/lib/Conversion/AMDGPUToROCDL AMDGPUToROCDL.cpp

polish

Signed-off-by: Eric Feng <Eric.Feng at amd.com>
DeltaFile
+12-28mlir/lib/Dialect/AMDGPU/IR/AMDGPUOps.cpp
+0-22mlir/test/Dialect/AMDGPU/invalid.mlir
+5-5mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp
+4-4mlir/include/mlir/Dialect/AMDGPU/IR/AMDGPUOps.td
+21-594 files

LLVM/project 7501fde.github/workflows release-binaries.yml

workflows/release-binaries: Remove extra depencies for Arm64 Windows (#195222)

The python modules these were needed for were removed in
cdc41818e3bd9e8cb7788d59365e39fe6433159e.
DeltaFile
+0-7.github/workflows/release-binaries.yml
+0-71 files

LLVM/project b561bdbclang/lib/Analysis/LifetimeSafety FactsGenerator.cpp, clang/test/Sema warn-lifetime-safety-invalidations.cpp

[LifetimeSafety] Detect iterator invalidation through container aliases (#195231)

The previous heuristic in `handleInvalidatingCall` is too conservative.
The ideal way would be completely removing this, but it would introduce
~10 regressions in the existing testcases.

This commit replace the filter with a narrower guard that only skips
direct field accesses (AccessPath currently lacks field granularity and
cannot distinguish `s.v1` from `s.v2`).

Closes https://github.com/llvm/llvm-project/issues/193044
DeltaFile
+65-21clang/test/Sema/warn-lifetime-safety-invalidations.cpp
+5-3clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
+70-242 files

LLVM/project 5d2dbb1llvm/lib/Target/SystemZ SystemZOperands.td

Convert the last PatLeaf
DeltaFile
+4-1llvm/lib/Target/SystemZ/SystemZOperands.td
+4-11 files

LLVM/project 8f81288llvm/lib/IR Constants.cpp, llvm/test/Assembler aggregate-constant-values.ll

[RFC][IR] Support vector splats in `ConstantPointerNull`

This PR allows `ConstantPointerNull` to represent both scalar pointer nulls and
fixed or scalable vector splats of pointer nulls. This change first aligns with
the native splat behavior of `ConstantInt` and `ConstantFP`, and second, makes
it easier to eventually change the semantics of `ConstantPointerNull` to
represent a semantic null pointer instead of a zero value, which is what it
represents today.
DeltaFile
+31-31llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll
+30-30llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
+52-4llvm/lib/IR/Constants.cpp
+28-0llvm/unittests/IR/ConstantsTest.cpp
+18-9llvm/test/Transforms/RewriteStatepointsForGC/base-inference.ll
+24-0llvm/test/Assembler/aggregate-constant-values.ll
+183-7463 files not shown
+354-22269 files

LLVM/project d3fb3ddllvm/include/llvm/Transforms/IPO Instrumentor.h InstrumentorUtils.h, llvm/lib/Transforms/IPO Instrumentor.cpp InstrumentorConfigFile.cpp

Fix review comments
DeltaFile
+23-31llvm/lib/Transforms/IPO/Instrumentor.cpp
+25-20llvm/include/llvm/Transforms/IPO/Instrumentor.h
+2-4llvm/include/llvm/Transforms/IPO/InstrumentorUtils.h
+4-1llvm/lib/Transforms/IPO/InstrumentorConfigFile.cpp
+1-1llvm/include/llvm/Transforms/IPO/InstrumentorConfigFile.h
+55-575 files

LLVM/project a5306abllvm/lib/Target/SystemZ SystemZOperands.td

Remove dead code
DeltaFile
+0-5llvm/lib/Target/SystemZ/SystemZOperands.td
+0-51 files

LLVM/project 46c83c9llvm/lib/Target/SystemZ SystemZOperands.td

Convert another PatLeaf
DeltaFile
+5-5llvm/lib/Target/SystemZ/SystemZOperands.td
+5-51 files

LLVM/project 37e0109llvm/utils/TableGen DecoderEmitter.cpp, llvm/utils/TableGen/Common InstructionEncoding.cpp InstructionEncoding.h

[NFC][TableGen] Drop OperandInfo::addField/fields() wrappers and use OperandInfo::Fields instead (#195489)

Fields is already a public member; the wrappers added no semantic value
beyond a thin storage indirection (and ArrayRef-typed reads). Use Fields
directly at all call sites for consistency with the rest of the struct's
plain-data style.

Assisted by Claude.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply at anthropic.com>
DeltaFile
+6-4llvm/utils/TableGen/Common/InstructionEncoding.cpp
+4-4llvm/utils/TableGen/DecoderEmitter.cpp
+0-6llvm/utils/TableGen/Common/InstructionEncoding.h
+10-143 files

LLVM/project d6ffa06llvm/lib/IR Constants.cpp, llvm/test/Assembler aggregate-constant-values.ll

[RFC][IR] Support vector splats in `ConstantPointerNull`

This PR allows `ConstantPointerNull` to represent both scalar pointer nulls and
fixed or scalable vector splats of pointer nulls. This change first aligns with
the native splat behavior of `ConstantInt` and `ConstantFP`, and second, makes
it easier to eventually change the semantics of `ConstantPointerNull` to
represent a semantic null pointer instead of a zero value, which is what it
represents today.
DeltaFile
+31-31llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll
+30-30llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
+52-4llvm/lib/IR/Constants.cpp
+28-0llvm/unittests/IR/ConstantsTest.cpp
+18-9llvm/test/Transforms/RewriteStatepointsForGC/base-inference.ll
+24-0llvm/test/Assembler/aggregate-constant-values.ll
+183-7451 files not shown
+333-20357 files

LLVM/project 3e2eb32llvm/lib/IR Constants.cpp, llvm/test/Assembler aggregate-constant-values.ll

[RFC][IR] Support vector splats in `ConstantPointerNull`

This PR allows `ConstantPointerNull` to represent both scalar pointer nulls and
fixed or scalable vector splats of pointer nulls. This change first aligns with
the native splat behavior of `ConstantInt` and `ConstantFP`, and second, makes
it easier to eventually change the semantics of `ConstantPointerNull` to
represent a semantic null pointer instead of a zero value, which is what it
represents today.
DeltaFile
+31-31llvm/test/Transforms/RewriteStatepointsForGC/base-vector.ll
+30-30llvm/test/Transforms/LoopVectorize/X86/masked_load_store.ll
+51-4llvm/lib/IR/Constants.cpp
+28-0llvm/unittests/IR/ConstantsTest.cpp
+18-9llvm/test/Transforms/RewriteStatepointsForGC/base-inference.ll
+24-0llvm/test/Assembler/aggregate-constant-values.ll
+182-7450 files not shown
+328-20356 files