LLVM/project f951c8b — llvm/test/tools/llvm-mca/AArch64/Neoverse V3AE-basic-instructions.s V3-basic-instructions.s

[AArch64][Neoverse] Updating integer divisions latency/throughput (#224592)

Measured average latencies/throughput on spec intrate train data set and the result is:

Form    Divides         Mean    Median  p90     p99     Max     At minimum
W-form  955,659,771     6.12    6       7       11      12      39.5%
X-form  177,481,992     5.38    5       7       8       20      83.4%

Benchmark       W mean  X mean  Share of all divides
541.leela_r     5.90    7.81    60.1%
531.deepsjeng_r 6.09    9.42    16.8%
505.mcf_r       5.93    5.31    11.7%
502.gcc_r       7.83    5.25    7.8%
523.xalancbmk_r 9.43    5.39    3.3%
500.perlbench_r 5.26    5.37    0.2%
520.omnetpp_r   9.67    5.68    0.1%

Choose p90 as compromise regarding worst-case previous setting.
DeltaFile
+9-9llvm/test/tools/llvm-mca/AArch64/Neoverse/V3AE-basic-instructions.s
+9-9llvm/test/tools/llvm-mca/AArch64/Neoverse/V3-basic-instructions.s
+9-9llvm/test/tools/llvm-mca/AArch64/Neoverse/V2-basic-instructions.s
+9-9llvm/test/tools/llvm-mca/AArch64/Neoverse/V1-basic-instructions.s
+9-9llvm/test/tools/llvm-mca/AArch64/Neoverse/N3-basic-instructions.s
+9-9llvm/test/tools/llvm-mca/AArch64/Neoverse/N2-basic-instructions.s
+54-548 files not shown
+91-10714 files

LLVM/project 3d32432 — llvm/lib/Target/AArch64 AArch64.td AArch64SVEInstrInfo.td

fixup! Make predicate more condensed

Remove the sve_perm256 predicate and replace the only other predicate
using it with a more condensed one and make it capture the entire
condition.
DeltaFile
+2-4llvm/lib/Target/AArch64/AArch64InstrInfo.td
+2-2llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+1-1llvm/lib/Target/AArch64/AArch64.td
+5-73 files

LLVM/project 6248bfb — mlir/lib/Conversion/VectorToSPIRV VectorToSPIRV.cpp, mlir/test/Conversion/VectorToSPIRV vector-to-spirv.mlir

[mlir][SPIR-V] Derive Aligned memory operand for PhysicalStorageBuffer in vector.load/store (#214200)

Mirror calculateMemoryRequirements from MemRefToSPIRV.cpp, since
PhysicalStorageBuffer pointers carry no implicit alignment guarantee
DeltaFile
+61-37mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp
+30-0mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir
+91-372 files

LLVM/project cc081b8 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp AArch64AsmPrinter.cpp, llvm/test/CodeGen/AArch64 rcpc3.ll

[AArch64] Support FP atomic stores with memory hints

This patch extends the atomic-store-hint pseudos to accept preserved
floating-point atomic stores. It adds an FPR16 pseudo family and direct
half, bfloat, float, and double patterns for the supported addressing
modes.

The pseudos expand relaxed stores to STR and RCPC3 release and
sequentially consistent stores to STLUR, retaining memory hints without
cross-register-bank copies.
DeltaFile
+145-0llvm/test/CodeGen/AArch64/rcpc3.ll
+59-0llvm/lib/Target/AArch64/AArch64InstrAtomics.td
+33-1llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+8-24llvm/test/CodeGen/AArch64/Atomics/aarch64-relaxed-store-hint.ll
+2-6llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-store-hint.ll
+0-5llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+247-361 files not shown
+251-367 files

LLVM/project 1e7631b — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp AArch64InstrAtomics.td, llvm/test/CodeGen/AArch64 rcpc3.ll atomic-fp-cast.ll

[AArch64] Support direct RCPC3 FP atomic loads and stores

Preserve half, bfloat, float, and double atomic loads and stores
through AtomicExpand for acquire and release orderings, and preserve
sequentially consistent stores, when RCPC3 and NEON are available.

Add SelectionDAG patterns for the RCPC3 LDAPUR and STLUR operations,
including unscaled offsets, and update the existing FP lane patterns to
match the preserved floating-point atomic nodes. Targets without the
required features continue to use integer lowering.
DeltaFile
+182-0llvm/test/CodeGen/AArch64/atomic-fp-store.ll
+118-0llvm/test/CodeGen/AArch64/atomic-fp-load.ll
+65-8llvm/lib/Target/AArch64/AArch64InstrAtomics.td
+47-5llvm/test/CodeGen/AArch64/atomic-fp-cast.ll
+20-12llvm/test/CodeGen/AArch64/rcpc3.ll
+9-0llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+441-256 files

LLVM/project 3afa38c — clang/lib/AST/ByteCode Interp.h Pointer.cpp, clang/test/AST/ByteCode invalid.cpp

[clang][bytecode] Reject invalid opaque pointer base conversions (#231366)

We can't reject them as they happen because that needs to work for other
tests. So reject them when computing the layout offset.
DeltaFile
+8-6clang/lib/AST/ByteCode/Pointer.cpp
+9-0clang/test/AST/ByteCode/invalid.cpp
+1-1clang/lib/AST/ByteCode/Interp.h
+18-73 files

LLVM/project 0535c11 — llvm/lib/Target/AMDGPU AMDGPUSwLowerLDS.cpp, llvm/test/CodeGen/AMDGPU amdgpu-sw-lower-lds-flat-arg-kernel-id.ll

update
DeltaFile
+4-2llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+3-1llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-flat-arg-kernel-id.ll
+7-32 files

LLVM/project 1172448 — llvm/lib/Target/AMDGPU AMDGPUSwLowerLDS.cpp

update
DeltaFile
+2-2llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+2-21 files

LLVM/project 38ce5fa — llvm/lib/Target/AMDGPU AMDGPUSwLowerLDS.cpp, llvm/test/CodeGen/AMDGPU amdgpu-sw-lower-lds-flat-arg-kernel-id.ll

[AMDGPU][SwLowerLDS] Lower non-kernels with LDS instructions and assign kernel IDs to their callers
DeltaFile
+122-84llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+152-0llvm/test/CodeGen/AMDGPU/amdgpu-sw-lower-lds-flat-arg-kernel-id.ll
+274-842 files

LLVM/project afe497d — lldb/test/API/functionalities/process_save_core_minidump TestProcessSaveCoreMinidump.py

[lldb][test] Fix cleanup in test_save_linux_minidump_one_region (#231809)

On Windows you cannot unlink a file that is open
in something else. So we must delete lldb's target before trying to
unlink the minidump file.

Another follow up to #231448. Same thing I did to the other tests but I
missed this one.
DeltaFile
+6-1lldb/test/API/functionalities/process_save_core_minidump/TestProcessSaveCoreMinidump.py
+6-11 files

LLVM/project 7cdf221 — llvm/lib/Target/AMDGPU AMDGPUSwLowerLDS.cpp

update
DeltaFile
+1-1llvm/lib/Target/AMDGPU/AMDGPUSwLowerLDS.cpp
+1-11 files

LLVM/project a244d77 — llvm/lib/Transforms/Scalar ScalarOptions.td LoopFuse.cpp, llvm/test/Transforms/LoopFusion triple_loop_nest_inner_guard.ll sunk-phi-nodes.ll

[LoopFusion] Initial Cost Model (#224626)

Adds an initial memory-reuse profitability filter to LoopFusion as part of the effort towards #189117. The full design, evaluation, and proposed follow-up heuristics are discussed in the [RFC](https://discourse.llvm.org/t/loopfusion-initiating-a-cost-model-for-loopfusion/91859).

Fusion requires at least one cross-loop reuse at corresponding iterations, identified through either:
* a same-iteration RAW flow dependence from DependenceAnalysis
* an exact affine RAR match using the load type and SCEV start and step.

Multiple consumers of the same producer count as one reuse. The
threshold is configurable with -loop-fusion-min-reused-values; setting it to zero restores the previous unrestricted behaviour

This is intentionally a low-cost first filter rather than a complete cost model. Future work may consider vectorization compatibility, register pressure, and the strength of locality benefits.

Creation of this patch was partly assisted by AI tools.
DeltaFile
+245-0llvm/test/Transforms/LoopFusion/cost_model_rar.ll
+180-0llvm/test/Transforms/LoopFusion/cost_model_reuse.ll
+151-24llvm/lib/Transforms/Scalar/LoopFuse.cpp
+4-0llvm/lib/Transforms/Scalar/ScalarOptions.td
+1-1llvm/test/Transforms/LoopFusion/triple_loop_nest_inner_guard.ll
+1-1llvm/test/Transforms/LoopFusion/sunk-phi-nodes.ll
+582-2617 files not shown
+599-4323 files

LLVM/project cee6926 — llvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lasx/ir-instruction shuffle-broadcast.ll

[LoongArch] Legalize broadcasting the first element of 256-bit vector using `xvreplve0` (#169271)
DeltaFile
+19-0llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+6-10llvm/test/CodeGen/LoongArch/lasx/ir-instruction/shuffle-broadcast.ll
+25-102 files

LLVM/project 4263b7b — llvm/lib/Target/LoongArch LoongArchTargetTransformInfo.h LoongArchTargetTransformInfo.cpp, llvm/test/Analysis/CostModel/LoongArch arith-fp.ll arith-int.ll

Revert "[LoongArch] Add arithmetic instruction costs" (#231795)

Reverts llvm/llvm-project#231094. Failing on several of our buildbots
e.g. https://lab.llvm.org/buildbot/#/builders/65/builds/41776.

Failed Tests (2):
  LLVM :: Analysis/CostModel/LoongArch/arith-fp.ll
  LLVM :: Analysis/CostModel/LoongArch/arith-int.ll
DeltaFile
+0-1,161llvm/test/Analysis/CostModel/LoongArch/arith-int.ll
+0-329llvm/lib/Target/LoongArch/LoongArchTargetTransformInfo.cpp
+0-135llvm/test/Analysis/CostModel/LoongArch/arith-fp.ll
+0-7llvm/lib/Target/LoongArch/LoongArchTargetTransformInfo.h
+0-1,6324 files

LLVM/project 34aba97 — clang/lib/CIR/CodeGen CIRGenBuiltinAMDGPU.cpp, clang/lib/CIR/Lowering/DirectToLLVM LowerToLLVM.cpp

[CIR][AMDGPU][SPIR-V] Complete __builtin_amdgcn_fence lowering implementation (#230829)

Emit MMRA (memory model relaxation annotations) for address space
arguments, reject unsupported scopes, translate AMDGPU scope names to
SPIR-V ones on SPIR-V targets, matching classic codegen
DeltaFile
+64-7clang/lib/CIR/CodeGen/CIRGenBuiltinAMDGPU.cpp
+63-0clang/test/CIR/CodeGenHIP/builtins-amdgcn-fence.hip
+33-26clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+160-333 files

LLVM/project 2ad9099 — utils/bazel/llvm-project-overlay/llvm BUILD.bazel

Remove unused ArmTargetTdFiles from bazel
DeltaFile
+0-7utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+0-71 files

LLVM/project 2d6beb4 — mlir/lib/Conversion/SPIRVToLLVM SPIRVToLLVM.cpp, mlir/test/Conversion/SPIRVToLLVM arithmetic-ops-to-llvm.mlir

[mlir][SPIR-V] Add SPIRVToLLVM conversions for SMulExtended and UMulExtended (#228052)
DeltaFile
+72-0mlir/test/Conversion/SPIRVToLLVM/arithmetic-ops-to-llvm.mlir
+47-0mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+119-02 files

LLVM/project add0149 — lldb/test/API/functionalities/step-avoids-no-debug TestStepNoDebug.py

[lldb][test] Narrow TestStepNoDebug.py XFAIL to dwarf and dwo (#231818)

Follow up to #230116.

These tests were xfailed due to
https://github.com/llvm/llvm-project/issues/56292, which still applies.
They pass with PDB.

Also remove the debug info types from the docstrings, they must be from
a time before we automatically ran tests with different debug info
formats.
DeltaFile
+9-6lldb/test/API/functionalities/step-avoids-no-debug/TestStepNoDebug.py
+9-61 files

LLVM/project 8ec9440 — llvm/lib/CodeGen TargetInstrInfo.cpp, llvm/lib/Target/LoongArch LoongArchFrameLowering.cpp

Address arsenm's comments
DeltaFile
+302-0llvm/test/CodeGen/RISCV/postra-sched-sanitize.mir
+79-11llvm/test/CodeGen/RISCV/postra-sched-sanitize.ll
+79-11llvm/test/CodeGen/LoongArch/postra-sched-sanitize.ll
+13-10llvm/lib/CodeGen/TargetInstrInfo.cpp
+22-1llvm/lib/Target/LoongArch/LoongArchFrameLowering.cpp
+8-8llvm/test/CodeGen/LoongArch/stack-probing-frame-setup.mir
+503-413 files not shown
+513-449 files

LLVM/project 5bdf185 — mlir/include/mlir/Remark RemarkStreamer.h, mlir/lib/Remark CMakeLists.txt RemarkStreamer.cpp

[MLIR][Remark] Report why the LLVM remark streamer could not be created

LLVMRemarkStreamer::createToFile dropped the reason it failed: a file that
could not be opened and a serializer that could not be created both turned
into a bare failure, and enableOptimizationRemarksWithLLVMStreamer failed
without a diagnostic.

- createToFile returns llvm::Expected. It opens the file with
  mlir::openOutputFile and returns its message; a serializer error is
  returned as a FileError naming the file.
- enableOptimizationRemarksWithLLVMStreamer emits the error on the context.

Assisted-by: Claude Code (Claude Opus 5.5)
DeltaFile
+30-0mlir/unittests/IR/RemarkTest.cpp
+12-15mlir/lib/Remark/RemarkStreamer.cpp
+5-2mlir/include/mlir/Remark/RemarkStreamer.h
+5-0mlir/test/Pass/remark-output-error.mlir
+1-0utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+1-0mlir/lib/Remark/CMakeLists.txt
+54-176 files

LLVM/project 1b981a1 — llvm/lib/Target/AArch64 AArch64InstrFormats.td SVEInstrFormats.td, llvm/test/MC/AArch64/FPv2 minmax.s

[AArch64][llvm] Add support for FEAT_FPv2

Add support for FEAT_FPv2 (IEEE 754-2019 floating-point standard alignment)
instructions.
DeltaFile
+514-0llvm/test/MC/AArch64/SVE2p3/minmax.s
+247-0llvm/test/MC/AArch64/FPv2/minmax.s
+100-0llvm/lib/Target/AArch64/SVEInstrFormats.td
+64-0llvm/test/MC/AArch64/SVE2p3/fcmtl-diagnostics.s
+64-0llvm/test/MC/AArch64/SVE2p3/minmax-diagnostics.s
+46-8llvm/lib/Target/AArch64/AArch64InstrFormats.td
+1,035-844 files not shown
+1,351-3450 files

LLVM/project d2c7d18 — llvm/lib/Target/AArch64 SMEInstrFormats.td, llvm/test/MC/AArch64/SME2 fmopab-fmopat.s fmopab-fmopat-diagnostics.s

[AArch64][llvm] Add support for FEAT_SME_F16F8F16

Add support for FEAT_SME_F16F8F16 (SME half-precision and FP8 sum-of-products
accumulating to half-precision instructions).
DeltaFile
+166-0llvm/test/MC/AArch64/SME2/fp_dot-diagnostics.s
+62-0llvm/test/MC/AArch64/SME2/fp_dot.s
+57-0llvm/lib/Target/AArch64/SMEInstrFormats.td
+49-0llvm/test/MC/AArch64/SME2/fmopab-fmopat-diagnostics.s
+38-0llvm/test/MC/AArch64/SME2/fmopab-fmopat.s
+22-3llvm/unittests/TargetParser/TargetParserTest.cpp
+394-39 files not shown
+447-315 files

LLVM/project 50eb53f — llvm/lib/Transforms/Vectorize VPlanUtils.cpp, llvm/test/Transforms/LoopVectorize pointer-induction.ll expand-scev-cse.ll

[VPlan] Defer ptrtoaddr of IR values to SCEVExpander. (#231670)

For ptrtoaddr with live-in operands, expand them via SCEVExpander, so
they the IR-based expander can place them so re-use across other
IR-based expansions is maximized.

This improves re-use end-to-end.
DeltaFile
+6-11llvm/test/Transforms/LoopVectorize/expand-scev-cse.ll
+8-8llvm/test/Transforms/LoopVectorize/pointer-induction.ll
+5-2llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+3-3llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing-alias-mask.ll
+3-3llvm/test/Transforms/LoopVectorize/VPlan/expand-scev.ll
+3-3llvm/test/Transforms/LoopVectorize/VPlan/AArch64/vplan-printing-alias-mask.ll
+28-3013 files not shown
+48-4819 files

LLVM/project 334027f — libcxx/include memory, libcxx/include/__vector vector.h

[libc++] Avoid passing both sentinel and size around in vector (#214132)

Currently we are passing both the end iterator and the size of a range
around because we sometimes use one or the other. This makes the uses
consistently only rely on the size, which allows simplifying a bunch of
code.
DeltaFile
+6-7libcxx/include/__vector/vector.h
+1-1libcxx/include/memory
+7-82 files

LLVM/project 80d2b0a — llvm/lib/Target/AArch64 AArch64Features.td AArch64InstrInfo.td, llvm/test/MC/AArch64/SVE matrix-multiply-fp64.s permute.s

[AArch64][llvm] Armv9.8-A: Add support for FEAT_SVE_PERM256

Add support for FEAT_SVE_PERM256 (SVE 128-bit element permute
instructions), which enables already existing instructions,
independently of FEAT_F64MM
DeltaFile
+66-0llvm/test/MC/AArch64/SVE/permute.s
+0-48llvm/test/MC/AArch64/SVE/matrix-multiply-fp64.s
+5-2llvm/lib/Target/AArch64/AArch64Features.td
+7-0llvm/lib/Target/AArch64/AArch64InstrInfo.td
+6-0llvm/test/MC/AArch64/SVE2/directive-arch_extension-negative.s
+4-1llvm/unittests/TargetParser/TargetParserTest.cpp
+88-518 files not shown
+110-5314 files

LLVM/project 4149fd7 — clang/test/CodeGen memtag-globals-asm.cpp, llvm/test/CodeGen/AArch64 popcount.ll cpa-globalisel.ll

[AArch64][GlobalISel] Do not run the Localizer at -O0 (attempt 2) (#231406)

This was disabled earlier this year (#177359) before being shortly reverted due
to two test failures which have since been fixed.  The flaky LLDB issue was
fixed in #210050 and the libcxxabi test in #230518.

CTMark aarch64-O0-g geomean improves -0.97%. Code size regresses 2.70% but as
previously we think this is worth paying at O0 where compile-time and debug are
the biggest concern.

https://llvm-compile-time-tracker.com/compare.php?from=fc90bd3cfb0bab14a2bf7cbd33f5f1e904c7e133&to=071f3542ccb3b3c65032397550e862d7090f425f&stat=instructions:u

Assisted-by: codex

Co-authored-by: David Green (davemgreen)
DeltaFile
+87-79llvm/test/CodeGen/AArch64/cpa-globalisel.ll
+36-62llvm/test/CodeGen/AArch64/GlobalISel/localizer-arm64-tti.ll
+35-24llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll
+20-18llvm/test/CodeGen/AArch64/popcount.ll
+18-19llvm/test/CodeGen/AArch64/GlobalISel/localizer-propagate-debug-loc.mir
+13-12clang/test/CodeGen/memtag-globals-asm.cpp
+209-21422 files not shown
+290-29428 files

LLVM/project 693e531 — llvm/include/llvm/Analysis ValueTracking.h, llvm/lib/Analysis ValueTracking.cpp

[ValueTracking] Remove matchMinMaxOfMinMax() (#231539)

matchMinMaxOfMinMax() was effectively dead code: It did recursive
matches for SPF min/max, but in practice the SPF pattern would have been
canonicalized to intrinsics by that point already.

After the canonicalization to intrinsics, this pattern is already
handled by a different InstCombine fold, which handles selects of
min/max with common operands.

Move the codegen test for this functionality to InstCombine, to show
that all variants of the pattern are indeed replaced by intrinsics. The
codegen test was testing non-canonical IR that would never occur in
practice, after the middle-end pipeline has run.
DeltaFile
+0-2,441llvm/test/CodeGen/AArch64/minmax-of-minmax.ll
+2,313-0llvm/test/Transforms/InstCombine/minmax-of-minmax-2.ll
+19-125llvm/lib/Analysis/ValueTracking.cpp
+4-5llvm/include/llvm/Analysis/ValueTracking.h
+2,336-2,5714 files

LLVM/project d95281d — llvm/include/llvm/Transforms/IPO Attributor.h, llvm/lib/Transforms/IPO Attributor.cpp

Attributor: Rewrite function signatures in a deterministic order

ArgumentReplacementMap was a DenseMap keyed by Function pointer, so
the order of the signature rewrites depended on pointer values, which
showed up as different value names in the output.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+2-2llvm/lib/Transforms/IPO/Attributor.cpp
+3-1llvm/include/llvm/Transforms/IPO/Attributor.h
+5-32 files

LLVM/project cd5a26a — llvm/unittests/TargetParser TargetParserTest.cpp

fixup! Format touched lines in d7e23bf95f9d
DeltaFile
+4-16llvm/unittests/TargetParser/TargetParserTest.cpp
+4-161 files

LLVM/project 41b91ff — llvm/include/llvm/Analysis ValueTracking.h, llvm/lib/Analysis ValueTracking.cpp

Attributor: Deduce noundef returns if poison-generating attributes hold

Instead of giving up on noundef for returns with poison-generating
attributes, check that the attributes hold for all returned values, like
FunctionAttrs already does.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+143-15llvm/test/Transforms/Attributor/noundef-return-poison-attrs.ll
+21-4llvm/lib/Transforms/IPO/AttributorAttributes.cpp
+2-20llvm/lib/Transforms/IPO/FunctionAttrs.cpp
+21-0llvm/lib/Analysis/ValueTracking.cpp
+6-0llvm/include/llvm/Analysis/ValueTracking.h
+1-1llvm/test/Transforms/Attributor/align.ll
+194-406 files