LLVM/project 613d430llvm/lib/Transforms/Vectorize VPlanUtils.h

Update comment after changing tryToExpandPredicate -> expandPredicate

...as part of the latest merge
DeltaFile
+1-2llvm/lib/Transforms/Vectorize/VPlanUtils.h
+1-21 files

LLVM/project b8f5b58llvm/test/Transforms/LoopVectorize/VPlan vplan-based-stride-mv.ll

Regenerate CHECKs after merging origin/main, the merge used "--ours" on tests with conflicts
DeltaFile
+4-4llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
+4-41 files

LLVM/project ad677ddflang/lib/Optimizer/CodeGen CodeGen.cpp, mlir/lib/Conversion/MathToLLVM MathToLLVM.cpp

[mlir] Migrate aggregate builders to explicit properties

Pass typed property structs and discardable attributes separately at ODS
aggregate builder call sites.

Assisted-by: Codex
DeltaFile
+45-70mlir/unittests/Dialect/OpenACC/OpenACCUtilsTest.cpp
+83-26flang/lib/Optimizer/CodeGen/CodeGen.cpp
+71-35mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
+71-23mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+33-40mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+38-25mlir/lib/Conversion/MathToLLVM/MathToLLVM.cpp
+341-21962 files not shown
+888-43268 files

LLVM/project 6c3bd09llvm/test/CodeGen/AArch64 overflow-vec.ll, llvm/test/CodeGen/AMDGPU/GlobalISel fpow.ll

Merge remote-tracking branch 'origin/main' into vplan-based-stride-mv-rt-guard

# Conflicts:
#       llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
#       llvm/lib/Transforms/Vectorize/VPlanUtils.h
#       llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
#       llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv-btc.ll
#       llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
DeltaFile
+17,282-3,458llvm/test/tools/llvm-mca/AArch64/Cortex/C1Premium-sve-instructions.s
+7,983-1,591llvm/test/tools/llvm-mca/AArch64/Cortex/C1Premium-neon-instructions.s
+0-6,246llvm/test/CodeGen/AMDGPU/NextUseAnalysis/test_ers_nested_loops.mir
+5,248-0llvm/test/CodeGen/X86/active_lane_mask.ll
+4,053-1,008llvm/test/CodeGen/AMDGPU/GlobalISel/fpow.ll
+4,997-0llvm/test/CodeGen/AArch64/overflow-vec.ll
+39,563-12,3038,951 files not shown
+483,756-228,0718,957 files

LLVM/project 0a40d63clang/lib/Sema SemaHLSL.cpp, clang/test/CodeGenHLSL/builtins RasterizerOrderedByteAddressBuffer-InterlockedCompareExchangeFloatBitwise.hlsl RWByteAddressBuffer-InterlockedCompareExchangeFloatBitwise.hlsl

First attempt implementing InterlockedCompareExchangeFloatBitwise
DeltaFile
+119-0clang/test/SemaHLSL/BuiltIns/InterlockedCompareExchangeFloatBitwise-errors.hlsl
+43-0clang/test/CodeGenHLSL/builtins/InterlockedCompareExchangeFloatBitwise.hlsl
+42-0clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedCompareExchangeFloatBitwise-sm60.hlsl
+32-0clang/test/CodeGenHLSL/builtins/RWByteAddressBuffer-InterlockedCompareExchangeFloatBitwise.hlsl
+25-0clang/test/CodeGenHLSL/builtins/RasterizerOrderedByteAddressBuffer-InterlockedCompareExchangeFloatBitwise.hlsl
+10-3clang/lib/Sema/SemaHLSL.cpp
+271-35 files not shown
+302-611 files

LLVM/project e1ab75eclang/lib/Sema SemaHLSL.cpp, clang/test/CodeGenHLSL/builtins RWByteAddressBuffer-InterlockedCompareStoreFloatBitwise.hlsl InterlockedCompareStoreFloatBitwise.hlsl

