LLVM/project 297fe1ecompiler-rt/test/asan/TestCases invalid-pointer-pairs-vector-extract.cpp, llvm/lib/Transforms/Instrumentation AddressSanitizer.cpp

[ASan] Correctly handle vectorized pointer sub/cmp for `invalid-pointer-pair` (#213546)

Before this PR, asan will treat vector operands just like pointer and
pass it to `__sanitizer_ptr_sub/__sanitizer_ptr_cmp(i64, i64)`,
which leads to assertion failure because it doesn't matches the needed
parameter type.

This PR extracts vector's elements and creates runtime call for each
pair of them.

Closes #212453 .
DeltaFile
+28-7llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+30-0llvm/test/Instrumentation/AddressSanitizer/asan-detect-invalid-pointer-pair.ll
+0-6compiler-rt/test/asan/TestCases/invalid-pointer-pairs-vector-extract.cpp
+58-133 files

LLVM/project d2adf78mlir/lib/Dialect/LLVMIR/IR NVVMDialect.cpp, mlir/test/Target/LLVMIR/nvvm tcgen05-mma-tensor-ti16.mlir tcgen05-mma-ws-shared-ti16.mlir

[MLIR][NVVM] Support kind::ti16 for tcgen05.mma Ops (#216588)

This change adds `kind::ti16` support for tcgen05.mma MLIR Ops.
DeltaFile
+30-4mlir/lib/Dialect/LLVMIR/IR/NVVMDialect.cpp
+21-0mlir/test/Target/LLVMIR/nvvm/tcgen05-mma-ws-shared-ti16.mlir
+21-0mlir/test/Target/LLVMIR/nvvm/tcgen05-mma-ws-tensor-ti16.mlir
+21-0mlir/test/Target/LLVMIR/nvvm/tcgen05-mma-ws-sp-tensor-ti16.mlir
+21-0mlir/test/Target/LLVMIR/nvvm/tcgen05-mma-ws-sp-shared-ti16.mlir
+17-0mlir/test/Target/LLVMIR/nvvm/tcgen05-mma-tensor-ti16.mlir
+131-46 files not shown
+202-1112 files

LLVM/project 2075bfeflang/lib/Utils CMakeLists.txt

[flang][NFC] Fix BUILD_SHARED_LIBS build of FortranUtils (#217312)

[5ee2778b6072](https://github.com/llvm/llvm-project/commit/5ee2778b60725219579eb6d439e6b250c2ff1f85)
("[flang][OpenMP] Reuse canonical default mapper names for nested
mappings", [#212251](https://github.com/llvm/llvm-project/pull/212251))
added calls to `fir::NameUniquer::deconstruct()` and
`fir::NameUniquer::doGenerated()` in `flang/lib/Utils/OpenMP.cpp`, but
did not add the library defining them, `FIRSupport`, to `FortranUtils`'
`LINK_LIBS`.

Assisted-by: AI
DeltaFile
+1-0flang/lib/Utils/CMakeLists.txt
+1-01 files

LLVM/project 9858b9bllvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/X86 setcc-logic.ll

[DAG] Fold pow2 masked bittest comparisons (#216302)

Implements logic to merge bittest comparisons in `foldLogicOfSetCCs` .

Equivalent to the fold done in `foldLogOpOfMaskedICmps`.

Fold is valid when `LL1` and `RL1` are powers of 2.
```cpp
(and (setne (and X, LL1), 0), (setne (and X, RL1), 0)) --> (seteq (and X, (LL1|RL1)), (LL1|RL1))
(or  (seteq (and X, LL1), 0), (seteq (and X, RL1), 0)) --> (setne (and X, (LL1|RL1)), (LL1|RL1))
```

Fixes #214772 .
DeltaFile
+133-0llvm/test/CodeGen/X86/setcc-logic.ll
+20-0llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+153-02 files

LLVM/project c6a5dd5llvm/lib/Transforms/Vectorize VPlanTransforms.cpp LoopVectorize.cpp, llvm/test/Transforms/LoopVectorize/VPlan vplan-print-before-after-all.ll

[VPlan] Split handleEarlyExits into countable and uncountable passes. NFC (#206017)

This allows us to remove UncountableExitStyle::NoUncountableExit, and
isolate it to just the uncountable exit path. This should make it easier
to choose a style from within VPlan alone later on.

This also allows us to plug UncountableExitStyle into a TTI hook or CLI
flag eventually, as I don't think we want to expose NoUncountableExit.
DeltaFile
+6-29llvm/lib/Transforms/Vectorize/VPlanConstruction.cpp
+16-13llvm/lib/Transforms/Vectorize/VPlanTransforms.h
+13-10llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+10-7llvm/unittests/Transforms/Vectorize/VPlanTestBase.h
+12-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+1-1llvm/test/Transforms/LoopVectorize/VPlan/vplan-print-before-after-all.ll
+58-621 files not shown
+58-637 files

LLVM/project a2a9b2alibc/src/__support/math fminf128.h fmaxf128.h, libc/test/shared shared_math_test.cpp shared_math_constexpr_test.cpp

[libc] Modify `fmaxf128` and `fminf128` to use emulated Float128 type  (#216575)
DeltaFile
+4-7libc/src/__support/math/fminf128.h
+4-7libc/src/__support/math/fmaxf128.h
+4-5libc/test/shared/shared_math_constexpr_test.cpp
+4-4libc/test/shared/shared_math_test.cpp
+6-2utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+6-0utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
+28-2526 files not shown
+92-5932 files

LLVM/project 288fe8allvm/utils/gn/secondary/llvm/lib/CodeGen/GlobalISel BUILD.gn

[gn] Make GlobalISel depend on SelectionDAG (#217335)

This dependency has been present in the CMake build for many years.
Suddenly, a bunch of binaries (e.g. llvm-extract) stopped linking
without it, so add it to the GN build too.
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/lib/CodeGen/GlobalISel/BUILD.gn
+1-01 files

LLVM/project 6719148llvm/utils/gn/secondary/llvm/test BUILD.gn, llvm/utils/gn/secondary/llvm/unittests/Analysis BUILD.gn

[gn build] Port ab547095ead5 (#217332)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/Analysis/BUILD.gn
+1-0llvm/utils/gn/secondary/llvm/test/BUILD.gn
+2-02 files

LLVM/project 4ea61aellvm/utils/gn/secondary/llvm/unittests/ObjectYAML BUILD.gn

[gn build] Port 61036c3361ce (#217331)
DeltaFile
+1-0llvm/utils/gn/secondary/llvm/unittests/ObjectYAML/BUILD.gn
+1-01 files

LLVM/project 202ece6mlir/include/mlir/Dialect/SPIRV/Transforms SPIRVConversion.h, mlir/lib/Conversion/VectorToSPIRV VectorToSPIRV.cpp

[mlir][spirv] Add in-bounds access chain conversion (#216984)

Use spirv.InBoundsAccessChain for static StorageBuffer accesses whose
linearized range fits the declared SPIR-V object.

Keep plain access chains for dynamic layouts and packed sub-16-bit
storage.
DeltaFile
+73-3mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp
+17-6mlir/test/Conversion/VectorToSPIRV/vector-to-spirv.mlir
+8-8mlir/test/Conversion/ConvertToSPIRV/memref.mlir
+14-0mlir/include/mlir/Dialect/SPIRV/Transforms/SPIRVConversion.h
+6-6mlir/test/Conversion/MemRefToSPIRV/memref-to-spirv.mlir
+6-6mlir/lib/Conversion/VectorToSPIRV/VectorToSPIRV.cpp
+124-299 files not shown
+149-5415 files

LLVM/project 3cc45b4clang/docs/analyzer checkers.rst

Reword the cfg-lifetime option text.
DeltaFile
+6-4clang/docs/analyzer/checkers.rst
+6-41 files

LLVM/project 2f7fc25llvm/lib/Transforms/Vectorize LoopVectorize.cpp VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize early_exit_combined_exits.ll early_exit_combined_exits_epilogue.ll

Address comments
DeltaFile
+73-0llvm/test/Transforms/LoopVectorize/early_exit_combined_exits_epilogue.ll
+39-0llvm/test/Transforms/LoopVectorize/early_exit_combined_exits.ll
+20-15llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+7-7llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+7-6llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+2-2llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
+148-302 files not shown
+150-328 files

LLVM/project 98205aaclang/lib/AST ExprConstant.cpp, clang/lib/AST/ByteCode InterpBuiltin.cpp

[X86][Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow SSE/AVX FP2INT conversion intrinsics to be used in constexpr (#214611)

Adds constexpr support for below builtins,
_mm_cvtss_si32
_mm_cvt_ss2si
_mm_cvtss_si64
_mm_cvtps_pi32
_mm_cvt_ps2pi

_mm_cvttss_si32
_mm_cvtt_ss2si
_mm_cvttss_si64
_mm_cvttps_pi32
_mm_cvtt_ps2pi

_mm_cvtps_pi16
_mm_cvtps_pi8

_mm_cvtpd_epi32

    [24 lines not shown]
DeltaFile
+79-0clang/lib/AST/ByteCode/InterpBuiltin.cpp
+67-0clang/lib/AST/ExprConstant.cpp
+21-42clang/lib/Headers/xmmintrin.h
+19-10clang/lib/Headers/emmintrin.h
+12-16clang/lib/Headers/avxintrin.h
+12-0clang/test/CodeGen/X86/sse-builtins.c
+210-685 files not shown
+238-7211 files

LLVM/project 4f0d299clang/docs/analyzer checkers.rst

Add new example for dereference in return statement.
DeltaFile
+10-0clang/docs/analyzer/checkers.rst
+10-01 files

LLVM/project ee68599llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AMDGPU srem64.ll

[DAGCombine] Push freeze through sra (#208749)

This no longer causes regressions (and improves some cases), so do it.
DeltaFile
+125-123llvm/test/CodeGen/AMDGPU/srem64.ll
+9-12llvm/test/CodeGen/X86/freeze-binary.ll
+4-8llvm/test/CodeGen/X86/select-constant-xor.ll
+3-3llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+141-1464 files

LLVM/project 238981eorc-rt/include/orc-rt Session.h, orc-rt/lib/executor Session.cpp

[orc-rt] Make the Session attach preconditions a contract (#217325)

Session::attach silently dropped the attach if the Session was already
attached, or if a detach or shutdown had been requested, leaving the
ControllerAccess constructed but never connected or notified and giving
the caller no indication. There is no coherent alternative behaviour --
a detach may be arbitrarily far along by then -- so document the
precondition and assert it instead.

Also make Session::detach pass nullptr to proceedToDetach from its
Start-state branch, asserting that no ControllerAccess is attached, to
match Session::shutdown on the same path.

A TODO covers what to do about contract violations in release builds.
DeltaFile
+17-6orc-rt/lib/executor/Session.cpp
+10-0orc-rt/include/orc-rt/Session.h
+27-62 files

LLVM/project ff57194libc/shared/math lroundf128.h llroundf128.h, libc/src/__support/math lroundf128.h llroundf128.h

[libc] Make `lroundf128` and `llroundf128` use the emulated float128 type (#216829)
DeltaFile
+5-8libc/src/__support/math/lroundf128.h
+5-8libc/src/__support/math/llroundf128.h
+6-2utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+0-6libc/shared/math/lroundf128.h
+0-6libc/shared/math/llroundf128.h
+6-0utils/bazel/llvm-project-overlay/libc/test/src/math/smoke/BUILD.bazel
+22-3025 files not shown
+87-5531 files

LLVM/project 59135ddllvm/test/Transforms/SimplifyCFG fcmp-branch-phi-to-select.ll, llvm/test/Transforms/SimplifyCFG/X86 fcmp-branch-phi-to-select.ll

Address comments 1
DeltaFile
+37-32llvm/test/Transforms/SimplifyCFG/fcmp-branch-phi-to-select.ll
+59-0llvm/test/Transforms/SimplifyCFG/X86/fcmp-branch-phi-to-select.ll
+96-322 files

LLVM/project a84ff9cflang/test/Integration/PowerPC ppc-vec-convert.f90 ppc-vec-shift-be-le.f90, flang/test/Lower/PowerPC ppc-vec-convert.f90 ppc-vec-shift-be-le.f90

[Flang] Move integration Lit tests to the right directory, NFC

Flang unit tests that involve multiple stages of the compiler are
intended to be placed in flang/test/Integration. However, many existing
unit tests meeting this condition are currently located in the Lower
subdirectory.

This patch moves all tests in Lower that emit LLVM IR from Fortran or
run the FIR MLIR lowering pipeline via `tco` to Integration, and adds the
corresponding notice at the top of each file.

Assisted-by: Claude Opus 4.8.
DeltaFile
+1,709-0flang/test/Integration/PowerPC/ppc-mma-outer-product-1.f90
+0-1,701flang/test/Lower/PowerPC/ppc-mma-outer-product-1.f90
+1,420-0flang/test/Integration/PowerPC/ppc-vec-shift-be-le.f90
+0-1,412flang/test/Lower/PowerPC/ppc-vec-shift-be-le.f90
+1,349-0flang/test/Integration/PowerPC/ppc-vec-convert.f90
+0-1,342flang/test/Lower/PowerPC/ppc-vec-convert.f90
+4,478-4,455141 files not shown
+17,775-17,197147 files

LLVM/project f6f87b9orc-rt/include/orc-rt Session.h, orc-rt/lib/executor InProcessControllerAccess.cpp Session.cpp

[orc-rt] Report the disconnection mode to Session clients (#217236)

ControllerAccess::notifyDisconnected now takes an Error describing how
the controller connection ended: success if the disconnection was
orderly, otherwise an Error describing what went wrong. A
ControllerAccess passes its terminal error here rather than to
reportError; with no on-disconnect handler installed the Session
forwards it to the error reporter.

Session::setOnDisconnect installs that handler. It is called exactly
once as the Session detaches, including on a Session that never attached
a controller (reporting success), so a client can use it both to record
the Session's result and to decide whether to shut down.
DeltaFile
+262-8orc-rt/test/unit/SessionTest.cpp
+90-3orc-rt/include/orc-rt/Session.h
+37-5orc-rt/lib/executor/Session.cpp
+1-1orc-rt/lib/executor/InProcessControllerAccess.cpp
+390-174 files

LLVM/project dd53a94clang/lib/AST/ByteCode DynamicAllocator.cpp Compiler.cpp

[clang][bytecode] Move `Descriptor` metadata to `Block` (#217280)

The metadata in `Descriptor`s was only ever used for "toplevel"
descriptors, i.e. never for fields or array elements. Those are also the
descriptors we allocate into `Block`s though, so move the metadata there
and save some space in `Descriptor`.
DeltaFile
+52-56clang/lib/AST/ByteCode/Program.cpp
+37-37clang/lib/AST/ByteCode/InterpBlock.h
+32-41clang/lib/AST/ByteCode/Descriptor.cpp
+14-26clang/lib/AST/ByteCode/Descriptor.h
+10-17clang/lib/AST/ByteCode/Compiler.cpp
+6-10clang/lib/AST/ByteCode/DynamicAllocator.cpp
+151-18713 files not shown
+183-22419 files

LLVM/project 54702ffllvm/lib/Target/X86 X86ISelDAGToDAG.cpp, llvm/test/CodeGen/X86 urem-vector-lkk.ll lea-opt.ll

[X86] Fold `B + (-C)*A` into `neg + lea` (#215145)

Closes: #37287
DeltaFile
+266-0llvm/test/CodeGen/X86/neg-shl-lea.ll
+57-16llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+49-0llvm/test/CodeGen/X86/neg-shl-lea-32.ll
+22-18llvm/test/CodeGen/X86/lea-opt.ll
+6-6llvm/test/CodeGen/X86/urem-vector-lkk.ll
+2-4llvm/test/CodeGen/X86/apx/ndd-neg-addr-index.ll
+402-442 files not shown
+408-498 files

LLVM/project d97bf43flang/test/Fir omp-declare-target-data.fir, flang/test/Lower/OpenMP declare-target-func-and-subr.f90

[MLIR][OpenMP] DeclareTargetInterface and DeclareTargetAttr cleanup, NFCI

The changes introduced by this patch are intended to avoid triggering
multiple by name lookups to the "omp.declare_target" attribute every
time any data from the `DeclareTargetInterface` is queried, remove the
need for keeping multiple default values for the same data, clean up
the assembly format and generally improve the usage of the interface.

List of changes:
- `DeclareTargetInterface` only provides `setDeclareTarget` and
  `getDeclareTarget` methods to handle the "omp.declare_target"
  attribute, maintaining a single canonical way of accessing it.
- `DeclareTargetAttr` provides direct access to the capture clause and
  device type enums, rather than wrapping them into an `Attribute`.
  These are now mandatory as well. Both changes together make accessing
  them more straightforward and simplify the attribute representation.
DeltaFile
+44-44mlir/test/Dialect/OpenMP/mark-declare-target.mlir
+15-60mlir/include/mlir/Dialect/OpenMP/OpenMPOpsInterfaces.td
+30-30mlir/test/Dialect/OpenMP/attr.mlir
+23-23flang/test/Lower/OpenMP/declare-target-func-and-subr.f90
+22-22flang/test/Fir/omp-declare-target-data.fir
+25-19mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+159-19857 files not shown
+411-43263 files

LLVM/project abea6f7mlir/include/mlir/Dialect/OpenMP OpenMPDialect.td, mlir/lib/Dialect/OpenMP/IR OpenMPDialect.cpp

[MLIR][OpenMP] Add verification for DeclareTargetInterface

This patch introduces checks to ensure the "omp.declare_target"
attribute is only attached to `DeclareTargetInterface` operations, it is
always the right type attribute and its properties do not conflict with
the operation they are attached to.
DeltaFile
+42-0mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+28-0mlir/test/Dialect/OpenMP/invalid-interface.mlir
+0-18mlir/test/Dialect/OpenMP/attr.mlir
+1-0mlir/include/mlir/Dialect/OpenMP/OpenMPDialect.td
+71-184 files

LLVM/project 779cfd5flang/test/Lower/OpenMP declare-target-implicit-func-and-subr-cap-enter.f90 declare-target-data.f90, mlir/lib/Dialect/OpenMP/Transforms MarkDeclareTarget.cpp

[MLIR][OpenMP] Support calls added between MarkDeclareTarget runs (#214185)

Currently, if there are multiple executions of the `MarkDeclareTarget`
pass in a compiler pipeline and somewhere between both runs function
calls get added to a non-declare_target function that was marked as such
implicitly, potential changes to the `device_type` won't get propagated.

This is because we can't distinguish between a user-specified
`declare_target` function attribute and one added by that pass. This
patch addresses this by adding a new parameter to `DeclareTargetAttr`
that is used by that pass to know whether new `declare_target`
information could be propagated to it.

The `automap` and `implicit` parameters are given default values to
simplify the representation of these attributes.
DeltaFile
+62-40mlir/test/Dialect/OpenMP/mark-declare-target.mlir
+25-47mlir/lib/Dialect/OpenMP/Transforms/MarkDeclareTarget.cpp
+23-23flang/test/Lower/OpenMP/declare-target-func-and-subr.f90
+21-21flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap.f90
+19-19flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap-enter.f90
+19-19flang/test/Lower/OpenMP/declare-target-data.f90
+169-16912 files not shown
+221-20618 files

LLVM/project af19308flang/test/Integration/OpenMP function-filtering-2.f90, flang/test/Lower/OpenMP declare-target-implicit-tarop-cap.f90 declare-target-implicit-func-and-subr-cap-enter.f90

[Flang][OpenMP] Improve implicit declare_target propagation (#214184)

After starting to run the `MarkDeclareTarget` pass later in the
pipeline, some limitations of its original implementation started to be
hit; specifically, some calls being missed could result in an overly
restrictive marking that would cause the `HostOpFiltering` pass to
remove reachable device code.

This patch aims to address these problems by making the following
changes:
- It makes sure to mark functions in every `RecipeInterface` op pointed
to by OpenMP operations.
- It recursively propagates and combines declare_target information from
target regions and explicitly set declare_target functions to unmarked
functions, but it never modifies explicitly marked functions.
- External and public functions can now only be marked with
`device_type(any)`. Before, marking them as `nohost` or `host` was
possible, but without the ability to see all users we can't give such
guarantees.

    [6 lines not shown]
DeltaFile
+267-124mlir/lib/Dialect/OpenMP/Transforms/MarkDeclareTarget.cpp
+200-187flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap.f90
+363-0mlir/test/Dialect/OpenMP/mark-declare-target.mlir
+174-161flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap-enter.f90
+86-73flang/test/Lower/OpenMP/declare-target-implicit-tarop-cap.f90
+46-44flang/test/Integration/OpenMP/function-filtering-2.f90
+1,136-5897 files not shown
+1,208-60613 files

LLVM/project 79ec8e3flang/include/flang/Optimizer/OpenMP Passes.td, flang/lib/Optimizer/OpenMP DeleteUnreachableTargets.cpp

[Flang][OpenMP] Remove the DeleteUnreachableTargets pass (#214183)

The `DeleteUnreachableTargets` pass was initially added to work around a
problem caused by the interaction between the function filtering and
host op filtering passes and generic MLIR optimizations.

Specifically, by running function and host op filtering before these
optimizations, we would lose the ability to detect unreachable
`omp.target` operations when compiling for the device. This would cause
GPU kernels being created for them, for which no host counterpart
existed.

By now having moved both passes towards the end of the compilation
pipeline, after FIR to LLVM lowering, removal of unreachable host and
device code is no longer impacted by them. This makes the
`DeleteUnreachableTargets` pass redundant.
DeltaFile
+0-322flang/test/Transforms/OpenMP/delete-unreachable-targets.mlir
+271-0flang/test/Integration/OpenMP/target-dead-code.f90
+0-88flang/test/Lower/OpenMP/target-dead-code.f90
+0-76flang/lib/Optimizer/OpenMP/DeleteUnreachableTargets.cpp
+0-12flang/include/flang/Optimizer/OpenMP/Passes.td
+0-3flang/lib/Optimizer/Passes/Pipelines.cpp
+271-5011 files not shown
+271-5027 files

LLVM/project a5bb77fflang/lib/Optimizer/OpenMP UnimplementedDeviceCheck.cpp FunctionFiltering.cpp, flang/test/Transforms omp-function-filtering-todo.mlir

[Flang][MLIR][OpenMP] Move function filtering to the omp dialect (#214182)

The `FunctionFilteringPass`, which removes host-only functions when
compiling for an OpenMP target device, is currently defined only for
Flang. However, it implements logic that would generally be useful for
other frontends that can generate OpenMP offloading code. This patch
makes that transition by implementing the following changes:
- It rewrites the `FunctionFilteringPass` to work on lower level non-FIR
MLIR modules.
- It splits off preexisting logic to check for not-yet-implemented
target device features during function filtering to its own pass and it
improves context detection to properly diagnostic only device code.
- It delays function filtering to run at the end of the pipeline, as
well as the `MarkDeclareTargetPass`. This will enable the latter to run
only once in the pipeline after the `UnimplementedDeviceCheckPass`
becomes no longer necessary.

One side effect of these changes is that delaying the filtering will
cause all following passes to process host functions that are eventually

    [3 lines not shown]
DeltaFile
+0-155flang/lib/Optimizer/OpenMP/FunctionFiltering.cpp
+152-0mlir/test/Dialect/OpenMP/function-filter.mlir
+0-137flang/test/Transforms/OpenMP/function-filtering.mlir
+109-0mlir/lib/Dialect/OpenMP/Transforms/FunctionFiltering.cpp
+98-0flang/lib/Optimizer/OpenMP/UnimplementedDeviceCheck.cpp
+67-5flang/test/Transforms/omp-function-filtering-todo.mlir
+426-29720 files not shown
+800-61026 files

LLVM/project 157af9cllvm/lib/Target/AMDGPU SILowerI1Copies.h SILowerI1Copies.cpp

AMDGPU: Extract mergeIncomingLaneMasks from SILowerI1Copies lowerPhis (#216995)
DeltaFile
+96-87llvm/lib/Target/AMDGPU/SILowerI1Copies.cpp
+12-0llvm/lib/Target/AMDGPU/SILowerI1Copies.h
+108-872 files

LLVM/project af882d5llvm/test/Transforms/LoopVectorize/AArch64 sve2-histcnt.ll sve-interleaved-accesses.ll, llvm/test/Transforms/LoopVectorize/RISCV tail-folding-bin-unary-ops-args.ll strided-accesses.ll

[LV] Optimise code created by createElementCount (#216981)

At the moment when creating an element count we generate vplan like this

  mul(vscale, EC)

however since we know that the VF should always be a power of 2 we can
just do

  shl(vscale, log2(EC))

instead. This leads to IR simplifications in quite a few tests, where
redundant shifts get folded away.

There are some instances in tests like

AArch64/partial-reduce-dot-product.ll

where a nsw flag is being dropped, however I don't see this as a bad
thing since again I'm not sure how we could previously justify the nsw
flag anyway.
DeltaFile
+63-84llvm/test/Transforms/LoopVectorize/AArch64/partial-reduce-chained.ll
+45-60llvm/test/Transforms/LoopVectorize/AArch64/scalable-strict-fadd.ll
+41-58llvm/test/Transforms/LoopVectorize/RISCV/strided-accesses.ll
+36-54llvm/test/Transforms/LoopVectorize/RISCV/tail-folding-bin-unary-ops-args.ll
+40-50llvm/test/Transforms/LoopVectorize/AArch64/sve-interleaved-accesses.ll
+34-45llvm/test/Transforms/LoopVectorize/AArch64/sve2-histcnt.ll
+259-351104 files not shown
+1,012-1,408110 files