LLVM/project b2269f4clang/include/clang/Analysis/Analyses/LifetimeSafety Loans.h, clang/lib/Analysis/LifetimeSafety Checker.cpp FactsGenerator.cpp

Expire AccessPaths instead of loans
DeltaFile
+85-108clang/include/clang/Analysis/Analyses/LifetimeSafety/Loans.h
+40-62clang/lib/Analysis/LifetimeSafety/Checker.cpp
+16-38clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
+23-14clang/lib/Analysis/LifetimeSafety/Loans.cpp
+10-10clang/test/Sema/warn-lifetime-safety-dataflow.cpp
+9-9clang/unittests/Analysis/LifetimeSafetyTest.cpp
+183-2414 files not shown
+203-26510 files

LLVM/project b1aa6a4llvm/include/llvm/CodeGenTypes LowLevelType.h, llvm/lib/CodeGen LowLevelTypeUtils.cpp

[GlobalISel][LLT] Introduce FPInfo for LLT (Enable bfloat, ppc128float and others in GlobalISel) (#155107)

Added extra information in LLT to support ambiguous fp types during
GlobalISel. Original idea by @tgymnich

Main differences from https://github.com/llvm/llvm-project/pull/122503
are:
* Do not deprecate LLT::scalar
* Allow targets to enable/disable IR translation with extenden LLT via
`TargetOption::EnableGlobalISelExtendedLLT` (disabled by default)
* `IRTranslator` use `TargetLoweringInfo` for appropriate `LLT`
generation.
* For this reason added flag in GlobalISelMatchTable` to allow switch
between legacy and new extended LLT names
* Revert using stubs like `LLT::float32` for float types as they are
real now. Added `TODO` for such cases.

Also MIRParser now may parse new type indentifiers.


    [3 lines not shown]
DeltaFile
+392-135llvm/include/llvm/CodeGenTypes/LowLevelType.h
+160-73llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+133-0llvm/unittests/CodeGen/GlobalISel/IRTranslatorBF16Test.cpp
+77-35llvm/lib/CodeGen/MIRParser/MIParser.cpp
+64-39llvm/utils/TableGen/Common/GlobalISel/GlobalISelMatchTable.cpp
+69-25llvm/lib/CodeGen/LowLevelTypeUtils.cpp
+895-30747 files not shown
+1,275-46053 files

NetBSD/pkgsrc-wip 2f858d3g-golf distinfo Makefile

g-golf: Update to 0.8.5

(improvements to examples)
DeltaFile
+3-3g-golf/distinfo
+2-2g-golf/Makefile
+5-52 files

FreeNAS/freenas 1375c0bsrc/middlewared/debian control, src/middlewared/middlewared/plugins disk.py

use new pylibsed library
DeltaFile
+205-0src/middlewared/middlewared/utils/disks_/disk_class.py
+44-143src/middlewared/middlewared/plugins/disk_/sed.py
+0-180src/middlewared/middlewared/utils/sed.py
+8-2src/middlewared/middlewared/plugins/disk.py
+3-2src/middlewared/middlewared/plugins/system/product.py
+4-0src/middlewared/debian/control
+264-3273 files not shown
+266-3339 files

LLVM/project ee31587llvm/test/CodeGen/AMDGPU memintrinsic-unroll.ll, llvm/test/CodeGen/X86 vector-interleaved-load-i64-stride-7.ll vector-interleaved-load-i8-stride-8.ll

Rebase

Created using spr 1.3.7
DeltaFile
+6,835-6,798llvm/test/CodeGen/AMDGPU/memintrinsic-unroll.ll
+5,208-5,214llvm/test/CodeGen/X86/vector-interleaved-load-i64-stride-7.ll
+3,046-3,042llvm/test/CodeGen/X86/vector-interleaved-load-i8-stride-8.ll
+4,523-0llvm/test/tools/llvm-mca/RISCV/SiFiveX100/rvv/arithmetic.test
+2,034-2,026llvm/test/CodeGen/X86/clmul-vector.ll
+2,034-1,998llvm/test/CodeGen/X86/vector-interleaved-load-i16-stride-8.ll
+23,680-19,0781,940 files not shown
+133,448-56,7551,946 files

LLVM/project 2ed9f92llvm/include/llvm/CodeGen Rematerializer.h, llvm/lib/CodeGen Rematerializer.cpp

Add `UseRegion` argument to `printUser`
DeltaFile
+16-8llvm/lib/CodeGen/Rematerializer.cpp
+2-1llvm/include/llvm/CodeGen/Rematerializer.h
+18-92 files

LLVM/project d2d4504llvm/test/CodeGen/AMDGPU llvm.amdgcn.tanh.ll

[AMDGPU] Add tanh tests for gfx13
DeltaFile
+296-190llvm/test/CodeGen/AMDGPU/llvm.amdgcn.tanh.ll
+296-1901 files

LLVM/project 90b2e8ellvm/include/llvm/CodeGen Rematerializer.h, llvm/lib/CodeGen Rematerializer.cpp

[CodeGen] Allow rematerializer to rematerialize at the end of a block

This makes the rematerializer able to rematerialize MIs at the end of a
basic block. We achive this by tracking the parent basic block of every
region inside the rematerializer and adding an explicit target region to
some of the class's methods. The latter removes the requirement that we
track the MI of every region (`Rematerializer::MIRegion`) after the
analysis phase; the class member is therefore deleted.

This new ability will be used shortly to improve the design of the
rollback mechanism.
DeltaFile
+32-27llvm/include/llvm/CodeGen/Rematerializer.h
+34-24llvm/lib/CodeGen/Rematerializer.cpp
+16-14llvm/unittests/CodeGen/RematerializerTest.cpp
+82-653 files

FreeBSD/ports 2a7e351graphics/libheif Makefile, graphics/libheif/files patch-svt-av1-4.1

graphics/libheif: unbreak after 17339df99b0c

libheif/plugins/encoder_svt.cc:850:37: error: assigning to 'PredStructure' from \
incompatible type 'int'
  850 |         svt_config.pred_structure = 2; // RANDOM_ACCESS
      |                                     ^

Reported by:    Tatsuki Makino, mfechner
Regressed by:   https://gitlab.com/AOMediaCodec/SVT-AV1/-/commit/3b5e5e8d4dda
Obtained from:  upstream (open PR)
DeltaFile
+25-0graphics/libheif/files/patch-svt-av1-4.1
+1-1graphics/libheif/Makefile
+26-12 files

LLVM/project d50d39emlir/include/mlir/Dialect/OpenMP/Utils Utils.h, mlir/lib/Dialect/OpenMP/Transforms StackToShared.cpp

[MLIR][OpenMP] Unify device shared memory logic

This patch creates a utils library for the OpenMP dialect with functions
used by MLIR to LLVM IR translation as well as the stack-to-shared pass
to determine which allocations must use local stack memory or device
shared memory.
DeltaFile
+104-0mlir/lib/Dialect/OpenMP/Utils/Utils.cpp
+10-93mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+13-85mlir/lib/Dialect/OpenMP/Transforms/StackToShared.cpp
+53-0mlir/include/mlir/Dialect/OpenMP/Utils/Utils.h
+13-0mlir/lib/Dialect/OpenMP/Utils/CMakeLists.txt
+1-0mlir/lib/Target/LLVMIR/Dialect/OpenMP/CMakeLists.txt
+194-1782 files not shown
+196-1788 files

LLVM/project 2dc537emlir/lib/Dialect/OpenMP/Utils Utils.cpp

simplify private clause check
DeltaFile
+10-13mlir/lib/Dialect/OpenMP/Utils/Utils.cpp
+10-131 files

LLVM/project 22b52ddflang/lib/Optimizer/OpenMP FunctionFiltering.cpp, flang/test/Lower/OpenMP declare-target-func-and-subr.f90 function-filtering-2.f90

add internal linkage to target device functions
DeltaFile
+23-23flang/test/Lower/OpenMP/declare-target-func-and-subr.f90
+26-19flang/test/Lower/OpenMP/function-filtering-2.f90
+22-22flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap.f90
+20-20flang/test/Lower/OpenMP/declare-target-implicit-func-and-subr-cap-enter.f90
+7-7flang/test/Lower/OpenMP/declare-target-implicit-tarop-cap.f90
+6-0flang/lib/Optimizer/OpenMP/FunctionFiltering.cpp
+104-916 files

LLVM/project 6adbad8flang/test/Integration/OpenMP threadprivate-target-device.f90

fix test after rebase
DeltaFile
+0-3flang/test/Integration/OpenMP/threadprivate-target-device.f90
+0-31 files

LLVM/project 294b9f1mlir/test/Target/LLVMIR openmp-target-private-shared-mem.mlir

update after rebase
DeltaFile
+2-2mlir/test/Target/LLVMIR/openmp-target-private-shared-mem.mlir
+2-21 files

LLVM/project a0c7a98mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

support other map-like clauses
DeltaFile
+13-3mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+13-31 files

LLVM/project 032b153llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h, llvm/lib/Frontend/OpenMP OMPIRBuilder.cpp

[MLIR][OpenMP][OMPIRBuilder] Improve shared memory checks

This patch refines checks to decide whether to use device shared memory or
regular stack allocations. In particular, it adds support for parallel regions
residing on standalone target device functions.

The changes are:
- Shared memory is introduced for `omp.target` implicit allocations, such as
those related to privatization and mapping, as long as they are shared across
threads in a nested parallel region.
- Standalone target device functions are interpreted as being part of a Generic
kernel, since the fact that they are present in the module after filtering
means they must be reachable from a target region.
- Prevent allocations whose only shared uses inside of an `omp.parallel` region
are as part of a `private` clause from being moved to device shared memory.
DeltaFile
+84-38mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+109-0offload/test/offloading/fortran/target-generic-outlined-loops.f90
+20-15llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+4-4mlir/test/Target/LLVMIR/omptarget-parallel-llvm.mlir
+3-2llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+2-2llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+222-616 files

LLVM/project ee80f4fflang/test/Integration/OpenMP target-use-device-nested.f90 threadprivate-target-device.f90, mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

add missing check
DeltaFile
+76-0mlir/test/Target/LLVMIR/openmp-target-private-shared-mem.mlir
+12-13flang/test/Integration/OpenMP/target-use-device-nested.f90
+6-5flang/test/Integration/OpenMP/threadprivate-target-device.f90
+6-1mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+1-1mlir/test/Target/LLVMIR/omptarget-constant-alloca-raise.mlir
+101-205 files

LLVM/project 92b15d2mlir/include/mlir/Dialect/OpenMP/Transforms Passes.td, mlir/lib/Dialect/OpenMP/Transforms StackToShared.cpp

update after rebase and address review comments
DeltaFile
+15-7mlir/lib/Dialect/OpenMP/Transforms/StackToShared.cpp
+7-7mlir/test/Dialect/OpenMP/stack-to-shared.mlir
+5-5mlir/include/mlir/Dialect/OpenMP/Transforms/Passes.td
+27-193 files

LLVM/project d5c3378flang/include/flang/Optimizer/OpenMP Passes.td, flang/lib/Optimizer/OpenMP StackToShared.cpp CMakeLists.txt

[Flang][OpenMP] Add pass to replace allocas with device shared memory

This patch introduces a new Flang OpenMP MLIR pass, only ran for target device
modules, that identifies `fir.alloca` operations that should use device shared
memory and replaces them with pairs of `omp.alloc_shared_mem` and
`omp.free_shared_mem` operations.

This works in conjunction to the MLIR to LLVM IR translation pass' handling of
privatization, mapping and reductions in the OpenMP dialect to properly select
the right memory space for allocations based on where they are made and where
they are used.

This pass, in particular, handles explicit stack allocations in MLIR, whereas
the aforementioned translation pass takes care of implicit ones represented by
entry block arguments.
DeltaFile
+215-0flang/test/Transforms/OpenMP/stack-to-shared.mlir
+162-0flang/lib/Optimizer/OpenMP/StackToShared.cpp
+17-0flang/include/flang/Optimizer/OpenMP/Passes.td
+3-1flang/lib/Optimizer/Passes/Pipelines.cpp
+1-0flang/lib/Optimizer/OpenMP/CMakeLists.txt
+398-15 files

LLVM/project dd377ffflang/lib/Optimizer/OpenMP StackToShared.cpp, flang/test/Transforms/OpenMP stack-to-shared.mlir

move stack-to-shared pass to the omp dialect
DeltaFile
+0-215flang/test/Transforms/OpenMP/stack-to-shared.mlir
+188-0mlir/lib/Dialect/OpenMP/Transforms/StackToShared.cpp
+0-162flang/lib/Optimizer/OpenMP/StackToShared.cpp
+149-0mlir/test/Dialect/OpenMP/stack-to-shared.mlir
+1-19mlir/lib/Dialect/OpenMP/CMakeLists.txt
+18-0mlir/lib/Dialect/OpenMP/IR/CMakeLists.txt
+356-3969 files not shown
+405-41815 files

LLVM/project 5f30287flang/lib/Optimizer/CodeGen CodeGenOpenMP.cpp, mlir/include/mlir/Dialect/OpenMP OpenMPOps.td

simplify omp.alloc_shared_mem
DeltaFile
+30-14mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+15-27flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp
+42-0mlir/test/Target/LLVMIR/omptarget-device-shared-mem.mlir
+28-9mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+13-16mlir/test/Dialect/OpenMP/ops.mlir
+16-7mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+144-731 files not shown
+157-797 files

LLVM/project a529c29mlir/include/mlir/Dialect/OpenMP OpenMPOps.td OpenMPClauses.td, mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

address review comments: make omp.free_shared_mem self-contained, update alignment handling for shared memory allocations
DeltaFile
+25-26mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+20-30mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+37-0mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
+15-8mlir/test/Dialect/OpenMP/invalid.mlir
+8-4mlir/test/Dialect/OpenMP/ops.mlir
+5-5mlir/test/Target/LLVMIR/omptarget-device-shared-mem.mlir
+110-731 files not shown
+112-787 files

LLVM/project 9ad453cflang/lib/Optimizer/CodeGen CodeGenOpenMP.cpp, llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h

[Flang][MLIR][OpenMP] Add explicit shared memory (de-)allocation ops

This patch introduces the `omp.alloc_shared_mem` and `omp.free_shared_mem`
operations to represent explicit allocations and deallocations of shared memory
across threads in a team, mirroring the existing `omp.target_allocmem` and
`omp.target_freemem`.

The `omp.alloc_shared_mem` op goes through the same Flang-specific
transformations as `omp.target_allocmem`, so that the size of the buffer can be
properly calculated when translating to LLVM IR.

The corresponding runtime functions produced for these new operations are
`__kmpc_alloc_shared` and `__kmpc_free_shared`, which previously could only be
created for implicit allocations (e.g. privatized and reduction variables).
DeltaFile
+56-8mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+61-0mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+27-15flang/lib/Optimizer/CodeGen/CodeGenOpenMP.cpp
+25-12llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+29-2mlir/test/Dialect/OpenMP/ops.mlir
+23-0llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+221-372 files not shown
+253-378 files

LLVM/project abc65f8mlir/include/mlir/Dialect/OpenMP OpenMPOps.td OpenMPClauses.td, mlir/lib/Dialect/OpenMP/IR OpenMPDialect.cpp

[MLIR][OpenMP] Refactor omp.target_allocmem to allow reuse, NFC

This patch moves tablegen definitions that could be used for all kinds of heap
allocations out of `omp.target_allocmem` and into a new
`OpenMP_HeapAllocClause` that can be reused.

Descriptions are updated to follow the format of most other operations and the
custom verifier for `omp.target_allocmem` is removed as it only made a
redundant check on its result type.
DeltaFile
+52-101mlir/lib/Dialect/OpenMP/IR/OpenMPDialect.cpp
+30-44mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td
+53-0mlir/include/mlir/Dialect/OpenMP/OpenMPClauses.td
+24-0mlir/test/Dialect/OpenMP/ops.mlir
+14-0mlir/test/Dialect/OpenMP/invalid.mlir
+173-1455 files

LLVM/project e43a5e0clang/lib/CodeGen CGStmtOpenMP.cpp, llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h

Use BasicBlocks to place deallocations
DeltaFile
+56-69llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+63-61mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+58-58llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+25-25llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+15-15clang/lib/CodeGen/CGStmtOpenMP.cpp
+16-13llvm/lib/Transforms/Utils/CodeExtractor.cpp
+233-2413 files not shown
+243-2529 files

LLVM/project 17a0a98llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h, llvm/include/llvm/Transforms/Utils CodeExtractor.h

rename allocIP back to allocaIP
DeltaFile
+69-69llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+51-50mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+49-49llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+18-18llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+3-2llvm/include/llvm/Transforms/Utils/CodeExtractor.h
+2-2llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+192-1901 files not shown
+194-1927 files

LLVM/project 4f07962llvm/unittests/Frontend OpenMPIRBuilderTest.cpp, mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

fix after rebase
DeltaFile
+3-2llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+1-1mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+4-32 files

LLVM/project 4acf343llvm/lib/Frontend/OpenMP OMPIRBuilder.cpp, llvm/unittests/Frontend OpenMPIRBuilderTest.cpp

improve device shared memory handling for parallel regions
DeltaFile
+28-20llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+17-2llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+6-1mlir/test/Target/LLVMIR/omptarget-parallel-wsloop.mlir
+51-233 files

LLVM/project 525d169mlir/lib/Target/LLVMIR/Dialect/OpenMP OpenMPToLLVMIRTranslation.cpp

streamline target privatization
DeltaFile
+8-22mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+8-221 files

LLVM/project 6289035clang/lib/CodeGen CGStmtOpenMP.cpp, llvm/include/llvm/Frontend/OpenMP OMPIRBuilder.h

[OMPIRBuilder] Add support for explicit deallocation points

In this patch, some OMPIRBuilder codegen functions and callbacks are updated to
work with arrays of deallocation insertion points. The purpose of this is to
enable the replacement of `alloca`s with other types of allocations that
require explicit deallocations in a way that makes it possible for
`CodeExtractor` instances created during OMPIRBuilder finalization to also use
them.

The OpenMP to LLVM IR MLIR translation pass is updated to properly store and
forward deallocation points together with their matching allocation point to
the OMPIRBuilder.

Currently, only the `DeviceSharedMemCodeExtractor` uses this feature to get the
`CodeExtractor` to use device shared memory for intermediate allocations when
outlining a parallel region inside of a Generic kernel (code path that is only
used by Flang via MLIR, currently). However, long term this might also be
useful to refactor finalization of variables with destructors, potentially
reducing the use of callbacks and simplifying privatization and reductions.

    [5 lines not shown]
DeltaFile
+193-133llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+144-168llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+137-96mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+58-38llvm/include/llvm/Frontend/OpenMP/OMPIRBuilder.h
+43-34clang/lib/CodeGen/CGStmtOpenMP.cpp
+20-17llvm/lib/Transforms/Utils/CodeExtractor.cpp
+595-4869 files not shown
+631-51515 files