LLVM/project 6c0c62f — llvm/test/Transforms/LoopVectorize extract-value-widen.ll struct-return.ll, llvm/test/Transforms/LoopVectorize/AArch64 struct-return-cost.ll struct-return-extractvalue.ll

[LV] Have ExtractValue match the shape of the operand. (#229927)

Previously, BuildStructVector would create a vector of a wide struct
type, where each element is widened.

This can cause issues, if a transform turns an extractvalue of a wide
call into a single-scalar (e.g. makeScalarizationDecisions), because we
currently cannot extract lane 0 from a struct of vectors.

Instead of relying on BuildStructVector, we can instead have the
ExtractValue match the shape of its operand (either widen if the operand
is wide, or replicated if the operand is scalar). If a vector value is
needed, we can directly use the existing BuildVector.

This fixes a number of crashes in the newly added tests, including
https://github.com/llvm/llvm-project/issues/229609.

Depends on https://github.com/llvm/llvm-project/pull/229925

PR: https://github.com/llvm/llvm-project/pull/229927
DeltaFile
+119-312llvm/test/Transforms/LoopVectorize/struct-return-replicate.ll
+348-0llvm/test/Transforms/LoopVectorize/AArch64/struct-return-extractvalue.ll
+254-26llvm/test/Transforms/LoopVectorize/struct-return.ll
+33-28llvm/test/Transforms/LoopVectorize/VPlan/struct-return-build-vector.ll
+51-0llvm/test/Transforms/LoopVectorize/extract-value-widen.ll
+24-24llvm/test/Transforms/LoopVectorize/AArch64/struct-return-cost.ll
+829-3908 files not shown
+878-46214 files

LLVM/project ff6a3dc — llvm/lib/Target/VE VEISelLowering.cpp, llvm/test/CodeGen/VE exception-model.ll

VE: Use i32 registers for 32-bit loads in the SjLj dispatch block

Fix verifier errors in exception test. The call site index and the
PIC jump table offset were loaded with ldl.zx, which defines an i32
register, into vregs with the i64 register class.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+19-4llvm/lib/Target/VE/VEISelLowering.cpp
+1-2llvm/test/CodeGen/VE/exception-model.ll
+20-62 files

LLVM/project f40ea12 — llvm/lib/Target/VE/MCTargetDesc VEMCAsmInfo.cpp, llvm/lib/TargetParser Triple.cpp

VE: Default to SjLj exception handling

The clang driver selects SjLj exceptions for VE (96d4ccf00c8f), but the
triple defaulted to no exception model. Make SjLj the default for the
triple and MCAsmInfo so llc agrees with the driver.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+20-0llvm/test/CodeGen/VE/exception-model.ll
+2-2llvm/unittests/TargetParser/TripleTest.cpp
+2-0llvm/lib/TargetParser/Triple.cpp
+1-0llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp
+25-24 files

LLVM/project 496d6d3 — libc/src/__support/GPU fixedbuffer.h CMakeLists.txt, libc/src/__support/RPC CMakeLists.txt

[libc] Order GPU targets after the generated stdint.h (#231229)

Several GPU targets reach `<stdint.h>` without depending on the
generated header, so a fresh build can compile them before or while
`stdint.h` is written and fail with `unknown type name 'uint32_t'`. This
is the same race as #149993, but via headers that don't include
`<stdint.h>` directly.
 
- GPU utils: `utils.h` includes `<gpuintrin.h>`, which includes
`<stdint.h>`; depend on `libc.hdr.stdint_proxy`.
- rpc_client: `shared/rpc_util.h` includes `<stdint.h>` but is also used
outside libc, so it can't use the proxy header; declare the dependency
on the libc target instead.
- GPU time_utils: declare its existing dependency on GPU utils.
 
This also changes GPU fixedbuffer to include `hdr/stdint_proxy.h` rather
than `<stdint.h>`. fixedbuffer was added after #150303, so it was missed
by that conversion.


    [4 lines not shown]
DeltaFile
+5-0libc/src/__support/GPU/CMakeLists.txt
+1-2libc/src/__support/GPU/fixedbuffer.h
+1-0libc/src/__support/time/gpu/CMakeLists.txt
+1-0libc/src/__support/RPC/CMakeLists.txt
+8-24 files

LLVM/project 22ac549 — llvm/lib/Target/X86 X86TargetTransformInfo.cpp, llvm/test/Analysis/CostModel/X86 div-rem-pair.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+107-0llvm/test/Transforms/SLPVectorizer/X86/divrem-scalar-pair.ll
+65-0llvm/test/Analysis/CostModel/X86/div-rem-pair.ll
+19-0llvm/lib/Target/X86/X86TargetTransformInfo.cpp
+191-03 files

LLVM/project 9afb91f — llvm/lib/Target/AMDGPU VOP1Instructions.td SIInstrInfo.td

AMDGPU: Add vgpr32_lo16/vgpr32_hi16 OutPatFrags

Add OutPatFrags for extracting a 16-bit half of a value after copying
it to a VGPR_32, and use them for the existing open-coded instances.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+8-8llvm/lib/Target/AMDGPU/VOP3Instructions.td
+6-0llvm/lib/Target/AMDGPU/SIInstrInfo.td
+1-1llvm/lib/Target/AMDGPU/VOP1Instructions.td
+15-93 files

LLVM/project 11094f9 — llvm/docs AMDGPUUsage.rst

[AMDGPU][Doc] Add documentation about ABI occupancy

This PR introduces ABI occupancy in documentation. The actual code
implementation will be in follow-up PRs.
DeltaFile
+59-5llvm/docs/AMDGPUUsage.rst
+59-51 files

LLVM/project 7d0f852 — llvm/include/llvm/TargetParser CMakeLists.txt, llvm/lib/Target/ARM ARMSubtarget.h

ARM: Generate processor family and architecture lists in backend

ARMTargetParserDef.inc is only included by ARMSubtarget. It was
generated by the TargetParser library's tablegen step, which every
other LLVM library depends on, even when the ARM target is not
built. Generate it with the rest of the ARM backend's tablegen outputs
instead.

This removes 14% of the time in the TargetParser tablegen step, along
with a dependency on 71 ARM td files.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+4-12utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+10-0llvm/utils/gn/secondary/llvm/lib/Target/ARM/BUILD.gn
+0-8llvm/utils/gn/secondary/llvm/include/llvm/TargetParser/BUILD.gn
+2-2llvm/lib/Target/ARM/ARMSubtarget.h
+0-3llvm/include/llvm/TargetParser/CMakeLists.txt
+1-0llvm/utils/gn/secondary/llvm/unittests/Target/ARM/BUILD.gn
+17-252 files not shown
+18-268 files

FreeBSD/src 84f790e — sys/dev/wg if_wg.c, sys/net if_gre.c if_ovpn.c

ip_encap: Recompute flowid for packets received over tunnel

Packets decapsulated by a tunnel interface carry the NIC's flowid
computed over the outer tunnel tuple, which is the same for every
flow a peer carries. Therefore mpath nhop selection places all
traffic on one path.

Add encap_set_flowid() to ip_encap.c, which rehashes a decapsulated
IP packet on its inner addresses.

The feature is off by default and is enabled with the per-vnet
net.route.hash_inbound sysctl.

Reviewed by:    gallatin
Differential Revision:  https://reviews.freebsd.org/D60552
DeltaFile
+52-0sys/netinet/ip_encap.c
+7-0sys/netinet/ip_encap.h
+3-0sys/net/if_ovpn.c
+3-0sys/net/if_geneve.c
+3-0sys/dev/wg/if_wg.c
+2-0sys/net/if_gre.c
+70-01 files not shown
+72-07 files

LLVM/project 31beca1 — llvm/lib/Target/VE VEISelLowering.cpp, llvm/test/CodeGen/VE exception-model.ll

VE: Use i32 registers for 32-bit loads in the SjLj dispatch block

Fix verifier errors in exception test. The call site index and the
PIC jump table offset were loaded with ldl.zx, which defines an i32
register, into vregs with the i64 register class.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+19-4llvm/lib/Target/VE/VEISelLowering.cpp
+1-2llvm/test/CodeGen/VE/exception-model.ll
+20-62 files

OpenZFS/src 5f68a22 — module/nvpair nvpair.c

Skip the second duplicate search when adding to an nvlist.

nvlist_add_common() removes any existing pair with the same name and
then calls nvt_add_nvpair(), which hashes the name and searches the
table for that pair again. The second search can never find anything.
Only the unpack path needs it, because it does not remove duplicates
first.

nvt_add_nvpair() now takes a flag and nvlist_add_common() skips the
search. The search also checked whether the hash table should shrink.
That check still runs on every removal.

In a perf profile of ZFS_IOC_POOL_STATS on a pool with 1200 disks the
second search was about 16% of the samples. A userland test that
builds and copies 200000 lists of 41 pairs went from about 2.42
seconds to about 2.00 seconds.

Reviewed-by: Rob Norris <rob.norris at truenas.com>
Reviewed-by: Ameer Hamza <ameer.hamza at truenas.com>

    [2 lines not shown]
DeltaFile
+6-5module/nvpair/nvpair.c
+6-51 files

OpenZFS/src f5c2dbc — tests/unit test_nvpair.c

unit/nvpair: confirm pair count after replace

Replacing a pair needs to update both the nvlist hashtable and the pair
list. The other replace tests use lookups, which only check the
hashtable. This checks the pair count in three different ways, none of
which use the hashtable, and so ensure that the pair list was also
updated correctly.

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Co-authored-by: Caleb St. John <yocalebo at gmail.com>
Signed-off-by: Rob Norris <rob.norris at truenas.com>
Closes #19362
DeltaFile
+52-0tests/unit/test_nvpair.c
+52-01 files

LLVM/project 6ff328f — flang/lib/Lower/OpenMP OpenMP.cpp, flang/test/Lower/OpenMP distribute-parallel-do.f90 distribute-parallel-do-simd.f90

[flang][OpenMP] Destroy composite num_threads temporaries once

DISTRIBUTE PARALLEL DO and DISTRIBUTE PARALLEL DO SIMD evaluate the
PARALLEL clause operands before creating omp.parallel, using the
statement context of the dispatch. That context is finalized after the
returned omp.distribute, which is inside the parallel region, so every
thread destroyed the same num_threads temporary, for example for
num_threads(size(f())) where f returns an allocatable.

Evaluate these operands in a separate statement context and finalize it
after omp.parallel.

Fixes #230661

Assisted with Copilot and Claude Opus 5.5
DeltaFile
+27-9flang/lib/Lower/OpenMP/OpenMP.cpp
+32-0flang/test/Lower/OpenMP/distribute-parallel-do.f90
+32-0flang/test/Lower/OpenMP/distribute-parallel-do-simd.f90
+91-93 files

OpenZFS/src 061b38a — tests/unit test_nvpair.c

unit/nvpair: test other nvlist types where possible

nvlists can have three possible types or modes: allow duplicate keys, require
unique keys, require unique key+type. For the most part we were only
testing the one we use most commonly in OpenZFS, NV_UNIQUE_NAME.

This sets up test parameters covering each type, and converts a lot of
the tests to run against each type. Not all tests can be used for all
types, most notably; name lookup doesn't currently work for non-unique
types.

A couple of tests are converted to use pair iterators instead of
lookups, so we can still test non-unique types there, but not all, as
it would be impractical for the very complex tests.

Finally, we confirm that unsupported functions for particular types do
return ENOTSUP, to ensure that if that changes in the future, the tests
will fail and so remind the programmer to update the tests.


    [4 lines not shown]
DeltaFile
+266-121tests/unit/test_nvpair.c
+266-1211 files

OpenZFS/src 16be147 — tests/unit test_zap.c unit.h

unit: unit_unreachable(); abort test on reaching unreachable code

Sponsored-by: TrueNAS
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Rob Norris <rob.norris at truenas.com>
Closes #19362
DeltaFile
+6-0tests/unit/unit.h
+2-2tests/unit/test_zap.c
+8-22 files

LLVM/project 3d2242c — llvm/lib/Target/AMDGPU DSInstructions.td VOP3Instructions.td

AMDGPU: Use lo16_to_vgpr32/hi16_to_vgpr32 OutPatFrags

Replace open-coded REG_SEQUENCE widenings of 16-bit values into a
VGPR_32 with the existing OutPatFrags.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+17-17llvm/lib/Target/AMDGPU/SIInstructions.td
+3-3llvm/lib/Target/AMDGPU/VOP1Instructions.td
+2-2llvm/lib/Target/AMDGPU/VOP3Instructions.td
+1-1llvm/lib/Target/AMDGPU/DSInstructions.td
+23-234 files

LLVM/project 0e27435 — clang/lib/CIR/Dialect/Transforms/TargetLowering CIRABIRewriteContext.cpp, clang/test/CIR/CodeGen call-conv-lowering-x86_64-x87-union.cpp ternary-throw.cpp

[CIR] Move records through memory in x86_64 call lowering

CIR lowers a union to its storage type, so moving one as an SSA value
can drop bytes. An x86_fp80 member stores only 10 of its 16 bytes, for
example. The calling-convention rewriter now passes records through
memory at every coercion site, the way classic CodeGen does. That lets
us drop the union check #230302 added, which broke std::format.

Assisted-by: Cursor / Claude Opus 5.5
DeltaFile
+1,475-0clang/test/CIR/Transforms/abi-lowering/x86_64-record-copy.cir
+641-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-union-copy.c
+465-171clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+260-311clang/test/CIR/CodeGen/ternary-throw.cpp
+395-50clang/test/CIR/Transforms/abi-lowering/x86_64-union.cir
+428-0clang/test/CIR/CodeGen/call-conv-lowering-x86_64-x87-union.cpp
+3,664-53247 files not shown
+4,423-1,20253 files

LLVM/project e3ddf30 — llvm/lib/Target/VE/MCTargetDesc VEMCAsmInfo.cpp, llvm/lib/TargetParser Triple.cpp

VE: Default to SjLj exception handling

The clang driver selects SjLj exceptions for VE (96d4ccf00c8f), but the
triple defaulted to no exception model. Make SjLj the default for the
triple and MCAsmInfo so llc agrees with the driver.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+20-0llvm/test/CodeGen/VE/exception-model.ll
+2-2llvm/unittests/TargetParser/TripleTest.cpp
+2-0llvm/lib/TargetParser/Triple.cpp
+1-0llvm/lib/Target/VE/MCTargetDesc/VEMCAsmInfo.cpp
+25-24 files

LLVM/project 1f99182 — llvm/lib/Target/DirectX DXILLegalizePass.cpp, llvm/test/CodeGen/DirectX legalize-non-standard-integers-errors.ll legalize-i8-alloca.ll

Revert "[DirectX] Generalize DXIL integer legalization (#225233)"

This reverts commit 641a4f82bfa32be38e4dbcb5066a19ada9a4fc99.
DeltaFile
+177-292llvm/lib/Target/DirectX/DXILLegalizePass.cpp
+0-373llvm/test/CodeGen/DirectX/legalize-non-standard-integers.ll
+79-133llvm/test/CodeGen/DirectX/legalize-i8.ll
+0-101llvm/test/CodeGen/DirectX/legalize-non-standard-integers-defined.ll
+11-60llvm/test/CodeGen/DirectX/legalize-i8-alloca.ll
+0-69llvm/test/CodeGen/DirectX/legalize-non-standard-integers-errors.ll
+267-1,0281 files not shown
+267-1,0957 files

LLVM/project 3036a4f — libc/src/__support/File file.cpp file.h, libc/src/stdio/generic fgetpos.cpp

[libc] Implement fgetpos/fsetpos (#221349)

These functions read/write the file state, specifically the offset and
the multibyte state. This PR adds them as well as fpos_t, the struct
they manipulate, and thorough tests.

Assisted-by: Automated tooling, human reviewed.
DeltaFile
+458-0libc/test/src/stdio/fsetpos_test.cpp
+328-0libc/test/src/stdio/fgetpos_test.cpp
+70-34libc/src/__support/File/file.h
+71-0libc/test/src/stdio/CMakeLists.txt
+51-12libc/src/__support/File/file.cpp
+57-0libc/src/stdio/generic/fgetpos.cpp
+1,035-4616 files not shown
+1,278-5822 files

LLVM/project d6005ae — llvm/lib/Target/AMDGPU AMDGPUSplitModule.cpp, llvm/test/tools/llvm-split/AMDGPU non-kernels-unreachable-cycles.ll

[AMDGPU][SplitModule] Add entry points for unreachable call cycles

A function in a call cycle always has an incoming direct call, so
`SplitGraph` never makes it an entry point. If no kernel and no other
entry point reaches the cycle, the cycle is assigned to no partition.
This can hit an assertion in `verifyGraph`.

In this PR, we visit the unreached nodes in reverse post-order of the
direct call edges, and make each node that is still unreached an entry
point. Only the outermost unreached cycles get one, so their callees
are not copied into other partitions.
DeltaFile
+40-1llvm/lib/Target/AMDGPU/AMDGPUSplitModule.cpp
+15-6llvm/test/tools/llvm-split/AMDGPU/non-kernels-unreachable-cycles.ll
+55-72 files

FreeBSD/ports e61af9a — graphics/pdfium Makefile

graphics/pdfium: fix stage

It was failing on 14.

PR:             299197
(cherry picked from commit 50c53e948230e961d057571739258d69c3aa1622)
DeltaFile
+1-1graphics/pdfium/Makefile
+1-11 files

LLVM/project 26090c4 — llvm/test/tools/llvm-split/AMDGPU non-kernels-unreachable-cycles.ll

[NFC][AMDGPU] Add a test showing unreachable call cycles in module splitting (#230983)

If no entry point reaches a call cycle, `AMDGPUSplitModule` creates no
entry point for it. In assertion builds, `verifyGraph()` fails. In
release builds, no partition defines the functions in the cycle.

Add a test that shows the current crash.
DeltaFile
+35-0llvm/test/tools/llvm-split/AMDGPU/non-kernels-unreachable-cycles.ll
+35-01 files

FreeBSD/ports c7d90c7 — misc/py-skops distinfo Makefile, misc/py-skops/files patch-pyproject.toml

misc/py-skops: update 0.14.0 → 0.16.0
DeltaFile
+14-0misc/py-skops/files/patch-pyproject.toml
+6-2misc/py-skops/Makefile
+3-3misc/py-skops/distinfo
+23-53 files

FreeBSD/ports 50c53e9 — graphics/pdfium Makefile

graphics/pdfium: fix stage

It was failing on 14.

PR:             299197
DeltaFile
+1-1graphics/pdfium/Makefile
+1-11 files

FreeBSD/ports bb40dbe — misc/py-compressed-tensors distinfo Makefile

misc/py-compressed-tensors: update 0.15.0.1 → 0.19.0
DeltaFile
+8-4misc/py-compressed-tensors/Makefile
+3-3misc/py-compressed-tensors/distinfo
+11-72 files

OpenZFS/src 1ff8fc1 — include/sys dbuf.h, module/zfs sa.c dsl_bookmark.c

Fix out-of-bound access when resizing in receive_spill

receive_spill will call dbuf_spill_set_blksz, which in turn calls
dbuf_new_size when resizing spill block. However, receive_spill holds
a raw buf, which can be compressed and less than db_size. This causes
an out-of-bound access when dbuf_new_size tries to copy the data using
db_size as length.

To fix this, we just disable the copy when coming from receive_spill,
since we will assign a new arc_buf later anyway.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Chunwei Chen <david.chen at nutanix.com>
Closes #18861
DeltaFile
+12-8module/zfs/dbuf.c
+3-2include/sys/dbuf.h
+1-1module/zfs/sa.c
+1-1module/zfs/dsl_bookmark.c
+1-1module/zfs/dnode.c
+1-1module/zfs/dmu_recv.c
+19-146 files

FreeBSD/ports f587ae8 — games/oblige Makefile, games/oblige/files patch-gui_sys__endian.h patch-ajpoly__src_pl__endian.h

games/oblige: prepare the port for FLTK 1.4

- Drop silly meaningless FLTK version check
- While here, normalize UT_Swap16() patches

Fixes:  6483d7e6e5f3
DeltaFile
+14-0games/oblige/files/patch-gui_ui__window.cc
+1-2games/oblige/Makefile
+1-1games/oblige/files/patch-gui_sys__endian.h
+1-1games/oblige/files/patch-ajpoly__src_pl__endian.h
+17-44 files

OpenZFS/src 6262798 — tests/runfiles common.run, tests/zfs-tests/tests Makefile.am

ZTS: test that metadata failing in two classes is ganged

On a pool with a special vdev, a metadata block that can't be
allocated in the special class falls back to the normal class.  If
that fails too, it should be written as a gang block.  Add a test that
forces every allocation of 1500 bytes or more to fail and checks that
a sync finishes and the meta-dnode's blocks are gangs.

This fails now: the sync never finishes, while z_wr_iss threads spin
in zio_dva_allocate().

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Will Rouesnel <wrouesnel at wrouesnel.com>
Closes #19256
Closes #19304
DeltaFile
+66-0tests/zfs-tests/tests/functional/gang_blocks/gang_blocks_special_fallback.ksh
+2-1tests/runfiles/common.run
+1-0tests/zfs-tests/tests/Makefile.am
+69-13 files

OpenZFS/src 183ab72 — module/zfs spa_misc.c

spa: make the normal class the last allocation fallback

Since 108562344 a block that fails to allocate falls back to the class
spa_preferred_class() picks next, but that only knows the class the
block is in now.  A metadata block that failed in the special class
and then in the normal class is sent back to the special class, and
from there to the normal class again: zio_dva_allocate() never reaches
the gang fallback, and txg_sync waits forever while z_wr_iss threads
spin.  #19256 reports a nearly full pool with a special vdev that hangs
this way on import.

Fallbacks only ever move towards the normal class, so once a block is
there, stay and let the caller gang it, as before 108562344.

This makes gang_blocks/gang_blocks_special_fallback pass.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Will Rouesnel <wrouesnel at wrouesnel.com>
Closes #19256
Closes #19304
DeltaFile
+10-0module/zfs/spa_misc.c
+10-01 files