LLVM/project 7919d61llvm/test/CodeGen/X86 sat-add.ll

[X86] sat-add.ll - regenerate test check to reduce diff in #189971 (#208418)
DeltaFile
+19-19llvm/test/CodeGen/X86/sat-add.ll
+19-191 files

LLVM/project 05c0a29llvm/test/CodeGen/X86 subvectorwise-store-of-vector-splat.ll

[X86] subvectorwise-store-of-vector-splat.ll - regenerate test checks to reduce diff in #189971 (#208419)

Add AVX1ORAVX2 check prefix to distinguish from AVX512 codegen
DeltaFile
+91-183llvm/test/CodeGen/X86/subvectorwise-store-of-vector-splat.ll
+91-1831 files

LLVM/project 1008b48llvm/cmake/modules LLVMConfig.cmake.in

cmake: Remove cmake_crosscompiling check on LLVMSupport target export (#208420)

Revert exported target check added in
00b2f81418233397e601afaeea6d62c47a6c368a
to fix reported mingw cross compile regression. This is the quick fix
which restores the cmake warnings when building libc for amdgpu.
DeltaFile
+1-1llvm/cmake/modules/LLVMConfig.cmake.in
+1-11 files

LLVM/project d855251orc-rt/test/unit SessionTest.cpp ErrorTest.cpp, orc-rt/unittests SessionTest.cpp ErrorTest.cpp

[orc-rt] Move the unit tests into test/unit (#208431)

Move unit tests from orc-rt/unittests into orc-rt/test/unit, completing
the consolidation of the runtime's tests under orc-rt/test (alongside
test/regression and test/tools).
DeltaFile
+0-831orc-rt/unittests/SessionTest.cpp
+831-0orc-rt/test/unit/SessionTest.cpp
+0-502orc-rt/unittests/ErrorTest.cpp
+502-0orc-rt/test/unit/ErrorTest.cpp
+378-0orc-rt/test/unit/TaskGroupTest.cpp
+0-378orc-rt/unittests/TaskGroupTest.cpp
+1,711-1,71195 files not shown
+8,394-8,392101 files

LLVM/project 62a6f96flang/lib/Optimizer/Builder IntrinsicCall.cpp, flang/lib/Optimizer/Transforms MIFOpConversion.cpp

[flang][MIF] Fix COSHAPE and THIS_IMAGE(coarray) type mismatch for non-i64 kinds

Both COSHAPE and THIS_IMAGE(coarray [,team]) return integer arrays whose
element type is determined by the Fortran KIND argument (default: i32).
The lowering code was ignoring resultType in both cases and hardcoding i64,
which caused downstream type mismatches:

- COSHAPE: SimplifyHLFIRIntrinsics assertion in PRODUCT(COSHAPE(y)) when
  the product input type (i64) did not match the declared result type (i32).
- THIS_IMAGE(coarray): MLIR verifier error on arith.cmpi with mismatched
  operand types (i64 vs i32) in comparisons like THIS_IMAGE(a) /= [5,0,-7].

Fix: derive eleTy from resultType in both genCoshape and genThisImage and
propagate it into the mif.* op's result type. In MIFOpConversion, extract
a shared convertI64SeqToEleTy helper that post-converts the i64 scratch
buffer written by the PRIF runtime into the declared-element-type buffer
when the two types differ. Both MIFCoshapeOpConversion and
MIFThisImageOpConversion call this helper.

Co-authored-by: Claude Opus 4.7 <noreply at anthropic.com>
DeltaFile
+54-0flang/test/Fir/MIF/coshape.mlir
+54-0flang/test/Fir/MIF/this_image.mlir
+46-0flang/lib/Optimizer/Transforms/MIFOpConversion.cpp
+15-6flang/lib/Optimizer/Builder/IntrinsicCall.cpp
+9-2flang/test/Lower/MIF/coshape.f90
+1-1flang/test/Lower/MIF/this_image.f90
+179-96 files

LLVM/project 724ad11llvm/lib/MC MCDXContainerWriter.cpp, llvm/lib/Target/DirectX DXContainerGlobals.cpp

[DirectX] Add `--dx-embed-debug` and `--dx-pdb-path` flags (#204166)

Add flags for DirectX in `llc`:
* `--dx-embed-debug` to embed debug info into ILDB part of DXContainer
* `--dx-pdb-path` to specify filename/path for PDB file output

This patch does not add flags for clang Driver, they will be implemented
later.
DeltaFile
+30-40llvm/lib/Target/DirectX/DXContainerGlobals.cpp
+38-0llvm/test/CodeGen/DirectX/ContainerData/ContainerFlags.ll
+22-0llvm/test/CodeGen/DirectX/ContainerData/DebugName.test
+15-0llvm/lib/Target/DirectX/DXILWriter/DXILWriterPass.cpp
+14-0llvm/lib/MC/MCDXContainerWriter.cpp
+9-0llvm/test/CodeGen/DirectX/ContainerData/DebugName-user-specified.test
+128-409 files not shown
+142-5315 files

LLVM/project eceb9d5orc-rt/test CMakeLists.txt, orc-rt/test/regression smoke-check.test lit.cfg.py

[orc-rt] Add regression test-tool infrastructure (#208398)

Set up the infrastructure for regression tests that build and run a
helper tool, in preparation for testing the logging backends.

- Add test/tools/ for test-support binaries, with a first tool,
orc-rt-smoke-check, wired into ORC_RT_TEST_DEPS and onto lit's PATH.
- Add test/regression/smoke-check.test, which runs the tool and matches
its output with FileCheck, exercising the tool-build and lit plumbing
end to end.
DeltaFile
+21-0orc-rt/test/tools/orc-rt-smoke-check.cpp
+5-0orc-rt/test/regression/smoke-check.test
+5-0orc-rt/test/regression/lit.cfg.py
+4-0orc-rt/test/tools/CMakeLists.txt
+4-0orc-rt/test/CMakeLists.txt
+39-05 files

LLVM/project fcee294flang/lib/Optimizer/Builder IntrinsicCall.cpp, flang/lib/Optimizer/Transforms MIFOpConversion.cpp

[flang][MIF] Fix COSHAPE and THIS_IMAGE(coarray) type mismatch for non-i64 kinds

Both COSHAPE and THIS_IMAGE(coarray [,team]) return integer arrays whose
element type is determined by the Fortran KIND argument (default: i32).
The lowering code was ignoring resultType in both cases and hardcoding i64,
which caused downstream type mismatches:

- COSHAPE: SimplifyHLFIRIntrinsics assertion in PRODUCT(COSHAPE(y)) when
  the product input type (i64) did not match the declared result type (i32).
- THIS_IMAGE(coarray): MLIR verifier error on arith.cmpi with mismatched
  operand types (i64 vs i32) in comparisons like THIS_IMAGE(a) /= [5,0,-7].

Fix: derive eleTy from resultType in both genCoshape and genThisImage and
propagate it into the mif.* op's result type. In MIFOpConversion, extract
a shared convertI64SeqToEleTy helper that post-converts the i64 scratch
buffer written by the PRIF runtime into the declared-element-type buffer
when the two types differ. Both MIFCoshapeOpConversion and
MIFThisImageOpConversion call this helper.

Co-authored-by: Claude Opus 4.7 <noreply at anthropic.com>
DeltaFile
+54-0flang/test/Fir/MIF/coshape.mlir
+54-0flang/test/Fir/MIF/this_image.mlir
+48-0flang/lib/Optimizer/Transforms/MIFOpConversion.cpp
+15-6flang/lib/Optimizer/Builder/IntrinsicCall.cpp
+9-2flang/test/Lower/MIF/coshape.f90
+1-1flang/test/Lower/MIF/this_image.f90
+181-96 files

LLVM/project 841e01dllvm/lib/Target/X86 X86InstrCompiler.td, llvm/test/CodeGen/X86 insert.ll

[ISEL] Fix x86-64 instruction selection bug leaking upper 32 bits (#205600)

The x86 backend had optimization patterns that matched:
  `(or (and GR32:$dst, -256), (i32 (zextloadi8 addr:$src)))`
and lowered it to:
  `(INSERT_SUBREG (i32 (COPY $dst)), (MOV8rm  i8mem:$src), sub_8bit)`

INSERT_SUBREG for sub_8bit emits a movb instruction which preserves the
upper 56 bits. Now, if the GR32 dst came from a node that does not zero
the upper 32 bits (like IMPLICIT_DEF or EXTRACT_SUBREG), those upper 32
bits would be leaked into the resulting register without being zeroed.

This fixes it by ensuring the input operand satisfies def32 which
requires the upper 32 bits of the register to be set.
DeltaFile
+58-2llvm/test/CodeGen/X86/insert.ll
+28-7llvm/lib/Target/X86/X86InstrCompiler.td
+86-92 files

LLVM/project 2fef65cclang/lib/Headers acev1intrin.h, llvm/lib/Target/X86 X86InstrACE.td X86ISelLowering.cpp

[X86] Add ACE v1 (AI Compute Extensions) support

ACE v1 introduces new tile-based matrix operations with fixed 16x64
tile dimensions (Palette 2), unlike AMX's configurable dimensions.

Key features:
- New __acetile type with fixed 16x64 dimensions
- __tile_ace_* intrinsics for ACE tile operations
- Outer product instructions: TOP4BUUD, TOP4BUSD, TOP4BSSD, TOP4BSUD, TOP2BF16PS
- Mixed precision FP8 instructions: TOP4MX variants
- Tile movement: TILEMOVROW, TILEMOVCOL for ZMM<->tile transfers
- BSR (Block Scale Register) operations for scaling factors
- ACE tile spill/reload using TILEMOVROW + VMOVUPS row-by-row
  (ACE doesn't have TILELOADD/TILESTORED instructions)

Backend changes:
- X86LowerTileCopy handles ACE tile copies
- X86PreTileConfig/X86FastPreTileConfig for ACE register allocation
- Palette 2 tile configuration support

    [8 lines not shown]
DeltaFile
+766-0clang/lib/Headers/acev1intrin.h
+417-0llvm/lib/Target/X86/X86InstrACE.td
+282-8llvm/lib/Target/X86/X86ISelLowering.cpp
+244-0llvm/test/CodeGen/X86/ACE/ace-intrinsics.ll
+155-51llvm/lib/Target/X86/X86LowerTileCopy.cpp
+204-0llvm/test/CodeGen/X86/ACE/acev1-outer-product.ll
+2,068-5952 files not shown
+4,365-13458 files

LLVM/project 5b9fa24flang/lib/Optimizer/OpenMP HostOpFiltering.cpp, flang/test/Lower/OpenMP function-filtering-4.f90 host-eval.f90

[Flang][MLIR][OpenMP] Move host op filtering to the omp dialect (#208189)

The MLIR pass that removes operations exclusively intended for the host
from OpenMP target offload modules is currently defined as part of
Flang. However, this is a feature that would benefit from being reusable
by other frontends, as removing such operations is a requirement for all
OpenMP target device modules prior to LLVM IR translation.

By moving the `omp-host-op-filtering` pass out of Flang, it had to be
updated to work on a lower-level LLVM dialect-based representation,
rather than FIR. This simplified some of the existing edge cases, such
as `fir.declare` ops and `fir.boxchar` type handling. In addition, new
function arguments are introduced as placeholders and return values from
host-only functions are removed, producing a cleaner result and
simplifying the pass as compared to previously.

As a result of a later execution of this pass, dynamic dispatch of host
functions via dispatch table using `fir.dispatch`, `fir.type_info` and
`fir.dt_entry` ops would break due to the removal of `fir.dt_entry`

    [6 lines not shown]
DeltaFile
+0-560flang/test/Transforms/OpenMP/function-filtering-host-ops.mlir
+500-0mlir/test/Dialect/OpenMP/host-op-filtering.mlir
+0-422flang/lib/Optimizer/OpenMP/HostOpFiltering.cpp
+292-0mlir/lib/Dialect/OpenMP/Transforms/HostOpFiltering.cpp
+63-0flang/test/Lower/OpenMP/function-filtering-4.f90
+18-32flang/test/Lower/OpenMP/host-eval.f90
+873-1,0147 files not shown
+920-1,04613 files

LLVM/project 50d1864mlir/lib/Dialect/OpenACC/Transforms ACCRecipeMaterialization.cpp, mlir/test/Dialect/OpenACC acc-recipe-materialization-reduction.mlir

[OpenACC] apply par dims to reductions in parallel regions (#208258)

For reductions that come from parallel constructs, explicitly set the
GPU parallel dimensions attribute to blockXDim on the acc.reduction_init
and acc.reduction_combine* ops since they will always be gang private
DeltaFile
+37-16mlir/lib/Dialect/OpenACC/Transforms/ACCRecipeMaterialization.cpp
+2-2mlir/test/Dialect/OpenACC/acc-recipe-materialization-reduction.mlir
+39-182 files

LLVM/project a6a016cclang/cmake/modules ClangConfig.cmake.in, llvm/cmake/modules LLVMConfig.cmake.in

cmake: Gate host library targets on shared library support

This avoids cmake warnings about importing unsupported shared libraries (which
are also host build artifacts) when building libc for amdgpu.

00b2f81 guarded exported library targets and host find_package() calls behind
"if(NOT CMAKE_CROSSCOMPILING)". The intent was to avoid importing the always-shared
targets (LTO, Remarks) on targets which will warn due to not supportind shared
libraries. However CMAKE_CROSSCOMPILING is too broad since it is also set for
usable cross-built libraries.

Change to check if the consuming platform supports shared libraries instead. This
feels not quite precise though, since the found libraries could still be static.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+59-42llvm/cmake/modules/LLVMConfig.cmake.in
+3-3clang/cmake/modules/ClangConfig.cmake.in
+62-452 files

LLVM/project 015162dflang/lib/Optimizer/OpenMP HostOpFiltering.cpp, flang/test/Transforms/OpenMP function-filtering-host-ops.mlir

[Flang][MLIR][OpenMP] Fix declare_target globals visibility (#208188)

This patch introduces various changes to the handling of
`declare_target` global variables in Flang:
- Non-`declare_target` globals are unconditionally made "internal" when
compiling for an OpenMP offload target. This prevents potential symbol
redefinition issues related to globals that don't actually exist on the
device.
- Local SAVE variables handling for OpenMP offloading programs is fixed
to prevent their associated "internal" linkage from producing broken
device code for `declare_target enter(...)`.
- When globals are indirectly accessed from the target device (e.g.
`declare_target link(...)`), the associated and unused full-storage
global is marked with "internal" linkage to facilitate later removal.
- `declare_target device_type(host) enter(...)` variables are set to
external linkage when compiling for a target device, causing linker
errors if accessed. This mirrors Clang's behavior.

Fixes #195188, fixes #195468.

Assisted-by: Claude Opus 4.8.
DeltaFile
+252-0mlir/test/Target/LLVMIR/omptarget-declare-target-all-device-types-device.mlir
+44-9mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+20-5flang/lib/Optimizer/OpenMP/HostOpFiltering.cpp
+17-4flang/test/Transforms/OpenMP/function-filtering-host-ops.mlir
+1-0mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-device.mlir
+334-185 files

LLVM/project 541d637llvm/cmake/modules LLVMConfig.cmake.in

cmake: Remove cmake_crosscompiling check on LLVMSupport target export

Revert exported target check added in00b2f81418233397e601afaeea6d62c47a6c368a
to fix reported mingw cross compile regression. This is the quick fix which
restores the cmake warnings when building libc for amdgpu.
DeltaFile
+1-1llvm/cmake/modules/LLVMConfig.cmake.in
+1-11 files

LLVM/project 58eaa33llvm/lib/Target/AMDGPU SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU peephole-fold-imm.mir sdiv64.ll

AMDGPU: Fold inline immediates in peephole-opt

Currently the AMDGPU implementation of foldImmediate handles a small
set of special cases that require rewriting the instruction opcode
(COPY -> mov, and fma-like to fmac-like). Most general immediate folding
is handled in SIFoldOperands. Teach PeepholeOpt to fold all inline
immediates into target instructions which should always be an improvement.

This is to help alleviate some phase ordering problems in future changes.
I've also never liked how SIFoldOperands is written and it could use a
rewrite, and this will alleviate some of its responsibilties. It will
always be necessary since some operand folds require additional context
that foldImmediate won't have (namely, we have to make contextually aware
tradeoffs for which operands are worth folding to respect constant bus
restrictions, considering other users of the values).

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+94-9llvm/test/CodeGen/AMDGPU/peephole-fold-imm.mir
+58-10llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+4-6llvm/test/CodeGen/AMDGPU/sdiv64.ll
+4-4llvm/test/CodeGen/AMDGPU/optimize-compare.mir
+160-294 files

LLVM/project e94d245llvm/lib/Target/AMDGPU SIFoldOperands.cpp, llvm/test/CodeGen/AMDGPU si-fold-operands-constant-fold-imm-operand.mir promote-constOffset-to-imm-gfx12.mir

AMDGPU: Constant fold instructions with inline immediate operands

Previously we would only try to perform constant folding and simplifications
when an immediate was folded into an instruction, not if the input was already
a folded constant.

Co-authored-by: Claude (Opus 4.8) <noreply at anthropic.com>
DeltaFile
+115-0llvm/test/CodeGen/AMDGPU/si-fold-operands-constant-fold-imm-operand.mir
+9-18llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+0-4llvm/test/CodeGen/AMDGPU/promote-constOffset-to-imm-gfx12.mir
+124-223 files

LLVM/project 4f2f2c2llvm/lib/Target/AMDGPU SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU fold-sgpr-multi-imm.mir

AMDGPU: Do not report inline immediates as legal for generic operands

This has one test change in an SI_CS_CHAIN_TC* test. Either this is fine
or the instruction definition should be changed.
DeltaFile
+4-4llvm/test/CodeGen/AMDGPU/fold-sgpr-multi-imm.mir
+1-1llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+5-52 files

LLVM/project 8fd1355clang/lib/Driver OffloadBundler.cpp, clang/test/Driver clang-offload-bundler-magic-collision.c

[OffloadBundler] Bound compressed bundles by header size, not magic scan

When multiple offload bundles are concatenated, the unbundler
(clang-offload-bundler) and llvm-objdump --offloading located the end of a
compressed bundle, and the start of the next one, by scanning for the next
"CCOB" magic string starting right after the current header.

A zstd/zlib-compressed payload can legally contain those four bytes, so the
scan could stop in the middle of the compressed data and truncate the
bundle, corrupting the embedded code object. In practice this produced a
"decomposition" failure for hipBLASLt bf16 GEMMs on gfx942.

Use the authoritative total-size field recorded in the compressed bundle
header (format V2/V3) to compute the exact bundle boundary, and only scan
for the next magic past that point. Legacy bundles without a recorded size
(V1) keep the previous magic-scan fallback.

A skippable-frame fixture that embeds "CCOB" inside the compressed payload
is added to exercise the boundary logic from both clang-offload-bundler and
llvm-objdump --offloading.
DeltaFile
+104-0clang/test/Driver/Inputs/clang-offload-bundler-magic-collision.py
+37-4clang/lib/Driver/OffloadBundler.cpp
+35-0llvm/test/tools/llvm-objdump/Offloading/fatbin-magic-collision.test
+28-5llvm/lib/Object/OffloadBundle.cpp
+27-0clang/test/Driver/clang-offload-bundler-magic-collision.c
+0-0clang/test/Driver/Inputs/clang-offload-bundler-magic-collision.co
+231-96 files

LLVM/project 361720cllvm/lib/Transforms/Vectorize VPlanRecipes.cpp

[VPlan] Eliminate some vec temps with ArrayRef (NFC) (#207432)

The enabling change is e56187575 ([ArrayRef] Make iterator_range
constructor const-agnostic, #205183).
DeltaFile
+3-5llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+3-51 files

LLVM/project 095e9a1libcxx/docs/Status Cxx26Issues.csv, libcxx/include/__atomic atomic_ref.h

[libc++] Implement LWG4472: std::atomic_ref<const T> can be constructed from temporaries (#208131)

## Summary
- Implements LWG4472, i.e., adds a deleted `atomic_ref(T&&)` overload to
the primary template and three partial specializations of `atomic_ref`.


## Test
- Added `static_assert`s in `ctor.pass.cpp` asserting
`atomic_ref<T>`/`atomic_ref<const T>` reject construction from
`T&&`/`const T&&`.

Resolve #189840
DeltaFile
+8-0libcxx/include/__atomic/atomic_ref.h
+5-0libcxx/test/std/atomics/atomics.ref/ctor.pass.cpp
+1-1libcxx/docs/Status/Cxx26Issues.csv
+14-13 files

LLVM/project 4500116llvm/lib/Object OffloadBundle.cpp, llvm/test/tools/llvm-objdump/Offloading fatbin-coff-compress.test

[Offload] Make compressed offload bundle header little-endian (#206744)

The compressed offload bundle (CCOB) header integer fields (Version,
Method, FileSize, UncompressedFileSize, Hash) were serialized and read
in
host-native byte order. The on-disk format is little-endian, so on
big-endian hosts these fields were byte-swapped: writing produced a
malformed header, and reading misparsed the size, making
`llvm-objdump --offloading` crash/misbehave on s390x. This is also why
the
earlier bundle-size fix had to be reverted.

Make the header little-endian on every host:

- Read side: declare the `RawCompressedBundleHeader` fields as
`support::ulittle16_t` / `ulittle32_t` / `ulittle64_t`, so the bytes are
  always interpreted as little-endian regardless of host.
- Write side: emit the header with
`support::endian::Writer(OS, endianness::little)` instead of host-native

    [10 lines not shown]
DeltaFile
+22-27llvm/lib/Object/OffloadBundle.cpp
+1-2llvm/test/tools/llvm-objdump/Offloading/fatbin-coff-compress.test
+23-292 files

LLVM/project 1f55374libcxx/include/__ranges lazy_split_view.h, libcxx/test/libcxx/ranges/range.adaptors/range.lazy.split nodiscard.verify.cpp

[libc++][ranges] Applied [[nodiscard]] to `lazy_split` (#208036)

[[nodiscard]] should be applied to functions where discarding the return
value is most likely a correctness issue.

- https://libcxx.llvm.org/CodingGuidelines.html
- https://wg21.link/range.lazy.split

Towards https://github.com/llvm/llvm-project/issues/172124

---------

Co-authored-by: Hristo Hristov <zingam at outlook.com>
DeltaFile
+79-0libcxx/test/libcxx/ranges/range.adaptors/range.lazy.split/nodiscard.verify.cpp
+17-13libcxx/include/__ranges/lazy_split_view.h
+96-132 files

LLVM/project a053738llvm/docs LangRef.rst LangRef.md, llvm/lib/Support UnicodeNameToCodepointGenerated.cpp

Merge branch 'main' into users/kuilpd/add-embed-debug-fd-flags
DeltaFile
+36,526-36,458llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+25,784-36,416llvm/test/CodeGen/RISCV/rvv/clmulh-sdnode.ll
+24,053-23,916llvm/lib/Support/UnicodeNameToCodepointGenerated.cpp
+12,227-23,140llvm/test/CodeGen/RISCV/rvv/clmul-sdnode.ll
+0-33,097llvm/docs/LangRef.rst
+30,305-0llvm/docs/LangRef.md
+128,895-153,02712,786 files not shown
+901,904-637,48812,792 files

LLVM/project 38570callvm/lib/Target/NVPTX NVPTXISelLowering.cpp NVPTXInstrInfo.td, llvm/test/CodeGen/NVPTX tanhf.ll

[NVPTX] Add native `tanh.approx` support for f16/f16x2/bf16/bf16x2 (#203257)

Adds NVPTX backend support for the native PTX `tanh.approx` instructions on half-precision and bfloat types:

- `tanh.approx.f16` and `tanh.approx.f16x2` (PTX 7.0+, sm_75+)
- `tanh.approx.bf16` and `tanh.approx.bf16x2` (PTX 7.8+, sm_90+)

Adds a `FTANHInst` TableGen class with the new patterns in NVPTXInstrInfo.td and splits `ISD::FTANH` out of the unconditional `f16/bf16 -> f32` promotion loop in NVPTXISelLowering.cpp, marking it Legal when the target supports it (scalars promote, vectors expand on older targets). Also guards `tanh.approx.f32` behind sm_75 and adds the
missing `AddPromotedToType` for bf16.

PTX Spec Reference:
https://docs.nvidia.com/cuda/parallel-thread-execution/#half-precision-floating-point-instructions-tanh

Signed-off-by: Varad Rahul Kamthe <vkamthe at nvidia.com>
DeltaFile
+104-12llvm/test/CodeGen/NVPTX/tanhf.ll
+21-1llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+17-4llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
+1-0llvm/lib/Target/NVPTX/NVPTXSubtarget.cpp
+143-174 files

LLVM/project 81660f5llvm/lib/Target/AArch64 AArch64ISelLowering.cpp, llvm/lib/Target/AArch64/GISel AArch64LegalizerInfo.cpp

[AArch64] stilp for 128-bit SC stores with RCPC3

This is what atomicsabi64.pdf suggests.
https://github.com/ARM-software/abi-aa/releases
DeltaFile
+2-3llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+1-3llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-store-rcpc3.ll
+1-3llvm/test/CodeGen/AArch64/Atomics/aarch64_be-atomic-store-rcpc3.ll
+2-1llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
+6-104 files

LLVM/project 3fe9d5dllvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AArch64 udiv-const-optimization.ll

[SelectionDAG] Widen even 33-bit-magic udiv on free-zext targets (#207634)

On 64-bit targets, #181288 lowers a 32-bit unsigned division by a
constant with a 33-bit magic number (the `IsAdd` case) to a widened
64-bit high-multiply (`MULHU`/`UMUL_LOHI`), e.g. `x / 7` becomes a
single `mulq`/`umulh`/`mulhu`. That only reaches odd divisors. This
patch extends it to even divisors on targets where the `i32 -> i64`
zero-extension is free.
DeltaFile
+34-0llvm/test/CodeGen/AArch64/udiv-const-optimization.ll
+33-0llvm/test/CodeGen/X86/udiv-const-optimization.ll
+16-0llvm/test/CodeGen/RISCV/udiv-const-optimization.ll
+7-1llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+4-4llvm/test/CodeGen/X86/divide-by-constant.ll
+94-55 files

LLVM/project 54d9717clang/test/CodeGen amdgpu-builtin-processor-is.c amdgpu-builtin-is-invocable.c, clang/test/CodeGenCXX dynamic-cast-address-space.cpp

[AMDGPU] Clean up GFX13 feature list

GFX13 features were previously mostly inherited from GFX12/GFX1250.
- define an explicit gfx13 target parser feature list, including
  gfx13-insts and cvt-pknorm-vop3-insts.
- remove transpose load F4/F6 support from gfx13 (previously copied from gfx12)
DeltaFile
+43-3llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+0-16llvm/test/MC/AMDGPU/gfx13_asm_vds.s
+2-2clang/test/CodeGenCXX/dynamic-cast-address-space.cpp
+1-1clang/test/CodeGen/amdgpu-builtin-processor-is.c
+1-1clang/test/CodeGen/amdgpu-builtin-is-invocable.c
+0-1llvm/lib/Target/AMDGPU/AMDGPU.td
+47-246 files

LLVM/project d85e8e7llvm/lib/Transforms/Vectorize VPlanRecipes.cpp LoopVectorizationPlanner.h, llvm/test/Transforms/LoopVectorize vscale-cost.ll

[VPlan] Add VPInstruction::Intrinsic opcode, use for scalar intrinsics. (#207541)

This patch adds a new Intrinsic opcode to VPInstruction, initially used
for generating calls to scalar intrinsics. The intrinsic ID as integer
is the last operand (i.e. the called function). Alternatively we could
also create the needed intrinsic declarations and pass the function
directly, but that would add potentially unused declarations, if we
decide to not vectorize.

The first patch migrates just VScale, but there are other opcodes
matching directly to intrinsics, which will be replaced in follow ups.

It also gives more flexibility going forward, e.g. allows emitting
min/max intrinsics when expanding SCEV min/max expressions.

PR: https://github.com/llvm/llvm-project/pull/207541
DeltaFile
+33-14llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+14-2llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+4-4llvm/lib/Transforms/Vectorize/VPlan.h
+3-4llvm/lib/Transforms/Vectorize/VPlanPatternMatch.h
+6-1llvm/lib/Transforms/Vectorize/VPlanUtils.h
+2-2llvm/test/Transforms/LoopVectorize/vscale-cost.ll
+62-271 files not shown
+63-287 files

LLVM/project 170a479clang/include/clang/Options FlangOptions.td, flang/include/flang/Lower LoweringOptions.def

[flang][Driver] Add option for real sum reassociation (#207377)

Compiler driver option for #207371: -freal-sum-reassociation. 
Disabled by default.

Assisted-by: Codex
DeltaFile
+27-0flang/test/Driver/real-sum-reassociation.f90
+17-0clang/include/clang/Options/FlangOptions.td
+1-5flang/lib/Lower/Bridge.cpp
+6-0flang/test/Driver/driver-help.f90
+5-0flang/lib/Frontend/CompilerInvocation.cpp
+4-0flang/include/flang/Lower/LoweringOptions.def
+60-53 files not shown
+65-69 files