LLVM/project 271e610 — llvm/lib/ExecutionEngine/Orc/TargetProcess JITLoaderPerf.cpp

[ORC] Export perf JIT loader wrapper symbols with LLVM_ALWAYS_EXPORT

PerfSupportPlugin resolves llvm_orc_registerJITLoaderPerf{Start,End,Impl} dynamically from process symbols, which fails when static executables are built with -fvisibility=hidden (e.g. CFI bootstrap builds).

Assisted-by: Gemini
DeltaFile
+6-6llvm/lib/ExecutionEngine/Orc/TargetProcess/JITLoaderPerf.cpp
+6-61 files

LLVM/project adca774 — llvm/utils/sanitizers ubsan_ignorelist.txt

[cfi] Ignore cfi-icall on LLVMContext::yield and JIT calls

LLVMContextSetYieldCallback casts a C callback with a mismatched pointer type, and ExecutionEngine / JIT tools invoke runtime-generated JIT code outside the link-time CFI jump table.

Assisted-by: Gemini
DeltaFile
+10-0llvm/utils/sanitizers/ubsan_ignorelist.txt
+10-01 files

LLVM/project c9d43e8 — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp VPlanTransforms.cpp

[VPlan] Use mayWriteToMemory to pick early-exit style (NFC). (#237101)

Replace the store pattern match in handleUncountableEarlyExits with a
check for any recipe that may write to memory, now that call
VPInstructions model call-site attributes. Pseudo-probes are skipped,
consistent with legality, which ignores them.

This removes the blanket store check and accounts for other recipes with
side-effects via an assert.

PR: https://github.com/llvm/llvm-project/pull/237101
DeltaFile
+17-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+4-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+21-72 files

LLVM/project 926a6c4 — llvm/lib/Passes PassBuilderPipelines.cpp, llvm/lib/Transforms/Scalar LoopUnrollAndJamPass.cpp

[LoopUnrollAndJam] Jamming Outside Loop for stencil

Previously, we only tried to jam the loop if there was any
loop-invariant memory usage. This makes our UnrollAndJam quite
limited. GCC (gimple-loop-jam.cc) also handles stencils. What they do
is, for each MemRef pair, check the distance vector and allow jamming
if the vector is lexicographically positive.

Our safety checker (checkDependency) already allows these cases. To
match GCC's behavior, we try to calculate the actual step for each
memory usage using SCEV and find the maximum ReuseCount. Note that our
safety checker has already guaranteed that this is a forward edge, so
we don't need any additional safety checks here.

With this change running over llvm-test-suites. We observe a speedup
over my Ryzen 9 9955HX in some cases (Shootout-C++-ary3 (-34.6%),
oopack_v1p8 (-6.0%)).

Assisted by: Claude # Testcases
DeltaFile
+285-0llvm/test/Transforms/PhaseOrdering/X86/unroll-and-jam-before-slp.ll
+210-0llvm/test/Transforms/LoopUnrollAndJam/reuse.ll
+126-17llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp
+134-0llvm/test/Transforms/LoopUnrollAndJam/reduction.ll
+41-41llvm/test/CodeGen/AArch64/aarch64-unroll-and-jam.ll
+7-9llvm/lib/Passes/PassBuilderPipelines.cpp
+803-671 files not shown
+807-677 files

LLVM/project 56b0734 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer reduction-root-node-with-no-state-but-gathered-loads.ll

[SLP]Vectorize loads from the single predecessor block

Model loads from the single predecessor block as copyable elements of a
consecutive load node in the successor block. The wide load covers them
if their memory is not modified after them in the predecessor block or
anywhere in the successor block.

Fixes #43232

Assisted-by: Cursor

Reviewers: RKSimon, bababuck

Pull Request: https://github.com/llvm/llvm-project/pull/233297
DeltaFile
+131-37llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+22-122llvm/test/Transforms/SLPVectorizer/X86/loads-from-single-predecessor.ll
+3-33llvm/test/Transforms/SLPVectorizer/X86/div-partial-store-chain.ll
+1-9llvm/test/Transforms/SLPVectorizer/X86/horizontal-minmax.ll
+2-6llvm/test/Transforms/SLPVectorizer/reduction-root-node-with-no-state-but-gathered-loads.ll
+3-3llvm/test/Transforms/SLPVectorizer/RISCV/loads-from-single-predecessor-base-ptr.ll
+162-2106 files

LLVM/project 8b06775 — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+112-49llvm/lib/Target/Sparc/LeonPasses.cpp
+96-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+32-46llvm/lib/Target/Sparc/LeonPasses.h
+53-4llvm/lib/Target/Sparc/Sparc.h
+763-4915 files not shown
+815-50011 files

LLVM/project d7e40a0 — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+112-49llvm/lib/Target/Sparc/LeonPasses.cpp
+99-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+92-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+32-46llvm/lib/Target/Sparc/LeonPasses.h
+53-4llvm/lib/Target/Sparc/Sparc.h
+767-4917 files not shown
+898-50013 files

LLVM/project 45eecea — llvm/utils/gn/secondary/llvm/unittests/CAS BUILD.gn

[gn] port 6ec5f0028c68 (#237666)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/CAS/BUILD.gn
+1-01 files

LLVM/project 9c4ace4 — llvm/utils/gn/secondary/llvm/lib/DWARFLinker/Parallel BUILD.gn, llvm/utils/gn/secondary/llvm/unittests/DWARFLinkerParallel BUILD.gn

[gn] port f92019247ecc (#237665)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/DWARFLinkerParallel/BUILD.gn
+1-0llvm/utils/gn/secondary/llvm/lib/DWARFLinker/Parallel/BUILD.gn
+2-02 files

LLVM/project dd039b2 — llvm/utils/gn/secondary/llvm/lib/CodeGen BUILD.gn

[gn] port 93f05d753ad3 (#237664)
DeltaFile
+0-1llvm/utils/gn/secondary/llvm/lib/CodeGen/BUILD.gn
+0-11 files

LLVM/project 4c886d7 — llvm/utils/gn/secondary/llvm/lib/Support BUILD.gn

[gn] port 050a017f870b (#237663)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/lib/Support/BUILD.gn
+1-01 files

LLVM/project 70901df — llvm/utils/gn/secondary/lldb/test BUILD.gn

[gn] port 113663e97dae (#237662)
DeltaFile
+3-0llvm/utils/gn/secondary/lldb/test/BUILD.gn
+3-01 files

LLVM/project 01b480e — llvm/test/Analysis/ScalarEvolution backedge-taken-count-guard-info.ll

[SCEV] Add test for loop guard rewrites using narrower zexts (NFC) (#237653)

Also use -scalar-evolution-classify-expressions=0 to cut down
unnecessary check lines; the tests only checks BTC
DeltaFile
+31-36llvm/test/Analysis/ScalarEvolution/backedge-taken-count-guard-info.ll
+31-361 files

LLVM/project 6bb6476 — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+112-49llvm/lib/Target/Sparc/LeonPasses.cpp
+96-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+32-46llvm/lib/Target/Sparc/LeonPasses.h
+53-4llvm/lib/Target/Sparc/Sparc.h
+763-4915 files not shown
+815-50011 files

LLVM/project 06007a5 — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+95-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+54-15llvm/lib/Target/Sparc/LeonPasses.cpp
+25-27llvm/lib/Target/Sparc/LeonPasses.h
+45-3llvm/lib/Target/Sparc/Sparc.h
+689-4375 files not shown
+738-44411 files

LLVM/project 766e3ff — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+95-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+54-15llvm/lib/Target/Sparc/LeonPasses.cpp
+25-27llvm/lib/Target/Sparc/LeonPasses.h
+45-3llvm/lib/Target/Sparc/Sparc.h
+689-4375 files not shown
+738-44411 files

LLVM/project d6b7ce6 — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+94-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+38-13llvm/lib/Target/Sparc/LeonPasses.cpp
+18-26llvm/lib/Target/Sparc/LeonPasses.h
+38-3llvm/lib/Target/Sparc/Sparc.h
+658-4345 files not shown
+705-44011 files

LLVM/project f782403 — llvm/lib/Analysis AnalysisOptions.td, llvm/lib/Transforms/Scalar ScalarOptions.td

Use float literals for float option defaults. NFC (#237658)

MSVC warns about the field initializer `float ir2vec_arg_weight{0.2}`
from #236844 (C4305: truncation from 'double' to 'float'). Add the f
suffix.
DeltaFile
+4-4llvm/lib/Analysis/AnalysisOptions.td
+2-2llvm/lib/Transforms/Scalar/ScalarOptions.td
+1-1llvm/lib/Transforms/Vectorize/VectorizeOptions.td
+7-73 files

LLVM/project 26def25 — llvm/lib/Target/Sparc Sparc.h LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+94-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+38-13llvm/lib/Target/Sparc/LeonPasses.cpp
+18-26llvm/lib/Target/Sparc/LeonPasses.h
+38-3llvm/lib/Target/Sparc/Sparc.h
+658-4345 files not shown
+705-44011 files

LLVM/project a711410 — llvm/lib/Target/Sparc Sparc.h LeonPasses.cpp, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+93-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+11-25llvm/lib/Target/Sparc/LeonPasses.h
+24-11llvm/lib/Target/Sparc/LeonPasses.cpp
+31-3llvm/lib/Target/Sparc/Sparc.h
+629-4315 files not shown
+674-43611 files

LLVM/project aaf879c — llvm/test/Transforms/LoopVectorize/VPlan vplan-printing.ll cse-loads.ll, llvm/test/Transforms/LoopVectorize/X86/CostModel masked-store-i64.ll masked-store-i32.ll

[VPlan] Pass alignment explicitly to widen load/store recipes (NFC). (#237639)

Replace alignment lookup from underlying IR to explicitly storing it for
the recipe.

Preparation for fixing a miscompile with incorrect alignment when
narrowing interleave groups.

NFC except for the printed VPlans.
DeltaFile
+46-46llvm/test/Transforms/LoopVectorize/VPlan/cse-loads.ll
+22-22llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing.ll
+16-16llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i64.ll
+16-16llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-store-i32.ll
+16-16llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i64.ll
+16-16llvm/test/Transforms/LoopVectorize/X86/CostModel/masked-load-i32.ll
+132-13217 files not shown
+253-23723 files

LLVM/project 9cc317f — llvm/lib/Transforms/Vectorize VPlanRecipes.cpp VPlanLowering.cpp

[VPlan] Store parent via ilist_parent, use iterator-only APIs (NFC) (#236659)

Store the parent VPBasicBlock of recipes in the ilist node via
ilist_parent<VPBasicBlock>, like Instruction/BasicBlock. This also gives
the list sentinel a parent, so any iterator into a recipe list,
including end(), knows its block.

Use this to simplify the APIs that took a block together with an
iterator, mirroring IRBuilder's removal of the separate insertion block.

PR: https://github.com/llvm/llvm-project/pull/236659
DeltaFile
+22-25llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+21-20llvm/lib/Transforms/Vectorize/VPlan.h
+16-24llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+13-17llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+14-15llvm/lib/Transforms/Vectorize/VPlanLowering.cpp
+10-16llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+96-1177 files not shown
+124-14813 files

LLVM/project a1ea4b1 — llvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 vector-fshr-rot-sub128.ll vector-fshl-rot-sub128.ll

[X86] LowerRotate - directly use X86 non-uniform var-shift nodes for generic fallback (#237645)

Skip vector shift legalization and use the X86ISD::VSHLV/VSRLV nodes
directly to handle the RotAmt=0 case, so to correctly handle the out of
bounds shift by EltSizeInBits.

Fixes #236022
DeltaFile
+5-2llvm/lib/Target/X86/X86ISelLowering.cpp
+2-4llvm/test/CodeGen/X86/vector-fshr-rot-sub128.ll
+2-4llvm/test/CodeGen/X86/vector-fshl-rot-sub128.ll
+9-103 files

LLVM/project f6444d6 — llvm/lib/Target/Sparc SparcPassRegistry.def LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+92-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+3-24llvm/lib/Target/Sparc/LeonPasses.h
+24-3llvm/lib/Target/Sparc/Sparc.h
+21-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+610-4195 files not shown
+638-43211 files

LLVM/project 40eadf8 — llvm/lib/Target/Sparc Sparc.h LeonPasses.cpp, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+93-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+11-25llvm/lib/Target/Sparc/LeonPasses.h
+24-11llvm/lib/Target/Sparc/LeonPasses.cpp
+31-3llvm/lib/Target/Sparc/Sparc.h
+629-4315 files not shown
+674-43611 files

LLVM/project d5730c2 — llvm/lib/Transforms/IPO AttributorAttributes.cpp Attributor.cpp, llvm/test/Transforms/Attributor callsite-returned-type-mismatch.ll

Attributor: Don't use callee return attributes for mismatched call types (#231629)

A call site returned position took the state and attributes of the
callee's returned position, even if the call uses a different return
type
than the callee, e.g. calling a void function as returning ptr. This
asserted in AANonNull::isImpliedByIR on the non-pointer callee return
type, and put the callee's nofpclass on calls returning another FP type.
Ignore the callee's returned position, and its returned arguments, if
the
types differ.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+118-0llvm/test/Transforms/Attributor/callsite-returned-type-mismatch.ll
+6-2llvm/lib/Transforms/IPO/Attributor.cpp
+5-0llvm/lib/Transforms/IPO/AttributorAttributes.cpp
+129-23 files

LLVM/project a4667ce — llvm/lib/Target/Sparc SparcISelDAGToDAG.cpp SparcPassRegistry.def, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.7

[skip ci]
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+92-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+24-3llvm/lib/Target/Sparc/Sparc.h
+21-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+9-2llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp
+616-3973 files not shown
+629-3999 files

LLVM/project c93f7a1 — llvm/lib/Target/Sparc SparcPassRegistry.def LeonPasses.h, llvm/test/CodeGen/SPARC newpm-pipeline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+379-392llvm/lib/Target/Sparc/DelaySlotFiller.cpp
+92-0llvm/test/CodeGen/SPARC/newpm-pipeline.ll
+91-0llvm/lib/Target/Sparc/SparcCodeGenPassBuilder.cpp
+3-24llvm/lib/Target/Sparc/LeonPasses.h
+24-3llvm/lib/Target/Sparc/Sparc.h
+21-0llvm/lib/Target/Sparc/SparcPassRegistry.def
+610-4195 files not shown
+638-43211 files

LLVM/project da50442 — llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/X86 ordered-reduction-root-deleted.ll phis-small-groups-full-register.ll

[SLP]Postpone small phi groups to build full register vectors

Small phi groups vectorized in the full-width stage took lanes from
wider vectors, producing 2-wide fma accumulators instead of 4-wide.
Postpone them, then try the candidates in prefix-first order at full
width, so phis from different groups with matching leading operands
get vectorized together.

Fixes #47830

Assisted-by: Cursor

Reviewers: RKSimon, bababuck

Pull Request: https://github.com/llvm/llvm-project/pull/234997
DeltaFile
+27-39llvm/test/Transforms/SLPVectorizer/X86/split-node-num-operands.ll
+37-25llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+13-16llvm/test/Transforms/SLPVectorizer/X86/phis-small-groups-full-register.ll
+8-19llvm/test/Transforms/SLPVectorizer/X86/ordered-reduction-root-deleted.ll
+85-994 files

LLVM/project 270eed4 — llvm/lib/Transforms/Vectorize VectorizeOptions.td SLPVectorizer.cpp, llvm/lib/Transforms/Vectorize/SLPVectorizer SLPMemoryUtils.h SLPMemoryUtils.cpp

[SLP]Raise slp-schedule-budget to 200000, cut scheduling cost

Skip the rest of the region once a root store bundle's members
depend on each other and no runtime alias check retry can follow.
Do not re-add deps on recalculation, drop the dedup sets, cache the
may-write flag. NFC at equal budget.

Compile time effect:
https://llvm-compile-time-tracker.com/compare.php?from=be19c86852838a6fad20db9f24ff9390c230c0e3&to=cb56bde14279f9906ef8b9329d855340ebbdd6de&stat=instructions:u

Assisted-by: Cursor

Reviewers: RKSimon, bababuck

Pull Request: https://github.com/llvm/llvm-project/pull/233866
DeltaFile
+238-107llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+28-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPMemoryUtils.cpp
+5-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPMemoryUtils.h
+1-1llvm/lib/Transforms/Vectorize/VectorizeOptions.td
+272-1084 files