First attempt implementing InterlockedCompareStoreFloatBitwise
DeltaFile
+100-0clang/test/SemaHLSL/BuiltIns/InterlockedCompareStoreFloatBitwise-errors.hlsl
+39-0clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedCompareStoreFloatBitwise-sm60.hlsl
+35-0clang/test/CodeGenHLSL/builtins/InterlockedCompareStoreFloatBitwise.hlsl
+30-0llvm/test/CodeGen/DirectX/ResourceAtomicCompareStoreFloat.ll
+20-8clang/lib/Sema/SemaHLSL.cpp
+27-0clang/test/CodeGenHLSL/builtins/RWByteAddressBuffer-InterlockedCompareStoreFloatBitwise.hlsl
+251-86 files not shown
+316-1312 files

LLVM/project c52e3b2clang/lib/Sema SemaHLSL.cpp HLSLExternalSemaSource.cpp, clang/test/CodeGenHLSL/builtins RasterizerOrderedByteAddressBuffer-InterlockedCompareExchange.hlsl RWByteAddressBuffer-InterlockedCompareExchange.hlsl

First attempt implementing InterlockedCompareExchange
DeltaFile
+114-0clang/test/SemaHLSL/BuiltIns/InterlockedCompareExchange-errors.hlsl
+70-0clang/test/CodeGenHLSL/builtins/InterlockedCompareExchange.hlsl
+43-24clang/lib/Sema/HLSLExternalSemaSource.cpp
+44-0clang/test/CodeGenHLSL/builtins/RWByteAddressBuffer-InterlockedCompareExchange.hlsl
+24-12clang/lib/Sema/SemaHLSL.cpp
+35-0clang/test/CodeGenHLSL/builtins/RasterizerOrderedByteAddressBuffer-InterlockedCompareExchange.hlsl
+330-366 files not shown
+418-5212 files

LLVM/project a431f29clang/lib/CodeGen CGHLSLBuiltins.cpp, clang/lib/Sema HLSLExternalSemaSource.cpp

First attempt implementing InterlockedCompareStore
DeltaFile
+89-0clang/test/SemaHLSL/BuiltIns/InterlockedCompareStore-errors.hlsl
+54-0clang/test/CodeGenHLSL/builtins/InterlockedCompareStore.hlsl
+46-7clang/lib/Sema/HLSLExternalSemaSource.cpp
+37-0llvm/test/CodeGen/DirectX/ResourceAtomicCompareStore.ll
+29-7clang/lib/CodeGen/CGHLSLBuiltins.cpp
+36-0clang/test/CodeGenHLSL/builtins/RWByteAddressBuffer-InterlockedCompareStore.hlsl
+291-147 files not shown
+399-1613 files

LLVM/project d15133aclang/test/SemaHLSL/BuiltIns InterlockedExchange-errors.hlsl ByteAddressBuffer-InterlockedExchangeFloat-sm60.hlsl, llvm/lib/Target/DirectX DXILResourceAccess.cpp DXILLegalizePass.cpp

First attempt implementing float InterlockedExchange
DeltaFile
+40-0clang/test/SemaHLSL/BuiltIns/ByteAddressBuffer-InterlockedExchangeFloat-sm60.hlsl
+39-0llvm/test/CodeGen/DirectX/LegalizeAtomicExchangeFloat.ll
+38-0llvm/test/CodeGen/DirectX/ResourceAtomicExchangeFloat.ll
+21-14clang/test/SemaHLSL/BuiltIns/InterlockedExchange-errors.hlsl
+29-0llvm/lib/Target/DirectX/DXILLegalizePass.cpp
+17-3llvm/lib/Target/DirectX/DXILResourceAccess.cpp
+184-178 files not shown
+246-2814 files

LLVM/project a724a1dllvm/lib/Target/RISCV RISCVISelLowering.cpp

fixup! Revise comment
DeltaFile
+1-1llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+1-11 files

LLVM/project 97d5de8llvm/lib/Target/AMDGPU SIInstrInfo.cpp

