LLVM/project 1f1e888 — clang/include/clang/Basic DiagnosticParseKinds.td, clang/test/Parser c2y-if-decl-while.c

[Clang][C2y] Make the 'if' declaration extension warning on by default

Declarations in the condition of 'if' and 'switch' statements (N3356)
were previously only diagnosed in pre-C2y modes under -pedantic, since
the C compatibility warnings default to Extension. Promote the
diagnostic to an ExtWarn so users on older language modes are told
they are relying on a C2y extension; -Wno-c2y-extensions silences it.

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>
DeltaFile
+4-0clang/test/Parser/c2y-if-decl-while.c
+2-1clang/include/clang/Basic/DiagnosticParseKinds.td
+6-12 files

LLVM/project b0499a4 — clang/lib/Parse ParseStmt.cpp

[Clang][C2y] Simplify condition-declaration diagnostics in C

Key the diagnostics on whether a declaration is permitted as the
condition (only as the sole clause of an 'if' or 'switch'), so the two
"expected expression" emissions collapse into one and the first-clause
check is no longer nested inside the branching. No functional change.

Co-Authored-By: Claude Fable 5.1 <noreply at anthropic.com>
DeltaFile
+19-21clang/lib/Parse/ParseStmt.cpp
+19-211 files

LLVM/project b621fd9 — llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/X86 merge-trunc-stores-boundary.ll

