LLVM/project e94aead — llvm/test/CodeGen/LoongArch expandmemcmp-optsize.ll expandmemcmp.ll

update tests
DeltaFile
+670-297llvm/test/CodeGen/LoongArch/expandmemcmp.ll
+612-155llvm/test/CodeGen/LoongArch/expandmemcmp-optsize.ll
+1,282-4522 files

LLVM/project 995bf18 — llvm/lib/Target/LoongArch LoongArchTargetTransformInfo.cpp LoongArchISelLowering.cpp

[LoongArch] Support memcmp expansion for vectors and combine for i128/i256 setcc

This commit enables memcmp expansion for lsx/lasx. After doing
this, i128 and i256 loads which are illegal types on LoongArch
will be generated. Without process, they will be splited to
legal scalar type.

So this commit also enable combination for `setcc` to bitcast
i128/i256 types to vector types before type legalization and
generate vector instructions.

Inspired by x86 and riscv.
DeltaFile
+119-13llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+8-3llvm/lib/Target/LoongArch/LoongArchTargetTransformInfo.cpp
+127-162 files

LLVM/project 2772f92 — clang/lib/CIR/CodeGen CIRGenFunction.cpp, clang/test/CIR/CodeGen pointer-to-data-member.cpp fixed-point-arith.cpp

