LLVM/project 39d5aeamlir/include/mlir/Dialect/OpenACC OpenACCUtilsLoop.h, mlir/lib/Dialect/OpenACC/Utils OpenACCUtilsLoop.cpp

[OpenACC] Replace terminators with scf.yield in wrapMultiBlockRegionWithSCFExecuteRegion (#184458)

When wrapping a multi-block region in `scf.execute_region`, replace
`func::ReturnOp` (if flag `convertFuncReturn` is set) and `acc::YieldOp`
in all the blocks with `scf.yield` so the region has a valid SCF
terminator.
DeltaFile
+154-0mlir/unittests/Dialect/OpenACC/OpenACCUtilsLoopTest.cpp
+20-13mlir/lib/Dialect/OpenACC/Utils/OpenACCUtilsLoop.cpp
+10-6mlir/include/mlir/Dialect/OpenACC/OpenACCUtilsLoop.h
+184-193 files

LLVM/project a4207f3llvm/test/CodeGen/AMDGPU amdgcn.bitcast.1024bit.ll amdgcn.bitcast.512bit.ll, llvm/test/CodeGen/RISCV/rvv clmulh-sdnode.ll

Merge branch 'main' into users/KseniyaTikhomirova/usm_3_alloc
DeltaFile
+84,419-78,498llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+25,751-24,782llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+23,663-20,281llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.960bit.ll
+21,867-18,577llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.896bit.ll
+13,685-22,906llvm/test/CodeGen/RISCV/rvv/clmulh-sdnode.ll
+19,112-16,445llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.832bit.ll
+188,497-181,4891,674 files not shown
+348,974-290,2321,680 files

LLVM/project 613a5c5mlir/include/mlir/Dialect/Vector/TransformOps VectorTransformOps.td, mlir/include/mlir/Dialect/Vector/Transforms LoweringPatterns.h

[mlir][vector] Replace OneDimMultiReductionToTwoDim with OneDimMultiReductionToReduction (#184241)

The `OneDimMultiReductionToTwoDim` pattern had some issues. For the
input program:

```mlir
func.func @rank1_multi_reduction(%arg0: vector<8xf32>, %acc: f32) -> f32 {
    %0 = vector.multi_reduction <add>, %arg0, %acc [0] : vector<8xf32> to f32
    return %0 : f32
}
```

* when lowering using the inner-parallel strategy, the compiler would
essentially produce scalar code:
```mlir
func.func @rank1_multi_reduction(%arg0: vector<8xf32>, %arg1: f32) -> f32 {
    %0 = vector.shape_cast %arg0 : vector<8xf32> to vector<1x8xf32>
    %1 = vector.broadcast %arg1 : f32 to vector<1xf32>
    %2 = vector.transpose %0, [1, 0] : vector<1x8xf32> to vector<8x1xf32>

    [38 lines not shown]
DeltaFile
+0-102mlir/test/Dialect/Vector/vector-multi-reduction-reorder-and-expand.mlir
+30-63mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp
+62-0mlir/test/Dialect/Vector/vector-multi-reduction-reorder.mlir
+25-8mlir/test/Dialect/Vector/vector-multi-reduction-unrolling.mlir
+10-8mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td
+4-7mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h
+131-1887 files not shown
+142-19913 files

LLVM/project 7b72b5futils/bazel/llvm-project-overlay/lldb BUILD.bazel

[bazel] Fix building lldb without libedit (#184535)

We were always trying to compile the libedit file even if it wasn't used
because we were missing this conditional from cmake:


https://github.com/llvm/llvm-project/blob/630b9570d199dca19dc85834f583bc8590a21876/lldb/source/Host/CMakeLists.txt#L57-L61
DeltaFile
+19-7utils/bazel/llvm-project-overlay/lldb/BUILD.bazel
+19-71 files

LLVM/project 8486d89llvm/lib/CodeGen/SelectionDAG LegalizeDAG.cpp

[SelectionDAG] Fix -Wunused-variable after #179318 (#184623)

```
llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:3572:26: error: unused variable 'NanEnc' [-Werror,-Wunused-variable]
 3572 |     const fltNanEncoding NanEnc = SrcSem.nanEncoding;
      |                          ^~~~~~
```

Simply inline the definition of the variable given it is not used
anywhere else and the assignment is a simple copy.
DeltaFile
+1-2llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+1-21 files

LLVM/project a40e83blibsycl/include/sycl/__impl queue.hpp property_list.hpp, libsycl/include/sycl/__impl/detail default_async_handler.hpp

[libsycl] Add sycl::queue stub (#184110)

Part 2 of changes needed for USM alloc/dealloc impl.

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
+151-0libsycl/include/sycl/__impl/queue.hpp
+74-0libsycl/src/detail/queue_impl.hpp
+55-0libsycl/include/sycl/__impl/detail/default_async_handler.hpp
+36-0libsycl/src/queue.cpp
+33-0libsycl/include/sycl/__impl/property_list.hpp
+33-0libsycl/include/sycl/__impl/async_handler.hpp
+382-04 files not shown
+412-010 files

LLVM/project 53aa770flang/tools/f18 CMakeLists.txt

[flang] Fix distribution build of Fortran builtin/intrinsic modules. (#184204)

Currently, `-DLLVM_DISTRIBUTION_COMPONENTS="flang-module-interfaces"`
doesn't work. It failed to build the Fortran builtin/intrinsic modules
as distribution build, `install-distribution`.
This PR is to fix that.
DeltaFile
+2-0flang/tools/f18/CMakeLists.txt
+2-01 files

LLVM/project e8e8d30clang/lib/Headers hvx_hexagon_protos.h, clang/test/Headers hexagon-hvx-ieee-headers.c

[Hexagon] Use __HVX_IEEE_FP__ to guard protos that need -mhvx-ieee-fp (#184422)

Hexagon clang recently started to define __HVX_IEEE_FP__ when the
-mhvx-ieee-fp option is specified. Guard the intrinsic macros for
instructions that should only be available with -mhvx-ieee-fp with
__HVX_IEEE_FP__.

Additionally, the following NFC changes are included:

- NFC: Remove guards around HVX v60 intrinsic macros
  Hexagon v60 is the oldest Hexagon version that supports HVX so these
  guards were redundant. Presence of HVX is guarded separately, once
  per the whole file.

- Remove comments from closing guards (HVX protos)
  These comments served very limited function as they only guard
  one macro. Also, they were incorrect. Instead of fixing remove them.
  This will also reduce by the factor of two the amount of changes
  when guarding conditions change.
DeltaFile
+287-891clang/lib/Headers/hvx_hexagon_protos.h
+20-0clang/test/Headers/hexagon-hvx-ieee-headers.c
+307-8912 files

LLVM/project 9402f94libsycl/include/sycl/__impl queue.hpp, libsycl/src/detail queue_impl.hpp

fix wording

Signed-off-by: Tikhomirova, Kseniya <kseniya.tikhomirova at intel.com>
DeltaFile
+1-1libsycl/include/sycl/__impl/queue.hpp
+1-1libsycl/src/detail/queue_impl.hpp
+2-22 files

LLVM/project f55080dflang/lib/Lower/OpenMP ClauseProcessor.cpp OpenMP.cpp, flang/test/Lower/OpenMP implicit-map-pointer-no-default-mapper.f90 target-data-skip-mapper-calls.f90

[flang][OpenMP] Avoid implicit default mapper on pointer captures (#184382)

This change fixes incorrect implicit declare mapper behavior in Flang
OpenMP lowering.

Issue:
Implicit default mappers were being attached/generated for pointer-based
implicit captures, and also on data-motion directives. That could
trigger recursive component mapping that overlaps/conflicts with
explicit user mappings, causing runtime mapping failures.

Fix:

- Skip implicit default mapper generation for implicit pointer captures
(keep support for allocatables).
- Do not auto-attach implicit mappers on target enter data, target exit
data, or target update.
- Apply the same pointer guard in the implicit target-capture lowering
path.
DeltaFile
+26-0flang/test/Lower/OpenMP/implicit-map-pointer-no-default-mapper.f90
+20-1flang/lib/Lower/OpenMP/ClauseProcessor.cpp
+6-3flang/lib/Lower/OpenMP/OpenMP.cpp
+6-0flang/test/Lower/OpenMP/target-data-skip-mapper-calls.f90
+58-44 files

LLVM/project 247a9bfmlir/lib/Dialect/AMDGPU/Transforms FoldMemRefsOps.cpp, mlir/test/Dialect/AMDGPU amdgpu-fold-memrefs.mlir

[mlir][AMDGPU] Add folders for memref aliases to TDM base creation (#184567)

The TDM base creation (amdgpu.make_tdm_base and
amdgpu.make_gather_tdm_base) take references to a
`%memref[%i0, %i1,, ...]` for the starting point of the tiles in
global/shared memory that the TDM descriptor refers to. Memory alias ops
can be safely folded into these operations, since these two memref
operands are just pointers to a scalar starting pint and don't have
semantics that depend on the memref layout (except to the extent that it
defines a location in memory).

While I'm here, I've cleaned up a few things, like the incorrect file
header and fixed the tests to not use integer address spaces.

Co-authored-by: Claude Opus 4.6 <noreply at anthropic.com>
DeltaFile
+156-24mlir/test/Dialect/AMDGPU/amdgpu-fold-memrefs.mlir
+44-4mlir/lib/Dialect/AMDGPU/Transforms/FoldMemRefsOps.cpp
+200-282 files

LLVM/project a3eb13bllvm/lib/Target/X86 X86ISelDAGToDAG.cpp, llvm/test/CodeGen/X86 mulx64-no-implicit-copy.ll

[X86] remove unnecessary movs when %rdx is an input to mulx (#184462)

Closes: https://github.com/llvm/llvm-project/issues/174912

When generating a `mulx` instruction for a widening multiplication, even
if one input is placed in %rdx, LLVM won't place it in the implicit
first slot, instead it'll generate two movs before calling mulx to swap
the registers, which are unnecessary. GCC already has this optimization
(as shown in the issue) so this puts the two compilers closer to each
other on that front.

Co-authored-by: Aiden Grossman <aidengrossman at google.com>
DeltaFile
+69-0llvm/test/CodeGen/X86/mulx64-no-implicit-copy.ll
+18-0llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+87-02 files

LLVM/project ded64d2llvm/include/llvm/Support GenericDomTreeConstruction.h, llvm/unittests/Analysis DomTreeUpdaterTest.cpp

[DTU] fix dominator tree update eliding reachable nodes (#177683)

The initial CFG looks like this:

![initial_graph.png](https://app.graphite.com/user-attachments/assets/1e3109c5-7c02-4c81-b9b3-fa6a25964e00.png)

After inlining, it looks like this:

![after_inlining.png](https://app.graphite.com/user-attachments/assets/10906dc6-1865-4125-8cd5-c2af69191858.png)

It should be sufficient to add and remove the edges shown in the test, i.e.:
- add: `bb3->bb1.i` and `bb3->bb2.i`
- remove: `bb3->bb4`, `bb3->bb5` and `bb5->bb8`

New nodes, like `bb5.body`, get discovered when adding bb3->bb2.i. See the "StepByStep" variant of the test). Without the fix in this patch, however, `bb5.body` gets elided when the deleted edges get taken into account, and `DT` is left invalid.
DeltaFile
+220-0llvm/unittests/Analysis/DomTreeUpdaterTest.cpp
+5-2llvm/include/llvm/Support/GenericDomTreeConstruction.h
+225-22 files

LLVM/project b28ec5amlir/include/mlir/Dialect/Func/IR FuncOps.td, mlir/lib/Dialect/Func/IR FuncOps.cpp

[mlir][Func] Fix FuncOp verifier ordering via hasRegionVerifier (#184612)

FuncOp::verify() iterated over all blocks and called
getMutableSuccessorOperands() on any RegionBranchTerminatorOpInterface
terminator to check return types. This ran during the entrance phase of
verification — before child ops had been verified — so a malformed
terminator whose getMutableSuccessorOperands() assumed invariants
established by its own verify() could crash instead of emitting a clean
diagnostic.

Fix by switching to hasRegionVerifier=1: rename verify() →
verifyRegions() so the return-type checks run in the exit phase, after
all nested ops have already been verified.

To demonstrate the bug and guard against regression, add
TestCrashingReturnOp to the test dialect. The op implements
RegionBranchTerminatorOpInterface and report_fatal_errors in
getMutableSuccessorOperands() when its 'valid' unit-attr is absent,
reproducing the class of crash described above. The accompanying lit
test confirms a clean diagnostic is emitted rather than a crash.
DeltaFile
+18-0mlir/test/lib/Dialect/Test/TestOpDefs.cpp
+11-0mlir/test/lib/Dialect/Test/TestOps.td
+10-0mlir/test/Dialect/Func/invalid.mlir
+1-1mlir/include/mlir/Dialect/Func/IR/FuncOps.td
+1-1mlir/lib/Dialect/Func/IR/FuncOps.cpp
+41-25 files

LLVM/project e5a6a0fllvm/lib/Target/SPIRV SPIRVUtils.cpp SPIRVPrepareFunctions.cpp, llvm/test/CodeGen/SPIRV global-var-no-functions.ll legalize-zero-size-arrays-struct.ll

[SPIRV] Fix global emission for modules with no functions (#183833)

Right now we have a problem where if you have a LLVM module with globals
but no functions, a completely empty SPIR-V module is emitted.

This is because global emission is dependent on tracking intrinsic
functions being emitted in functions.

As a simple fix, just insert a service function, which the backend is
already set up to not actually emit, if there are no real functions.

The current use case of the service function is for function pointers. I
don't think it's possible that we need to both generate a service
function for function pointers and for globals with no functions, so I
just added an error (not an assert) just in case if we do need it for
both cases.

Probably we should rework global handling in the future to work without
these workarounds, but this is a pretty fundamental issue so let's work

    [15 lines not shown]
DeltaFile
+18-0llvm/lib/Target/SPIRV/SPIRVUtils.cpp
+16-0llvm/test/CodeGen/SPIRV/global-var-no-functions.ll
+11-0llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp
+1-8llvm/lib/Target/SPIRV/SPIRVEmitIntrinsics.cpp
+2-2llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-struct.ll
+2-2llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-undef.ll
+50-124 files not shown
+56-1710 files

LLVM/project c123642.github/workflows/containers/github-action-ci Dockerfile

[CI] Install binutils-dev in pre-merge container (#184608)

This is to get the plugin-api.h file, to allow running tests for the
gold plugin.
DeltaFile
+2-1.github/workflows/containers/github-action-ci/Dockerfile
+2-11 files

LLVM/project 33be2d0llvm/test/CodeGen/AArch64 clmul-fixed.ll clmul.ll

[AArch64] Update clmul tests after #184403 (#184611)

This was likely a mid-air collision with #183282. Update the tests to
match the current state of HEAD.
DeltaFile
+10-10llvm/test/CodeGen/AArch64/clmul-fixed.ll
+9-9llvm/test/CodeGen/AArch64/clmul.ll
+19-192 files

LLVM/project c9ca768mlir/lib/Dialect/Shape/IR Shape.cpp, mlir/test/Dialect/Shape invalid.mlir

[mlir][shape] Fix crash when shape.lib array references undefined symbol (#184613)

In verifyOperationAttribute(), the single-symbol path for shape.lib used
SymbolTable::lookupSymbolIn() followed by an explicit null check. The
array path at line 196-197 used dyn_cast<FunctionLibraryOp>() directly
on the lookup result, which asserts when the symbol is not found (null
pointer).

Fix: use dyn_cast_or_null<> instead of dyn_cast<> so that a missing
symbol falls through to the existing "does not refer to
FunctionLibraryOp" error diagnostic instead of asserting.

Fixes #159653
DeltaFile
+8-0mlir/test/Dialect/Shape/invalid.mlir
+1-1mlir/lib/Dialect/Shape/IR/Shape.cpp
+9-12 files

LLVM/project 56e0b6amlir/test/Dialect/Affine/SuperVectorize vectorize_unsupported.mlir, mlir/test/lib/Dialect/Affine TestVectorizationUtils.cpp

[mlir][affine] Fix crash in vectorizeAffineLoopNest test utility for reduction loops (#184617)

The test utility function `testVecAffineLoopNest` called
`isLoopParallel` with a `reductions` output parameter, which populates
reduction descriptors when the loop performs a reduction. However, these
descriptors were never added to `strategy.reductionLoops` before calling
`vectorizeAffineLoopNest`. When the vectorizer then processed a loop
with `iter_args`, it found no reduction descriptors in the strategy and
hit an assertion failure.

Fix by registering the reduction loop descriptors in the strategy before
vectorization, matching what the production vectorizer code already does
correctly.

Fixes #128334
DeltaFile
+25-0mlir/test/Dialect/Affine/SuperVectorize/vectorize_unsupported.mlir
+2-0mlir/test/lib/Dialect/Affine/TestVectorizationUtils.cpp
+27-02 files

LLVM/project c370f5allvm/lib/Transforms/Vectorize VPlanTransforms.cpp, llvm/test/Transforms/LoopVectorize if-pred-stores.ll

[VPlan] Preserve IsSingleScalar for hoisted predicated load. (#184453)

The predicated loads may be single scalar (e.g. for VF = 1). We should
preserve IsSingleScalar when hoisting them. As all loops access the same
address, IsSingleScalar must match across all loads in the group.

This fixes an assertion when interleaving-only with hoisted loads.

Fixes https://github.com/llvm/llvm-project/issues/184372

PR: https://github.com/llvm/llvm-project/pull/184453
DeltaFile
+194-0llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
+8-2llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+202-22 files

LLVM/project 50653e5mlir/lib/Dialect/Tosa/IR TosaCanonicalizations.cpp, mlir/test/Dialect/Tosa canonicalize.mlir

[tosa] : Enhance tosa.slice folding for dynamic dims. (#184615)

Source IR:
```
func.func @main(%arg0: tensor<?x112x64x112xf32>) -> tensor<?x113x65x112xf32> {
    %0 = tosa.const_shape  {values = dense<[0, 0, 1, 1, 1, 1, 0, 0]> : tensor<8xindex>} : () -> !tosa.shape<8>
    %1 = "tosa.const"() <{values = dense<0.000000e+00> : tensor<1xf32>}> : () -> tensor<1xf32>
    %2 = tosa.pad %arg0, %0, %1 : (tensor<?x112x64x112xf32>, !tosa.shape<8>, tensor<1xf32>) -> tensor<?x114x66x112xf32>
    %3 = tosa.const_shape  {values = dense<0> : tensor<4xindex>} : () -> !tosa.shape<4>
    %4 = tosa.const_shape  {values = dense<[-1, 113, 65, 112]> : tensor<4xindex>} : () -> !tosa.shape<4>
    %5 = tosa.slice %2, %3, %4 : (tensor<?x114x66x112xf32>, !tosa.shape<4>, !tosa.shape<4>) -> tensor<?x113x65x112xf32>
    return %5 : tensor<?x113x65x112xf32>
  }
```

when canonicalized produces

```
$> mlir-opt --canonicalize

    [24 lines not shown]
DeltaFile
+52-9mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp
+33-0mlir/test/Dialect/Tosa/canonicalize.mlir
+85-92 files

LLVM/project f330810llvm/lib/Target/AMDGPU AMDGPURegBankLegalizeHelper.cpp, llvm/test/CodeGen/AMDGPU fptoi.i128.ll global-saddr-load.ll

AMDGPU/GlobalISel: Regbanklegalize rules for G_PHI

Move G_PHI handling to AMDGPURegBankLegalizeRules.cpp.
Support all legal types.
DeltaFile
+183-157llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.memcpy.ll
+130-114llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.set.inactive.ll
+70-65llvm/test/CodeGen/AMDGPU/fptoi.i128.ll
+45-48llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.memset.ll
+38-50llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeHelper.cpp
+37-43llvm/test/CodeGen/AMDGPU/global-saddr-load.ll
+503-4779 files not shown
+579-52915 files

LLVM/project 11c11ecclang/docs ReleaseNotes.rst, clang/lib/Lex Lexer.cpp

[clang][Lex] Preserve MultipleIncludeOpt state in Lexer::peekNextPPToken (#183425)

Fixes https://github.com/llvm/llvm-project/issues/180155.

This is a duplicate of https://github.com/llvm/llvm-project/pull/180700
except that I also added some tests, fine to go with either PR, but we
should add the tests.

peekNextPPToken lexed a token and mutated MIOpt, which could clear the
controlling-macro state for main files in C++20 modules mode.
Save/restore MIOpt in Lexer::peekNextPPToken.

Add regression coverage in
LexerTest.MainFileHeaderGuardedWithCPlusPlusModules that checks to make
sure the controlling macro is properly set in C++20 mode.

Add source level lit test in miopt-peek-restore-header-guard.cpp that
checks to make sure that the warnings that depend on the MIOpt state
machine are emitted in C++20 mode.
DeltaFile
+34-0clang/unittests/Lex/LexerTest.cpp
+12-0clang/test/Preprocessor/miopt-peek-restore-header-guard.cpp
+2-0clang/lib/Lex/Lexer.cpp
+1-0clang/docs/ReleaseNotes.rst
+49-04 files

LLVM/project 5c27407clang/lib/StaticAnalyzer/Checkers VirtualCallChecker.cpp, clang/test/Analysis virtualcall.cpp

[analyzer] Suppress optin.cplusplus.VirtualCall warnings in system headers (#184183)

Fixes #184178

The optin.cplusplus.VirtualCall checker reports warnings for virtual
method calls during construction/destruction even when the call site is
in a system header (included via -isystem). Users cannot fix such code
and must resort to NOLINT suppressions.

Add a system header check in checkPreCall before emitting the report,
consistent with how other checkers (e.g. MallocChecker) handle this.
DeltaFile
+11-0clang/test/Analysis/Inputs/virtualcall-system-header.h
+5-0clang/lib/StaticAnalyzer/Checkers/VirtualCallChecker.cpp
+5-0clang/test/Analysis/virtualcall.cpp
+21-03 files

LLVM/project 073de3bllvm/lib/Target/SPIRV SPIRVInstructionSelector.cpp

[SPIRV] Rename `selectSelectDefaultArgs` to `selectBoolToInt` (#184120)

The function is used to extend a `bool` (vector or scalar) into `1/-1`
for `true` and `0` for `false` (vector or scalar).

There is no obvious "default" argument for a select operation, so the
original name is confusing.

This patch:
* Renames this function to better signal its intention,
* makes the boolean argument explicit in the function (instead of
implicit through the first register operand of the instruction),
* rename `I` to `InsertAt`.
DeltaFile
+19-14llvm/lib/Target/SPIRV/SPIRVInstructionSelector.cpp
+19-141 files

LLVM/project 0cbba3eflang-rt CMakeLists.txt

[flang-rt] Fix incorrect condition for removing backtrace (#184610)

DeltaFile
+1-1flang-rt/CMakeLists.txt
+1-11 files

LLVM/project c6bb6a7llvm/lib/Transforms/Vectorize LoopVectorize.cpp, llvm/test/Transforms/LoopVectorize tail-folding-masked-mem-opts.ll

[LV] Add `-force-target-supports-masked-memory-ops` option (#184325)

This can be used to make target agnostic tail-folding tests much less
verbose, as masked loads/stores can be used rather than scalar
predication.
DeltaFile
+170-0llvm/test/Transforms/LoopVectorize/tail-folding-masked-mem-opts.ll
+35-82llvm/test/Transforms/LoopVectorize/VPlan/conditional-scalar-assignment-vplan.ll
+11-2llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+216-843 files

LLVM/project 71de1e4llvm/lib/Target/AArch64 AArch64InstrInfo.td, llvm/test/CodeGen/AArch64 arm64-cvt-simd-intrinsics.ll sve-fixed-vector-lrint.ll

Reapply "[AArch64] Wrap integer SCALAR_TO_VECTOR nodes in bitcasts  (#172837)" (#183380) (#184403)

This reverts commit b7ce37c6703f2d82376f50f82a05b807a0ad90ad.
The
[issue](https://github.com/llvm/llvm-project/pull/172837#issuecomment-3961532435)
this patch revealed was fixed by [this
patch](https://github.com/llvm/llvm-project/pull/183549).
DeltaFile
+1,205-1llvm/test/CodeGen/AArch64/arm64-cvt-simd-intrinsics.ll
+506-540llvm/test/CodeGen/AArch64/sve-fixed-vector-lrint.ll
+250-281llvm/test/CodeGen/AArch64/vector-lrint.ll
+174-189llvm/test/CodeGen/AArch64/sve-fixed-vector-llrint.ll
+62-66llvm/test/CodeGen/AArch64/ragreedy-local-interval-cost.ll
+47-32llvm/lib/Target/AArch64/AArch64InstrInfo.td
+2,244-1,10928 files not shown
+2,586-1,41934 files

LLVM/project 21c1ba1llvm/test/CodeGen/AMDGPU local-stack-alloc-add-references.gfx8.mir coalesce-copy-to-agpr-to-av-registers.mir, llvm/test/TableGen ArtificialRegs.td

[TableGen] Complete the support for artificial registers (#183371)

Artificial registers were added in
eb0c510ecde667cd911682cc1e855f73f341d134
as a means of giving super-registers heavier weights than that
of their subregisters, even when they only contain a single
physical subregister.

Artifical registers thus do exist in code and participate in
register unit weight calculations, but are not supposed to be
available for register allocation.

This patch completes the support for artificial registers to:

- Ignore artificial registers when joining register unit uber
  sets. Artificial registers may be members of classes that
  together include registers and their sub-registers, making it
  impossible to compute normalised weights for uber sets they
  belong to.

    [28 lines not shown]
DeltaFile
+180-180llvm/test/CodeGen/AMDGPU/local-stack-alloc-add-references.gfx8.mir
+120-120llvm/test/CodeGen/AMDGPU/coalesce-copy-to-agpr-to-av-registers.mir
+90-90llvm/test/CodeGen/AMDGPU/local-stack-alloc-add-references.gfx9.mir
+60-7llvm/utils/TableGen/Common/CodeGenRegisters.cpp
+56-0llvm/test/TableGen/ArtificialRegs.td
+18-18llvm/test/CodeGen/AMDGPU/rewrite-vgpr-mfma-to-agpr-subreg-src2-chain.mir
+524-41525 files not shown
+680-56231 files

LLVM/project c2e22e3clang/utils/hmaptool CMakeLists.txt

[clang][cmake] Add option to control hmaptool installation (#172725)

DeltaFile
+7-2clang/utils/hmaptool/CMakeLists.txt
+7-21 files