[DAGCombiner] Merge narrow stores after a store of another type (#233120)

Stop collection at a store of a different memory type instead of
rejecting the narrow stores already collected. Keep that store as
the incoming chain of the merged store.

Fixes: https://github.com/llvm/llvm-project/issues/198242
Assisted-by: Codex
DeltaFile
+172-0llvm/test/CodeGen/X86/merge-trunc-stores-boundary.ll
+5-2llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+177-22 files

LLVM/project d424bb8 — llvm/test/Analysis/CostModel/RISCV rvv-vectorinsert.ll shuffle-insert_subvector.ll, llvm/test/Transforms/SLPVectorizer/RISCV strided-load-in-tree-stride.ll strided-loads-based-reduction.ll

[RISCV] Double the cost of slides

From what I've measured and from what I can read on https://camel-cdr.github.io/rvv-bench-results, vslideup and vslidedown generally aren't pipelined to the same degree as arithmetic ops. This, combined with the fact that they require a vsetvli toggle which we don't currently cost for, makes shufflevector sequences emitted by SLP expensive on hardware.

Doubling the costs of the slides prevents unprofitable SLP vectorization in 525.x264_r, and improves performance by 3.91% on the SpacemiT-K3, -march=rva23u64 -O3 -flto. There were no other noticeable changes on SPEC CPU 2017.

The vslideup/vslidedown throughputs relative to vadd.vx are listed below. SiFive x280 is the only core I could see with better throughput. I considered adding a tuning flag for it, but I'm guessing that if SLP vectorization isn't profitable on other cores, they're likely not profitable on the X-series cores either. Happy to add a flag if reviewers prefer.

| core | VLEN | mf2 | m1 | m2 | m4 | m8 |
|---|---|---|---|---|---|---|
| SpacemiT X60 | 256 | 1.0× / 1.0× | 2.0× / 3.0× | 2.0× / 2.5× | 2.0× / 2.2× | 2.0× / 2.1× |
| SpacemiT X100 | 256 | 1.0× / 1.2× | 1.9× / 2.8× | 2.0× / 2.5× | 2.0× / 2.2× | 2.0× / 2.1× |
| SpacemiT A100 | 1024 | 4.0× / 5.0× | 4.0× / 4.5× | 4.0× / 4.2× | 4.0× / 4.1× | 4.0× / 4.1× |
| SiFive P870 | 128 | 1.2× / 1.2× | 1.2× / 1.2× | 8.0× / 9.0× | 5.0× / 6.0× | 3.5× / 4.5× |
| Tenstorrent Ascalon X | 256 | 1.0× / 1.0× | 1.0× / 1.0× | 2.0× / 1.0× | 3.5× / 2.7× | 5.6× / 4.5× |
| Tenstorrent Ascalon S | 256 | 1.0× / 1.0× | 1.0× / 1.0× | 2.6× / 1.0× | 3.8× / 2.8× | 5.7× / 4.6× |
| XiangShan V3 | 128 | 2.0× / 2.0× | 2.0× / 2.0× | 3.5× / 3.5× | 7.0× / 7.0× | 14.0× / 14.0× |
| SiFive X280 | 512 | 1.0× / 1.0× | 0.7× / 1.0× | 0.8× / 1.0× | 0.6× / 1.0× | 0.7× / 1.0× |
| AX45MPV | 512 | 2.0× / 2.0× | 2.0× / 2.0× | 1.5× / 2.0× | 1.8× / 2.0× | 1.9× / 2.0× |
| Tenstorrent Tensix T2 | 128 | - | 7.8× / 7.8× | 7.9× / 7.9× | 7.9× / 7.9× | 6.8× / 6.8× |
DeltaFile
+303-303llvm/test/Analysis/CostModel/RISCV/shuffle-extract_subvector.ll
+168-168llvm/test/Analysis/CostModel/RISCV/splice.ll
+200-72llvm/test/Transforms/SLPVectorizer/RISCV/strided-loads-based-reduction.ll
+111-111llvm/test/Analysis/CostModel/RISCV/shuffle-insert_subvector.ll
+82-49llvm/test/Transforms/SLPVectorizer/RISCV/strided-load-in-tree-stride.ll
+54-54llvm/test/Analysis/CostModel/RISCV/rvv-vectorinsert.ll
+918-75728 files not shown
+1,321-1,13234 files

LLVM/project 499c12e — llvm/test/Transforms/DeadArgElim musttail-caller.ll musttail-indirect.ll

[DAE] Consolidate all musttail test files (NFC) (#234184)
DeltaFile
+240-0llvm/test/Transforms/DeadArgElim/musttail.ll
+0-88llvm/test/Transforms/DeadArgElim/musttail-tailcc.ll
+0-66llvm/test/Transforms/DeadArgElim/musttail-verifier.ll
+0-65llvm/test/Transforms/DeadArgElim/musttail-indirect.ll
+0-22llvm/test/Transforms/DeadArgElim/musttail-caller.ll
+240-2415 files

LLVM/project bd6c133 — lldb/source/Plugins/Process/Utility lldb-riscv-register-enums.h, lldb/source/Register/Arch lldb-riscv-register-enums.h

Merge branch 'main' into users/kosarev/regclass-superreg-mask-dedup
DeltaFile
+4,842-5,011llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+0-4,730lldb/source/Plugins/Process/Utility/lldb-riscv-register-enums.h
+4,730-0lldb/source/Register/Arch/lldb-riscv-register-enums.h
+4,185-0llvm/test/Transforms/LoopVectorize/WebAssembly/dequantize.ll
+0-3,634llvm/test/Transforms/LoopVectorize/WebAssembly/memory-interleave.ll
+3,634-0llvm/test/Transforms/LoopVectorize/WebAssembly/CostModel/memory-interleave.ll
+17,391-13,3752,316 files not shown
+124,097-61,4362,322 files

LLVM/project d46d2a7 — llvm/utils/TableGen RegisterInfoEmitter.cpp

Address feedback
DeltaFile
+35-29llvm/utils/TableGen/RegisterInfoEmitter.cpp
+35-291 files

LLVM/project b5281bc — lldb/include/lldb/Symbol TypeMap.h, lldb/source/Plugins/ExpressionParser/Clang ClangUtilityFunction.h ClangFunctionCaller.h

[lldb][bazel] Support parse_headers (#232936)

Reorganize the lldb Bazel files so that Bazel header parsing works:

- Combine all headers into a single Headers target.
- Fix a few `select`s to ensure that host-specific files aren't being
included on the wrong host platforms.
- Fix a few circular dependencies between header files.

Testing:

- I ran `bazel build --config=generic_clang @llvm-project//lldb/...` and
confirmed there were no errors.
- I build lldb-server and confirmed that the file size was the same (to
the nearest megabyte) before and after.
- I ran `bazel query 'deps(@llvm-project//lldb:lldb-server)'` before and
after this change, and confirmed that no new code was being linked into
lldb-server.
DeltaFile
+98-245utils/bazel/llvm-project-overlay/lldb/BUILD.bazel
+62-226utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
+7-0lldb/source/Plugins/ExpressionParser/Clang/ClangFunctionCaller.cpp
+3-1lldb/source/Plugins/ExpressionParser/Clang/ClangFunctionCaller.h
+1-1lldb/source/Plugins/ExpressionParser/Clang/ClangUtilityFunction.h
+0-1lldb/include/lldb/Symbol/TypeMap.h
+171-4741 files not shown
+172-4747 files

LLVM/project adc49af — offload/include PluginManager.h, offload/libomptarget/OpenMP API.cpp

[Offload][Omp] Move getHostDeviceUid to libomptarget (#234193)

This is just a static function used from within the OpenMP APIs
implementation so moving it out of the Plugin Interface.
DeltaFile
+2-2offload/libomptarget/OpenMP/API.cpp
+0-3offload/plugins-nextgen/common/include/PluginInterface.h
+3-0offload/include/PluginManager.h
+5-53 files

LLVM/project 664b5b4 — llvm/lib/Target/SPIRV SPIRVEmitIntrinsics.cpp, llvm/test/CodeGen/SPIRV/instructions composite-ptr-member-bitcast.ll

[SPIR-V] Fix pointee types of pointers extracted from or inserted into aggregates (#227599)

The pointee type of a pointer extracted from an aggregate was deduced
from its uses, so it could disagree with the member's type: e.g. `load
i32` through the `ptr` member of `{ ptr, i8 }`, which is lowered as a
pointer to `i8`. `OpCompositeExtract` and `OpCompositeInsert` require
the types to match, so this produced invalid SPIR-V.

Derive an extracted pointer's pointee type from the aggregate member,
and cast inserted pointers to the member type. Mismatches are then
handled by the existing `spv_ptrcast` machinery, which keeps
pointer-cast legalization for logical SPIR-V and emits no casts with
`SPV_KHR_untyped_pointers`.
DeltaFile
+138-0llvm/test/CodeGen/SPIRV/instructions/composite-ptr-member-bitcast.ll
+25-0llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+163-02 files

LLVM/project 39861e3 — llvm/lib/Transforms/Vectorize LoopVectorize.cpp

[LV] Verify DominatorTree once per function (#231820)

`processLoop()` verified the whole function's dominator tree after every
successfully vectorized or interleaved loop. 

Move the check next to the existing once-per-function `verifyFunction()`
assertion, which was moved out of `processLoop()` for the same reason in
#216448. On a generated function with 12814 basic blocks and 99706
instructions where LoopVectorize vectorizes 2304 of the 3092 loops it
analyzes, `DT->verify()` goes from 2304 calls to one: `loop-vectorize`
wall time drops 72% and instructions retired 69%.

For verify this perf and proofread, I got help from AI assistant.

The per-loop DT check under `EXPENSIVE_CHECKS` in `executePlan()` is
left unchanged.

Fixes #218487
DeltaFile
+4-0llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+4-01 files

LLVM/project 529f920 — utils/bazel/llvm-project-overlay/clang BUILD.bazel, utils/bazel/llvm-project-overlay/mlir BUILD.bazel

[Bazel] Fixes 092c876 (#234178)

This fixes 092c87674f0f3a2680a4f71e92b41a195dec2c9e (#233103).

Buildkite error link:

https://buildkite.com/llvm-project/upstream-bazel/builds?commit=092c87674f0f3a2680a4f71e92b41a195dec2c9e
DeltaFile
+84-1utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/clang/BUILD.bazel
+85-12 files

LLVM/project 2a83e90 — llvm/lib/Target/AArch64 AArch64TargetTransformInfo.h AArch64TargetTransformInfo.cpp, llvm/test/Analysis/CostModel/AArch64 sve-fcmp.ll

Rebase, address comments

Created using spr 1.3.7
DeltaFile
+33-30llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+43-0llvm/utils/TableGen/SubtargetEmitter.cpp
+13-0llvm/test/TableGen/ResolveSchedClass.td
+5-5llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
+1-0llvm/test/Analysis/CostModel/AArch64/sve-fcmp.ll
+95-355 files

LLVM/project caa2f91 — clang/include/clang/CodeGen ModuleLinker.h, clang/lib/CIR/FrontendAction CIRGenAction.cpp

[clang-repl] Link builtin bitcode into every PTU (#229788)

BackendConsumer::LinkInModules links the -mlink-builtin-bitcode modules
into the first module it finalizes and clears the list. The interpreter
runs the consumer once per PTU, so only the initial PTU links libdevice.
A kernel using device math in a later PTU references undefined `__nv_*`
symbols and the PTX JIT rejects it with cudaErrorInvalidPtx.

Reload the builtin bitcode for every PTU in incremental mode. The
modules get internalized into whatever links them, so each PTU needs its
own copy. loadLinkModules now takes a flag to open only those entries,
so plain -mlink-bitcode-file inputs are linked once and never reopened.

Add a lit test that calls sinf and expf from a kernel (needs a GPU) and
a unittest that links one bitcode library as builtin and an empty one as
a plain bitcode file, deletes the plain one once the interpreter is up,
and checks that two device PTUs define the builtin function rather than
declare it.
DeltaFile
+79-0clang/unittests/Interpreter/DeviceOffloadTest.cpp
+23-0clang/test/Interpreter/CUDA/libdevice-math.cu
+12-2clang/lib/CodeGen/CodeGenAction.cpp
+6-3clang/include/clang/CodeGen/ModuleLinker.h
+4-1clang/lib/CodeGen/ModuleLinker.cpp
+2-1clang/lib/CIR/FrontendAction/CIRGenAction.cpp
+126-71 files not shown
+127-77 files

LLVM/project 5d9ca7f — flang/lib/Semantics check-omp-structure.cpp, flang/test/Semantics/OpenMP declare-simd-empty.f90 declare-simd.f90

[flang][OpenMP] Ignore DECLARE_SIMD and warn about missing implementa… (#232712)

…tion

Currently DECLARE_SIMD emits a "not yet implemented" error in the MLIR
to LLVM IR translation.

DECLARE_SIMD is a hint to the compiler and ignoring it is technically
speaking a conforming implementation (although obviously not desirable).
Do not abort compilation when DECLARE_SIMD is encountered, but emit a
warning that it's currently ignored.

(cherry picked from commit 5ca62fdee645ec253263e41a45fe626c6b66be22)

Fixes: https://github.com/llvm/llvm-project/issues/234108
DeltaFile
+7-0mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+5-1flang/test/Semantics/OpenMP/declare-simd.f90
+5-1flang/test/Semantics/OpenMP/declare-simd-interface-body.f90
+6-0flang/test/Semantics/OpenMP/linear-clause01.f90
+5-0flang/lib/Semantics/check-omp-structure.cpp
+2-1flang/test/Semantics/OpenMP/declare-simd-empty.f90
+30-37 files not shown
+40-313 files

LLVM/project fcc0729 — flang/lib/Semantics resolve-directives.cpp, flang/test/Semantics/OpenMP local-variables-3.f90 local-variables-4.f90

[flang][OpenMP] Fix the creation of implicit symbols for locals (#233600)

When creating implicit symbols for variables that are declared in a
nested scope (e.g. in a BLOCK), the constructs that enclose the symbol
declaration must be skipped, since the symbol doesn't exist in them.

Fixes #230273

Assisted-By: Claude Opus 5.5
DeltaFile
+87-0flang/test/Semantics/OpenMP/local-variables-4.f90
+62-0flang/test/Semantics/OpenMP/local-variables-3.f90
+5-0flang/lib/Semantics/resolve-directives.cpp
+154-03 files

LLVM/project cd26e87 — llvm/lib/Target/AArch64 AArch64MIPeepholeOpt.cpp, llvm/test/CodeGen/AArch64 peephole-orr.mir

AArch64: Skip physical registers in MIPeepholeOpt visitORR

Doubt this appears in any real case, but ran into this when auditing
cases which could possibly need to clear kill flags on physical
registers. Also stop using getUniqueVRegDef in an SSA pass.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+41-0llvm/test/CodeGen/AArch64/peephole-orr.mir
+6-3llvm/lib/Target/AArch64/AArch64MIPeepholeOpt.cpp
+47-32 files

LLVM/project c28e498 — flang/lib/Evaluate fold-implementation.h

Post-merge fixes

Declare ::Part for compatibility

Post-merge fixes

clang-format
DeltaFile
+22-17flang/lib/Evaluate/fold-implementation.h
+22-171 files

LLVM/project 765da2e — lldb/source/Plugins/Process/Utility lldb-riscv-register-enums.h, lldb/source/Register/Arch lldb-riscv-register-enums.h

Merge commit 'fcd3ef6914c1d5b8b73dd78e401b12be49c34f98' into HEAD
DeltaFile
+4,842-5,011llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+0-4,730lldb/source/Plugins/Process/Utility/lldb-riscv-register-enums.h
+4,730-0lldb/source/Register/Arch/lldb-riscv-register-enums.h
+4,185-0llvm/test/Transforms/LoopVectorize/WebAssembly/dequantize.ll
+3,826-0llvm/test/CodeGen/RISCV/rvp-scalar.ll
+1,465-1,512llvm/test/CodeGen/AMDGPU/float-to-arbitrary-fp-widen.ll
+19,048-11,2532,368 files not shown
+130,802-60,0512,374 files

LLVM/project fcd3ef6 — flang/include/flang/Evaluate complex-value.h

Declare ::Part for compatibility

clang-format
DeltaFile
+2-2flang/include/flang/Evaluate/complex-value.h
+2-21 files

FreeBSD/ports f69af6e — security/tailscale Makefile distinfo

security/tailscale: Update to 1.104.2

MFH:            2026Q4
(cherry picked from commit e85dd89784c09603c4191aa9c020ff7d82ffcc2d)
DeltaFile
+5-5security/tailscale/distinfo
+1-1security/tailscale/Makefile
+6-62 files

LLVM/project 4126949 — lldb/source/Plugins/Process/Utility lldb-riscv-register-enums.h, lldb/source/Register/Arch lldb-riscv-register-enums.h

Merge commit 'd169e9baea06f14a7033f881c6ad50e443afd8cc' into HEAD
DeltaFile
+4,842-5,011llvm/test/CodeGen/NVPTX/atomicrmw-elementwise-sm90.ll
+0-4,730lldb/source/Plugins/Process/Utility/lldb-riscv-register-enums.h
+4,730-0lldb/source/Register/Arch/lldb-riscv-register-enums.h
+4,185-0llvm/test/Transforms/LoopVectorize/WebAssembly/dequantize.ll
+3,826-0llvm/test/CodeGen/RISCV/rvp-scalar.ll
+1,465-1,512llvm/test/CodeGen/AMDGPU/float-to-arbitrary-fp-widen.ll
+19,048-11,2532,367 files not shown
+130,800-60,0492,373 files

FreeBSD/ports e85dd89 — security/tailscale Makefile distinfo

security/tailscale: Update to 1.104.2

MFH:            2026Q4
DeltaFile
+5-5security/tailscale/distinfo
+1-1security/tailscale/Makefile
+6-62 files

LLVM/project b4ce3e1 —

[flang] Retrigger CI
DeltaFile
+0-00 files

LLVM/project 11a97ba — llvm/lib/Analysis Loads.cpp, llvm/test/Transforms/InstCombine load-cmp.ll

[Loads] Add MUL/SHL handling in decomposeLinearExpression (#222574)

Implements a FIXME in decomposeLinearExpression, allowing it to look
through multiplications and left-shifts.

We peel the variable index and keep track of the accumulated scale from
the multiplications and shifts and apply this scale when we return the
final expression.

This allows decomposeLinearExpression to extract more statically known
information into the `Scale` of the linear expression.

assisted-by: codex
DeltaFile
+29-3llvm/lib/Analysis/Loads.cpp
+24-0llvm/test/Transforms/InstCombine/load-cmp.ll
+53-32 files

LLVM/project 3a04b7b — flang/include/flang/Optimizer/CodeGen CodeGen.h FIROpPatterns.h, flang/lib/Optimizer/CodeGen FIROpPatterns.cpp CodeGen.cpp

[flang] Resolve symbols through a SymbolTableCollection in FIR to LLVM codegen (#232555)

The FIR to LLVM conversion patterns resolve `fir.address_of`, derived
type descriptor globals, comdat selectors, the CUDA device module and
the malloc/free declarations with `ModuleOp::lookupSymbol`, a linear
walk of the module body. A compilation unit that uses a derived type
reaching N other types carries `linkonce_odr` runtime type info for all
of them (about 25 globals per type), so the conversion performs O(N)
lookups of O(N) cost each and compile time is quadratic in the number of
module symbols: a 12-line subroutine that only passes a `TYPE(TOP)`
dummy, where the module defines 1000 types, takes 137 s to compile,
60-67% of it inside `SymbolTable::lookupSymbolIn`.

This gives the patterns an optional `mlir::SymbolTableCollection`, the
way `populateFuncToLLVMConversionPatterns` already takes one:
`fir::FIROpConversion` and `populateFIRToLLVMConversionPatterns` accept
a `SymbolTableCollection *` (default `nullptr`, which keeps the linear
lookups for other users), the lookup sites go through
`fir::lookupSymbolIn`, and the sites that create symbols register them.

    [13 lines not shown]
DeltaFile
+175-108flang/lib/Optimizer/CodeGen/CodeGen.cpp
+102-1flang/include/flang/Optimizer/CodeGen/FIROpPatterns.h
+72-0flang/test/Fir/convert-to-llvm-symbol-lookup.fir
+41-2flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp
+10-1flang/include/flang/Optimizer/CodeGen/CodeGen.h
+400-1125 files

LLVM/project 34fc140 — llvm/lib/Target/AMDGPU SIRegisterInfo.cpp, llvm/test/CodeGen/AMDGPU lower-control-flow-other-terminators.mir local-stack-alloc-add-references.gfx9.mir

AMDGPU: Stop adding kill flags on virtual registers

Fix misc. AMDGPU passes and hooks running before register allocation
introducing kill flags. There's no point in doing this anymore.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+29-29llvm/test/CodeGen/AMDGPU/collapse-endcf.mir
+15-15llvm/test/CodeGen/AMDGPU/local-stack-alloc-add-references.gfx8.mir
+8-8llvm/test/CodeGen/AMDGPU/local-stack-alloc-add-references.gfx9.mir
+8-8llvm/test/CodeGen/AMDGPU/fold-fmac-to-fmaak.mir
+4-4llvm/test/CodeGen/AMDGPU/lower-control-flow-other-terminators.mir
+4-4llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp
+68-685 files not shown
+76-7911 files

LLVM/project 77373e8 — llvm/test/CodeGen/AMDGPU merge-image-sample.mir merge-buffer.mir

AMDGPU: Stop adding kill flags in SILoadStoreOptimizer

No pre-RA pass should try to create kill flags on virtual registers.
They're unused in any pre/mid-RA pass, and stripped by LiveIntervals.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+89-89llvm/test/CodeGen/AMDGPU/merge-sbuffer-load.mir
+75-75llvm/test/CodeGen/AMDGPU/merge-s-load.mir
+57-57llvm/test/CodeGen/AMDGPU/merge-global-load-store.mir
+48-48llvm/test/CodeGen/AMDGPU/merge-buffer-gfx12.mir
+47-47llvm/test/CodeGen/AMDGPU/merge-buffer.mir
+45-45llvm/test/CodeGen/AMDGPU/merge-image-sample.mir
+361-36122 files not shown
+648-65528 files

LLVM/project 5cb5687 — llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/test/CodeGen/AArch64 interleave-combine-zip.ll

[AArch64] [DAG] combine vector_interleave to zip1/zip2 (#231066)

Interleaving the low (or high) halves of two vectors is exactly what a
single ZIP1 (or ZIP2) of the full vectors computes:

(vector_interleave (extract_subvector A, I), (extract_subvector B, I))
      -> Z = (zip1 A, B) if I == 0, or (zip2 A, B) if I == NumElts/2
results: (extract_subvector Z, 0), (extract_subvector Z, NumElts/2)

Without this combine, type legalization splits or promotes the
half-width operands first, which destroys the pattern and leads to
unpack + zip/trn/uzp sequences, or even a stack round trip for types
such as <vscale x 1 x double>.

The combine runs before operation legalization so the half-width types
are still intact. It is restricted to legal full-width types and skips
fixed-length vectors lowered via SVE, where ZIP1/ZIP2 on the fixed type
cannot be selected.

Assisted By: Claude Opus
DeltaFile
+259-0llvm/test/CodeGen/AArch64/interleave-combine-zip.ll
+53-2llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+312-22 files

LLVM/project 4e49fc5 — libc/src/sched/linux CMakeLists.txt getcpu.cpp, utils/bazel/llvm-project-overlay/libc BUILD.bazel

[libc] Use a syscall wrapper for `getcpu` (#234157)

This PR move `getcpu` behind the centralized syscall wrappers, following
`libc/docs/dev/syscall_wrapper_refactor.md`.
DeltaFile
+13-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+4-6libc/src/sched/linux/getcpu.cpp
+4-1libc/src/sched/linux/CMakeLists.txt
+21-73 files