[CIR] Lay out allocas in the order classic codegen does (#231974)

At -O0 the order of a function's entry-block allocas is its stack frame
layout. CIR now creates the return value's alloca before the
parameters', and keeps hoisted block-scope allocas after the function's
own, matching classic codegen.

CIRGen creates `__retval` before the parameters, as classic's
StartFunction does, and the implicit `return 0` store for `main` moves
into emitFunctionProlog, where classic emits it. HoistAllocas places
each hoisted alloca after the allocas already at the start of the
destination block instead of in front of them.

Assisted-by: Cursor / claude-opus-5.5

---------

Co-authored-by: Andy Kaylor <akaylor at nvidia.com>
DeltaFile
+205-0clang/test/CIR/CodeGen/alloca-order.cpp
+80-80clang/test/CIR/CodeGen/unary.cpp
+68-34clang/test/CIR/CodeGen/fixed-point-arith.cpp
+29-35clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+51-0clang/test/CIR/Transforms/hoist-allocas.cir
+18-18clang/test/CIR/CodeGen/pointer-to-data-member.cpp
+451-16764 files not shown
+726-40070 files

FreeBSD/ports 2317937 — devel/ruby-build Makefile distinfo

devel/ruby-build: Update to 20261013

Changes:        https://github.com/rbenv/ruby-build/releases/tag/v20261013
(cherry picked from commit f5649fe0a2a2df3fa489944fc4f16f83523a9365)
DeltaFile
+3-3devel/ruby-build/distinfo
+1-1devel/ruby-build/Makefile
+4-42 files

FreeBSD/ports f5649fe — devel/ruby-build Makefile distinfo

devel/ruby-build: Update to 20261013

Changes:        https://github.com/rbenv/ruby-build/releases/tag/v20261013
DeltaFile
+3-3devel/ruby-build/distinfo
+1-1devel/ruby-build/Makefile
+4-42 files

FreeBSD/ports de2beb2 — audio/maolan pkg-plist Makefile, audio/maolan/files patch-cargo-crates_i24-2.3.5_src_repr.rs

audio/maolan: Update to 0.3.2

Changelog: https://github.com/maolan/maolan/releases/tag/0.2.5
           https://github.com/maolan/maolan/releases/tag/0.3.0
           https://github.com/maolan/maolan/releases/tag/0.3.1
           https://github.com/maolan/maolan/releases/tag/0.3.2

PR:             299314
Reported by:    Goran Mekić <meka at sys.it.com> (maintainer)
DeltaFile
+653-483audio/maolan/distinfo
+325-240audio/maolan/Makefile.crates
+0-29audio/maolan/files/patch-cargo-crates_i24-2.3.5_src_repr.rs
+11-11audio/maolan/Makefile
+1-1audio/maolan/pkg-plist
+990-7645 files

LLVM/project ec78c03 — .github/workflows libcxx-pr-benchmark.yml libcxx-benchmark-libstdcxx.yml

[libc++] Make usage of python3 work as intended on macOS benchmark runners (#232151)

Homebrew stops providing unversionned commands like `python3` in their
versionned formulae (`python at 3.14`) whenever it stops being the default.
As a result, the `python3` symlink moved from `<...>/bin` to
`<...>/libexec/bin` when the Python 3.15 formula was introduced,
displacing Python 3.14.

As a result, the macOS jobs started falling back to the system Python
3.9. Since llvm-lnt does not support Python 3.9 (which is EOL'd), that
failed the macOS benchmarking jobs (see for example [1]).

Fix this by adding <...>/libexec/bin to the path instead of just <...>/bin.

[1]: https://github.com/llvm/llvm-project/actions/runs/38039547247/job/114176935620
DeltaFile
+1-1.github/workflows/libcxx-pr-benchmark.yml
+1-1.github/workflows/libcxx-benchmark-libstdcxx.yml
+1-1.github/workflows/libcxx-benchmark-commit.yml
+3-33 files

LLVM/project 108d5c6 — llvm/test/CodeGen/LoongArch expandmemcmp-optsize.ll expandmemcmp.ll

[LoongArch][NFC] Add lsx/lasx checks for memcmp expansion tests

Add checks for lsx/lasx and check-prefixes to reduce the duplication.
DeltaFile
+1,801-193llvm/test/CodeGen/LoongArch/expandmemcmp.ll
+1,023-197llvm/test/CodeGen/LoongArch/expandmemcmp-optsize.ll
+2,824-3902 files

LLVM/project 266d08a — clang/test/CodeGen lower-mass-end-to-end.c, llvm/lib/Target/PowerPC PPCTargetTransformInfo.cpp PPCInstrInfo.cpp

[PowerPC] Prefix option names with ppc-, turn disable- to positive options (#230393)

Rename the PowerPC CodeGen options so that they start with ppc-, and
turn the -disable-* options into positive options with the default
flipped. -enable-ppc-gen-scalar-mass becomes -ppc-scalar-mass and
-disable-ppc-ctrloops becomes -ppc-ctr-loops, since -ppc-gen-scalar-mass
and -ppc-ctrloops are pass names.

Preparatory for migrating to LibraryOptions.

Aided by Opus 5.5
DeltaFile
+44-34llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+32-30llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+18-13llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+12-12clang/test/CodeGen/lower-mass-end-to-end.c
+11-9llvm/lib/Target/PowerPC/PPCTargetTransformInfo.cpp
+7-7llvm/test/CodeGen/PowerPC/vsx-fma-m-early.ll
+124-10556 files not shown
+257-23862 files

LLVM/project 7e7ca90 — llvm/lib/ExecutionEngine/Orc ReOptimizeLayer.cpp

[ORC] Set target triple on ReOptimizeLayer's orc-rt-lite module. (#232088)

addOrcRTLiteSupport created its helper module without a triple. An empty
triple defaults to ELF, so since #228429 (AsmPrinter reads the triple
from the Module, not the TargetMachine) the AArch64 AsmPrinter took its
ELF path on Mach-O hosts and called through a null
AArch64TargetStreamer.

Use the ExecutionSession's triple.

rdar://189983111

Co-authored by: Claude Sonnet 5.5
DeltaFile
+1-0llvm/lib/ExecutionEngine/Orc/ReOptimizeLayer.cpp
+1-01 files

LLVM/project 1a36edc — .github/workflows libcxx-pr-benchmark.yml libcxx-benchmark-libstdcxx.yml, libcxx/utils/ci/lnt README.md machines.json

[libc++] Extract LNT benchmark validation into a reusable workflow (#232155)

This allows sharing the logic for validating the LNT machines definition
between the libc++ and the libstdc++ benchmarking jobs. As part of that,
I noticed that these jobs only used a subset of the fields in
machines.json, so this PR regroups them into a sub-entry. There are now
two aspects in machines.json: "when" we measure something, and "how" we
measure something, and both are sub-objects.
DeltaFile
+19-65.github/workflows/libcxx-benchmark-commit.yml
+82-0.github/workflows/libcxx-lnt-validate.yml
+17-63.github/workflows/libcxx-benchmark-libstdcxx.yml
+34-26libcxx/utils/ci/lnt/machines.json
+13-7libcxx/utils/ci/lnt/README.md
+1-1.github/workflows/libcxx-pr-benchmark.yml
+166-1626 files

LLVM/project b6866c1 — llvm/test/CodeGen/AMDGPU memory-legalizer-store-infinite-loop.ll required-export-priority.ll

test: remove volatile to restore old behavior (#231722)

PR #230426 makes the memory access volatile. but it was pointed out in
review of PR #221870, volatile may break the test point. Remove the
volatile and use command line option to disable possible alloca
promotion.
DeltaFile
+13-8llvm/test/CodeGen/AMDGPU/required-export-priority.ll
+2-2llvm/test/CodeGen/AMDGPU/memory-legalizer-store-infinite-loop.ll
+15-102 files

FreeBSD/src c27ed49 — sys/dev/iwm if_iwm_pcie_trans.h if_iwm_pcie_trans.c

iwm: add return status to set/clear prph bits

This brings these functions inline with OpenBSD

Locally tested:

* 3160, STA mode
* 7260, STA mode
* 8260, STA mode
* 9260, STA mode

Obtained from: OpenBSD a6e25c727a2214219715b51ba6af2221d7e0d674

Reviewed by:    emaste
Differential Revision:  https://reviews.freebsd.org/D60211
DeltaFile
+7-6sys/dev/iwm/if_iwm_pcie_trans.c
+3-3sys/dev/iwm/if_iwm_pcie_trans.h
+10-92 files

FreeBSD/src 103a4f0 — sys/dev/iwm if_iwmvar.h if_iwm_phy_ctxt.h

iwm: update phy context routines; add HT channel width parameter

Update the phy context routines to match what the openbsd snapshot
is doing.  This involves some HT channel width stuff which although
I am not doing HT right now, it was juts easier to sync these
entirely versus just a partial sync.

* Update the phy context routines to match what openbsd is doing
* Although the openbsd driver has an iwm_phy_ctxt_update() routine
  instead of add and modify, I'm leaving it as-is for now.
  A bunch of refactoring is going to need to be done to properly
  use an iwm_phy_ctxt_update() call and I didn't want to tackle
  that in here.
* Add a UHB firmware capability phy context call; I can't test it
  but it's mostly copy/paste.
* Add in a util to turn ieee80211_channel into the 'sco' variable
  (the HT low/hi parameter) since it's done in openbsd in a
  slightly different way.


    [10 lines not shown]
DeltaFile
+101-19sys/dev/iwm/if_iwm_phy_ctxt.c
+18-0sys/dev/iwm/if_iwm_util.h
+6-2sys/dev/iwm/if_iwm.c
+5-0sys/dev/iwm/if_iwm_phy_ctxt.h
+1-0sys/dev/iwm/if_iwmvar.h
+131-215 files

LLVM/project 58dbbb8 — llvm/test/CodeGen/AMDGPU memory-legalizer-single-wave-workgroup-memops.ll, llvm/test/CodeGen/NVPTX atomicrmw-elementwise-sm90.ll atomicrmw-elementwise-sm70.ll

Merge remote-tracking branch 'upstream/main' into users/adams381/cir-classic-alloca-order

Assisted-by: Cursor / claude-opus-5.5
DeltaFile
+31,848-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm60.ll
+31,310-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm70.ll
+22,710-0llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+5,611-5,555llvm/test/CodeGen/RISCV/clmul.ll
+3,996-0llvm/test/CodeGen/AMDGPU/memory-legalizer-single-wave-workgroup-memops.ll
+1,314-1,312llvm/test/CodeGen/RISCV/clmulr.ll
+96,789-6,8671,690 files not shown
+157,303-30,2971,696 files

FreeBSD/src ed92055 — sys/dev/iwm if_iwm.c

iwm: bring IWM_CSR_HW_IF_CONFIG_REG programming in line with openbsd

bring the iwm_nic_config() / IWM_CSR_HW_IF_CONFIG_REG programming
in line with openbsd.

Locally tested:

* 3160 STA mode
* 7260 STA mode
* 8260 STA mode
* 9260 STA mode

Obtained from: OpenBSD a6e25c727a2214219715b51ba6af2221d7e0d674

Differential Revision:  https://reviews.freebsd.org/D60081
DeltaFile
+8-5sys/dev/iwm/if_iwm.c
+8-51 files

FreeBSD/src 8d53176 — sys/dev/iwm if_iwmvar.h if_iwm_util.c

iwm: add DQA (dynamic queue assignment)

This is the minimum set of DQA bits from iwm at the given openbsd
commit place.

* add a method to map ac to queue / ring
* use the DQA command queue if needed
* glue to wire it up

Locally tested:

* Intel 7260, STA mode
* Intel 9260, STA mode
* Intel 8260, STA mode
* Intel 3160, STA mode

Obtained from: OpenBSD a6e25c727a2214219715b51ba6af2221d7e0d674

Differential Revision:  https://reviews.freebsd.org/D60080
DeltaFile
+73-14sys/dev/iwm/if_iwm.c
+22-6sys/dev/iwm/if_iwm_sta.c
+1-1sys/dev/iwm/if_iwm_util.c
+1-0sys/dev/iwm/if_iwmvar.h
+97-214 files

LLVM/project 94f7d7d — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp, llvm/test/Transforms/InstCombine intrinsic-select.ll

Update for comments
DeltaFile
+15-20llvm/test/Transforms/InstCombine/intrinsic-select.ll
+4-0llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+19-202 files

LLVM/project 6452dc4 — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp, llvm/test/Transforms/InstCombine intrinsic-select.ll

[InstCombine] Fold select of pow into select of the differing operand

When both arms of a select are calls to `llvm.pow` with one use that
differ in exactly one operand, sink the select into that operand:

$$
\mathrm{select}(c,\ x^{y},\ x^{z}) \rightarrow x^{\mathrm{select}(c,\ y,\ z)}
$$

$$
\mathrm{select}(c,\ x^{z},\ y^{z}) \rightarrow \mathrm{select}(c,\ x,\ y)^{z}
$$

This removes one `pow` call. FMF are intersected and debug locations
are merged. The transform is skipped when a differing operand is a
constant, since that may enable a cheaper lowering (e.g.
$x^2 \rightarrow x \cdot x$).
DeltaFile
+23-31llvm/test/Transforms/InstCombine/intrinsic-select.ll
+35-0llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+58-312 files

LLVM/project b0a12b6 — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp

Update for comments
DeltaFile
+1-11llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+1-111 files

LLVM/project 84700dd — llvm/lib/Transforms/InstCombine InstCombineSelect.cpp, llvm/test/Transforms/InstCombine select-fcmp-fmul-zero-absorbing-value.ll

Use TriviallyVectorizable
DeltaFile
+10-4llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+2-3llvm/test/Transforms/InstCombine/select-fcmp-fmul-zero-absorbing-value.ll
+12-72 files

LLVM/project 0508cbd — llvm/test/CodeGen/AMDGPU simplify-libcalls.ll amdgpu-simplify-libcall-pow.ll

Fix lit test issue.
DeltaFile
+18-36llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-rootn.ll
+9-11llvm/test/CodeGen/AMDGPU/amdgpu-simplify-libcall-pow.ll
+2-4llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
+29-513 files

LLVM/project 8465a64 — llvm/test/CodeGen/AMDGPU simplify-libcalls.ll

[AMDGPU] Autogenerate checks in simplify-libcalls.ll. NFC (#227934)

<sub>Stack created with <a
href="https://github.com/github/gh-stack">GitHub Stacks CLI</a> • <a
href="https://gh.io/stacks-feedback">Give Feedback 💬</a></sub>
DeltaFile
+1,680-274llvm/test/CodeGen/AMDGPU/simplify-libcalls.ll
+1,680-2741 files

LLVM/project 56e57d4 — mlir/lib/Dialect/ControlFlow/IR ControlFlowOps.cpp, mlir/lib/Dialect/Linalg/Transforms Vectorization.cpp

[mlir][NFC] Simplify OpInterfaceRewritePattern using-decl to use alias (#232056)

Same as #230717.
DeltaFile
+1-1mlir/lib/Transforms/BubbleDownMemorySpaceCasts.cpp
+1-1mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp
+1-1mlir/lib/Dialect/ControlFlow/IR/ControlFlowOps.cpp
+3-33 files

LLVM/project 8a67946 — mlir/include/mlir/Dialect/GPU/IR GPUOps.td, mlir/include/mlir/Dialect/OpenACC OpenACCOps.td

[mlir] `HasParallelRegion` means region may be parallel (#231372)

Clarify the documentation of `HasParallelRegion`. The presence of the
trait means that the op may have parallel semantics. This trait could be
turned into an op interface in the future. Also add the trait to some
operations where it was missing.

Assisted-by: Codex
DeltaFile
+76-10mlir/test/Dialect/Bufferization/Transforms/buffer-loop-hoisting.mlir
+20-17mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+7-4mlir/include/mlir/Interfaces/LoopLikeInterface.h
+2-2mlir/include/mlir/Dialect/OpenACC/OpenACCOps.td
+4-0utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+2-1mlir/include/mlir/Dialect/GPU/IR/GPUOps.td
+111-346 files not shown
+117-3612 files

LLVM/project cac3cc2 — llvm/lib/Target/AMDGPU AMDGPUInstructionSelector.cpp GCNHazardRecognizer.cpp, llvm/lib/Target/AMDGPU/AsmParser AMDGPUAsmParser.cpp

Reland [AMDGPU] Handle gfx950 v_pk_{add,mul,fma}_f32 invalid op_sel (#232016)

gfx950 v_pk_add/mul/fma_f32 for certain op_sel combinations:

- Case 1 (v_pk_add/mul_f32): src0/src1 both VGPR with op_sel[1:0] ==
2'b10. Adjusted in GCNHazardRecognizer::fixPkF32InvalidOpSel by
commuting src0/src1 in place.
- Case 2/3 (v_pk_fma_f32): op_sel[2:1] == 2'b01, 2'b10, or 2'b11. Fixed
via SIInstrInfo::decomposePkFMAF32, which splits the packed FMA into two
independent scalar v_fma_f32s; wired in from both
SITargetLowering::AdjustInstrPostInstrSelection (SelectionDAG) and
AMDGPUInstructionSelector::select's G_FMA case (GlobalISel), both gated
on SIInstrInfo::isLegalPkFMAF32OpSel. A safety net that crashes the
compiler is added in GCNHazardRecognizer::fixPkF32InvalidOpSel.

Also reject the invalid op_sel encodings directly in the assembler
(AMDGPUAsmParser::validateOpSel) so hand-written/inline asm can't encode
them.


    [2 lines not shown]
DeltaFile
+719-0llvm/test/CodeGen/AMDGPU/gfx950-pk-f32-invalid-op-sel.ll
+125-0llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+49-0llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+24-0llvm/test/MC/AMDGPU/gfx950_err.s
+16-0llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp
+16-0llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
+949-04 files not shown
+966-010 files

LLVM/project b448b6f — clang/lib/CIR/CodeGen CIRGenFunction.cpp, clang/lib/CIR/Dialect/Transforms HoistAllocas.cpp

[CIR] Address reviewer feedback

Assisted-by: Cursor / claude-opus-5.5
DeltaFile
+3-4clang/lib/CIR/CodeGen/CIRGenFunction.cpp
+1-1clang/lib/CIR/Dialect/Transforms/HoistAllocas.cpp
+4-52 files

LLVM/project 306c2b1 — flang/docs F202X.md, flang/lib/Evaluate intrinsics.cpp

[flang] Classify MOVE_ALLOC with noncoarray FROM as SIMPLE (#224923)

F2023 16.1 p5 classifies `MOVE_ALLOC` as simple when its `FROM` argument
is not a coarray, and no other standard intrinsic subroutine is pure or
simple. Mark a `MOVE_ALLOC` call `SIMPLE` and `PURE` only when `FROM` is
not a coarray. A call with a coarray `FROM` in a pure subprogram or `DO
CONCURRENT` is now also reported as a reference to an impure procedure.

Update `F202X.md` and add a test.

Part of #221457.
DeltaFile
+13-0flang/test/Semantics/move_alloc_pure.f90
+7-3flang/lib/Evaluate/intrinsics.cpp
+2-2flang/docs/F202X.md
+2-0flang/test/Semantics/doconcurrent01.f90
+24-54 files

LLVM/project cb5744e — libc/src/__support/OSUtil/linux/syscall_wrappers CMakeLists.txt sched_setparam.h, libc/src/sched/linux CMakeLists.txt sched_setparam.cpp

[libc] Use a syscall wrapper for `sched_setparam` (#231893)

Follow up of https://github.com/llvm/llvm-project/pull/231865.

This PR move `sched_setparam` behind the centralized syscall wrappers,
following `libc/docs/dev/syscall_wrapper_refactor.md`.
DeltaFile
+37-0libc/src/__support/OSUtil/linux/syscall_wrappers/sched_setparam.h
+32-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+18-4libc/src/__support/OSUtil/linux/syscall_wrappers/CMakeLists.txt
+4-6libc/src/sched/linux/sched_setparam.cpp
+4-3libc/src/sched/linux/CMakeLists.txt
+95-135 files

LLVM/project 004a61d — clang/lib/CodeGen CGExpr.cpp, clang/test/CodeGen attr-counted-by-with-sanitizers.c attr-counted-by-repeated-member.c

[Clang][counted_by] Use the innermost struct that contains the count

__builtin_dynamic_object_size and __builtin_counted_by_ref find the
count by walking the base expression to a struct that contains it, then
searching that struct's fields for the count. For a '.' member access,
StructAccessBase preferred the *outermost* such struct. When the struct
with the 'counted_by' field is embedded more than once, the search from
the outer struct finds the first copy's count, whichever copy is
accessed:

  struct inner { int count; int *buf __counted_by(count); };
  struct outer { struct inner a, b; };

  __builtin_dynamic_object_size((*o).b.buf, 1)  // used o->a.count
  *__builtin_counted_by_ref((*o).b.buf) = n;     // wrote o->a.count

Stop at the innermost member expression whose struct contains the count,
as is already done for '->' and array subscripts. Sema requires the
count to be in the same struct as the counted field, so the innermost

    [3 lines not shown]
DeltaFile
+66-0clang/test/CodeGen/attr-counted-by-repeated-member.c
+6-3clang/lib/CodeGen/CGExpr.cpp
+4-4clang/test/CodeGen/attr-counted-by-with-sanitizers.c
+76-73 files