[AMDGPU][NFC] Simplify conditional return in SIInstrInfo.cpp (#222426)
DeltaFile
+1-3llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+1-31 files

LLVM/project a53d7eeclang/include/clang/StaticAnalyzer/Core/PathSensitive CallEvent.h, clang/lib/StaticAnalyzer/Core ExprEngineCXX.cpp CallEvent.cpp

Rename getAdjustedParameterIndex to adjustASTArgIdxToDeclParamIdx.
DeltaFile
+25-27clang/lib/StaticAnalyzer/Core/CallEvent.cpp
+10-8clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+1-1clang/lib/StaticAnalyzer/Core/ExprEngineCXX.cpp
+36-363 files

LLVM/project ef42f24llvm/lib/Target/SystemZ/MCTargetDesc SystemZTargetStreamer.cpp, llvm/test/CodeGen/SystemZ zos-ppa1.ll zos-align-constpool.ll

x[SystemZ][z/OS] Correctly align the constant pool and the PPA1

Both should be half-word aligned. However, testing revealed that
both can end up on odd addresses, which leads to relocation errors.
Fix is to change the alignment.
DeltaFile
+20-0llvm/test/CodeGen/SystemZ/zos-align-constpool.ll
+2-2llvm/test/CodeGen/SystemZ/zos-ppa1.ll
+2-0llvm/lib/Target/SystemZ/MCTargetDesc/SystemZTargetStreamer.cpp
+24-23 files

LLVM/project e6114dbmlir/lib/Dialect/Affine/IR AffineOps.cpp, mlir/lib/Dialect/Arith/Transforms UnsignedWhenEquivalent.cpp

[mlir][Affine][SCF][Vector] Migrate to split inherent/discardable attribute APIs (#218913)

Migrate the Affine, Arith, Arm vector, SCF, and Vector dialect families
and related conversions to explicit discardable or typed attribute
access.

Assisted-by: Codex
DeltaFile
+50-70mlir/lib/Dialect/Affine/IR/AffineOps.cpp
+25-35mlir/lib/Dialect/SCF/IR/SCF.cpp
+24-19mlir/test/lib/Dialect/SCF/TestSCFUtils.cpp
+21-12mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+24-3mlir/lib/Dialect/Arith/Transforms/UnsignedWhenEquivalent.cpp
+11-11mlir/lib/Dialect/Vector/Transforms/VectorLinearize.cpp
+155-15036 files not shown
+317-25842 files

LLVM/project f88cb5fmlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h, mlir/lib/Dialect/GPU/Pipelines GPUToROCDLPipeline.cpp

[mlir][AMDGPU] Take an `arch` target ID instead of triple/chip/features

`features` was a general `-mattr` string, which needed a general feature
parser and let callers ask for arbitrary combinations we have no interest
in supporting. In practice the only things anyone sets are the wavefront
size and the xnack/sramecc settings that come off a device query.

Replace `triple`, `chip` and `features` with a single `arch` option that
names the target the way Clang does, parsed by `llvm::AMDGPU::TargetID`
rather than by hand. It accepts

  - a processor, with optional target-ID modifiers: `gfx942`,
    `gfx942:xnack+`, `gfx9-4-generic`;
  - a triple: `amdgpu9.42-amd-amdhsa`;
  - a full target ID: `amdcgn-amd-amdhsa--gfx90a:sramecc+:xnack-`, which
    is what `rocminfo` prints for a device's ISA, so that output can be
    pasted straight in.

Since `chipset=gfx942` becomes `arch=gfx942`, migration is a rename.

    [22 lines not shown]
DeltaFile
+103-68mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+107-38mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+108-4mlir/lib/Dialect/GPU/Transforms/ROCDLAttachTarget.cpp
+98-0mlir/test/Dialect/LLVMIR/rocdl-attach-target-arch.mlir
+62-7mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+5-32mlir/lib/Dialect/GPU/Pipelines/GPUToROCDLPipeline.cpp
+483-14993 files not shown
+719-39799 files

LLVM/project df6b0cemlir/include/mlir/Conversion Passes.td, mlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h

[mlir][AMDGPU] Keep `chipset` as a deprecated alias for `arch`

Renaming the option meant every existing invocation of these passes had
to be updated in lockstep. Accept the old spelling instead: `chipset` on
`convert-amdgpu-to-rocdl`, `convert-gpu-to-rocdl`, `convert-arith-to-amdgpu`,
`convert-math-to-rocdl` and `amdgpu-emulate-atomics`, and `chip` on
`gpu-lower-to-rocdl-pipeline`, which is what each of them was called
before the rename.

`arch` wins whenever it names a target; the alias is consulted only when
`arch` is still at the sentinel that means "no target given", so with
neither given the error still names the unusable default rather than an
empty string, and a stale alias value is reported as itself.
DeltaFile
+27-0mlir/test/Conversion/ArithToAMDGPU/deprecated-chipset-alias.mlir
+22-0mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+6-3mlir/lib/Dialect/GPU/Pipelines/GPUToROCDLPipeline.cpp
+8-0mlir/include/mlir/Conversion/Passes.td
+7-0mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+6-0mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+76-39 files not shown
+96-1115 files

LLVM/project e484060mlir/docs ReleaseNotes.md, mlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h

[mlir][ROCDL] Carry `arch`'s xnack/sramecc onto the module

`rocdl-attach-target` rejected a target ID that pinned xnack or sramecc,
because `#rocdl.target` feeds a TargetMachine and the backend no longer
accepts those two as subtarget features. Now that the module attributes
exist, migrate them instead of refusing: `TargetInfo` gains
`migrateArchFeaturesToModuleFlags`, which records the settings the target
ID pinned as `rocdl.xnack` / `rocdl.sramecc` on a module, and
`rocdl-attach-target` calls it on each module it attaches to.

A setting the target ID leaves open, or that the GPU does not support, is
left alone rather than written as false: an absent flag means "either",
so writing false would be a different request. That also means an
attribute already on the module survives an `arch` that says nothing
about the feature, while an `arch` that does pin it wins as the more
specific request.
DeltaFile
+55-0mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+6-27mlir/lib/Dialect/GPU/Transforms/ROCDLAttachTarget.cpp
+17-10mlir/test/Dialect/LLVMIR/rocdl-attach-target-arch.mlir
+22-0mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+13-0mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+8-1mlir/docs/ReleaseNotes.md
+121-381 files not shown
+123-397 files

LLVM/project 8b06c2fmlir/include/mlir/Dialect/LLVMIR ROCDLTargetInfo.h, mlir/lib/Conversion/AMDGPUToROCDL AMDGPUToROCDL.cpp

[mlir] Migrate AMDGPU/ROCDL to targets, not chipset versions

**migration tl;dr:** `chipset=` becomes `triple=`, migrate off of
`amdgpu::Chipset` to `ROCDL::TargetInfo`, and eventually change
`gfxXYZ` to `amdgpuX.YZ-amd-amdhsa` in that `triple` argument.

`amdgpu::Chipset` was an awkward hack that was hard to keep up to date
with changes in the compiler/new architectures, and didn't properly
support generic targets (and has been strongly disfavored by the
compiler team).

This PR replaces `amdgpu::Chipset` with `ROCDL::TargetInfo`, a
structure that uses LLVM's TargetParser and the underlying LLVM
features tables to get the real nature of the target being compiled
for.

This also helps MLIR move to
new-style (`-mtriple=amdgpuX.YZ-amd-amdhsa`) over "old
style" (`-mtriple=amdgcn-amd-amdhsa -mcpu=gfxXYZ`) triples.

    [40 lines not shown]
DeltaFile
+314-323mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp
+246-0mlir/unittests/Dialect/LLVMIR/ROCDLTargetInfoTest.cpp
+178-0mlir/lib/Dialect/LLVMIR/IR/ROCDLTargetInfo.cpp
+119-0mlir/include/mlir/Dialect/LLVMIR/ROCDLTargetInfo.h
+45-40mlir/lib/Dialect/AMDGPU/Transforms/EmulateAtomics.cpp
+49-24mlir/test/Dialect/AMDGPU/amdgpu-emulate-atomics.mlir
+951-387103 files not shown
+1,505-711109 files

LLVM/project 1d99f65mlir/test/Conversion/AMDGPUToROCDL permlane.mlir mfma-gfx950.mlir, mlir/test/Dialect/AMDGPU amdgpu-emulate-atomics.mlir

[mlir][AMDGPU][NFC] Pre-commit tests for incorrect version checks

There'll be a refactoring from `amdgpu::Chipset` to
`ROCDL::TargetInfo`, thus also moving from chip version checks to
features checks. This commit adds tests for incorrect lowerings that
were allowed by the current code.

- gfx90c is >= gfx90a but stil needs atomic emulation (it doesn't
  have buffer fmax and so on).
- gfx90c is also >= gfx90a but has no barrier back-off, so it needs
  the inline asm workaround around `s_barrier` that it isn't getting
- gfx908 doesn't have a packed fp16 atomic add but we thought it did
- gfx950 is mistakenly allowing xf32 MFMAs
- gfx1200 is allowing permlane_swap instructions that it doesn't have
- gfx11.7 should be allowing OCP FP8 conversions but isn't on the list

This also cleans up some redundant tests with a --check-prefixes

AI disclosure: Claude found these and wrote the tests.

    [2 lines not shown]
DeltaFile
+36-33mlir/test/Dialect/AMDGPU/amdgpu-emulate-atomics.mlir
+28-0mlir/test/Conversion/AMDGPUToROCDL/8-bit-floats-ocp-gfx1170.mlir
+15-0mlir/test/Conversion/AMDGPUToROCDL/lds-barrier-gfx90c.mlir
+14-0mlir/test/Conversion/AMDGPUToROCDL/mfma-gfx950.mlir
+4-0mlir/test/Conversion/AMDGPUToROCDL/permlane.mlir
+97-335 files

LLVM/project ded5397mlir/include/mlir/Dialect/LLVMIR ROCDLDialect.td, mlir/lib/Dialect/LLVMIR/IR ROCDLDialect.cpp

[mlir][ROCDL] Add `rocdl.xnack` and `rocdl.sramecc` module attributes

Since 27eeb7370281, the AMDGPU backend takes the xnack
and sramecc target-ID settings from the `amdgpu.xnack` and
`amdgpu.sramecc` module flags instead subtarget features, making the
old usage a hard error.

This commit adds `rocdl.xnack` and `rocdl.sramecc` module attributes
to the discardable attribute list the ROCDL dialect defines in order
to represent these flags and adds translations for them.

Omitting them means to leave these modifiers at
their default "either" state, which isn't the same as setting them to
false.

AI disclosure: Claude wrote this code and I reviewed it and tried to
reword the comments to something better.
DeltaFile
+38-0mlir/test/Dialect/LLVMIR/rocdl.mlir
+29-0mlir/test/Target/LLVMIR/rocdl-module-flags.mlir
+18-0mlir/lib/Target/LLVMIR/Dialect/ROCDL/ROCDLToLLVMIRTranslation.cpp
+13-0mlir/include/mlir/Dialect/LLVMIR/ROCDLDialect.td
+10-0mlir/lib/Dialect/LLVMIR/IR/ROCDLDialect.cpp
+108-05 files

LLVM/project 1d376c0llvm/test/TableGen AMDGPUTargetDefSubArchSpelling.td

[AMDGPU][NFC] Account for the LDS bank count column in the GPU table test

AMDGPUTargetDefSubArchSpelling.td spells out every column of the emitted
GPUInfo rows, so it has to be updated whenever one is added. The
num_records width and getLDSBankCount landed independently, and each
CHECK line only grew by one, leaving them a column short.

Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+3-3llvm/test/TableGen/AMDGPUTargetDefSubArchSpelling.td
+3-31 files

LLVM/project 24ad162llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/TargetParser AMDGPUTargetParser.cpp

Review feedback
DeltaFile
+38-0llvm/unittests/TargetParser/TargetParserTest.cpp
+2-2llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+1-1llvm/utils/TableGen/Basic/AMDGPUTargetDefEmitter.cpp
+1-1llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+42-44 files

LLVM/project 9e22d99llvm/include/llvm/TargetParser AMDGPUTargetParser.h, llvm/lib/Target/AMDGPU AMDGPU.td

[AMDGPU] Expose buffer resource num_records width in TargetParser

This also fixes the conflict in gfx12.

Co-Authored-By: Claude Opus 5 (1M context) <noreply at anthropic.com>
DeltaFile
+13-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+6-0llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+2-1llvm/utils/TableGen/Basic/AMDGPUTargetDefEmitter.cpp
+1-1llvm/lib/Target/AMDGPU/AMDGPU.td
+22-24 files

LLVM/project 2c56578clang/lib/CIR/Dialect/Transforms/TargetLowering CIRABIRewriteContext.cpp, clang/test/CIR/Transforms/abi-lowering indirect-byval.cir indirect-byref-forward-param.cir

[CIR] Emit classic's attributes for a non-byval indirect argument

CallConvLowering marked an indirect argument that is not byval with
llvm.byref.  Classic gives this argument llvm.nofreeobj, llvm.noundef,
llvm.align, and llvm.dereferenceable instead.

A call site forwarding such a parameter used to identify it by reading
llvm.byref back, so the pass now records the parameter where the
signature rewrite creates it.  The "byref" vocabulary is removed, since
it no longer names anything CIR emits.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+504-0clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-nyi.cir
+0-452clang/test/CIR/Transforms/abi-lowering/indirect-byref-nyi.cir
+267-0clang/test/CIR/Transforms/abi-lowering/indirect-non-byval-forward-param.cir
+0-221clang/test/CIR/Transforms/abi-lowering/indirect-byref-forward-param.cir
+107-106clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+84-100clang/test/CIR/Transforms/abi-lowering/indirect-byval.cir
+962-87922 files not shown
+1,212-1,12228 files

LLVM/project 0e7a71bclang/include/clang/StaticAnalyzer/Core/PathSensitive CallEvent.h, clang/lib/StaticAnalyzer/Core CallEvent.cpp

Rename parameters.
DeltaFile
+5-5clang/include/clang/StaticAnalyzer/Core/PathSensitive/CallEvent.h
+3-3clang/lib/StaticAnalyzer/Core/CallEvent.cpp
+8-82 files

LLVM/project b1b6862clang CMakeLists.txt, llvm CMakeLists.txt

[CIR][CMake] Configure MLIR as a dependency-only project (#221739)

Enable MLIR implicitly for ClangIR without attaching its unrelated tools
and test suite to the aggregate build. An explicit MLIR selection
retains its normal behavior. Add MLIR after all Clang consumers enable
Clang, so CIR also works when Clang is enabled for LLDB.

Package the required MLIR libraries through Clang's existing exports and
LLVM's distribution policy. Register dependency library and header
install components and honor toolchain-only installations. When Clang is
itself an implicit Flang dependency, let Flang package the required
targets.

Keep MLIR test support available for CIR and retain the standalone
ClangIR restriction. Leave MLIR disabled when CIR is disabled.

Assisted-by: Codex
DeltaFile
+39-2clang/CMakeLists.txt
+7-0llvm/CMakeLists.txt
+46-22 files

LLVM/project 5c780c5llvm/lib/Target/AMDGPU AMDGPUPromoteAlloca.cpp, llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR as-vgpr-promote.ll

Count the intrinsics that really become calls when refusing promotion
DeltaFile
+81-0llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR/as-vgpr-promote.ll
+30-9llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
+111-92 files

LLVM/project 727a1c1llvm/lib/Target/AMDGPU AMDGPUPromoteAlloca.cpp, llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR as-vgpr-promote.ll

Refuse promotion only when the object is live across a call
DeltaFile
+183-4llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR/as-vgpr-promote.ll
+117-15llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
+300-192 files

LLVM/project a4bebc2llvm/lib/Target/AMDGPU AMDGPUPromoteAlloca.cpp, llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR as-vgpr-promote.ll

Carry null operands and intrinsic names across when promoting to VGPRs
DeltaFile
+145-0llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR/as-vgpr-promote.ll
+42-2llvm/lib/Target/AMDGPU/AMDGPUPromoteAlloca.cpp
+187-22 files

LLVM/project 402bdc2llvm/lib/Target/AMDGPU AMDGPUPrivateObjectVGPRs.cpp, llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR as-vgpr-private-object-vgprs.mir

Propagate object liveness to every changed successor, not only back edges
DeltaFile
+56-0llvm/test/CodeGen/AMDGPU/AddressSpaceVGPR/as-vgpr-private-object-vgprs.mir
+14-4llvm/lib/Target/AMDGPU/AMDGPUPrivateObjectVGPRs.cpp
+70-42 files