LLVM/project 44eca06libc/include math.yaml

[libc][math] Add iscanonical functions to math.yaml

Surface the existing iscanonical, iscanonicalbf16, iscanonicalf, iscanonicalf128, iscanonicalf16, and iscanonicall
implementations through the generated math.h.

To test:
`cmake -Bbuild -Sruntimes -GNinja -DLLVM_ENABLE_RUNTIMES=libc -DLLVM_LIBC_FULL_BUILD=ON`
`pip install pyyaml`
`ninja -C build libc.include.math.__generated_hdr__`
Then check `build/libc/include/math.h` for their signatures.

Add `-DLIBC_TYPES_HAS_FLOAT128=ON` to test for iscanonicalf128
in cmake invocation if host does not support it.
And `LIBC_TYPES_HAS_FLOAT16=ON` for iscanonicalf16.
DeltaFile
+38-0libc/include/math.yaml
+38-01 files

LLVM/project 5ecbf12bolt/lib/Rewrite RewriteInstance.cpp

format

Created using spr 1.3.4
DeltaFile
+2-1bolt/lib/Rewrite/RewriteInstance.cpp
+2-11 files

LLVM/project a8e5595llvm/lib/Target/RISCV RISCVTargetTransformInfo.cpp, llvm/test/Analysis/CostModel/RISCV shuffle-load.ll

