[all-commits] [llvm/llvm-project] 8796d3: [MLIR][SparseTensor] Added Sparse Outer Loop Order...

Alexey Bataev via All-commits all-commits at lists.llvm.org
Sun Jun 14 05:10:44 PDT 2026


  Branch: refs/heads/users/alexey-bataev/spr/slp-support-memory-runtime-alias-checks
  Home:   https://github.com/llvm/llvm-project
  Commit: 8796d370aed0153ce884319c2365530e92b9bf5e
      https://github.com/llvm/llvm-project/commit/8796d370aed0153ce884319c2365530e92b9bf5e
  Author: Govind Malasani <gmalasan at andrew.cmu.edu>
  Date:   2026-06-13 (Sat, 13 Jun 2026)

  Changed paths:
    M mlir/include/mlir/Dialect/SparseTensor/Transforms/Passes.h
    M mlir/include/mlir/Dialect/SparseTensor/Transforms/Passes.td
    M mlir/lib/Dialect/SparseTensor/Transforms/Utils/IterationGraphSorter.cpp
    A mlir/test/Dialect/SparseTensor/sparse_loop_ordering.mlir

  Log Message:
  -----------
  [MLIR][SparseTensor] Added Sparse Outer Loop Ordering Strategy (#172198)

This PR builds upon the infrastructure set up for Sparse Tensor Loop
Ordering Heuristics (#154656) and the already existing Dense Outer loop
ordering strategy (#160168).


  Commit: ae1c5074a0c6ec128fe824d456314e547b57165a
      https://github.com/llvm/llvm-project/commit/ae1c5074a0c6ec128fe824d456314e547b57165a
  Author: lijinpei-amd <jinpli at amd.com>
  Date:   2026-06-13 (Sat, 13 Jun 2026)

  Changed paths:
    M mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorCodegen.cpp
    M mlir/test/Dialect/SparseTensor/sparse_pack.mlir

  Log Message:
  -----------
  [mlir][sparse_tensor] Fix out-of-bounds read in SparseAssembleOpConverter (#203289)

The assemble codegen loop iterates over the level rank but asserted on
`getDimShape()[lvl]`, which is sized by the dimension rank. Index the
level shape instead, matching the loop bound and the next line.

Fixes #203225.


  Commit: a72232481fe7d87056dae9b89d8c2580323a9f39
      https://github.com/llvm/llvm-project/commit/a72232481fe7d87056dae9b89d8c2580323a9f39
  Author: dyung <douglas.yung at sony.com>
  Date:   2026-06-13 (Sat, 13 Jun 2026)

  Changed paths:
    M clang/test/Driver/hexagon-toolchain-picolibc.c
    M clang/test/Driver/hip-include-path.hip
    M clang/test/Preprocessor/iwithprefix.c

  Log Message:
  -----------
  Update remaining tests for usage of CLANG_RESOURCE_DIR (#202475)

We would like to enable the clang CMake option CLANG_RESOURCE_DIR on our
build bots, but found that a few tests that need updating since they
make assumptions about compiler paths that are modified when using
CLANG_RESOURCE_DIR. This is the final change to update the remaining 3
test failures we found.

In the previous change (#197154), I added a definition for
`%clang-resource-dir` which contains the path printed by the compiler
when run with `-print-resource-dir`. We pass that value to the remaining
tests where needed through the RUN lines and use that to verify the
correct path rather than just trying to guess at it using a complex
regex.

One exception was a test which uses `-###` which escapes the backslashes
on Windows. For that test I just used tr+sed to escape the backslashes so
that the matching would work in that particular test only.


  Commit: 3a46e59c2bf4db22cc22ef8a92d459c34c696731
      https://github.com/llvm/llvm-project/commit/3a46e59c2bf4db22cc22ef8a92d459c34c696731
  Author: Hubert Tong <hubert.reinterpretcast at gmail.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    A clang/test/CodeGen/ubsan-aggregate-null-align-bounds.c
    R clang/test/CodeGen/ubsan-aggregate-null-align.c

  Log Message:
  -----------
  [NFC][tests] Rename test file and function names to reflect scope/content (#203731)

Rename test file to reflect scope (includes array bounds checking).

Rename test functions for internal convention consistency:
Consistently use "deref" and "subscript" to refer to `*p` and `arr[idx]`
expression forms.


  Commit: e84e480bb5a53c794f303683df6460ddb44bb7ac
      https://github.com/llvm/llvm-project/commit/e84e480bb5a53c794f303683df6460ddb44bb7ac
  Author: Valentin Clement (バレンタイン クレメン) <clementval at gmail.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M flang/lib/Optimizer/Transforms/CUDA/CUFDeviceFuncTransform.cpp
    M flang/test/Fir/CUDA/cuda-device-func-transform.mlir

  Log Message:
  -----------
  Revert "[flang][cuda] Set kernel intent(in) as const __restrict__" (#203734)

Reverts llvm/llvm-project#203652

breaking some downstream cudafor code


  Commit: f7f904f96107dd59a06d8bc58f888befcfafd2b4
      https://github.com/llvm/llvm-project/commit/f7f904f96107dd59a06d8bc58f888befcfafd2b4
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2026-06-13 (Sat, 13 Jun 2026)

  Changed paths:
    A llvm/test/Transforms/SLPVectorizer/X86/reduction-ordered-fadd.ll

  Log Message:
  -----------
  [SLP][NFC]Add a test with miscompiled ordered reductions, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/203738


  Commit: 5db7e5b483a32f37d1d77a6f18d2bc4c59fa460a
      https://github.com/llvm/llvm-project/commit/5db7e5b483a32f37d1d77a6f18d2bc4c59fa460a
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2026-06-13 (Sat, 13 Jun 2026)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/X86/ordered-reduction-replaced.ll
    M llvm/test/Transforms/SLPVectorizer/X86/ordered-reduction-root-deleted.ll
    M llvm/test/Transforms/SLPVectorizer/X86/reduction-ordered-fadd.ll

  Log Message:
  -----------
  [SLP]Keep ordered fadd reductions sequential

tryToReduceOrdered vectorizes reductions that are not associative (e.g. an
fadd with reassoc but without nsz). The accumulation order must be
preserved, but the reduction was costed and emitted with reassoc, and the
whole tree was rotated to memory order by reorderTopToBottom, which can
change the result of the sequential reduction.

Drop reassoc from the flags used to cost and emit the reduction so the
generated llvm.vector.reduce.fadd stays ordered, and drop the top-to-bottom
reorder so the reduced values keep their original accumulation order.

Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/203741


  Commit: 9d43f86e6f302604b109ffa9df7de793aeb801d8
      https://github.com/llvm/llvm-project/commit/9d43f86e6f302604b109ffa9df7de793aeb801d8
  Author: Yingwei Zheng <dtcxzyw2333 at gmail.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M llvm/test/tools/llubi/alloca.ll
    M llvm/test/tools/llubi/attributes.ll
    M llvm/test/tools/llubi/gep.ll
    M llvm/test/tools/llubi/inttoptr.ll
    A llvm/test/tools/llubi/inttoptr_freed.ll
    A llvm/test/tools/llubi/inttoptr_generation.ll
    A llvm/test/tools/llubi/inttoptr_generation2.ll
    A llvm/test/tools/llubi/inttoptr_gep.ll
    A llvm/test/tools/llubi/inttoptr_multiobj.ll
    A llvm/test/tools/llubi/inttoptr_multiobj2.ll
    A llvm/test/tools/llubi/inttoptr_oob.ll
    A llvm/test/tools/llubi/inttoptr_oob2.ll
    M llvm/test/tools/llubi/lib_abort.ll
    M llvm/test/tools/llubi/lib_exit.ll
    M llvm/test/tools/llubi/lib_io.ll
    M llvm/test/tools/llubi/lib_printf_format.ll
    M llvm/test/tools/llubi/lib_terminate.ll
    M llvm/test/tools/llubi/loadstore_be.ll
    M llvm/test/tools/llubi/loadstore_le.ll
    M llvm/test/tools/llubi/metadata.ll
    M llvm/tools/llubi/lib/Context.cpp
    M llvm/tools/llubi/lib/Context.h
    M llvm/tools/llubi/lib/ExecutorBase.cpp
    M llvm/tools/llubi/lib/ExecutorBase.h
    M llvm/tools/llubi/lib/Interpreter.cpp
    M llvm/tools/llubi/lib/Library.cpp
    M llvm/tools/llubi/lib/Value.cpp
    M llvm/tools/llubi/lib/Value.h

  Log Message:
  -----------
  [llubi] Add support for exposed provenance (#200596)

This patch implements the semantics of exposed provenance, as described
in [nikic's RFC draft](https://hackmd.io/@nikic/SJBt4mFCll) and
[Miri](https://doc.rust-lang.org/beta/nightly-rustc/miri/enum.Provenance.html).

The provenance of an inttoptr is marked as "wildcard", which picks one
from previously exposed provenances each time a memory access is
performed. For angelic non-determinism, a snapshot of the exposed
provenance set is recorded when inttoptr executes. When a memory access
is performed, all invalid provenances are masked out. If we fail to pick
one, it is UB.

Since all memory objects in llubi are non-overlapping (i.e., there is at
most one memory object satisfying `Obj->inBounds(Addr)` for each
address), we can determine a unique memory object for a wildcard
provenance when the first memory access is performed.
This matches Miri's behavior. Another variant is to resolve the memory
object when inttoptr executes, which gives a limited provenance set
(implemented in the second commit). See also the comments in nikic's RFC
(`For example, one could limit inttoptr to only recover the provenance
of an object that the address is part of.`).

Another thing to be noted is that `gep inbounds` cannot determine the
associated memory object of a wildcard provenance, because it doesn't
cause UB. Instead, I reuse the Obj field to represent something like
`this pointer has a wildcard provenance, but it is only allowed to use
exposed provenances associated with a specific memory object, when
performing load/store via the pointer`. This is an approximation: we
cannot update the wildcard provenance if the gep is used by an icmp and
a branch.

As we don't support `captures` for now, all checkers just return true.
I'll add more tests in the `captures` patch.


  Commit: 4331c07e8a8d398daf2204b6c4085f992b343308
      https://github.com/llvm/llvm-project/commit/4331c07e8a8d398daf2204b6c4085f992b343308
  Author: William Tran-Viet <wtranviet at proton.me>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M libcxx/include/optional

  Log Message:
  -----------
  [libc++][NFC] Simplify `optional<T>` and `optional<T&>` a bit (#203665)

- Make `optional<T&>`'s iterator base directly from the storage base
instead of inheriting the empty bases, allowing us to remove the
`is_lvalue_reference_v` conditions in the empty bases
- Move the `__is_constructible_for_optional_{meow}` variables closer to
`make_optional` since that's the only place they're really useful for
now
- Change the SFINAE for the iterator availability to use concepts
instead

The above should make it easier to split up in an upcoming patch.


  Commit: 0a2565d7c6dd196eceb8c93befde1150d78790b7
      https://github.com/llvm/llvm-project/commit/0a2565d7c6dd196eceb8c93befde1150d78790b7
  Author: Timm Baeder <tbaeder at redhat.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M clang/lib/AST/ByteCode/InterpBuiltin.cpp

  Log Message:
  -----------
  [clang][bytecode] Use `isSignedType()` in `pushInteger` (#203670)

We need to classify here anyway, so use the information from the
primtype.


  Commit: db210c5e33643a8154329a607b5b6dcd419271df
      https://github.com/llvm/llvm-project/commit/db210c5e33643a8154329a607b5b6dcd419271df
  Author: Shanzhi Chen <chenshanzhi at huawei.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M llvm/include/llvm/Analysis/ProfileSummaryInfo.h

  Log Message:
  -----------
  [NFC] Prefer compile-time branching in function template (#203698)


  Commit: beadaec428a65a901be47964619121cc5b889635
      https://github.com/llvm/llvm-project/commit/beadaec428a65a901be47964619121cc5b889635
  Author: Yingwei Zheng <dtcxzyw2333 at gmail.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M llvm/test/tools/llubi/global_constexpr_initializer.ll
    A llvm/test/tools/llubi/unsupported_constant.ll
    M llvm/tools/llubi/lib/Context.cpp
    M llvm/tools/llubi/lib/Context.h
    M llvm/tools/llubi/lib/Interpreter.cpp
    M llvm/tools/llubi/lib/Value.h

  Log Message:
  -----------
  [llubi] Add support for constant expressions (#203746)

This patch adds support for most kinds of constant expressions, except
for ptrtoint/inttoptr. Casting between pointers and integers is
stateful, so they cannot be cached. I plan to implement them in
subsequent patches. ptrtoaddr is also supported in this patch to block
constant folding.

The logic in `evaluateConstantExpression` duplicates the interpreter's
code in `visit*` methods. But I think it is acceptable. Only the GEP
computation is reused.


  Commit: da2e8c4bef1521a60f2059d68b6625c37a8984ac
      https://github.com/llvm/llvm-project/commit/da2e8c4bef1521a60f2059d68b6625c37a8984ac
  Author: Alexey Bataev <a.bataev at outlook.com>
  Date:   2026-06-14 (Sun, 14 Jun 2026)

  Changed paths:
    M clang/lib/AST/ByteCode/InterpBuiltin.cpp
    A clang/test/CodeGen/ubsan-aggregate-null-align-bounds.c
    R clang/test/CodeGen/ubsan-aggregate-null-align.c
    M clang/test/Driver/hexagon-toolchain-picolibc.c
    M clang/test/Driver/hip-include-path.hip
    M clang/test/Preprocessor/iwithprefix.c
    M flang/lib/Optimizer/Transforms/CUDA/CUFDeviceFuncTransform.cpp
    M flang/test/Fir/CUDA/cuda-device-func-transform.mlir
    M libcxx/include/optional
    M llvm/include/llvm/Analysis/ProfileSummaryInfo.h
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/X86/ordered-reduction-replaced.ll
    M llvm/test/Transforms/SLPVectorizer/X86/ordered-reduction-root-deleted.ll
    A llvm/test/Transforms/SLPVectorizer/X86/reduction-ordered-fadd.ll
    M llvm/test/tools/llubi/alloca.ll
    M llvm/test/tools/llubi/attributes.ll
    M llvm/test/tools/llubi/gep.ll
    M llvm/test/tools/llubi/global_constexpr_initializer.ll
    M llvm/test/tools/llubi/inttoptr.ll
    A llvm/test/tools/llubi/inttoptr_freed.ll
    A llvm/test/tools/llubi/inttoptr_generation.ll
    A llvm/test/tools/llubi/inttoptr_generation2.ll
    A llvm/test/tools/llubi/inttoptr_gep.ll
    A llvm/test/tools/llubi/inttoptr_multiobj.ll
    A llvm/test/tools/llubi/inttoptr_multiobj2.ll
    A llvm/test/tools/llubi/inttoptr_oob.ll
    A llvm/test/tools/llubi/inttoptr_oob2.ll
    M llvm/test/tools/llubi/lib_abort.ll
    M llvm/test/tools/llubi/lib_exit.ll
    M llvm/test/tools/llubi/lib_io.ll
    M llvm/test/tools/llubi/lib_printf_format.ll
    M llvm/test/tools/llubi/lib_terminate.ll
    M llvm/test/tools/llubi/loadstore_be.ll
    M llvm/test/tools/llubi/loadstore_le.ll
    M llvm/test/tools/llubi/metadata.ll
    A llvm/test/tools/llubi/unsupported_constant.ll
    M llvm/tools/llubi/lib/Context.cpp
    M llvm/tools/llubi/lib/Context.h
    M llvm/tools/llubi/lib/ExecutorBase.cpp
    M llvm/tools/llubi/lib/ExecutorBase.h
    M llvm/tools/llubi/lib/Interpreter.cpp
    M llvm/tools/llubi/lib/Library.cpp
    M llvm/tools/llubi/lib/Value.cpp
    M llvm/tools/llubi/lib/Value.h
    M mlir/include/mlir/Dialect/SparseTensor/Transforms/Passes.h
    M mlir/include/mlir/Dialect/SparseTensor/Transforms/Passes.td
    M mlir/lib/Dialect/SparseTensor/Transforms/SparseTensorCodegen.cpp
    M mlir/lib/Dialect/SparseTensor/Transforms/Utils/IterationGraphSorter.cpp
    A mlir/test/Dialect/SparseTensor/sparse_loop_ordering.mlir
    M mlir/test/Dialect/SparseTensor/sparse_pack.mlir

  Log Message:
  -----------
  Rebase

Created using spr 1.3.7


Compare: https://github.com/llvm/llvm-project/compare/7e41e3ab669d...da2e8c4bef15

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list