LLVM/project ea2fb2allvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 vector-extract-last-active.ll vector-reduce-or-cmp.ll

[X86] Replace custom AND/OR/XOR reduction pattern matching with ISD::VECREDUCE_AND/OR/XOR support (#199544)

The middle-end (SLP, VectorCombine and InstCombine) recognition and
handling of vector logic reduction patterns is sufficient now, so the
backend can work with ISD::VECREDUCE_AND/OR/XOR nodes directly.
DeltaFile
+102-102llvm/test/CodeGen/X86/vector-reduce-xor.ll
+102-102llvm/test/CodeGen/X86/vector-reduce-or.ll
+102-102llvm/test/CodeGen/X86/vector-reduce-and.ll
+159-38llvm/test/CodeGen/X86/vector-reduce-or-cmp.ll
+61-86llvm/test/CodeGen/X86/vector-extract-last-active.ll
+37-30llvm/lib/Target/X86/X86ISelLowering.cpp
+563-4604 files not shown
+597-49910 files

LLVM/project 0a321f3llvm/lib/Transforms/Scalar GVN.cpp, llvm/test/Transforms/GVN select_exponential_blowup.ll

[GVN] Track visited nodes in equality propagation to avoid OOM (#212265)

The added test ended up being out-of-memory (OOM) killed, because GVN
computed the same equality facts through exponentially many paths.

Co-authored-by: Katy Thackray <katy.thackray2 at arm.com>
DeltaFile
+280-0llvm/test/Transforms/GVN/select_exponential_blowup.ll
+4-0llvm/lib/Transforms/Scalar/GVN.cpp
+284-02 files

LLVM/project 3e8c692flang/docs FlangDriver.md, flang/examples/HLFIRPipelinePlugin CMakeLists.txt HLFIRPipelinePlugin.cpp

[flang] Add an example plugin exercising the HLFIR pipeline extension points

The HLFIR extension points, the pipeline config callback registry and fir-opt's
symbol export all exist to let an out-of-tree MLIR pass run while the HLFIR
intrinsic operations (hlfir.sum, hlfir.matmul, ...) are still present. None of
that was covered end to end, and nothing showed how to use it.

Add flang/examples/HLFIRPipelinePlugin, modelled on PrintFlangFunctionNames. It
contributes a pass that prints the HLFIR operations still present in the module,
tagged with the pipeline position it was inserted at, and exposes it through
both plugin entry points: a static initializer calling
fir::registerPassPipelineConfigCallback for the `flang -fc1 -load` path, and
mlirGetPassPluginInfo so fir-opt can load it with --load-pass-plugin.

Nothing is linked into the shared object; MLIR, FIR and flang symbols resolve
against the host tool, which is what export_executable_symbols_for_plugins on
flang and fir-opt provides.

Two tests use it. Examples/hlfir-pipeline-plugin.f90 covers -emit-fir and

    [7 lines not shown]
DeltaFile
+111-0flang/examples/HLFIRPipelinePlugin/HLFIRPipelinePlugin.cpp
+51-0flang/test/Examples/hlfir-pipeline-plugin.f90
+34-0flang/test/Examples/fir-opt-pass-plugin.fir
+17-0flang/docs/FlangDriver.md
+15-0flang/examples/HLFIRPipelinePlugin/CMakeLists.txt
+1-0flang/test/CMakeLists.txt
+229-01 files not shown
+230-07 files

LLVM/project a3cd2fbllvm/docs AMDGPUMemoryModel.md

[Docs][AMDGPU] fully specify volatile accesses in the memory model

A volatile access on AMDGPU includes store-available or load-visible semantics
at the widest scope supported by its address space:

- system scope for global/generic,
- workgroup scope for local (LDS)

This fully specifies the behavior that the LLVM memory model leaves
target-dependent, matching the implementation in SIMemoryLegalizer.

Assisted-By: Claude Opus 4.8
DeltaFile
+21-0llvm/docs/AMDGPUMemoryModel.md
+21-01 files

LLVM/project d2b1e49flang/docs FlangDriver.md, flang/examples/HLFIRPipelinePlugin CMakeLists.txt HLFIRPipelinePlugin.cpp

[flang] Add an example plugin exercising the HLFIR pipeline extension points

The HLFIR extension points, the config augmentor registry and fir-opt's symbol
export exist to let an out-of-tree MLIR pass run while the HLFIR intrinsic
operations (hlfir.sum, hlfir.matmul, ...) are still present. None of that was
covered end to end, and there was no worked example of how to use it.

Add flang/examples/HLFIRPipelinePlugin, modelled on PrintFlangFunctionNames. It
contributes a pass that prints the HLFIR operations still present in the
module, tagged with the pipeline position it was inserted at, and exposes it
through both plugin entry points: a static initializer calling
fir::registerPassPipelineConfigCallback for the `flang -fc1 -load` path, and
mlirGetPassPluginInfo so fir-opt can load it with --load-pass-plugin.

Nothing is linked into the shared object: MLIR, FIR and flang symbols resolve
against the host tool, which is what export_executable_symbols_for_plugins on
flang and fir-opt provides. Removing the fir-opt export drops it from ~105k
exported dynamic symbols to one and makes --load-pass-plugin fail to load.


    [7 lines not shown]
DeltaFile
+115-0flang/examples/HLFIRPipelinePlugin/HLFIRPipelinePlugin.cpp
+53-0flang/test/Examples/hlfir-pipeline-plugin.f90
+36-0flang/test/Examples/fir-opt-pass-plugin.fir
+17-0flang/docs/FlangDriver.md
+15-0flang/examples/HLFIRPipelinePlugin/CMakeLists.txt
+1-0flang/test/CMakeLists.txt
+237-01 files not shown
+238-07 files

LLVM/project 96e02c0flang/docs FlangDriver.md, flang/include/flang/Optimizer/Passes Pipelines.h

[flang] Add a pass-pipeline config callback hook for plugins

The HLFIR-to-FIR pipeline extension points live on MLIRToLLVMPassPipelineConfig,
which the frontend builds as a local of CodeGenAction, out of reach of a plugin.

Add a process-global registry of callbacks that run on the config before the
pipeline is built. A plugin registers one from a static initializer, so it is in
place before any compilation begins, as FrontendPluginRegistry does for plugin
actions. Both code generation entry points invoke the callbacks, lowerHLFIRToFIR
for -emit-fir and generateLLVMIR for -emit-llvm/-emit-obj, and are mutually
exclusive for a given compilation, so a plugin sees the same behaviour whichever
output was asked for.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+79-1flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+30-0flang/docs/FlangDriver.md
+17-0flang/lib/Optimizer/Passes/Pipelines.cpp
+11-0flang/include/flang/Optimizer/Passes/Pipelines.h
+5-0flang/lib/Frontend/FrontendActions.cpp
+142-15 files

LLVM/project 20d5962llvm/test/CodeGen/ARM half.ll minnum-maxnum-intrinsics.ll, llvm/test/CodeGen/Thumb2 inlineasm-mve.ll

[ARM][NFC] Fix invalid target triples in tests (#213588)

Update the expected codegen as-needed.
DeltaFile
+14-64llvm/test/CodeGen/ARM/cls.ll
+12-12llvm/test/CodeGen/ARM/fp16-fusedMAC.ll
+9-9llvm/test/CodeGen/Thumb2/inlineasm-mve.ll
+6-6llvm/test/CodeGen/ARM/interrupt-save-fp-attr.ll
+5-4llvm/test/CodeGen/ARM/minnum-maxnum-intrinsics.ll
+4-4llvm/test/CodeGen/ARM/half.ll
+50-9933 files not shown
+85-13439 files

LLVM/project a8def69utils/bazel/llvm-project-overlay/flang BUILD.bazel, utils/bazel/llvm-project-overlay/flang/include/flang/Optimizer/Passes BUILD.bazel

[Bazel] Fixes 13034b3 (#214141)

This fixes 13034b3a22058f6bc49553268b051bdc6aa4efa1 (#212194).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=13034b3a22058f6bc49553268b051bdc6aa4efa1

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+4-0utils/bazel/llvm-project-overlay/flang/unittests/BUILD.bazel
+2-0utils/bazel/llvm-project-overlay/flang/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/flang/include/flang/Optimizer/Passes/BUILD.bazel
+7-03 files

LLVM/project a5b9b69libcxx .clang-format, libcxxabi .clang-format

[libc++] Add InsertNewlineAtEOF=True to .clang-format (#214078)

Newline at the end of a file is a standard convention in the `libc++`
codebase, but it's not enforced via `clang-format`.
Current PR enables this check:

https://clang.llvm.org/docs/ClangFormatStyleOptions.html#insertnewlineateof
DeltaFile
+1-0libcxxabi/.clang-format
+1-0libcxx/.clang-format
+2-02 files

LLVM/project d31b11cllvm/test/Transforms/LoopVectorize/AArch64 sve-nested-loop-diff-checks.ll, llvm/test/Transforms/LoopVectorize/RISCV riscv-vector-reverse.ll tail-folding-cast-intrinsics.ll

[LV] Make greater use of ScalarEvolution in addDiffRuntimeChecks (#213668)

When the loop vectoriser calls addDiffRuntimeChecks it goes to a lot of
effort to avoid generating multiple copies of the VF calculation by
caching the first instance. However, now that ScalarEvolution has a
getElementCount function we can simplify this code significantly,
especially since SCEVs are also implicitly cached. Make greater use of
SCEVs for computation also has the side-effect of improving code quality
in the memory check blocks, which is important when estimating costs of
these checks. You can see this in some tests like

LoopVectorize/AArch64/sve-runtime-check-size-based-threshold.ll

where the threshold for entering the loop has been relaxed.

Ideally, all computation in addDiffRuntimeChecks should be done using
SCEV because there are presumably other folds that can be applied to the
comparisons. However, I'd keep things simple in this PR and deal with
that in a follow-on PR.
DeltaFile
+72-82llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-bin-unary-ops-args.ll
+36-54llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-call-intrinsics.ll
+84-0llvm/test/Transforms/LoopVectorize/AArch64/sve-nested-loop-diff-checks.ll
+32-44llvm/test/Transforms/LoopVectorize/RISCV/fminimumnum.ll
+21-31llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-cast-intrinsics.ll
+12-18llvm/test/Transforms/LoopVectorize/RISCV/riscv-vector-reverse.ll
+257-22915 files not shown
+310-30721 files

LLVM/project a4c7c48llvm/lib/Target/SPIRV/MCTargetDesc SPIRVInstPrinter.cpp, llvm/test/CodeGen/SPIRV literals.ll

[SPIR-V] Preserve sign and payload when printing NaN as hex float (#212438)

NaN was always printed as the canonical `0x1.8p+<MaxExp>`, silently
dropping the sign bit and any signaling/payload bits

Discussed in https://github.com/llvm/llvm-project/pull/212295
DeltaFile
+13-3llvm/lib/Target/SPIRV/MCTargetDesc/SPIRVInstPrinter.cpp
+9-0llvm/test/CodeGen/SPIRV/literals.ll
+22-32 files

LLVM/project dce57cfmlir/lib/Analysis/DataFlow ConstantPropagationAnalysis.cpp, mlir/test/Transforms sccp.mlir

[MLIR][SCCP] Fix in-place folds leaking into IR during simulation (#213933)

SparseConstantPropagation restored the operation only when `fold` did
not return any fold results. But a folder can mutate the op in place and
still return out-of-place results or fail, e.g. `vector.extract` folds
constant dynamic positions into static ones before attempting further
folds.
The constants fed to `fold` are speculative lattice values, so the
mutation bakes a possibly-wrong constant into the IR. SCCP would
permanently replace a loop-carried dynamic index with its first lattice
value for example.

Fix: Restore the original operands and attributes after every fold call,
regardless of its outcome.

Co-authored-by: Claude Fable 5 <noreply at anthropic.com>
DeltaFile
+28-0mlir/test/Transforms/sccp.mlir
+13-11mlir/lib/Analysis/DataFlow/ConstantPropagationAnalysis.cpp
+41-112 files

LLVM/project 13034b3flang/docs FlangDriver.md, flang/include/flang/Tools CrossToolHelpers.h

[flang] Add HLFIR-to-FIR pass pipeline extension points (#212194)

The FIR optimizer extension points (FIROptEarly, FIRInliner, FIROptLast)
all
run after HLFIR has been lowered to FIR, so the HLFIR intrinsic
operations
(hlfir.sum, hlfir.matmul, ...) are gone by the time they run.
Transformations
that need to see those operations have nowhere to attach.

Add two extension points to createHLFIRToFIRPassPipeline:

  * HLFIROptEarly, at the start of the pipeline, before any HLFIR
    simplification or inlining.
  * HLFIROptLast, just before createLowerHLFIRIntrinsics.

Drivers register passes through registerHLFIROptEarlyEPCallbacks and
registerHLFIROptLastEPCallbacks on MLIRToLLVMPassPipelineConfig. The
invoke

    [4 lines not shown]
DeltaFile
+130-0flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+32-0flang/include/flang/Tools/CrossToolHelpers.h
+21-0flang/docs/FlangDriver.md
+6-0flang/lib/Optimizer/Passes/Pipelines.cpp
+2-0flang/unittests/Optimizer/CMakeLists.txt
+191-05 files

LLVM/project 832eab1flang/docs FlangDriver.md, flang/include/flang/Optimizer/Passes Pipelines.h

[flang] Add a pass-pipeline config callback hook for plugins

The HLFIR-to-FIR pipeline extension points live on MLIRToLLVMPassPipelineConfig,
which the frontend builds as a local of CodeGenAction, out of reach of a plugin.

Add a process-global registry of callbacks that run on the config before the
pipeline is built. A plugin registers one from a static initializer, so it is in
place before any compilation begins, as FrontendPluginRegistry does for plugin
actions. Both code generation entry points invoke the callbacks, lowerHLFIRToFIR
for -emit-fir and generateLLVMIR for -emit-llvm/-emit-obj, and are mutually
exclusive for a given compilation, so a plugin sees the same behaviour whichever
output was asked for.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+79-1flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+30-0flang/docs/FlangDriver.md
+17-0flang/lib/Optimizer/Passes/Pipelines.cpp
+11-0flang/include/flang/Optimizer/Passes/Pipelines.h
+5-0flang/lib/Frontend/FrontendActions.cpp
+142-15 files

LLVM/project 51e8f76lldb/source/Target Target.cpp, lldb/test/API/functionalities/postmortem/elf-core TestLinuxCore.py

[lldb] Clear stale error in Target::ReadMemory on file-cache fallback (#213451)

Load the checked-in core `linux-aarch64-pac.core` from
`lldb/test/API/functionalities/postmortem/elf-core/` with its binary and ask for
a `char16_t *` summary at the start of `.text`:

```
(lldb) settings set target.max-string-summary-length 8
(lldb) expression -l c++ -- (char16_t *)0x400140
(char16_t *) $0 = 0x0000000000400140 unable to read data
(lldb) memory read -s1 -c16 0x400140
0x00400140: 3f 23 03 d5 ff 83 00 d1 fd 7b 01 a9 fd 43 00 91  ?#.......{...C..
```

`memory read` prints the very bytes the summary just claimed it could not read.
Both go through `Target::ReadMemory()`, which reuses a single `Status &error` for
the process read and for the file-cache fallback at the end of the function, and
`Target::ReadMemoryFromFileCache()` only ever sets that `Status`, it never clears
it.  So when the process read fails outright and the fallback then satisfies the

    [37 lines not shown]
DeltaFile
+103-0lldb/unittests/Target/MemoryTest.cpp
+11-1lldb/source/Target/Target.cpp
+7-0lldb/test/API/functionalities/postmortem/elf-core/TestLinuxCore.py
+1-0lldb/unittests/Target/CMakeLists.txt
+122-14 files

LLVM/project 010bd79clang-tools-extra/clang-tidy/tool clang-tidy-diff.py, clang-tools-extra/test/clang-tidy/infrastructure clang-tidy-diff.cpp

[clang-tidy] Fix clang-tidy-diff with not producing blank lines (#213873)

clang-tidy-diff.py unconditionally wrote `stdout + "\n"` for every file
it processed, even when clang-tidy produced no output so this bloated
output with needless blank line (happened with `-quiet` flag enabled
which made tidy produce 0 diagnostics).
DeltaFile
+8-0clang-tools-extra/test/clang-tidy/infrastructure/clang-tidy-diff.cpp
+3-2clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py
+1-0clang-tools-extra/test/clang-tidy/infrastructure/Inputs/clang-tidy-diff/test.cpp
+12-23 files

LLVM/project 0d3f129clang-tools-extra/docs/clang-tidy Contributing.rst

[clang-tidy][Docs] write guidline about -or-later suffix (#213962)
DeltaFile
+6-2clang-tools-extra/docs/clang-tidy/Contributing.rst
+6-21 files

LLVM/project 48a2c65clang-tools-extra/test/clang-tidy/checkers/bugprone signal-handler.c easily-swappable-parameters.c, clang-tools-extra/test/clang-tidy/checkers/readability non-const-parameter.c implicit-bool-conversion-c99.c

[clang-tidy][NFC] Use 'or-earlier' suffix in tests (#213835)
DeltaFile
+2-2clang-tools-extra/test/clang-tidy/checkers/readability/use-concise-preprocessor-directives.cpp
+1-1clang-tools-extra/test/clang-tidy/checkers/readability/non-const-parameter.c
+1-1clang-tools-extra/test/clang-tidy/checkers/readability/implicit-bool-conversion-c99.c
+1-1clang-tools-extra/test/clang-tidy/checkers/bugprone/signal-handler.c
+1-1clang-tools-extra/test/clang-tidy/checkers/bugprone/easily-swappable-parameters.c
+1-1clang-tools-extra/test/clang-tidy/checkers/bugprone/easily-swappable-parameters-relatedness.c
+7-76 files

LLVM/project 953318dllvm/lib/Target/SPIRV SPIRVUtils.cpp, llvm/test/CodeGen/SPIRV/linkage groupshared-no-import-linkage.ll

 [SPIRV][HLSL] Fix Vulkan-invalid SPIR-V for Interlocked* on groupshared/UAV memory  (#212663)

Compiling HLSL `InterlockedOr`/`InterlockedAdd`/`InterlockedXor` against
`groupshared` (or UAV) destinations through the clang HLSL -> SPIR-V
path produced SPIR-V that `spirv-val` rejects for Vulkan.

Illegal OpCapability Linkage: groupshared variables are emitted
as `external hidden addrspace(3)` (Workgroup)
declarations. `getSpirvLinkageTypeFor` gave any non-interface
declaration `Import` linkage, which adds a
`LinkageAttributes` decoration and forces `OpCapability` Linkage, which
is illegal in a Vulkan shader.
Fix: in a shader environment (no linker), Workgroup/Private declarations
get no linkage.

Fixes: https://github.com/llvm/offload-test-suite/issues/1404
Assisted by: Github Copilot
DeltaFile
+25-0llvm/test/CodeGen/SPIRV/linkage/groupshared-no-import-linkage.ll
+6-1llvm/lib/Target/SPIRV/SPIRVUtils.cpp
+31-12 files

LLVM/project bb2ff1eflang/docs FlangDriver.md, flang/examples/HLFIRPipelinePlugin CMakeLists.txt HLFIRPipelinePlugin.cpp

[flang] Add an example plugin exercising the HLFIR pipeline extension points

The HLFIR extension points, the config augmentor registry and fir-opt's symbol
export exist to let an out-of-tree MLIR pass run while the HLFIR intrinsic
operations (hlfir.sum, hlfir.matmul, ...) are still present. None of that was
covered end to end, and there was no worked example of how to use it.

Add flang/examples/HLFIRPipelinePlugin, modelled on PrintFlangFunctionNames. It
contributes a pass that prints the HLFIR operations still present in the
module, tagged with the pipeline position it was inserted at, and exposes it
through both plugin entry points: a static initializer calling
fir::registerPassPipelineConfigCallback for the `flang -fc1 -load` path, and
mlirGetPassPluginInfo so fir-opt can load it with --load-pass-plugin.

Nothing is linked into the shared object: MLIR, FIR and flang symbols resolve
against the host tool, which is what export_executable_symbols_for_plugins on
flang and fir-opt provides. Removing the fir-opt export drops it from ~105k
exported dynamic symbols to one and makes --load-pass-plugin fail to load.


    [7 lines not shown]
DeltaFile
+115-0flang/examples/HLFIRPipelinePlugin/HLFIRPipelinePlugin.cpp
+53-0flang/test/Examples/hlfir-pipeline-plugin.f90
+36-0flang/test/Examples/fir-opt-pass-plugin.fir
+17-0flang/docs/FlangDriver.md
+15-0flang/examples/HLFIRPipelinePlugin/CMakeLists.txt
+1-0flang/test/CMakeLists.txt
+237-01 files not shown
+238-07 files

LLVM/project 9c51484flang/docs FlangDriver.md, flang/include/flang/Optimizer/Passes Pipelines.h

[flang] Add a pass-pipeline config-augmentor hook for -load'ed plugins

The HLFIR-to-FIR pass pipeline exposes extension points on
MLIRToLLVMPassPipelineConfig, but that config is built inside the frontend, so
a -load'ed plugin has no way to reach it and register passes.
registerDefaultInlinerPass is the only augmentor today, and it is wired in by
hand.

Add a global registry of config augmentors:

  * fir::registerPassPipelineConfigCallback(cb) appends a callback, to be
    called from a plugin's static initializer at -load time.
  * fir::invokePassPipelineConfigCallbacks(config) runs them on the config.

This mirrors what flang already does for -load'ed plugin actions via
FrontendPluginRegistry: a process-global, append-only registry populated from
static initializers, which run before any compilation begins.

Both code generation entry points invoke the callbacks after building their

    [11 lines not shown]
DeltaFile
+105-1flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+34-0flang/docs/FlangDriver.md
+17-0flang/lib/Optimizer/Passes/Pipelines.cpp
+11-0flang/include/flang/Optimizer/Passes/Pipelines.h
+6-0flang/lib/Frontend/FrontendActions.cpp
+173-15 files

LLVM/project cd569caflang/docs FlangDriver.md, flang/include/flang/Tools CrossToolHelpers.h

[flang] Add HLFIR-to-FIR pass pipeline extension points

The FIR optimizer extension points (FIROptEarly, FIRInliner, FIROptLast) all
run after HLFIR has been lowered to FIR, so the HLFIR intrinsic operations
(hlfir.sum, hlfir.matmul, ...) are gone by the time they run. Transformations
that need to see those operations have nowhere to attach.

Add two extension points to createHLFIRToFIRPassPipeline:

  * HLFIROptEarly, at the start of the pipeline, before any HLFIR
    simplification or inlining.
  * HLFIROptLast, just before createLowerHLFIRIntrinsics.

Drivers register passes through registerHLFIROptEarlyEPCallbacks and
registerHLFIROptLastEPCallbacks on MLIRToLLVMPassPipelineConfig. The invoke
methods are const so they can be called on the const config the HLFIR pipeline
receives. With no callbacks registered the pipeline is unchanged.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+130-0flang/unittests/Optimizer/HLFIRExtensionPointsTest.cpp
+32-0flang/include/flang/Tools/CrossToolHelpers.h
+21-0flang/docs/FlangDriver.md
+6-0flang/lib/Optimizer/Passes/Pipelines.cpp
+2-0flang/unittests/Optimizer/CMakeLists.txt
+191-05 files

LLVM/project d46f1e1mlir/include/mlir/Dialect/GPU/IR GPUDialect.h, mlir/lib/Conversion/GPUToSPIRV WmmaOpsToSPIRV.cpp

[mlir][gpu][spirv] Convert memref<mma_matrix> to spv.array<coopmatrix> (#212806)

In a gpu.func, allow allocating local arrays of gpu.mma_matrix, e.g.
`memref.alloca() : memref<Nx!gpu.mma_matrix<HxW, ...>`. Extend the SPIRV
conversion to convert such memrefs to `%ARR = spirv.Variable:
spv.ptr<spv.array<N x coopmatrix>, Function>`, which can be conveniently
indexed with `spirv.AccessChain %ARR[i]`. This enables arrays of CoopMMA
matrices both at the `gpu` and `spirv` levels.

Signed-off-by: Fabrizio Indirli <fabrizio.indirli at arm.com>
DeltaFile
+53-0mlir/test/Conversion/GPUToSPIRV/wmma-ops-to-spirv-khr-coop-matrix.mlir
+38-13mlir/lib/Conversion/GPUToSPIRV/WmmaOpsToSPIRV.cpp
+28-8mlir/lib/Conversion/MemRefToSPIRV/MemRefToSPIRV.cpp
+19-0mlir/test/Conversion/MemRefToSPIRV/alloca.mlir
+6-3mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
+5-1mlir/include/mlir/Dialect/GPU/IR/GPUDialect.h
+149-256 files

LLVM/project c08ed4cclang/docs ReleaseNotes.md, clang/lib/Frontend InitPreprocessor.cpp

[Clang] Define `__SIG_ATOMIC_TYPE__` macro (#213934)

Define `__SIG_ATOMIC_TYPE__` for compatibility with GCC.

This fixes `riscv32-netbsd` and `riscv64-netbsd` system headers that
define `sig_atomic_t` using this macro.

Reference:
https://gcc.gnu.org/onlinedocs/gcc-16.1.0/cpp/Common-Predefined-Macros.html

Follow up of #199678, Closes #213895
DeltaFile
+2-0clang/test/Preprocessor/init.c
+1-0clang/test/Preprocessor/init-riscv.c
+1-0clang/test/Preprocessor/init-aarch64.c
+1-0clang/lib/Frontend/InitPreprocessor.cpp
+1-0clang/docs/ReleaseNotes.md
+6-05 files

LLVM/project 172bf46llvm/test/CodeGen/AMDGPU bf16.ll flat-atomicrmw-fmin.ll

fix pattern for xqci to show diff

Created using spr 1.3.8-beta.1-arichardson
DeltaFile
+9,385-9,006llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,575-5,393llvm/test/CodeGen/AMDGPU/maximumnum.ll
+5,454-5,259llvm/test/CodeGen/AMDGPU/minimumnum.ll
+4,720-5,590llvm/test/CodeGen/AMDGPU/flat-atomicrmw-fmin.ll
+4,720-5,590llvm/test/CodeGen/AMDGPU/flat-atomicrmw-fmax.ll
+4,729-4,972llvm/test/CodeGen/AMDGPU/bf16.ll
+34,583-35,81010,576 files not shown
+508,526-368,46910,582 files

LLVM/project 2edd967lld/test/ELF/lto riscv-target-abi.ll

[ELF][RISC-V] Add baseline test for ignored ABI behaviour

No change intended here, just adding this test coverage to show that
https://github.com/llvm/llvm-project/pull/213410 does not change it.

Pull Request: https://github.com/llvm/llvm-project/pull/214079
DeltaFile
+36-0lld/test/ELF/lto/riscv-target-abi.ll
+36-01 files

LLVM/project 5e158f2clang/include/clang/Basic AttrDocs.td, clang/lib/CodeGen CGBuiltin.cpp

[Clang][AMDGPU] Add ``amdgpu_av("none")`` attribute for atomic expressions (#199622)

Add a statement attribute that suppresses MakeAvailable/MakeVisible
cache operations on AMDGPU atomic instructions while preserving memory
ordering (waits). The attribute takes a string argument specifying the
mode. Currently "none" is the only supported mode. The resulting atomic
or fence instruction carries !mmra !{!"amdgcn-av", !"none"} metadata.

This only works with builtins that get lowered to intrinsics or
instructions. The attribute does not survive inlining. For example, a
C++ std atomic is typically a wrapper around a Clang builtin, and
applying this attribute on the std atomic does not remove the
MakeAvailableMakeVisible semantics built into it.

Part of a stack:

- #199486
- #199621
- #199489 

    [5 lines not shown]
DeltaFile
+130-0clang/test/CodeGen/AMDGPU/amdgcn-av-none-attr.cpp
+72-0clang/test/CodeGen/AMDGPU/amdgcn-av-none-attr-c-atomic.c
+32-34clang/lib/CodeGen/CGBuiltin.cpp
+60-0clang/lib/Sema/SemaStmtAttr.cpp
+43-0clang/test/CodeGen/AMDGPU/amdgcn-av-non-atomic.cpp
+26-0clang/include/clang/Basic/AttrDocs.td
+363-349 files not shown
+447-3515 files

LLVM/project b6676fcclang-tools-extra/clang-tidy/bugprone UnhandledCodePathsCheck.cpp, clang-tools-extra/clang-tidy/readability FunctionCognitiveComplexityCheck.cpp

[clang-tidy][NFC] Apply modernize-use-structured-binding check (#214022)
DeltaFile
+2-6clang-tools-extra/clang-tidy/readability/FunctionCognitiveComplexityCheck.cpp
+1-4clang-tools-extra/clang-tidy/utils/RenamerClangTidyCheck.cpp
+1-3clang-tools-extra/clang-tidy/bugprone/UnhandledCodePathsCheck.cpp
+4-133 files

LLVM/project 2e53c04clang-tools-extra/clang-tidy/modernize UseRangesCheck.cpp

[clang-tidy][NFC] Apply readability-redundant-qualified-alias check (#214026)
DeltaFile
+1-1clang-tools-extra/clang-tidy/modernize/UseRangesCheck.cpp
+1-11 files

LLVM/project 4424690clang/lib/CIR/CodeGen CIRGenExprComplex.cpp, clang/test/CIR/CodeGen complex-plus-minus.cpp

[CIR] Fix imag value in Scalar and Complex substraction (#214019)

Fix imaginary value in Scalar and Complex subtraction

Issue #213998
DeltaFile
+72-0clang/test/CIR/CodeGen/complex-plus-minus.cpp
+7-1clang/lib/CIR/CodeGen/CIRGenExprComplex.cpp
+79-12 files