[RISCV][TTI] Make getShuffleCost check we have a vector before querying getVectorElementCount (#199286)

Fixes the assert reported here:

<https://github.com/llvm/llvm-project/pull/198446#issuecomment-4522589671>

I believe this happens when the element type isn't a legal RVV element
type and so has been scalarised by type legalisation.

Adding this guard also matches the AArch64 implementation.

The test change is LLM generated.
DeltaFile
+13-0llvm/test/Analysis/CostModel/RISCV/shuffle-load.ll
+3-2llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+16-22 files

LLVM/project d6be71fclang/lib/CodeGen CGCall.cpp, clang/test/CodeGenCXX noescape.cpp

[Clang][CodeGen] map `noescape` to capture(address) (was capture(none)) (#199281)

`capture(none)` has very restrictive semantics and an easy footgun to
accidentally fire some UB into your code with. Most significantly it
does not allow any visible side-effects of whether a pointer was null or
not to escape the function. This means that the function cannot perform
different side effects depending on whether a pointer marked `noescape`
is null. Relax this to `captures(address)`, which allows information
about the numerical address to escape the function, but no provenance
(i.e. nothing that could be dereferenced) may escape.

As discussed in
https://discourse.llvm.org/t/rfc-updating-the-semantics-of-the-noescape-attribute/90326.
DeltaFile
+15-15clang/test/CodeGenCXX/noescape.cpp
+13-13clang/test/CodeGenObjC/noescape.m
+2-1clang/lib/CodeGen/CGCall.cpp
+30-293 files

LLVM/project 37c7143bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+115-47bolt/lib/Profile/DataAggregator.cpp
+6-24bolt/tools/driver/llvm-bolt.cpp
+19-4bolt/include/bolt/Profile/DataAggregator.h
+21-2bolt/tools/merge-fdata/merge-fdata.cpp
+22-0bolt/test/merge-fdata-no-lbr-event-multi.test
+18-0bolt/test/merge-fdata-no-lbr-event.test
+201-776 files not shown
+234-8812 files

LLVM/project ff0a797bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.4

[skip ci]
DeltaFile
+67-43bolt/lib/Profile/DataAggregator.cpp
+3-22bolt/tools/driver/llvm-bolt.cpp
+21-2bolt/tools/merge-fdata/merge-fdata.cpp
+22-0bolt/test/merge-fdata-no-lbr-event-multi.test
+18-0bolt/test/merge-fdata-no-lbr-event.test
+7-1bolt/include/bolt/Profile/DataAggregator.h
+138-686 files

LLVM/project 2464812bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+67-43bolt/lib/Profile/DataAggregator.cpp
+3-22bolt/tools/driver/llvm-bolt.cpp
+21-2bolt/tools/merge-fdata/merge-fdata.cpp
+22-0bolt/test/merge-fdata-no-lbr-event-multi.test
+18-0bolt/test/merge-fdata-no-lbr-event.test
+7-1bolt/include/bolt/Profile/DataAggregator.h
+138-686 files

LLVM/project bfd5335bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.4

[skip ci]
DeltaFile
+67-43bolt/lib/Profile/DataAggregator.cpp
+3-22bolt/tools/driver/llvm-bolt.cpp
+7-1bolt/include/bolt/Profile/DataAggregator.h
+77-663 files

LLVM/project 30ed3e3bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+67-43bolt/lib/Profile/DataAggregator.cpp
+3-22bolt/tools/driver/llvm-bolt.cpp
+7-1bolt/include/bolt/Profile/DataAggregator.h
+77-663 files

LLVM/project 44df393bolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.4

[skip ci]
DeltaFile
+67-43bolt/lib/Profile/DataAggregator.cpp
+7-1bolt/include/bolt/Profile/DataAggregator.h
+74-442 files

LLVM/project 96a78debolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+67-43bolt/lib/Profile/DataAggregator.cpp
+7-1bolt/include/bolt/Profile/DataAggregator.h
+74-442 files

LLVM/project b21348cbolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] changes to main this commit is based on

Created using spr 1.3.4

[skip ci]
DeltaFile
+55-36bolt/lib/Profile/DataAggregator.cpp
+3-0bolt/include/bolt/Profile/DataAggregator.h
+58-362 files

LLVM/project 079db4dbolt/include/bolt/Profile DataAggregator.h, bolt/lib/Profile DataAggregator.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.4
DeltaFile
+55-36bolt/lib/Profile/DataAggregator.cpp
+3-0bolt/include/bolt/Profile/DataAggregator.h
+58-362 files

LLVM/project 456906fmlir/include/mlir/Dialect/XeGPU/IR XeGPUOps.td, mlir/lib/Dialect/XeGPU/IR XeGPUOps.cpp

[MLIR][XeGPU]Extend load_matrix/store_matrix to support 1D SLM access (#198652)

This PR extended xegpu.load_matrix and xegpu.store_matrix to support 1D
mem_desc for contiguous SLM access
  - Added unit tests for 1D load/store (valid ops and invalid cases)
- Added integration test verifying both 1D (<4096xbf16>) and 2D
(<64x128xbf16>), correctly lower through the full WG→SG→WI→XeVM pipeline

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply at anthropic.com>
DeltaFile
+31-15mlir/include/mlir/Dialect/XeGPU/IR/XeGPUOps.td
+40-0mlir/test/Integration/Dialect/XeGPU/WG/load_store_matrix.mlir
+35-0mlir/test/Dialect/XeGPU/ops.mlir
+6-16mlir/lib/Dialect/XeGPU/IR/XeGPUOps.cpp
+6-6mlir/test/Dialect/XeGPU/invalid.mlir
+5-5mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
+123-421 files not shown
+123-437 files

LLVM/project a13a4eelibc/include math.yaml

[libc][math] Add iscanonical functions to math.yaml

Surface the existing iscanonical, iscanonicalbf16, fiscanonicalf, iscanonicalf128, iscanonicalf16, and iscanonicall
implementations through the generated math.h.

To test:
`cmake -Bbuild -Sruntimes -GNinja -DLLVM_ENABLE_RUNTIMES=libc -DLLVM_LIBC_FULL_BUILD=ON`
`pip install pyyaml`
`ninja -C build libc.include.math.__generated_hdr__`
Then check `build/libc/include/math.h` for their signatures.

Add `-DLIBC_TYPES_HAS_FLOAT128=ON` to test for iscanonicalf128
in cmake invocation if host does not support it.
DeltaFile
+38-0libc/include/math.yaml
+38-01 files

LLVM/project 65b5880llvm/unittests/Transforms/Vectorize VPlanTest.cpp

[VPlan][test] Fix use-after-free in dumpRecipeInPlan/dumpRecipeUnnamedVPValuesInPlan tests (#199275)

https://github.com/llvm/llvm-project/pull/195891 exposed a
use-after-free in the tests: `BinaryOperator *AI` [*] is deleted prior
to VPlan's destructor, which expects all the operands to still be alive.
This patch fixes the test (suggested by a Florian in
https://github.com/llvm/llvm-project/pull/199252#pullrequestreview-4348337988),
by preemptively detaching AI from the VPlan.

[*] No AI was harmed or used during the creation of this patch.
DeltaFile
+8-0llvm/unittests/Transforms/Vectorize/VPlanTest.cpp
+8-01 files

LLVM/project 3e503e0llvm/include/llvm/Transforms/IPO Instrumentor.h, llvm/lib/Transforms/IPO Instrumentor.cpp

[Instrumentor] Add Cast instruction instrumentation support

We now allow to have instrumentation opportunities for many instructions
(=opcodes) to bundle common classes together. Users can use filters on
the opcode, type-id, and size to statically select what they are
interested in.
DeltaFile
+276-0llvm/test/Instrumentation/Instrumentor/cast.ll
+133-61llvm/include/llvm/Transforms/IPO/Instrumentor.h
+113-5llvm/lib/Transforms/IPO/Instrumentor.cpp
+117-0llvm/test/Instrumentation/Instrumentor/cast_filter.ll
+48-0llvm/test/Instrumentation/Instrumentor/cast_config.json
+41-0llvm/test/Instrumentation/Instrumentor/default_config.json
+728-661 files not shown
+763-667 files

LLVM/project 387a738libc/test/src/math SubTest.h FmaTest.h, libc/test/src/math/smoke ILogbTest.h

[libc][NFC] Reduce the test size for math functions by default. (#199308)
DeltaFile
+2-2libc/test/src/math/SubTest.h
+2-2libc/test/src/math/FmaTest.h
+2-2libc/test/src/math/DivTest.h
+2-2libc/test/src/math/MulTest.h
+2-2libc/test/src/math/NearbyIntTest.h
+2-2libc/test/src/math/smoke/ILogbTest.h
+12-1280 files not shown
+100-10086 files

LLVM/project cd1baf3libc/test/src/__support/wctype CMakeLists.txt

[libc][NFC][wctype] Fix test ci for old drivers (#199307)
DeltaFile
+17-2libc/test/src/__support/wctype/CMakeLists.txt
+17-21 files

LLVM/project d22dfb7llvm/docs LangRef.rst

mention pointer comparisons created by passes

Created using spr 1.3.6-beta.1
DeltaFile
+9-6llvm/docs/LangRef.rst
+9-61 files

LLVM/project 0bc7fb9libc/test/src/__support/wctype CMakeLists.txt

[libc][NFC][wctype] Fix test ci for old drivers
DeltaFile
+8-2libc/test/src/__support/wctype/CMakeLists.txt
+8-21 files

LLVM/project f76446bllvm/test/CodeGen/X86 ctselect.ll ctselect-vector.ll

[X86] Stop claiming f128 CT_SELECT Custom; regen ctselect tests

X86's LowerCT_SELECT falls through to X86ISD::CT_SELECT for any FP
type it claims Custom but doesn't special-case (only f80 has the
three-i32-chunk path, and scalar f32/f64 the SSE register path).
For f128 the fall-through produces an X86ISD::CT_SELECT with f128
result type, for which no isel pattern exists, and selection
ICEs with "Cannot select".

Drop f128 from the CT_SELECT Custom loop so the generic legalizer's
memory-blend path (recently added in the core PR) handles it.

Regenerate CHECK lines for all X86 ctselect tests to reflect the
expanded coverage (half/bfloat/fp80/fp128) introduced upstream.
DeltaFile
+1,107-1,533llvm/test/CodeGen/X86/ctselect.ll
+125-534llvm/test/CodeGen/X86/ctselect-vector.ll
+184-187llvm/test/CodeGen/X86/ctselect-i386-mmx.ll
+26-208llvm/test/CodeGen/X86/ctselect-i386-fp.ll
+8-63llvm/test/CodeGen/X86/ctselect-i386.ll
+3-24llvm/test/CodeGen/X86/ctselect-edge-cases.ll
+1,453-2,5491 files not shown
+1,459-2,5507 files

LLVM/project 88fff4bllvm/lib/Target/X86 X86ISelLowering.cpp

[X86] Restore combineSelect BLENDV sign-bit fold

The optimization that folds X86ISD::BLENDV away when the condition's
sign bit is statically known was inadvertently dropped during a prior
rebase conflict resolution. Its absence caused unrelated CHECK lines
in combine-sdiv.ll, vector-compress.ll, vector-idiv-{u,s}div-*.ll to
fail because main expects the post-optimization codegen.

Restores the block at llvm/lib/Target/X86/X86ISelLowering.cpp line
~49587 (after combineLogicBlendIntoConditionalNegate, before the
VSELECT/BLENDV shuffle handling), matching origin/main verbatim.
DeltaFile
+15-3llvm/lib/Target/X86/X86ISelLowering.cpp
+15-31 files

LLVM/project e785e33llvm/lib/Target/X86 X86InstrInfo.cpp X86ISelLowering.cpp, llvm/test/CodeGen/X86 ctselect-vector.ll ctselect-i386-mmx.ll

[LLVM][X86] Add f80 support for ct.select

Add special handling for x86_fp80 types in CTSELECT lowering by splitting
them into three 32-bit chunks, performing constant-time selection on each
chunk, and reassembling the result. This fixes crashes when compiling
tests with f80 types.

Also updated ctselect.ll to match current generic fallback implementation.
DeltaFile
+463-452llvm/lib/Target/X86/X86InstrInfo.cpp
+211-492llvm/test/CodeGen/X86/ctselect-vector.ll
+188-255llvm/test/CodeGen/X86/ctselect-i386-mmx.ll
+126-146llvm/test/CodeGen/X86/ctselect-i386-fp.ll
+69-6llvm/lib/Target/X86/X86ISelLowering.cpp
+3-6llvm/lib/Target/X86/X86InstrInfo.h
+1,060-1,3572 files not shown
+1,061-1,3608 files

LLVM/project e0c4d09clang/docs LanguageExtensions.rst, clang/include/clang/Basic Builtins.td

[ConstantTime][Clang] Add __builtin_ct_select for constant-time selection
DeltaFile
+683-0clang/test/Sema/builtin-ct-select.c
+373-0clang/test/Sema/builtin-ct-select-edge-cases.c
+64-0clang/lib/Sema/SemaChecking.cpp
+44-0clang/docs/LanguageExtensions.rst
+13-0clang/lib/CodeGen/CGBuiltin.cpp
+8-0clang/include/clang/Basic/Builtins.td
+1,185-06 files

LLVM/project 700d215llvm/lib/Target/X86 X86ISelLowering.cpp X86InstrInfo.cpp, llvm/test/CodeGen/X86 ctselect-vector.ll ctselect-i386-fp.ll

[LLVM][X86] Add native ct.select support for X86 and i386

Add native X86 implementation with CMOV instructions and comprehensive tests:
- X86 ISelLowering with CMOV for x86_64 and i386
- Fallback bitwise operations for i386 targets without CMOV
- Post-RA expansion for pseudo-instructions
- Comprehensive test coverage:
  - Edge cases (zero conditions, large integers)
  - i386-specific tests (FP, MMX, non-CMOV fallback)
  - Vector operations
  - Optimization patterns

The basic test demonstrating fallback is in the core infrastructure PR.
DeltaFile
+1,274-0llvm/test/CodeGen/X86/ctselect-vector.ll
+763-35llvm/lib/Target/X86/X86ISelLowering.cpp
+722-0llvm/test/CodeGen/X86/ctselect-i386-fp.ll
+604-5llvm/lib/Target/X86/X86InstrInfo.cpp
+428-0llvm/test/CodeGen/X86/ctselect-i386-mmx.ll
+409-0llvm/test/CodeGen/X86/ctselect-edge-cases.ll
+4,200-4010 files not shown
+5,085-4516 files

LLVM/project 2fa5182llvm/test/CodeGen/ARM ctselect-vector.ll ctselect-half.ll

[ARM] Regen ctselect tests for new core legalization

The core PR moved CT_SELECT lowering into the generic legalizer
(memory-blend for FP types without a legal same-size integer,
scalar-mask+splat for vectors). ARM tests' CHECK lines need to
reflect the new codegen.

No functional change in ARM target lowering itself; only test
expectations updated to match generated output.
DeltaFile
+972-1,333llvm/test/CodeGen/ARM/ctselect-vector.ll
+513-627llvm/test/CodeGen/ARM/ctselect-half.ll
+51-182llvm/test/CodeGen/ARM/ctselect.ll
+1,536-2,1423 files

LLVM/project d8bee53llvm/lib/Target/ARM ARMISelLowering.cpp ARMTargetMachine.cpp

[ARM] Restore STRICT FP setup, byval pre-load fix, bundle predicate

A prior rebase conflict resolution accidentally dropped several
unrelated pieces of upstream ARM code:

- ARMISelLowering: STRICT_FP_ROUND/FMINNUM/FMAXNUM/FP_EXTEND
  setOperationAction calls (from d08b0f7240aa "Disable strict node
  mutation"), the STRICT_FP_TO_SINT/UINT i32 unconditional setup,
  the STRICT_FP16_TO_FP Expand fallback (reverted from LibCall), the
  byval pre-load fix in LowerCall (from a01a921004c1), and the
  IsStrictFPEnabled=true line at the end of the constructor.
- ARMTargetMachine: broadened createUnpackMachineBundlesLegacy from
  the Thumb2/KCFI predicate to nullptr (unconditional).

These deletions caused CHECK-line mismatches in fp16-fullfp16.ll,
fp-intrinsics-vector.ll, and byval_struct_copy_tailcall.ll. None of
the affected tests use llvm.ct.select.

Restores the upstream code verbatim; ct.select work is unaffected.
DeltaFile
+68-15llvm/lib/Target/ARM/ARMISelLowering.cpp
+5-3llvm/lib/Target/ARM/ARMTargetMachine.cpp
+0-1llvm/lib/Target/ARM/ARMISelLowering.h
+73-193 files

LLVM/project dc7ae68llvm/lib/Target/ARM ARMISelLowering.cpp ARMBaseInstrInfo.cpp, llvm/test/CodeGen/ARM ctselect-vector.ll ctselect-half.ll

[LLVM][ARM] Add native ct.select support for ARM32 and Thumb

This patch implements architecture-specific lowering for ct.select on ARM
(both ARM32 and Thumb modes) using conditional move instructions and
bitwise operations for constant-time selection.

Implementation details:
- Uses pseudo-instructions that are expanded Post-RA to bitwise operations
- Post-RA expansion in ARMBaseInstrInfo for BUNDLE pseudo-instructions
- Handles scalar integer types, floating-point, and half-precision types
- Handles vector types with NEON when available
- Support for both ARM and Thumb instruction sets (Thumb1 and Thumb2)
- Special handling for Thumb1 which lacks conditional execution
- Comprehensive test coverage including half-precision and vectors

The implementation includes:
- ISelLowering: Custom lowering to CTSELECT pseudo-instructions
- ISelDAGToDAG: Selection of appropriate pseudo-instructions
- BaseInstrInfo: Post-RA expansion of BUNDLE to bitwise instruction sequences

    [3 lines not shown]
DeltaFile
+1,839-0llvm/test/CodeGen/ARM/ctselect-vector.ll
+867-0llvm/test/CodeGen/ARM/ctselect-half.ll
+549-0llvm/test/CodeGen/ARM/ctselect.ll
+311-62llvm/lib/Target/ARM/ARMISelLowering.cpp
+335-2llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+187-0llvm/lib/Target/ARM/ARMInstrInfo.td
+4,088-644 files not shown
+4,187-6910 files

LLVM/project ac82f34clang/docs LanguageExtensions.rst, clang/include/clang/Basic Builtins.td

[ConstantTime][Clang] Add __builtin_ct_select for constant-time selection
DeltaFile
+683-0clang/test/Sema/builtin-ct-select.c
+373-0clang/test/Sema/builtin-ct-select-edge-cases.c
+64-0clang/lib/Sema/SemaChecking.cpp
+44-0clang/docs/LanguageExtensions.rst
+13-0clang/lib/CodeGen/CGBuiltin.cpp
+8-0clang/include/clang/Basic/Builtins.td
+1,185-06 files