LLVM/project b3071f2clang/lib/CIR/CodeGen CIRGenBuiltinAMDGPU.cpp, clang/test/CIR/CodeGenHIP builtins-amdgcn-vi-f16.hip builtins-amdgcn.hip

[CIR][AMDGPU] Add support for AMDGCN class builtins (#213496)

Adds codegen for the following AMDGCN class builtins:

- __builtin_amdgcn_class (double)
- __builtin_amdgcn_classf (float)
- __builtin_amdgcn_classh (half)

These are lowered to the corresponding `llvm.amdgcn.class` intrinsics.
DeltaFile
+16-0clang/test/CIR/CodeGenHIP/builtins-amdgcn.hip
+4-6clang/lib/CIR/CodeGen/CIRGenBuiltinAMDGPU.cpp
+8-0clang/test/CIR/CodeGenHIP/builtins-amdgcn-vi-f16.hip
+28-63 files

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

[VPlan] Remove (X && Y) | (X && !Y) -> X combine. NFC

We have smaller combines that can take care of this now that we process recipes in a worklist
DeltaFile
+1-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-81 files

LLVM/project 4376cfaclang/docs CMakeLists.txt, clang/include/clang/Options ClangOptionDocs.td Options.td

Revert "[clang][docs] Generate command line reference as Markdown (#220385)"

This reverts commit 2cbdbc9ad7ff40457023c8f353161069df8eb57f.
DeltaFile
+26-39clang/utils/TableGen/ClangOptionDocEmitter.cpp
+32-33clang/include/clang/Options/Options.td
+13-12clang/include/clang/Options/ClangOptionDocs.td
+6-6clang/docs/CMakeLists.txt
+77-904 files

NetBSD/src q6TJehjsys/arch/ofppc/conf 43P150

   a kernel config for the IBM 43P/150
VersionDeltaFile
1.1+349-0sys/arch/ofppc/conf/43P150
+349-01 files

LLVM/project 010c395llvm/lib/Transforms/Vectorize LoopVectorizationPlanner.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

[VPlan] Append recipes created via builder to worklist

The previous PR appended the top most created recipe to the worklist, and this PR extends it to any other nested recipes that were created, similar to InstCombine.

This removes the header mask in a good few more places on RISC-V as measured on SPEC CPU 2017, e.g. for the following loop:

```c
long f(const int *p, const int *q, long n) {
  long a = 0, b = 0;
  for (long i = 0;; i++) {
    if (p[i] && q[i]) { a += i; b += i; }
    if (i + 1 == n) break;
  }
  return a + b;
}
```

Before:


    [49 lines not shown]
DeltaFile
+26-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+11-4llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+5-7llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+42-193 files

LLVM/project 29d3af7llvm/docs LangRef.md, llvm/lib/CodeGen MachineBlockPlacement.cpp

IR: Add verifier checks and LangRef for llvm.loop.align

Verify the nested !{!"llvm.loop.align", i32 N} tag.
Require exactly two operands, an integer constant of type i32 or smaller,
and a positive power-of-two value

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+121-0llvm/test/Verifier/llvm.loop.align.ll
+28-0llvm/test/Assembler/llvm.loop.align.ll
+27-0llvm/lib/IR/Verifier.cpp
+15-0llvm/docs/LangRef.md
+0-3llvm/lib/CodeGen/MachineBlockPlacement.cpp
+191-35 files

LLVM/project 2224e14llvm/lib/Target/AMDGPU GCNSchedStrategy.cpp, llvm/test/CodeGen/AMDGPU sched_mfma_rewrite_diff_types.mir gfx-callable-argument-types.ll

[AMDGPU][CodeGen] Allow remat with multiple users in multiple regions

This relaxes one of the constraints on rematerialization candidates in
the scheduler's `PreRARematStage`. The current implementation only allows
rematerializing a register if it has users in a single region. This
allows it when a register has multiple users in multiple regions.

In such cases the register is rematerialized as many times as there are
using regions, just before the first user in each using region. The cost
model for assessing rematerialization opportunities now takes into
account that mutliple new instructions may be created for each candidate.
DeltaFile
+664-537llvm/test/CodeGen/AMDGPU/sched_mfma_rewrite_copies.mir
+202-167llvm/test/CodeGen/AMDGPU/machine-scheduler-sink-trivial-remats.mir
+102-61llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
+36-25llvm/test/CodeGen/AMDGPU/sched_mfma_rewrite_cost.mir
+22-24llvm/test/CodeGen/AMDGPU/gfx-callable-argument-types.ll
+17-12llvm/test/CodeGen/AMDGPU/sched_mfma_rewrite_diff_types.mir
+1,043-8262 files not shown
+1,047-8328 files

LLVM/project b182b41llvm/include/llvm/CodeGen RegisterPressure.h, llvm/lib/CodeGen MachineScheduler.cpp RegisterPressure.cpp

[CodeGen] Correctly classify/mark dead defs when adjusting lane liveness (#215595)

Despite what the documentation of `adjustLaneLiveness` states, the
method never sets dead flags on dead def operands, even when missing
dead flags can later lead to machine verifier errors.

This makes the method identify dead definitions from definitions that
are initially thought to be alive, and makes it add a dead flag on the
last definition of a virtual register, matching the behavior expected by
the machine verifier (ref. "Instruction ending live segment on dead slot
has no dead flag").

`adjustLaneLiveness` and `detectDeadDefs` now also use the same
mechanism to identify dead definitions. It relies on comparing the
defined lanes of a definition with those that stay alive after it.
DeltaFile
+91-0llvm/unittests/CodeGen/RegisterPressureTest.cpp
+24-27llvm/lib/CodeGen/RegisterPressure.cpp
+13-8llvm/include/llvm/CodeGen/RegisterPressure.h
+2-2llvm/lib/CodeGen/MachineScheduler.cpp
+1-1llvm/lib/Target/AMDGPU/GCNSchedStrategy.cpp
+1-0llvm/unittests/CodeGen/CMakeLists.txt
+132-386 files

LLVM/project 7afb0e1llvm/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp AMDGPUAttributor.cpp, llvm/test/Bitcode amdgcn-addrspacecast-nonnull.ll

AMDGPU: Remove llvm.amdgcn.addrspacecast.nonnull

The intrinsic is fully replaced by the nonnull flag on addrspacecast,
so remove it.

Old bitcode/IR is autoupgraded, though this is very conservative. This
intrinsic was only inserted by the backend, and hopefully nobody was
directly emitting it.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+0-68llvm/test/CodeGen/AMDGPU/llvm.amdgcn.addrspacecast.nonnull.ll
+42-0llvm/test/Bitcode/amdgcn-addrspacecast-nonnull.ll
+5-36llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+1-26llvm/lib/Target/AMDGPU/AMDGPUAttributor.cpp
+12-12llvm/test/CodeGen/AMDGPU/attributor-flatscratchinit-undefined-behavior.ll
+5-13llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+65-15510 files not shown
+98-19416 files

LLVM/project 44065d1llvm/lib/Target/AMDGPU AMDGPUCodeGenPrepare.cpp, llvm/test/CodeGen/AMDGPU codegen-prepare-addrspacecast-non-null.ll

AMDGPU: Set the addrspacecast nonnull flag instead of the intrinsic

AMDGPUCodeGenPrepare proved the source of certain flat<->local/private
addrspacecasts non-null and rewrote them to
llvm.amdgcn.addrspacecast.nonnull. Now that the flag is honored in
codegen, set it in place on the existing instruction instead.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+15-10llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
+12-12llvm/test/CodeGen/AMDGPU/codegen-prepare-addrspacecast-non-null.ll
+27-222 files

LLVM/project 7bf85caclang/include/clang/Basic BuiltinsX86_64.td, clang/lib/AST ExprConstant.cpp

[X86] Remove x86 PDEP/PEXT clang intrinsics and rely on generic elementwise implementations (#204969)

The clang frontend already converted the x86 builtins to generics, this just moves to using the elementwise builtins directly.
DeltaFile
+26-25compiler-rt/lib/msan/tests/msan_test.cpp
+9-12clang/lib/AST/ByteCode/InterpBuiltin.cpp
+0-10clang/lib/CodeGen/TargetBuiltins/X86.cpp
+4-4clang/lib/Headers/bmi2intrin.h
+1-4clang/lib/AST/ExprConstant.cpp
+0-2clang/include/clang/Basic/BuiltinsX86_64.td
+40-571 files not shown
+40-597 files

LLVM/project 698dd11llvm/include/llvm/CodeGen SelectionDAGNodes.h, llvm/lib/CodeGen/SelectionDAG LegalizeVectorTypes.cpp SelectionDAG.cpp

AMDGPU: Use the addrspacecast nonnull flag in codegen (#220926)

Plumb the nonnull flag through to the backend so a flagged addrspacecast
lowers without the runtime null check, matching what
llvm.amdgcn.addrspacecast.nonnull already provides.

Add the NonNull MIFlag with MIR printer/parser support (including the
MIRPrinter path and update_mir_test_checks) so it round-trips on
G_ADDRSPACE_CAST, and preserve it through SelectionDAG vector
scalarization and splitting.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+299-0llvm/test/CodeGen/AMDGPU/addrspacecast-nonnull.ll
+23-0llvm/test/CodeGen/MIR/AMDGPU/addrspacecast-nonnull.mir
+8-6llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+9-5llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+7-6llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+9-4llvm/include/llvm/CodeGen/SelectionDAGNodes.h
+355-2111 files not shown
+386-2617 files

LLVM/project 87c39e6llvm/include/llvm/Analysis ConstantFolding.h, llvm/lib/Analysis InstructionSimplify.cpp ScalarEvolution.cpp

[ConstantFolding] Implement canConstantFoldCallTo() using TLI (#221903)

This did some odd matching on string names. Use TLI instead, matching
the actual constant folding logic.

I've adjusted callers to pass TLI to canConstantFoldCallTo() if they
also pass TLI to the later constant folding call.
DeltaFile
+99-81llvm/lib/Analysis/ConstantFolding.cpp
+19-13llvm/lib/Analysis/ScalarEvolution.cpp
+6-2llvm/lib/Transforms/Utils/SCCPSolver.cpp
+2-1llvm/include/llvm/Analysis/ConstantFolding.h
+1-1llvm/lib/Analysis/InstructionSimplify.cpp
+127-985 files

LLVM/project c66a8b4llvm/test/CodeGen/AArch64 arm64-abi_align.ll, llvm/test/CodeGen/Hexagon/vect vect-xor.ll vect-v4i16.ll

llvm: Remove phantom relocation-model attributes from tests

"relocation-model" was never a real function attribute.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+4-4llvm/test/CodeGen/AArch64/arm64-abi_align.ll
+2-2llvm/test/Transforms/SimplifyCFG/volatile-phioper.ll
+1-1llvm/test/Transforms/LoopVectorize/vectorize-once.ll
+1-1llvm/test/Transforms/LoopVectorize/dbg.value.ll
+1-1llvm/test/CodeGen/Hexagon/vect/vect-xor.ll
+1-1llvm/test/CodeGen/Hexagon/vect/vect-v4i16.ll
+10-102 files not shown
+12-128 files

LLVM/project ce58f58llvm/test/CodeGen/AArch64 arm64-abi_align.ll, llvm/test/CodeGen/Hexagon/vect vect-xor.ll vect-v4i16.ll

llvm: Remove phantom ssp-buffers-size attributes from tests

"ssp-buffers-size" was never a real function attribute. There is
"stack-protector-buffer-size". This may have existed in a downstream
fork, but it's also irrelevant for these tests.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+4-4llvm/test/CodeGen/AArch64/arm64-abi_align.ll
+2-2llvm/test/Transforms/SimplifyCFG/volatile-phioper.ll
+1-1llvm/test/Transforms/LoopVectorize/vectorize-once.ll
+1-1llvm/test/Transforms/LoopVectorize/dbg.value.ll
+1-1llvm/test/CodeGen/Hexagon/vect/vect-xor.ll
+1-1llvm/test/CodeGen/Hexagon/vect/vect-v4i16.ll
+10-102 files not shown
+12-128 files

NetBSD/src glE8nwSsys/arch/ofppc/ofppc machdep.c

   - use ofprint() for debug output so we have a chance to see it
   - do not BAT-map anything beyond 0xff000000 - my 43P gets quite grouchy if we do
   - copy EDID properties from OF like macppc does, for things like mach64 where
     X can program video modes but can't (relably) do DDC
VersionDeltaFile
1.122+19-6sys/arch/ofppc/ofppc/machdep.c
+19-61 files

LLVM/project 67cf7e1llvm/test/CodeGen/AArch64 arm64-abi_align.ll, llvm/test/CodeGen/Hexagon/vect vect-xor.ll vect-v4i16.ll

llvm: Remove phantom fp-contract-model attributes from tests

This attribute has never been consumed by upstream llvm,
or emitted by upstream clang. I can only guess this existed in
at least one downstream fork.
DeltaFile
+4-4llvm/test/CodeGen/AArch64/arm64-abi_align.ll
+2-2llvm/test/Transforms/SimplifyCFG/volatile-phioper.ll
+1-1llvm/test/Transforms/LoopVectorize/vectorize-once.ll
+1-1llvm/test/Transforms/LoopVectorize/dbg.value.ll
+1-1llvm/test/CodeGen/Hexagon/vect/vect-xor.ll
+1-1llvm/test/CodeGen/Hexagon/vect/vect-v4i16.ll
+10-102 files not shown
+12-128 files

OpenBSD/ports XgC8lyAmultimedia/pipewire/pipewire/files/sndio sndio.c sndio-source.c

   rm -rf
VersionDeltaFile
1.2+0-0multimedia/pipewire/pipewire/files/sndio/sndio.c
1.2+0-0multimedia/pipewire/pipewire/files/sndio/sndio-source.c
1.2+0-0multimedia/pipewire/pipewire/files/sndio/sndio-sink.c
1.2+0-0multimedia/pipewire/pipewire/files/sndio/sndio-pcm.h
1.2+0-0multimedia/pipewire/pipewire/files/sndio/plugin.c
1.2+0-0multimedia/pipewire/pipewire/files/sndio/meson.build
+0-06 files

LLVM/project fc884a4llvm/test/CodeGen/AMDGPU prevent-fmul-hoist-ir.ll fdot2.ll, llvm/test/CodeGen/AMDGPU/GlobalISel combine-fma-add-ext-fma.ll combine-fma-add-fma-mul.ll

AMDGPU: Rename stale CONTRACT check prefixes in fp-contract tests (#221709)

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+434-434llvm/test/CodeGen/AMDGPU/GlobalISel/combine-fma-add-fma-mul.ll
+23-23llvm/test/CodeGen/AMDGPU/fdot2.ll
+1-5llvm/test/CodeGen/AMDGPU/prevent-fmul-hoist-ir.ll
+1-3llvm/test/CodeGen/AMDGPU/GlobalISel/combine-fma-add-ext-fma.ll
+459-4654 files

LLVM/project c04eb83llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

[VPlan] Remove (X && Y) | (X && !Y) -> X combine. NFC

We have smaller combines that can take care of this now that we process recipes in a worklist
DeltaFile
+1-8llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-81 files

LLVM/project 30b0c42llvm/lib/Transforms/Vectorize LoopVectorizationPlanner.h VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

[VPlan] Append recipes created via builder to worklist

The previous PR appended the top most created recipe to the worklist, and this PR extends it to any other nested recipes that were created, similar to InstCombine.

This removes the header mask in a good few more places on RISC-V as measured on SPEC CPU 2017, e.g. for the following loop:

```c
long f(const int *p, const int *q, long n) {
  long a = 0, b = 0;
  for (long i = 0;; i++) {
    if (p[i] && q[i]) { a += i; b += i; }
    if (i + 1 == n) break;
  }
  return a + b;
}
```

Before:


    [49 lines not shown]
DeltaFile
+26-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+11-4llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+5-7llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+42-183 files

LLVM/project b90353cllvm/test/Transforms/LoopVectorize/RISCV tail-folding-complex-mask.ll

Precommit test
DeltaFile
+163-0llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-complex-mask.ll
+163-01 files

LLVM/project 2459a58llvm/lib/Transforms/Vectorize VPlanTransforms.cpp

No need to dyn_cast to singledef recipe anymore
DeltaFile
+1-3llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-31 files

FreeBSD/ports 3290ec7lang/io Makefile, lang/io-devel Makefile

lang/io{,-devel}: Return to pool and mark deprecated

PR:             298293
Approved by:    gahr (maintainer)

(cherry picked from commit 1da879c2914924c9b998694add15ca83a6498c9e)
DeltaFile
+5-2lang/io-devel/Makefile
+4-2lang/io/Makefile
+9-42 files

FreeBSD/ports 1da879clang/io Makefile, lang/io-devel Makefile

lang/io{,-devel}: Return to pool and mark deprecated

PR:             298293
Approved by:    gahr (maintainer)
DeltaFile
+5-2lang/io-devel/Makefile
+4-2lang/io/Makefile
+9-42 files

LLVM/project 478f9dallvm/lib/CodeGen/SelectionDAG LegalizeVectorOps.cpp, llvm/test/CodeGen/AArch64 fp-veclib-expansion.ll

[SelectionDAG] Widen vector math libcalls when no routine is available (#218948)

`tryExpandVecMathCall` currently only checks for a vector math routine
matching the node's exact vector type, unrolling when none is found.
This is suboptimal, and can lead to crashes for scalable types (which
cannot be unrolled).

This PR implements widening to first check if a routine with a wider vec
type exists before falling back to unrolling.

Example:
```
; llc -mtriple=aarch64 -mattr=+sve -vector-library=sleefgnuabi crash.ll
define <vscale x 2 x float> @frem_nxv2f32(<vscale x 2 x float> %a, <vscale x 2 x float> %b) {
  %res = frem <vscale x 2 x float> %a, %b
  ret <vscale x 2 x float> %res
}
```


    [2 lines not shown]
DeltaFile
+190-18llvm/test/CodeGen/AArch64/fp-veclib-expansion.ll
+56-32llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+246-502 files

OpenBSD/ports x3lwJ3mmultimedia/pipewire/pipewire Makefile

   Bump.
VersionDeltaFile
1.64+2-2multimedia/pipewire/pipewire/Makefile
+2-21 files

OpenBSD/ports 3YWXij7multimedia/pipewire/pipewire Makefile, multimedia/pipewire/pipewire/files 10-sndio.conf

   Revert, I have committed the gstreamer update from the wrong dir.
VersionDeltaFile
1.63+5-14multimedia/pipewire/pipewire/Makefile
1.3+1-12multimedia/pipewire/pipewire/patches/patch-spa_include_spa_utils_endian_h
1.18+0-4multimedia/pipewire/pipewire/pkg/PLIST-main
1.2+0-0multimedia/pipewire/pipewire/patches/patch-spa_include_spa_utils_keys_h
1.2+0-0multimedia/pipewire/pipewire/patches/patch-meson_options_txt
1.2+0-0multimedia/pipewire/pipewire/files/10-sndio.conf
+6-306 files not shown
+6-3012 files

LLVM/project 754662ellvm/lib/Transforms/Vectorize VPlanTransforms.cpp

Unindent loop
DeltaFile
+14-13llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+14-131 files

LLVM/project 3e9725fllvm/test/Transforms/LoopVectorize blend-i1.ll

Make then branch non-dead
DeltaFile
+10-6llvm/test/Transforms/LoopVectorize/blend-i1.ll
+10-61 files