LLVM/project 6334d98llvm/unittests/CodeGen SelectionDAGTestBase.h

[test] fix use after destroy in SelectionDAGTestBase (#220775)

we were capturing the context from the MMI, which was destroyed after
setup
DeltaFile
+4-3llvm/unittests/CodeGen/SelectionDAGTestBase.h
+4-31 files

LLVM/project 9f8352allvm/lib/Target/AMDGPU AMDGPU.td, llvm/lib/TargetParser AMDGPUTargetParser.cpp

[AMDGPU] Expose the half-addressable LDS feature to TargetParser

Add FeatureHalfAddressablePhysicalLocalMemory to
AMDGPUFrontendVisibleFeatures so TargetParser carries it in its per-GPU
feature bitset, where getLocalMemorySize can read it.

It is listed in FrontendOnlyFeatures, so clang does not serialize it
into the target-feature string: it is a capability implied by the
subtarget, not something a user selects.

Change-Id: I87edf18bbb527fb90e6a8af1144e985024f063f7
Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+18-0llvm/unittests/TargetParser/TargetParserTest.cpp
+6-4llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+1-0llvm/lib/Target/AMDGPU/AMDGPU.td
+25-43 files

LLVM/project 1fc6419llvm/lib/Transforms/IPO LowerTypeTests.cpp

format

Created using spr 1.3.7
DeltaFile
+4-2llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+4-21 files

LLVM/project c438db1llvm/test/CodeGen/RISCV/rvv fixed-vector-convert-from-arbitrary-fp.ll, llvm/test/Transforms/ConstraintElimination induction-symbolic-start-postinc.ll

fixup

Created using spr 1.3.7
DeltaFile
+626-0llvm/test/Transforms/ConstraintElimination/induction-symbolic-start-postinc.ll
+623-0llvm/test/CodeGen/RISCV/rvv/fixed-vector-convert-from-arbitrary-fp.ll
+0-584offload/libomptarget/OpenMP/Mapping.cpp
+584-0offload/libompaccsupport/Mapping.cpp
+0-573offload/libomptarget/PluginManager.cpp
+573-0offload/libompaccsupport/PluginManager.cpp
+2,406-1,157194 files not shown
+9,833-2,517200 files

LLVM/project ec82d89llvm/lib/Transforms/IPO LowerTypeTests.cpp, llvm/test/Transforms/LowerTypeTests export-icall.ll export-inline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+48-54llvm/test/Transforms/LowerTypeTests/cfi-icall-alias.ll
+0-39llvm/test/Transforms/LowerTypeTests/Inputs/exported-funcs.yaml
+21-10llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+0-29llvm/test/Transforms/LowerTypeTests/Inputs/export-icall.yaml
+17-6llvm/test/Transforms/LowerTypeTests/export-inline.ll
+18-2llvm/test/Transforms/LowerTypeTests/export-icall.ll
+104-14012 files not shown
+222-17218 files

LLVM/project 2dcc6b3llvm/lib/Transforms/IPO LowerTypeTests.cpp, llvm/test/Transforms/LowerTypeTests export-icall.ll export-inline.ll

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

Created using spr 1.3.7

[skip ci]
DeltaFile
+48-54llvm/test/Transforms/LowerTypeTests/cfi-icall-alias.ll
+0-39llvm/test/Transforms/LowerTypeTests/Inputs/exported-funcs.yaml
+21-10llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+0-29llvm/test/Transforms/LowerTypeTests/Inputs/export-icall.yaml
+17-6llvm/test/Transforms/LowerTypeTests/export-inline.ll
+18-2llvm/test/Transforms/LowerTypeTests/export-icall.ll
+104-14012 files not shown
+222-17218 files

LLVM/project 61cdb07llvm/lib/Transforms/IPO LowerTypeTests.cpp, llvm/test/Transforms/LowerTypeTests export-icall.ll export-inline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+48-54llvm/test/Transforms/LowerTypeTests/cfi-icall-alias.ll
+0-39llvm/test/Transforms/LowerTypeTests/Inputs/exported-funcs.yaml
+21-10llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+0-29llvm/test/Transforms/LowerTypeTests/Inputs/export-icall.yaml
+17-6llvm/test/Transforms/LowerTypeTests/export-inline.ll
+18-2llvm/test/Transforms/LowerTypeTests/export-icall.ll
+104-14012 files not shown
+222-17218 files

LLVM/project cdb1815llvm/lib/Target/AArch64 AArch64InstrInfo.h AArch64InstrInfo.cpp

[AArch64][NFC] Make insertion of CMP for fused cond. branches reusable (#220771)

Both if-conversion and CCMP-chain forming need to undo the fusion of
conditional branches such as CBZ or CB.<cc>. With the introduction of
FEAT_CMPBR, this logic got quite involved.

This patch makes the functionality reusable through AArch64InstrInfo.
DeltaFile
+207-201llvm/lib/Target/AArch64/AArch64InstrInfo.cpp
+8-0llvm/lib/Target/AArch64/AArch64InstrInfo.h
+215-2012 files

LLVM/project d4aa63ellvm/lib/Transforms/IPO LowerTypeTests.cpp, llvm/test/Transforms/LowerTypeTests export-icall.ll export-inline.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+48-54llvm/test/Transforms/LowerTypeTests/cfi-icall-alias.ll
+0-39llvm/test/Transforms/LowerTypeTests/Inputs/exported-funcs.yaml
+21-10llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+0-29llvm/test/Transforms/LowerTypeTests/Inputs/export-icall.yaml
+17-6llvm/test/Transforms/LowerTypeTests/export-inline.ll
+18-2llvm/test/Transforms/LowerTypeTests/export-icall.ll
+104-14012 files not shown
+222-17218 files

LLVM/project a4f8918llvm/include/llvm InitializePasses.h, llvm/lib/CodeGen CodeGen.cpp RegAllocPBQP.cpp

Initialize PBQP Pass for Clang (#217954)

As mentioned in discussion on
https://github.com/llvm/llvm-project/issues/16391, the PBQP allocator is
not available to clang despite existing in the backend. This updates
code to initialize the pass and make it available to clang.
DeltaFile
+13-0llvm/lib/CodeGen/RegAllocPBQP.cpp
+1-0llvm/lib/CodeGen/CodeGen.cpp
+1-0llvm/include/llvm/InitializePasses.h
+15-03 files

LLVM/project 58e985bllvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 runtime-alias-checks-scheduled-order.ll

[SLP] Fix-up profile metadata for runtime alias checks (#220769)

This makes two main changes
* Adds profile information regardless of whether or not the function is
profile. This data is still useful even when little else is profiled.
e.g., it helps ensure that registers are spilt in the cold block rather
than the hot one.
* Switches to using MDBuilder's branch weight designations. The named
values make the meaning of the code clearer and this is the standard way
to denote cold code in the compiler absent additional information about
the specific frequency here.
DeltaFile
+7-4llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+6-3llvm/test/Transforms/SLPVectorizer/X86/runtime-alias-checks.ll
+5-2llvm/test/Transforms/SLPVectorizer/AArch64/runtime-alias-checks-scheduled-order.ll
+18-93 files

LLVM/project 038b4cdflang/include/flang/Support Fortran-features.h, flang/lib/Semantics check-call.cpp

[flang] Warn when an INTENT(IN) dummy is passed to a dummy with no INTENT (#220667)

F'2023 8.5.10 paragraph 2 requires that a nonpointer INTENT(IN) dummy
argument "shall neither be defined nor become undefined during the
invocation and execution of the procedure". A program can violate that
requirement without any diagnostic today by passing the INTENT(IN) dummy
argument on as an actual argument to a procedure whose corresponding
dummy argument has no INTENT attribute: that callee is free to define
its dummy argument, and since #207732 flang propagates INTENT(IN) to
LLVM as `readonly`, so the optimizer is entitled to assume the
definition never happens. The observable result is a program whose
answers change with the optimization level, with nothing pointing at the
cause.

```fortran
program main
  integer :: kk = 1
  call s(kk)
  print *, kk     ! 1 at -O1, 3 at -O2

    [28 lines not shown]
DeltaFile
+60-0flang/test/Semantics/call49.f90
+19-0flang/lib/Semantics/check-call.cpp
+1-1flang/include/flang/Support/Fortran-features.h
+80-13 files

LLVM/project 46f0d85llvm/test/CodeGen/AMDGPU minimumnum.bf16.ll amdgcn.bitcast.128bit.ll

[AMDGPU] Fix for GFX11 VOPD interlock hazard
DeltaFile
+4,397-4,259llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+2,949-2,991llvm/test/CodeGen/AMDGPU/bf16.ll
+2,693-2,610llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+1,297-1,271llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.256bit.ll
+553-553llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.128bit.ll
+425-431llvm/test/CodeGen/AMDGPU/minimumnum.bf16.ll
+12,314-12,11585 files not shown
+15,796-15,31491 files

LLVM/project a8bf25cflang/include/flang/Optimizer/Transforms Passes.td, flang/lib/Optimizer/Transforms SimplifyRegionLite.cpp

[flang][NFC] Allow simplify-region-lite to run on any op (#220698)

The pass only walks the regions of getOperation(). Pinning it to
ModuleOp forced a single liveness lattice over the whole compile unit
and blocked scheduling it under a nested pass manager. Drop the
ModuleOp constraint so callers can run it per IsolatedFromAbove op.
Existing module-level addPass() uses are unchanged.
DeltaFile
+3-5flang/lib/Optimizer/Transforms/SimplifyRegionLite.cpp
+1-1flang/include/flang/Optimizer/Transforms/Passes.td
+4-62 files

LLVM/project 3e9019ellvm/test/Transforms/LoopVectorize div-exact.ll if-pred-stores.ll, llvm/test/Transforms/LoopVectorize/VPlan dissolve-replicate-regions.ll

[VPlan] Skip branch term in masks for some preserved uniform edges
DeltaFile
+28-2,414llvm/test/Transforms/LoopVectorize/predicator.ll
+6-425llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
+27-120llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
+16-130llvm/test/Transforms/LoopVectorize/div-exact.ll
+32-93llvm/test/Transforms/LoopVectorize/X86/predicated-replicate-feeding-cast.ll
+25-76llvm/test/Transforms/LoopVectorize/VPlan/dissolve-replicate-regions.ll
+134-3,25833 files not shown
+560-3,83839 files

LLVM/project 74c6569llvm/include/llvm/CodeGen BasicTTIImpl.h

[TTI] Fix dyn_cast null-check in BasicTTIImpl (#220755)

Introduced in #107273.
DeltaFile
+1-1llvm/include/llvm/CodeGen/BasicTTIImpl.h
+1-11 files

LLVM/project 6909103offload/libompaccsupport device.cpp PluginManager.cpp, offload/libomptarget device.cpp PluginManager.cpp

[offload][nfc] Extract libomptarget infrastructure into libompaccsupport (#213784)

libompaccsupport will become the support library for both OpenMP and
OpenACC. This patch extracts the files that will become part of it.
Currently it only moves the files and the build configuration is
unchanged.

Next patches will start refactoring libompaccsupport to flesh out the
subset of the infrastructure that will be shared between OpenMP and
OpenACC in small verifiable chunks while maintaining libomptarget's
existing behaviour.

Gradually adding the libacctarget implementation that uses
libompaccsupport will also follow.
DeltaFile
+0-584offload/libomptarget/OpenMP/Mapping.cpp
+584-0offload/libompaccsupport/Mapping.cpp
+0-573offload/libomptarget/PluginManager.cpp
+573-0offload/libompaccsupport/PluginManager.cpp
+0-513offload/libomptarget/device.cpp
+512-0offload/libompaccsupport/device.cpp
+1,669-1,6703 files not shown
+1,728-1,7289 files

LLVM/project 44bf667llvm/test/Transforms/LoopVectorize div-exact.ll if-pred-stores.ll, llvm/test/Transforms/LoopVectorize/AArch64 conditional-branches-cost.ll

[VPlan] Skip branch term in masks for some preserved uniform edges
DeltaFile
+28-2,414llvm/test/Transforms/LoopVectorize/predicator.ll
+6-425llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
+27-120llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
+16-130llvm/test/Transforms/LoopVectorize/div-exact.ll
+32-93llvm/test/Transforms/LoopVectorize/X86/predicated-replicate-feeding-cast.ll
+102-9llvm/test/Transforms/LoopVectorize/AArch64/conditional-branches-cost.ll
+211-3,19134 files not shown
+662-3,84740 files

LLVM/project 4be4f10llvm/lib/Transforms/Vectorize VPlanPredicator.cpp, llvm/test/Transforms/LoopVectorize hoist-predicated-loads.ll if-pred-stores.ll

[VPlan][Predicator] Preserve some uniform control flow

Implements "Partial Control-Flow Linearization" by Simon Moll and
Sebastian Hack.

That should allow implementation of an alternative to
https://github.com/llvm/llvm-project/pull/141900 based on this
functionality (see BOSCC in the paper).
DeltaFile
+1,514-204llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+1,492-137llvm/test/Transforms/LoopVectorize/predicator.ll
+184-128llvm/test/Transforms/LoopVectorize/X86/cost-conditional-branches.ll
+236-18llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+81-45llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
+102-10llvm/test/Transforms/LoopVectorize/hoist-predicated-loads.ll
+3,609-54240 files not shown
+4,300-80046 files

LLVM/project 30b8641llvm/lib/Transforms/Vectorize VPlanPredicator.cpp

Implement non-uniform part of partial linearization algorithm
DeltaFile
+57-12llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+57-121 files

LLVM/project d29de05llvm/lib/Transforms/Vectorize VPlanRecipes.cpp

Don't crash dumping malformed phis
DeltaFile
+20-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+20-01 files

LLVM/project 7006cafllvm/lib/Transforms/Vectorize VPlanPredicator.cpp

[AI] Move convertPhisToBlends to post-linearization
DeltaFile
+28-9llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+28-91 files

LLVM/project 914f0efllvm/lib/Transforms/Vectorize VPlanUtils.h VPlanUtils.cpp, llvm/unittests/Transforms/Vectorize VPlanTest.cpp

Luke's reconstructSSA (#212209)
DeltaFile
+268-0llvm/unittests/Transforms/Vectorize/VPlanTest.cpp
+37-0llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+9-0llvm/lib/Transforms/Vectorize/VPlanUtils.h
+314-03 files

LLVM/project abafe65llvm/test/Transforms/LoopVectorize/VPlan predicator.ll

Create actual test functions (AI-assisted)
DeltaFile
+478-25llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+478-251 files

LLVM/project 2f0864bllvm/test/Transforms/LoopVectorize predicator.ll, llvm/test/Transforms/LoopVectorize/VPlan predicator.ll

Copy to LoopVectorize/predicator.ll and generate CHECKs in both
DeltaFile
+1,077-0llvm/test/Transforms/LoopVectorize/predicator.ll
+547-1llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+1,624-12 files

LLVM/project e0ed02bllvm/test/Transforms/LoopVectorize/VPlan predicator.ll

Predicator tests for uniform control flow preservation
DeltaFile
+168-0llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+168-01 files

LLVM/project 3e11d9bllvm/lib/Transforms/Vectorize VPlanPredicator.cpp, llvm/test/Transforms/LoopVectorize predicator.ll

[VPlan] Use compact RPOT instead of just RPOT

This is necessary for the future partial linearization change, but I
wanted to commit this bit independently because it changes some tests on
itself and could potentially provide more blend optimization
opportunites (at least I hoped) but that didn't seem to happen.
DeltaFile
+58-15llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+32-32llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+4-4llvm/test/Transforms/LoopVectorize/predicator.ll
+4-4llvm/test/Transforms/LoopVectorize/X86/predicate-switch.ll
+98-554 files

LLVM/project 6417230llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Drop `removeCommonBlendMask` from `simplifyBlends` - noop now
DeltaFile
+0-19llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+0-191 files

LLVM/project 9ef1abcllvm/lib/Transforms/Vectorize VPlanPredicator.cpp, llvm/test/Transforms/LoopVectorize pr43166-fold-tail-by-masking.ll

[VPlan] Optimize away common blend mask in predicator
DeltaFile
+12-105llvm/test/Transforms/LoopVectorize/AArch64/conditional-branches-cost.ll
+5-16llvm/test/Transforms/LoopVectorize/pr43166-fold-tail-by-masking.ll
+16-2llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+8-7llvm/test/Transforms/LoopVectorize/VPlan/conditional-scalar-assignment-vplan.ll
+6-8llvm/test/Transforms/LoopVectorize/AArch64/masked-call-scalarize.ll
+8-6llvm/test/Transforms/LoopVectorize/RISCV/divrem.ll
+55-14422 files not shown
+90-18828 files

LLVM/project 4de5870llvm/lib/Transforms/Vectorize VPlanPredicator.cpp, llvm/test/Transforms/LoopVectorize select-cmp-blend-chain.ll reduction-inloop.ll

[VPlan] Make blend operands non-reorderable to optimize their masks in predicator

Sort the incoming edges according to RPOT order so that we could use
simpler source block mask instead of the edge mask.
DeltaFile
+78-118llvm/lib/Transforms/Vectorize/VPlanPredicator.cpp
+105-10llvm/test/Transforms/LoopVectorize/AArch64/conditional-branches-cost.ll
+14-24llvm/test/Transforms/LoopVectorize/VPlan/predicator.ll
+15-21llvm/test/Transforms/LoopVectorize/reduction-inloop.ll
+18-18llvm/test/Transforms/LoopVectorize/dereferenceable-info-from-assumption-constant-size.ll
+23-7llvm/test/Transforms/LoopVectorize/select-cmp-blend-chain.ll
+253-19849 files not shown
+479-39855 files