LLVM/project 7663802llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp, llvm/test/CodeGen/AArch64 sve-extract-fixed-from-scalable-vector.ll

[LLVM][DAGCombiner] Limit extract_subvec(extract_subvec()) combine to vectors of the same type. (#187334)

The index operand of ISD::EXTRACT_SUBVECTOR is implicitly scaled by
vscale, which is effectively always one for fixed-length vectors. When
combining nested extracts we must ensure all use the same implicit
scaling otherwise the transform is not equivalent.

Fixes https://github.com/llvm/llvm-project/issues/186563
DeltaFile
+10-14llvm/test/CodeGen/AArch64/sve-extract-fixed-from-scalable-vector.ll
+4-3llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+14-172 files

LLVM/project 768c475llvm/lib/Target/AArch64 AArch64InstrInfo.td, llvm/test/CodeGen/AArch64 arm64-int-neon.ll

[AArch64][GlobalISel] Add pattern to lower aarch64.neon.sqdmulls.scalar

SDAG was able to lower this intrinsic because it was turned into an AArch64sqdmull ISD node before instruction selection. As aarch64.neon.sqdmull and aarch64.neon.sqdmulls.scalar are two different LLVM intrinsics, we need two separate patterns to lower them correctly.
DeltaFile
+4-0llvm/lib/Target/AArch64/AArch64InstrInfo.td
+0-1llvm/test/CodeGen/AArch64/arm64-int-neon.ll
+4-12 files

LLVM/project c58d628llvm/include/llvm/ADT STLForwardCompat.h, llvm/unittests/ADT STLForwardCompatTest.cpp

[STLForwardCompat] Switch transformOptional from direct call to invoke (#186333)

This allows to pass pointer to member (or member function) alongside
other callable objects. Also adjusted return value as std::optional of
reference types are forbidden.
DeltaFile
+56-0llvm/unittests/ADT/STLForwardCompatTest.cpp
+2-2llvm/include/llvm/ADT/STLForwardCompat.h
+58-22 files

LLVM/project d29c6a3llvm/docs ReleaseNotes.md, llvm/docs/TableGen ProgRef.rst

[TabelGen] Use ID{n-m} for outer let statements (#187436)

I found this occasionally.

For outer let statements, if we want to override some bits, we specify
the range list in the form of `<n-m>`. But for inner let statements,
we use `{n-m}`.

This is inconsistent, and I can't find the reason why it is designed
as this. So here we make inner/outer let statements consistent and
remove the duplicated parsing functions.

There is only one in-tree usage so I think the impact is small.
DeltaFile
+3-23llvm/lib/TableGen/TGParser.cpp
+5-5llvm/docs/TableGen/ProgRef.rst
+3-0llvm/docs/ReleaseNotes.md
+1-1llvm/lib/Target/RISCV/RISCVInstrInfoXRivos.td
+12-294 files

LLVM/project eaf04bellvm/lib/Target/SPIRV SPIRVModuleAnalysis.cpp SPIRVSymbolicOperands.td, llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_16bit_atomics atomic_int16_load_store_xchg_cmpxchg.ll atomic_int16_arithmetic.ll

[SPIR-V] Complete SPV_INTEL_16bit_atomics extension support (#184312)

Add missing capabilities to finalize SPV_INTEL_16bit_atomics extension:
- AtomicInt16CompareExchangeINTEL (6260): for i16
load/store/exchange/cmpxchg
- Int16AtomicsINTEL (6261): for i16 arithmetic atomics (add, sub, min,
max, etc.)
- AtomicBFloat16LoadStoreINTEL (6262): for bfloat16 load/store/exchange

This completes the implementation started in 6ef3218.

Specification:
https://github.com/intel/llvm/blob/sycl/sycl/doc/design/spirv-extensions/SPV_INTEL_16bit_atomics.asciidoc
DeltaFile
+47-14llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp
+44-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_16bit_atomics/atomic_int16_load_store_xchg_cmpxchg.ll
+44-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_16bit_atomics/atomic_int16_arithmetic.ll
+42-0llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_16bit_atomics/atomic_bfloat16_load_store_xchg.ll
+6-3llvm/lib/Target/SPIRV/SPIRVSymbolicOperands.td
+4-3llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_16bit_atomics/atomicrmw_faddfsub_bfloat16.ll
+187-201 files not shown
+190-227 files

LLVM/project e122a2dflang/include/flang/Semantics openmp-utils.h

[flang][OpenMP] Remove extraneous semicolon, NFC (#187468)
DeltaFile
+1-1flang/include/flang/Semantics/openmp-utils.h
+1-11 files

LLVM/project 0d05c88llvm/include/llvm/Support GenericLoopInfo.h GenericLoopInfoImpl.h, llvm/lib/CodeGen EarlyIfConversion.cpp BranchFolding.cpp

[Support] Use block numbers for LoopInfo BBMap (#103400)

Replace the DenseMap from blocks to their innermost loop a vector
indexed by block numbers, when possible. Supporting number updates is
not trivial as we don't store a list of basic blocks, so this is not
implemented.

NB: I'm generally not happy with the way loops are stored. As I think
that there's room for improvement, I don't want to touch the
representation at this point.

Pull Request: https://github.com/llvm/llvm-project/pull/103400
DeltaFile
+65-12llvm/include/llvm/Support/GenericLoopInfo.h
+34-9llvm/include/llvm/Support/GenericLoopInfoImpl.h
+7-10llvm/lib/Transforms/Utils/LoopUtils.cpp
+4-1llvm/lib/Transforms/IPO/LoopExtractor.cpp
+2-2llvm/lib/CodeGen/EarlyIfConversion.cpp
+2-2llvm/lib/CodeGen/BranchFolding.cpp
+114-362 files not shown
+117-388 files

LLVM/project 333ac33llvm/include/llvm/Analysis LoopInfo.h, llvm/lib/Analysis LoopInfo.cpp

[Analysis][NFC] Include LoopInfoImpl only in source file (#187459)

There's no need to include the full LoopInfo implementation in every
source file that uses LoopInfo.

Pull Request: https://github.com/llvm/llvm-project/pull/187459
DeltaFile
+1-1llvm/include/llvm/Analysis/LoopInfo.h
+1-0llvm/lib/Analysis/LoopInfo.cpp
+2-12 files

LLVM/project 55e9e57llvm/include/llvm/Support GenericLoopInfo.h

fix outdated comment

Created using spr 1.3.8-wip
DeltaFile
+1-2llvm/include/llvm/Support/GenericLoopInfo.h
+1-21 files

LLVM/project 4262045llvm/lib/CodeGen/AsmPrinter DwarfCompileUnit.cpp, llvm/test/DebugInfo/X86 empty-struct-no-crash.ll

[DebugInfo] Fix segfault in constructSubprogramScopeDIE with null subprogram type (#184299)

Guard against null DISubroutineType when checking for variadic
parameters in `constructSubprogramScopeDIE`. `DISubprograms` may lack a
type field when using LineTablesOnly emission, causing a null pointer
dereference.

Fixes #184003

Co-authored-by: Shivam Kunwar <phyBrackets at users.noreply.github.com>
DeltaFile
+17-0llvm/test/DebugInfo/X86/empty-struct-no-crash.ll
+5-1llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
+22-12 files

LLVM/project 621d40eclang-tools-extra/clang-tidy ClangTidy.cpp, clang-tools-extra/test lit.cfg.py

Revert "[clang-tidy] [Modules] Skip checking decls in clang-tidy" (#187461)

Reverts llvm/llvm-project#145630

As requested in https://github.com/llvm/llvm-project/pull/145630
DeltaFile
+0-29clang-tools-extra/test/clang-tidy/infrastructure/cxx20-modules.cppm
+0-4clang/lib/ASTMatchers/ASTMatchFinder.cpp
+0-3clang-tools-extra/clang-tidy/ClangTidy.cpp
+0-2clang/include/clang/ASTMatchers/ASTMatchFinder.h
+0-1clang-tools-extra/test/lit.cfg.py
+0-395 files

LLVM/project 2bb6b59libsycl/include/sycl/__impl usm_functions.hpp usm_alloc_type.hpp, libsycl/src usm_functions.cpp

[libsycl] add USM alloc/free functions (#184111)

Depends on https://github.com/llvm/llvm-project/pull/184110

This is part of the SYCL support upstreaming effort. The relevant RFCs
can be found here:


https://discourse.llvm.org/t/rfc-add-full-support-for-the-sycl-programming-model/74080
https://discourse.llvm.org/t/rfc-sycl-runtime-upstreaming/74479

---------

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
DeltaFile
+302-0libsycl/include/sycl/__impl/usm_functions.hpp
+126-0libsycl/src/usm_functions.cpp
+124-0libsycl/test/usm/alloc_functions.cpp
+25-0libsycl/include/sycl/__impl/usm_alloc_type.hpp
+16-0libsycl/src/detail/offload/offload_utils.cpp
+13-0libsycl/src/detail/global_objects.hpp
+606-07 files not shown
+634-013 files

LLVM/project c82e8b8llvm/test/CodeGen/SPIRV trunc-nonstd-bitwidth.ll, llvm/test/CodeGen/SPIRV/extensions/SPV_ALTERA_arbitrary_precision_floating_point arbitrary_precision_floating_point_test.ll

[SPIRV] Run `spirv-val` on tests related to `SPV_ALTERA_arbitrary_precision_integers`

https://github.com/KhronosGroup/SPIRV-Tools/pull/6232 landed support for
this extension in `spirv-val`.
DeltaFile
+1-1llvm/test/CodeGen/SPIRV/extensions/SPV_ALTERA_arbitrary_precision_integers/i128-arith.ll
+1-1llvm/test/CodeGen/SPIRV/llvm-intrinsics/bitreverse_small_type.ll
+1-1llvm/test/CodeGen/SPIRV/extensions/SPV_ALTERA_arbitrary_precision_floating_point/arbitrary_precision_floating_point_test.ll
+1-1llvm/test/CodeGen/SPIRV/extensions/SPV_ALTERA_arbitrary_precision_integers/i128-addsub.ll
+1-1llvm/test/CodeGen/SPIRV/extensions/SPV_ALTERA_arbitrary_precision_integers/i128-switch-lower.ll
+1-0llvm/test/CodeGen/SPIRV/trunc-nonstd-bitwidth.ll
+6-53 files not shown
+9-59 files

LLVM/project 8f63114clang-tools-extra/clang-tidy ClangTidy.cpp, clang-tools-extra/test lit.cfg.py

Revert "[clang-tidy] [Modules] Skip checking decls in clang-tidy (#145630)"

This reverts commit c800afd65e121410d539c4210f73285fffee548b.
DeltaFile
+0-29clang-tools-extra/test/clang-tidy/infrastructure/cxx20-modules.cppm
+0-4clang/lib/ASTMatchers/ASTMatchFinder.cpp
+0-3clang-tools-extra/clang-tidy/ClangTidy.cpp
+0-2clang/include/clang/ASTMatchers/ASTMatchFinder.h
+0-1clang-tools-extra/test/lit.cfg.py
+0-395 files

LLVM/project d518f8fllvm/include/llvm/Analysis MemorySSA.h AliasAnalysis.h, llvm/lib/Analysis MemorySSA.cpp

[MemorySSA] Fix handling of cross-iteration dependencies for calls (#187291)

The clobber walker has to be careful when it comes to translating
locations across phis. If we're translating across a cycle backedge,
we'll end up working with SSA values from two different cycle iterations
-- something that alias analysis by default assumes is not the case.

To protect against this, the upwards def walk was already discarding the
access size from the memory location if the pointer was not loop
invariant. This (mostly) avoids this issue for memory locations.

However, the same issue also exists for calls. In this case, it's not
possible to adjust the call used for AA queries in a similar way.
Instead, we can make use of the cross-iteration alias analysis mode,
which has been added some time ago for these kinds of situations.

The basic change here is that the upwards def walk, when translating
across a phi, will enable the cross-iteration mode for calls.
Unfortunately, quite a few places have to be changed in order to thread

    [8 lines not shown]
DeltaFile
+63-25llvm/include/llvm/Analysis/MemorySSA.h
+34-25llvm/lib/Analysis/MemorySSA.cpp
+42-0llvm/test/Analysis/MemorySSA/call-loop-carried-dependency.ll
+17-0llvm/include/llvm/Analysis/AliasAnalysis.h
+5-6llvm/unittests/Analysis/MemorySSATest.cpp
+161-565 files

LLVM/project 9c9db2bllvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_function_pointers fp-simple-hierarchy.ll fp_cmp.ll, llvm/test/CodeGen/SPIRV/pointers fun-ptr-to-itself.ll fun-with-aggregate-arg-in-const-init.ll

[SPIRV][NFC] Update `SPV_INTEL_function_pointers` tests to check `spirv-val` output
DeltaFile
+5-1llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_function_pointers/fp-simple-hierarchy.ll
+5-1llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_function_pointers/fp_cmp.ll
+3-2llvm/test/CodeGen/SPIRV/pointers/fun-ptr-to-itself.ll
+4-1llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_function_pointers/fp_no_return.ll
+4-1llvm/test/CodeGen/SPIRV/extensions/SPV_INTEL_function_pointers/fun-ptr-addrcast.ll
+3-0llvm/test/CodeGen/SPIRV/pointers/fun-with-aggregate-arg-in-const-init.ll
+24-63 files not shown
+27-99 files

LLVM/project 1f8da27libclc/clc/include/clc/math clc_sincos_helpers_fp16_decl.inc, libclc/clc/lib/generic/math clc_sincos_helpers_fp16.inc clc_sincos.inc

libclc: Really implement half trig functions (#187457)

Previously these just cast to float.
DeltaFile
+36-0libclc/clc/lib/generic/math/clc_sincos_helpers_fp16.inc
+24-4libclc/clc/lib/generic/math/clc_sincos.inc
+24-1libclc/clc/lib/generic/math/clc_tan.inc
+20-2libclc/clc/lib/generic/math/clc_sin.inc
+19-2libclc/clc/lib/generic/math/clc_cos.inc
+19-0libclc/clc/include/clc/math/clc_sincos_helpers_fp16_decl.inc
+142-92 files not shown
+154-98 files

LLVM/project ceb3012libclc/clc/include/clc/math clc_sincos_helpers_fp16_decl.inc, libclc/clc/lib/generic/math clc_sincos_helpers_fp16.inc clc_sincos.inc

libclc: Really implement half trig functions

Previously these just cast to float.
DeltaFile
+36-0libclc/clc/lib/generic/math/clc_sincos_helpers_fp16.inc
+24-4libclc/clc/lib/generic/math/clc_sincos.inc
+24-1libclc/clc/lib/generic/math/clc_tan.inc
+20-2libclc/clc/lib/generic/math/clc_sin.inc
+19-2libclc/clc/lib/generic/math/clc_cos.inc
+19-0libclc/clc/include/clc/math/clc_sincos_helpers_fp16_decl.inc
+142-92 files not shown
+154-98 files

LLVM/project 1ba5b6elibclc/clc/lib/generic/math clc_sincos.inc clc_sincos.cl

libclc: Stop implementing sincos as separate sin and cos (#187456)
DeltaFile
+63-4libclc/clc/lib/generic/math/clc_sincos.inc
+7-0libclc/clc/lib/generic/math/clc_sincos.cl
+70-42 files

LLVM/project 635ce1dllvm/include/llvm/Analysis LoopInfo.h, llvm/lib/Analysis LoopInfo.cpp

[spr] initial version

Created using spr 1.3.8-wip
DeltaFile
+1-1llvm/include/llvm/Analysis/LoopInfo.h
+1-0llvm/lib/Analysis/LoopInfo.cpp
+2-12 files

LLVM/project 7fad49bllvm/lib/Target/AArch64 AArch64SVEInstrInfo.td, llvm/test/CodeGen/AArch64 sve-insert-element.ll load-insert-zero.ll

[AArch64][SVE] Prefer FMOV for scalar insert into first element of zero. (#187236)

Currently, when inserting a scalar into the first element of a
zero-initialised scalable vector, we zero the register explicitly and
emit a predicated move. However, an FMOV should be preferable as it
implicitly zeros the upper bits of the destination.
DeltaFile
+108-0llvm/test/CodeGen/AArch64/sve-insert-element.ll
+18-66llvm/test/CodeGen/AArch64/load-insert-zero.ll
+32-0llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
+5-5llvm/test/CodeGen/AArch64/sve-pr92779.ll
+2-6llvm/test/CodeGen/AArch64/complex-deinterleaving-reductions-scalable.ll
+1-4llvm/test/CodeGen/AArch64/sve-implicit-zero-filling.ll
+166-816 files

LLVM/project 6e8ca5elibclc/clc/lib/generic/math clc_nextdown.inc clc_nextup.inc

libclc: Fix nextafter with -cl-denorms-are-zero (#187358)

Follow the suggested behavior of returning +/-FLT_MIN for logical
zeros.
DeltaFile
+5-2libclc/clc/lib/generic/math/clc_nextdown.inc
+4-0libclc/clc/lib/generic/math/clc_nextup.inc
+2-0libclc/clc/lib/generic/math/clc_nextafter.cl
+1-1libclc/clc/lib/generic/math/clc_nextafter.inc
+1-0libclc/clc/lib/generic/math/clc_nextup.cl
+1-0libclc/clc/lib/generic/math/clc_nextdown.cl
+14-36 files

LLVM/project 85e9ac5libclc/clc/include/clc/math clc_canonicalize.h clc_flush_if_daz.h, libclc/clc/lib/generic/math clc_flush_if_daz.inc clc_flush_if_daz.cl

libclc: Add canonicalize utility functions (#187357)

This is mostly to work around spirv's canonicalize still
being broken.
DeltaFile
+43-0libclc/clc/lib/generic/math/clc_flush_if_daz.inc
+21-0libclc/clc/include/clc/math/clc_canonicalize.h
+21-0libclc/clc/include/clc/math/clc_flush_if_daz.h
+15-0libclc/clc/lib/generic/math/clc_flush_if_daz.cl
+15-0libclc/clc/lib/generic/math/clc_canonicalize.cl
+0-10libclc/clc/include/clc/math/math.h
+115-104 files not shown
+124-1510 files

LLVM/project 73f4ec0llvm/include/llvm/Support GenericLoopInfo.h GenericLoopInfoImpl.h, llvm/lib/Transforms/Utils LoopUtils.cpp

fix polly + remove abi breaking checks condition

Created using spr 1.3.8-wip
DeltaFile
+7-24llvm/include/llvm/Support/GenericLoopInfo.h
+6-0llvm/include/llvm/Support/GenericLoopInfoImpl.h
+1-2llvm/lib/Transforms/Utils/LoopUtils.cpp
+2-1polly/lib/CodeGen/IslNodeBuilder.cpp
+16-274 files

LLVM/project 9b7c437libclc/clc/include/clc/math clc_sincos_helpers_fp64_decl.inc, libclc/clc/lib/generic/math clc_sincos_helpers_fp64.inc clc_tables.cl

libclc: Update f64 trig functions (#187455)

Most of of this was originally ported from rocm
device libs in 2e6ff0c66e180998425776a27579559dc099732f. Merge
in more recent changes.
DeltaFile
+152-199libclc/clc/lib/generic/math/clc_sincos_helpers_fp64.inc
+49-52libclc/clc/lib/generic/math/clc_tables.cl
+40-0libclc/clc/lib/generic/math/clc_get_twobypi_bits.inc
+12-20libclc/clc/lib/generic/math/clc_sin.inc
+10-22libclc/clc/lib/generic/math/clc_tan.inc
+21-8libclc/clc/include/clc/math/clc_sincos_helpers_fp64_decl.inc
+284-3019 files not shown
+374-32815 files

LLVM/project 0960f0blibclc/clc/include/clc/math gentype.inc clc_subnormal_config.h, libclc/clc/lib/generic subnormal_config.cl

libclc: Really implement denormal config checks (#187356)

These should be implementable by checking the behavior of
the canonicalize intrinsic. Hack around spirv still failing
on canonicalize by overriding and assuming DAZ for float.
DeltaFile
+25-3libclc/clc/lib/generic/subnormal_config.cl
+19-0libclc/clc/lib/spirv/subnormal_config.cl
+7-1libclc/clc/include/clc/math/gentype.inc
+3-0libclc/clc/include/clc/math/clc_subnormal_config.h
+1-0libclc/clc/lib/spirv/CMakeLists.txt
+55-45 files

LLVM/project f89e1dfllvm/lib/CodeGen CMakeLists.txt, llvm/lib/CodeGen/SelectionDAG CMakeLists.txt

add comments
DeltaFile
+6-20llvm/lib/Transforms/Vectorize/CMakeLists.txt
+6-0llvm/lib/CodeGen/CMakeLists.txt
+3-0mlir/test/lib/Dialect/Affine/CMakeLists.txt
+3-0llvm/lib/CodeGen/SelectionDAG/CMakeLists.txt
+3-0llvm/lib/Target/RISCV/CMakeLists.txt
+3-0llvm/lib/Target/X86/CMakeLists.txt
+24-2050 files not shown
+82-2056 files

LLVM/project 5e3a300libclc/clc/lib/generic/math clc_nextdown.inc clc_nextup.inc

libclc: Fix nextafter with -cl-denorms-are-zero

Follow the suggested behavior of returning +/-FLT_MIN for logical
zeros.
DeltaFile
+5-2libclc/clc/lib/generic/math/clc_nextdown.inc
+4-0libclc/clc/lib/generic/math/clc_nextup.inc
+1-1libclc/clc/lib/generic/math/clc_nextafter.inc
+2-0libclc/clc/lib/generic/math/clc_nextafter.cl
+1-0libclc/clc/lib/generic/math/clc_nextdown.cl
+1-0libclc/clc/lib/generic/math/clc_nextup.cl
+14-36 files

LLVM/project 4803f42libclc/clc/include/clc/math clc_canonicalize.h clc_flush_if_daz.h, libclc/clc/lib/generic/math clc_flush_if_daz.inc clc_flush_if_daz.cl

libclc: Add canonicalize utility functions

This is mostly to work around spirv's canonicalize still
being broken.
DeltaFile
+43-0libclc/clc/lib/generic/math/clc_flush_if_daz.inc
+21-0libclc/clc/include/clc/math/clc_canonicalize.h
+21-0libclc/clc/include/clc/math/clc_flush_if_daz.h
+15-0libclc/clc/lib/generic/math/clc_flush_if_daz.cl
+15-0libclc/clc/lib/generic/math/clc_canonicalize.cl
+0-10libclc/clc/include/clc/math/math.h
+115-104 files not shown
+124-1510 files

LLVM/project 0de02a2libclc/clc/include/clc/math gentype.inc clc_subnormal_config.h, libclc/clc/lib/generic subnormal_config.cl

libclc: Really implement denormal config checks

These should be implementable by checking the behavior of
the canonicalize intrinsic. Hack around spirv still failing
on canonicalize by overriding and assuming DAZ for float.
DeltaFile
+25-3libclc/clc/lib/generic/subnormal_config.cl
+19-0libclc/clc/lib/spirv/subnormal_config.cl
+7-1libclc/clc/include/clc/math/gentype.inc
+3-0libclc/clc/include/clc/math/clc_subnormal_config.h
+1-0libclc/clc/lib/spirv/CMakeLists.txt
+55-45 files