LLVM/project 1497c92 — llvm/include/llvm/Support KnownFPClass.h, llvm/lib/Analysis ValueTracking.cpp

[KnownFPClass][NFC] Remove isKnownNeverZero helper to encourage proper denormal handling (#236625)

Removes `isKnownNeverZero()`, `isKnownNeverPosZero()`, and
`isKnownNeverNegZero()` which only compare against the literal `+-0.0`,
`+0.0`, and `-0.0` respectively. This encourages the use of
`isKnownNeverLogicalZero(Mode)` and friends which properly account for
the input denormal mode.

If input denormals are properly handled, you can still compare against
`+-0.0` literals via the generic `isKnownNever(fcZero)`.
DeltaFile
+9-9llvm/lib/Support/KnownFPClass.cpp
+1-12llvm/include/llvm/Support/KnownFPClass.h
+3-1llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+1-1llvm/lib/Analysis/ValueTracking.cpp
+14-234 files

LLVM/project 12be482 — llvm/lib/Target/AMDGPU SIInstrInfo.h SIShrinkInstructions.cpp, llvm/test/CodeGen/AMDGPU shrink-instructions-fold-imm-subreg.mir

AMDGPU: Fold global address into subregister use with lo/hi relocation

Split 64-bit relocations into the 32-bit halves when applying a
subregister extract, similar to how immediates are modified when
folding. The same split is applied when 64-bit mov pseudos are
expanded.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+64-42llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+14-9llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
+5-8llvm/test/CodeGen/AMDGPU/shrink-instructions-fold-imm-subreg.mir
+9-0llvm/lib/Target/AMDGPU/SIInstrInfo.h
+92-594 files

LLVM/project 3a025e4 — lldb/include/lldb/Breakpoint ScriptedBreakpointOverrideResolver.h, lldb/include/lldb/Target Target.h

[lldb] Copy valid breakpoint overrides from the dummy target (#235834)

`Target::PrimeFromDummyTarget` copied a breakpoint override into a new target only when `Validate` failed, because an `llvm::Error` converts to true on failure. Overrides registered on the dummy target therefore never reached later targets. Copy the overrides that validate, and log the error of those that don't.

Rename `Validate` to `HasErrors`, still returning an `llvm::Error`, so call sites read the right way round. It now also checks that the override's class exists, so adding an override with a missing class fails with a useful error instead of failing on every matching breakpoint.

Test both: an override on the dummy target applies to targets created later, and `test_bad_values` now covers a missing class.
DeltaFile
+53-11lldb/test/API/functionalities/breakpoint/scripted_bkpt/overrides_resolver/TestOverridesResolver.py
+9-3lldb/source/Breakpoint/ScriptedBreakpointOverrideResolver.cpp
+6-2lldb/source/Target/Target.cpp
+3-2lldb/include/lldb/Target/Target.h
+1-1lldb/include/lldb/Breakpoint/ScriptedBreakpointOverrideResolver.h
+72-195 files

LLVM/project 9191c4d — llvm/lib/Target/AMDGPU SIShrinkInstructions.cpp, llvm/test/CodeGen/AMDGPU shrink-instructions-fold-imm-subreg.mir

AMDGPU: Fix folding 64-bit move imm into subreg use in SIShrinkInstructions

foldImmediates folded the full 64-bit immediate of a move into a
subregister use, rather than the value of the used half. Extract the
immediate value of the used subregister. Global addresses were similarly
broken.

Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+171-0llvm/test/CodeGen/AMDGPU/shrink-instructions-fold-imm-subreg.mir
+13-6llvm/lib/Target/AMDGPU/SIShrinkInstructions.cpp
+184-62 files

LLVM/project 9057710 — .github/workflows libcxx-pr-benchmark.yml libcxx-run-ab-benchmarks.yml, libcxx/utils/ci run-buildbot

[libc++] Produce LNT v5 reports from the A/B benchmark job (#237001)

This patch lifts the LNT v5 report creation into a command-line tool so
that we can call it from the A/B benchmarking job, and upload it as an
artifact. In future PRs we can actually submit those results to LNT.

Assisted by Claude
DeltaFile
+234-0libcxx/utils/ci/lnt/create-lnt-report
+35-110libcxx/utils/ci/lnt/run-benchmarks
+40-2.github/workflows/libcxx-run-ab-benchmarks.yml
+21-6libcxx/utils/ci/lnt/common.py
+12-0libcxx/utils/ci/run-buildbot
+1-0.github/workflows/libcxx-pr-benchmark.yml
+343-1186 files

LLVM/project 21cdeca — llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec load_store_vec_load_seeds.ll load_seeds.ll

[SandboxVec][LoadStoreVec] Update test checks and rename tests (NFC) (#236947)

load_store_vec_load_seeds.ll primarily checks tge LSV starting from
loads, but we are currently using both loads and stores as seeds in the
RUN line. This patch replaces the single RUN line with two RUN lines,
one for loads and one for stores. Also rename it to load_seeds.ll since
load_store_vec is implied by the parent directory.

Also specify the default store seed in load_store_vec.ll RUN line and
rename it to store_seeds.ll.
DeltaFile
+0-815llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+815-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/mixed_types.ll
+0-405llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+405-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/store_seeds.ll
+174-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_seeds.ll
+0-124llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_load_seeds.ll
+1,394-1,3446 files

LLVM/project 738215b — llvm/include/llvm/Support CodeGen.h, llvm/include/llvm/Target TargetOptions.h

IR: Introduce "debugger-tuning" module flag (#235049)

Prepare to replace TargetOptions::DebuggerTuning with a module flag. Unlike 
other TargetOptions recently moved to module flags, debugger tuning is not a
firm ABI property. Mismatches and unrecognized names are tolerated.

Co-authored-by: Claude Sonnet 5 <noreply at anthropic.com>
DeltaFile
+53-0llvm/include/llvm/Support/CodeGen.h
+37-0llvm/test/Linker/module-flags-debugger-tuning.ll
+31-0llvm/test/Verifier/module-flags-debugger-tuning.ll
+31-0llvm/test/Assembler/module-flags-debugger-tuning.ll
+24-0llvm/unittests/TargetParser/TripleTest.cpp
+0-21llvm/include/llvm/Target/TargetOptions.h
+176-216 files not shown
+242-2112 files

LLVM/project 20899a5 — utils/bazel/llvm-project-overlay/libc BUILD.bazel

Fix bazel build.
DeltaFile
+1-0utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+1-01 files

LLVM/project cc17c75 — llvm/lib/CodeGen ImplicitNullChecks.cpp, llvm/test/CodeGen/X86 implicit-null-check-debug-instrs.ll

[CodeGen] Ignore debug instructions in ImplicitNullChecks scan (#232158)

A debug record at the start of the non-null block can consume the
ImplicitNullChecks scan budget and leave an explicit test and branch.

Iterate over top-level non-debug instructions while keeping pseudo
probes in the scan. The regression test uses a scan limit of one to
exercise the boundary with a single `#dbg_value`.
DeltaFile
+36-0llvm/test/CodeGen/X86/implicit-null-check-debug-instrs.ll
+3-1llvm/lib/CodeGen/ImplicitNullChecks.cpp
+39-12 files

LLVM/project 6c0805f — lldb/include/lldb/Target Thread.h, lldb/source/Target Thread.cpp StackFrameList.cpp

[lldb] Keep provider frames out of the base unwinder frame list (#235909)

When a scripted frame provider is loaded, Thread::ClearStackFrames saves
the provider-augmented frame list in m_prev_frames_sp, and the next base
unwinder frame list (ID 0) is created with it as its previous frames.
Once the unwinder list has fetched all its frames, it merges with the
previous list and adopts every previous frame whose StackID matches.
Scripted frames that mirror the CFA and PC of the frames they wrap have
matching StackIDs, so they replace the unwound frames in the unwinder
list. That means the unwinder backtrace shows the scripted frames
instead of the newly unwound ones:

```
(lldb) bt --provider 0
=== Provider 0: Base Unwinder ===
   frame #0: a.out`main at main.c:23:3 [synthetic]
   frame #1: dyld`start + 6652 [synthetic]
```


    [23 lines not shown]
DeltaFile
+8-8lldb/source/Target/StackFrameList.cpp
+9-6lldb/source/Target/Thread.cpp
+11-0lldb/test/API/functionalities/scripted_frame_provider/step_with_type/TestFrameProviderStepping.py
+4-0lldb/include/lldb/Target/Thread.h
+32-144 files

LLVM/project 6f8e500 — llvm/lib/Analysis ValueTracking.cpp, llvm/lib/CodeGen/GlobalISel GISelValueTracking.cpp

[InstCombine] Fix demanded classes for sqrt (#231316)

Fixes https://github.com/llvm/llvm-project/issues/229988

Correctly sets `DemandedSrcMask` for `sqrt` in
`SimplifyDemandedUseFPClass` while taking the denormal mode into
account. Previously a subnormal source that flushes to a demanded zero
result was not demanded, so the source could be dropped.

Also stops inferring that the source cannot be negative for classes that
were demanded. This is a separate pre-existing bug that returned
`poison` where a `-0.0` or `+0.0` result was demanded.

I also made sure `computeKnownFPClass(fcZero)` would add `fcSubnormal`
to `InterestedSrcs` for `sqrt` in `ValueTracking.cpp` and
`GISelValueTracking.cpp`.

AI Disclosure:
I used Claude Opus 5 to help implement the changes and write the tests.
DeltaFile
+319-0llvm/test/Transforms/InstCombine/simplify-demanded-fpclass-sqrt.ll
+30-17llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
+5-2llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+5-2llvm/lib/Analysis/ValueTracking.cpp
+359-214 files

LLVM/project 29497fb — llvm/test/CodeGen/AMDGPU/GlobalISel postlegalizer-combiner-carry-zero.mir, llvm/test/CodeGen/RISCV/GlobalISel double-intrinsics.ll

[GlobalISel] Auto-commute combine patterns

Emit both operand orders for constrained commutative generic match
patterns, including each use of a PatFrag. Skip redundant permutations
and enforce MaxPermutations before allocating expanded alternatives.

Give each permutation its own operand expansions so operand indices
cannot leak between alternatives.

Keep commuted immediate patterns available with constant-to-RHS
canonicalization, and consolidate AMDGPU carry rules while preserving
zero-addend and RHS-first matching.

Make the integer and AMDGPU multiply/select helpers accept either operand
order.

Add emitter documentation and TableGen, MIR, and codegen regressions.
DeltaFile
+114-122llvm/test/CodeGen/RISCV/GlobalISel/double-intrinsics.ll
+203-18llvm/utils/TableGen/GlobalISelCombinerEmitter.cpp
+205-0llvm/test/TableGen/GlobalISelCombinerEmitter/match-table-commute.td
+119-15llvm/test/TableGen/GlobalISelCombinerEmitter/match-table-hoisting.td
+118-0llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizer-combiner-carry-zero.mir
+94-23llvm/test/TableGen/GlobalISelCombinerEmitter/match-table-operand-types.td
+853-17821 files not shown
+1,500-39827 files

LLVM/project 3c3942d — llvm/include/llvm/Support KnownFPClass.h, llvm/lib/Analysis ValueTracking.cpp

[KnownFPClass] Add getEmpty() and use KnownFPClass(APFloat) for FP constants (#236622)

Replaces `Known.setKnownFPClasses(fcNone)` with `Known =
KnownFPClass::getEmpty()`.

Also replaces some uses of `Known |= APFloat.classify()` with `Known |=
KnownFPClass(APFloat)`. This preserves information that is lost in the
conversion to `FPClassTest` (Such as the sign bit).

I plan on removing `void KnownFPClass::setSignBit(std::optional<bool>
SignBit)` since it has poorly defined semantics, and should be replaced
by `signBitMustBeOne`/`signBitMustBeZero` or `copysign` instead.

Follow-up to https://github.com/llvm/llvm-project/pull/236319

AI Disclosure:
I used Claude Opus 5 to help write the changes.
DeltaFile
+9-20llvm/lib/Analysis/ValueTracking.cpp
+6-18llvm/lib/CodeGen/GlobalISel/GISelValueTracking.cpp
+2-3llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+2-0llvm/include/llvm/Support/KnownFPClass.h
+19-414 files

LLVM/project c04ea70 — compiler-rt/test/asan/TestCases intercept-rethrow-exception.cpp throw_call_test.cpp

[asan][test] Guard throw_call_test.cpp on shared_cxxabi, Solaris, and NetBSD (#237024)

After #236664 added explicit `-fsanitize-address-use-after-return=never`
and `-fno-sanitize-address-use-after-scope` runs, `throw_call_test.cpp`
started failing on:

* Toolchains built with static `libc++abi.a` (`!shared_cxxabi`, e.g.
  `Fuchsia-stage2.cmake`), where strong `__cxa_throw` and
  `_Unwind_RaiseException` override ASan's weak interceptors.
* Solaris (#42048) and NetBSD, where `asan_interceptors.h` disables
  `__cxa_throw` interception.

Add `REQUIRES: shared_cxxabi` and `XFAIL` Solaris and NetBSD, matching
`TestCases/intercept-rethrow-exception.cpp`, and update the Solaris
`FIXME` comment in both tests to link #42048.

Assisted-by: Gemini
DeltaFile
+8-0compiler-rt/test/asan/TestCases/throw_call_test.cpp
+1-1compiler-rt/test/asan/TestCases/intercept-rethrow-exception.cpp
+9-12 files

LLVM/project 1f8c108 — utils/bazel/llvm-project-overlay/mlir BUILD.bazel, utils/bazel/llvm-project-overlay/mlir/test BUILD.bazel

[Bazel] Fixes 67a0506 (#237023)

This fixes 67a0506b2285bd4cc8c309fc5611fb4e135b11e8 (#236864).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=67a0506b2285bd4cc8c309fc5611fb4e135b11e8

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+13-0utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel
+1-0utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+14-02 files

LLVM/project f3b720a — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Support mixed-type store vectorization of arbitrary values

vectorizeStores() only handled chains whose stored values were all
consecutive loads or all constants. Any other chain, e.g., storing
function arguments or computed values, was left alone.

Pack such values into a vector with createPack(). For a chain of mixed
types the vector has integer lanes, so each value is first
reinterpreted (bitcast / ptrtoint) as the lanes it occupies with
Reinterpret::reinterpretValue(), and a value spanning several lanes is
inserted lane by lane. The pack is placed right before the vector
store, where every stored value is available. Whether this pays off is
left to the existing cost check in acceptOrRevert().

Chains storing a non-integral pointer are left alone.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+172-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_type_stores.ll
+45-5llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+11-3llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+5-3llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+233-114 files

LLVM/project 4a1927d — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Support mixed-type load vectorization

Remove the restriction that every load in a top-level load chain must
have the vector's element type. A chain of mixed types such as
{i32, float} or {double, i32, i32} is loaded as a vector of integers
(as chosen by VecUtils::getCombinedVectorTypeFor()), each original load
is unpacked from the lanes it occupies, and then reinterpreted back to
its own type with Reinterpret::reinterpretValue().

Chains involving a non-integral pointer are left alone, since such a
pointer cannot be recovered from an integer lane.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+140-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_type_loads.ll
+26-10llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+6-3llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+172-133 files

LLVM/project d17c71f — llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Vectorize store chains whose loads have external uses

vectorizeStores() used to give up on a load-store chain if any of the
loads had a user other than its store. Now that loads of mixed types
can be unpacked from a vector load, vectorize such chains as well: the
loads become a single vector load, and the external users are fed from
the lanes each load occupies, cast back to the load's type if needed.

The unpacking loop of vectorizeLoads() is factored out into
unpackLoads() (along with the canUnpackLoads() check) and shared by
both paths. Chains with a non-integral pointer load that has external
users are still left alone.

Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
DeltaFile
+119-100llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+49-35llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+8-14llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+11-1llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+187-1504 files

LLVM/project 431cfb6 — clang/lib/CodeGen CGHLSLRuntime.cpp, clang/test/CodeGenHLSL/semantics SV_StencilRef.ps.hlsl

[HLSL] Add support for SV_StencilRef
DeltaFile
+75-0llvm/test/CodeGen/DirectX/Metadata/semantic-signatures-stencil-ref-errors.ll
+61-0llvm/test/CodeGen/DirectX/ContainerData/SemanticSignatures-stencil-ref.ll
+54-0clang/test/CodeGenHLSL/semantics/SV_StencilRef.ps.hlsl
+53-0clang/test/SemaHLSL/Semantics/stencilref.ps.hlsl
+30-2clang/lib/CodeGen/CGHLSLRuntime.cpp
+30-0llvm/test/CodeGen/DirectX/ShaderFlags/stencil-ref.ll
+303-29 files not shown
+406-615 files

LLVM/project d62e78b — clang/lib/CodeGen CGHLSLRuntime.h CGHLSLRuntime.cpp, clang/test/CodeGenHLSL/semantics semantic.arbitrary-system-value.hlsl SV_Target.index.ps.hlsl

[HLSL] Complete SV_Target support

Implement the remaining SV_Target rules from the HLSL semantics overview
(wg-hlsl proposal 0040). SV_Target is a pixel shader output of up to 8
render targets, each a scalar or vector of up to four 16- or 32-bit floats,
where arrays are allowed and the semantic index must match the signature
row.

- In SPIR-V, the location of an SV_Target output is its semantic index, as in
  DXC, rather than the next free output location. An array covers the
  consecutive locations of its elements.
- DXIL pixel shader outputs are not indexable, and each render target must be
  in the row of its semantic index. An SV_Target array is therefore split into
  one single-row signature element per render target. This previously hit an
  assertion during signature packing.
- The DirectX backend validates that SV_Target elements use 16- or 32-bit
  floating-point components.

Signature elements now also take their semantic kind from the interpretation

    [4 lines not shown]
DeltaFile
+71-24clang/lib/CodeGen/CGHLSLRuntime.cpp
+64-0clang/test/CodeGenHLSL/semantics/SV_Target.index.ps.hlsl
+52-0clang/test/SemaHLSL/Semantics/target.types.hlsl
+14-0clang/test/CodeGenHLSL/semantics/semantic.arbitrary-system-value.hlsl
+13-0llvm/test/CodeGen/DirectX/Metadata/semantic-signatures-errors.ll
+4-2clang/lib/CodeGen/CGHLSLRuntime.h
+218-263 files not shown
+227-319 files

LLVM/project fa27ad1 — libclc/opencl/lib/spirv/vulkan CMakeLists.txt

[libclc]: add common/smoothstep to spirv/vulkan (#236710)
DeltaFile
+1-0libclc/opencl/lib/spirv/vulkan/CMakeLists.txt
+1-01 files

LLVM/project 5ef39b6 — compiler-rt/test/asan/TestCases intercept-rethrow-exception.cpp throw_call_test.cpp

[spr] update

Created using spr 2.0.0-beta.2
DeltaFile
+8-0compiler-rt/test/asan/TestCases/throw_call_test.cpp
+1-1compiler-rt/test/asan/TestCases/intercept-rethrow-exception.cpp
+9-12 files

LLVM/project 259e43d — mlir/lib/Conversion/ArithToEmitC ArithToEmitC.cpp, mlir/lib/Conversion/ArithToLLVM ArithToLLVM.cpp

[mlir][arith] Add overflow<zero> to arith.remsi

Define INT_MIN % -1 as zero when overflow<zero> is set, while keeping
this case undefined by default with no additional LLVM runtime checks.

Guard flagged remainders in LLVM and EmitC lowering. Preserve the
zero result through integer narrowing and WebAssembly raising, and
update folding, speculation, operation documentation, and tests.

Tested: 12 affected lit test files.
DeltaFile
+60-0mlir/test/Dialect/Arith/canonicalize.mlir
+59-0mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir
+49-2mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
+44-1mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
+40-0mlir/test/Conversion/ArithToEmitC/arith-to-emitc.mlir
+34-0mlir/test/Conversion/ArithToSPIRV/arith-to-spirv.mlir
+286-313 files not shown
+481-1719 files

LLVM/project 285a17f — clang/test/CodeGenHLSL/semantics SV_PrimitiveID.ps.hlsl, clang/test/SemaHLSL/Semantics primitiveid.ps.errors.hlsl

[HLSL] Add support for SV_PrimitiveID (#236260)

Resolves: https://github.com/llvm/llvm-project/issues/136976

Assisted by: Claude Opus 5.5
DeltaFile
+77-0llvm/test/CodeGen/DirectX/Metadata/semantic-signatures-primitive-id-errors.ll
+49-0clang/test/CodeGenHLSL/semantics/SV_PrimitiveID.ps.hlsl
+49-0llvm/test/CodeGen/DirectX/ContainerData/SemanticSignatures-primitive-id.ll
+36-0clang/test/SemaHLSL/Semantics/primitiveid.ps.errors.hlsl
+35-0llvm/test/CodeGen/SPIRV/semantics/primitive-id.ps.ll
+35-0llvm/test/CodeGen/DirectX/Metadata/semantic-signatures-primitive-id.ll
+281-08 files not shown
+389-714 files

LLVM/project 67a0506 — mlir/lib/Dialect/Ptr/IR PtrDialect.cpp, mlir/test/Dialect/Ptr type-offset.mlir

[mlir][ptr] Use allocation size for type offsets (#236864)

Return the allocation stride from `ptr::TypeOffsetOp::getTypeSize()` so
the C++ query agrees with the operation's element-offset semantics and
its GEP-based lowering. For example, `i24` occupies 3 storage bytes but
has a 4-byte allocation stride under the default data layout.

Assisted-by: Codex / GPT-6
DeltaFile
+50-0mlir/test/Dialect/Ptr/type-offset.mlir
+47-0mlir/test/lib/Dialect/Ptr/TestTypeOffset.cpp
+12-0mlir/test/lib/Dialect/Ptr/CMakeLists.txt
+3-4mlir/lib/Dialect/Ptr/IR/PtrDialect.cpp
+2-0mlir/tools/mlir-opt/mlir-opt.cpp
+1-0mlir/test/lib/Dialect/CMakeLists.txt
+115-41 files not shown
+116-47 files

LLVM/project a49de64 — mlir/test/python multithreaded_tests.py, mlir/test/python/dialects python_test.py

[MLIR][Python] Fix stale multithreaded_tests.py

This test only runs on free-threaded CPython, so it rotted unnoticed. On
3.14t it failed every test and then aborted. Fix it:

- Drop calls to live-operation APIs removed in #155114.
- Compare live contexts against a pre-test baseline, not 0.
- Restore the builtin RankedTensorType caster after binding
  TestIntegerRankedTensorType, which hijacked it and caused the abort
  (the abort itself is fixed in #237010).
- Only collect test functions defined in each module.
- Skip testMatchInterfaceEnumReplaceAttributeBuilder, which replaces a
  global attribute builder used by testMatchInterfaceEnum.
- Without TSAN, skip the xfail list and the np_to_memref tests, which hit
  a ctypes race (python/cpython#127945) nondeterministically.
DeltaFile
+61-6mlir/test/python/multithreaded_tests.py
+10-0mlir/test/python/lib/PythonTestModuleNanobind.cpp
+2-2mlir/test/python/dialects/python_test.py
+73-83 files

LLVM/project 7fb5748 — llvm/lib/CodeGen/GlobalISel CombinerHelper.cpp, llvm/test/CodeGen/AArch64 hadd-combine.ll fpclamptosat_vec.ll

[GlobalISel] Canonicalize more constants

Move scalar constants behind casts and copies, and vector splats, to
the RHS of commutative operations. Keep two constant operands in their
existing order.

Retain commuted identity coverage for casts and splats that constant
folding cannot simplify, and update affected AArch64 and AMDGPU output.
DeltaFile
+18-38llvm/test/CodeGen/AArch64/selectcc-to-shiftand.ll
+44-0llvm/test/CodeGen/AArch64/GlobalISel/combine-commuted-constant-identity.mir
+8-35llvm/test/CodeGen/AArch64/fpclamptosat_vec.ll
+20-20llvm/test/CodeGen/AMDGPU/v_sat_pk_u8_i16.ll
+4-8llvm/test/CodeGen/AArch64/hadd-combine.ll
+9-2llvm/lib/CodeGen/GlobalISel/CombinerHelper.cpp
+103-1037 files not shown
+121-12113 files

LLVM/project 0e4ca00 — llvm/test/CodeGen/AMDGPU bfi_int.ll div_i128.ll, llvm/test/CodeGen/AMDGPU/GlobalISel cvt_f32_ubyte.ll xnor.ll

[GlobalISel] Fixup commuted combine matching

Match the subtraction on either side of (A-C1)+C2. Check constants and
use counts through the matched operands.

Look through single-use copies when unmerging constants to avoid extra
AMDGPU materializations. Preserve shared constants and copies, physical
register copies, and constant-fold barriers.

Cover commuted subtraction and copied constants in MIR tests, and update
affected AMDGPU assembly checks.
DeltaFile
+142-0llvm/test/CodeGen/AMDGPU/GlobalISel/regbankcombiner-unmerge-constant.mir
+61-66llvm/test/CodeGen/AMDGPU/fptoi.i128.ll
+55-34llvm/test/CodeGen/AMDGPU/GlobalISel/xnor.ll
+34-42llvm/test/CodeGen/AMDGPU/div_i128.ll
+18-56llvm/test/CodeGen/AMDGPU/bfi_int.ll
+26-30llvm/test/CodeGen/AMDGPU/GlobalISel/cvt_f32_ubyte.ll
+336-22814 files not shown
+463-37620 files

LLVM/project 54af028 — llvm/test/CodeGen/AMDGPU/GlobalISel postlegalizer-combiner-carry-zero.mir, llvm/test/CodeGen/RISCV/GlobalISel double-intrinsics.ll

[GlobalISel] Auto-commute combine patterns

Emit both operand orders for constrained commutative generic match
patterns, including each use of a PatFrag. Skip redundant permutations
and enforce MaxPermutations before allocating expanded alternatives.

Give each permutation its own operand expansions so operand indices
cannot leak between alternatives.

Keep commuted immediate patterns available with constant-to-RHS
canonicalization, and consolidate AMDGPU carry rules while preserving
zero-addend and RHS-first matching.

Make the integer and AMDGPU multiply/select helpers accept either operand
order.

Add emitter documentation and TableGen, MIR, and codegen regressions.
DeltaFile
+114-122llvm/test/CodeGen/RISCV/GlobalISel/double-intrinsics.ll
+190-18llvm/utils/TableGen/GlobalISelCombinerEmitter.cpp
+205-0llvm/test/TableGen/GlobalISelCombinerEmitter/match-table-commute.td
+119-15llvm/test/TableGen/GlobalISelCombinerEmitter/match-table-hoisting.td
+118-0llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizer-combiner-carry-zero.mir
+94-23llvm/test/TableGen/GlobalISelCombinerEmitter/match-table-operand-types.td
+840-17820 files not shown
+1,452-39526 files

LLVM/project fa01dde — mlir/lib/Conversion/ArithToEmitC ArithToEmitC.cpp, mlir/lib/Conversion/ArithToLLVM ArithToLLVM.cpp

[mlir][arith] Add overflow<zero> to arith.remsi

Define INT_MIN % -1 as zero when overflow<zero> is set, while keeping
this case undefined by default with no additional LLVM runtime checks.

Guard flagged remainders in LLVM and EmitC lowering. Preserve the
zero result through integer narrowing and WebAssembly raising, and
update folding, speculation, operation documentation, and tests.

Tested: 15 affected lit test files.
DeltaFile
+69-0mlir/test/Transforms/loop-invariant-code-motion.mlir
+60-0mlir/test/Dialect/Arith/canonicalize.mlir
+59-0mlir/test/Conversion/ArithToLLVM/arith-to-llvm.mlir
+49-2mlir/lib/Conversion/ArithToLLVM/ArithToLLVM.cpp
+47-0mlir/test/Integration/Dialect/Arith/CPU/test-remsi-overflow.mlir
+44-1mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
+328-316 files not shown
+604-1722 files