LLVM/project 5ed7492llvm/lib/Target/M68k M68kRegisterInfo.td M68kInstrInfo.cpp, llvm/test/CodeGen/M68k/Control cmp-cse.ll

[M68k] Fix Instruction Verifier errors related to `MOVEM` and `PHI` lowering (#219011)

This fixes some errors reported by the Instruction Verifier when
building with `-verify-machineinstrs`.

- The `MOVM` pseudos are given an 8-bit variant so that the IV can
correctly see 8-bit physical registers being defined/used. Without this,
8-bit register spills fail IV by attempting to load/store an undefined
physical register (the 16-bit superclass of the 8-bit register). Codegen
is not affected by this change.
- During `CollapseMOVEMPass`, the implicit ops are now copied over from
the old deleted instructions into the new combined instruction. This
fixes IV failing in cases where an instruction wants to use registers
that were defined by the collapsed `MOVEM`. Codegen is not affected by
this change.
- CCR is now marked as non-allocatable (which is true anyway). The
custom inserter for `CMOV` (`emitLoweredSelect()`) has logic where CCR
is added as a live-in for the newly-created blocks that are expected to
use it. This would cause IV to fail, because IV doesn't allow non-entry

    [3 lines not shown]
DeltaFile
+66-0llvm/test/CodeGen/M68k/Control/cmp-cse.ll
+21-16llvm/lib/Target/M68k/M68kCollapseMOVEMPass.cpp
+8-0llvm/lib/Target/M68k/M68kInstrData.td
+4-0llvm/lib/Target/M68k/M68kExpandPseudo.cpp
+1-1llvm/lib/Target/M68k/M68kRegisterInfo.td
+1-1llvm/lib/Target/M68k/M68kInstrInfo.cpp
+101-186 files

LLVM/project e4c86bd.github/workflows release-binaries.yml

workflow/release-binaries: Hard-code Wix install path (#219328)

Searching for the candle.exe executable is very slow and we know the
install path will always be the same since we have version pinned the
install.
DeltaFile
+4-2.github/workflows/release-binaries.yml
+4-21 files

LLVM/project d6e7e63llvm/lib/Transforms/Vectorize LoopVectorize.cpp

[LV] Remove dead attachRuntimeChecks call for the epilogue plan (NFC). (#219575)

The runtime check blocks are attached to the main plan, and executing it
gives them predecessors in the generated IR. attachRuntimeChecks only
attaches check blocks without predecessors, so the call for the epilogue
plan never does anything. Remove it.
DeltaFile
+0-1llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+0-11 files

LLVM/project f6797b2clang/test/CIR/CodeGen vector-bool.cpp

[CIR][NFC] Add tests for Vector of bool in GV, Shuffle (#218135)

Add extra tests for a vector of booleans in the global variable with
zero attr, shuffle, and dynamic shuffle
DeltaFile
+79-0clang/test/CIR/CodeGen/vector-bool.cpp
+79-01 files

LLVM/project 01a1a08clang/include/clang/ScalableStaticAnalysis/Analyses/EntityPointerLevel EntityPointerLevel.h, clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel EntityPointerLevel.cpp

fix clang-format
DeltaFile
+4-2clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.cpp
+2-1clang/include/clang/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.h
+1-1clang/unittests/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevelTest.cpp
+7-43 files

LLVM/project 96b68e0clang/lib/Sema HLSLExternalSemaSource.cpp

Move .addDefaultHandleConstructor()....addStaticInitializationFunctions(false) to just after the .addTextureHandle(...)
DeltaFile
+4-5clang/lib/Sema/HLSLExternalSemaSource.cpp
+4-51 files

LLVM/project 80b6874clang/include/clang/ScalableStaticAnalysis/Analyses/EntityPointerLevel EntityPointerLevel.h, clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel EntityPointerLevel.cpp

address comments
DeltaFile
+127-46clang/unittests/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevelTest.cpp
+63-63clang/lib/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.cpp
+11-13clang/include/clang/ScalableStaticAnalysis/Analyses/EntityPointerLevel/EntityPointerLevel.h
+201-1223 files

LLVM/project 7611130llvm/lib/Target/AMDGPU SIFoldOperands.cpp, llvm/test/CodeGen/AMDGPU trans-bf16-omod.ll

[AMDGPU] Code clean up and denorm check removal for bf16 omod folding (#219042)

This is the follow-up PR to address the additional comments and
suggestions from https://github.com/llvm/llvm-project/pull/218286

Use FP64FP16Denormals to check the output denomal flushing because
BF16 is usig the default.

Also clean up the surrounding code:

- src0_modifiers/src1_modifiers are always present on these packed
opcodes (VOP3P_Profile sets HasModifiers), so drop the null checks and
dereference the operands directly.

- Fix the comment on the modifier check: rather than "modifiers other
than op_sel_hi block folding", the point is that when omod is applied to
a packed instruction it only applies to the low half of the input and
output.


    [2 lines not shown]
DeltaFile
+100-0llvm/test/CodeGen/AMDGPU/trans-bf16-omod.ll
+12-11llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+112-112 files

LLVM/project 55a7b05flang/include/flang/Semantics openmp-utils.h, flang/lib/Semantics check-omp-structure.h check-omp-structure.cpp

[flang][OpenMP] Track reachable metadirective paths

Semantic checks currently consider each statically applicable replacement
independently. This can diagnose lower-ranked replacements that selection can
never reach. It also prevents nested construct selectors from observing
directives selected by enclosing metadirectives.

Consider an enclosing dynamic metadirective and a nested selector:

```text
outer: when(flag: target) default(parallel)
inner: when(construct={parallel}: simd) default(nothing)
```

The enclosing selection creates mutually exclusive effective paths:

```text
                       enclosing metadirective
                      /                       \

    [39 lines not shown]
DeltaFile
+345-92flang/lib/Semantics/check-omp-variant.cpp
+109-0flang/test/Semantics/OpenMP/metadirective-loop-applicability.f90
+56-25flang/lib/Semantics/check-omp-structure.cpp
+36-12flang/lib/Semantics/check-omp-structure.h
+23-0flang/test/Semantics/OpenMP/metadirective-loop-applicability-apply.f90
+4-0flang/include/flang/Semantics/openmp-utils.h
+573-1291 files not shown
+574-1307 files

LLVM/project daf9f25llvm/test/Transforms/SLPVectorizer/RISCV splat-gather-trim.ll

[SLP][NFC]Add an extra test for gathered splats, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/219574
DeltaFile
+152-0llvm/test/Transforms/SLPVectorizer/RISCV/splat-gather-trim.ll
+152-01 files

LLVM/project 0ad77a6clang/include/clang/Basic HLSLIntrinsics.td, clang/lib/Headers/hlsl hlsl_intrinsic_helpers.h hlsl_detail.h

[HLSL] Add matrix support for degrees(), radians() (#218573)

Resolves #184480, #184485

Assisted-by: Claude Opus 4
DeltaFile
+155-0clang/test/CodeGenHLSL/builtins/radians_mat.hlsl
+155-0clang/test/CodeGenHLSL/builtins/degrees_mat.hlsl
+11-0clang/lib/Headers/hlsl/hlsl_detail.h
+0-8clang/lib/Headers/hlsl/hlsl_intrinsic_helpers.h
+4-4clang/include/clang/Basic/HLSLIntrinsics.td
+325-125 files

LLVM/project 93ff4delldb/include/lldb/Target Process.h, lldb/source/Target Process.cpp

[lldb] Fix ProcessProperties reading the wrong experimental collection (#218939)

`ePropertyExperimental` was defined as one past the last generated
process
property, on the assumption that "experimental" is appended next.

lldb/source/Target/Process.cpp:
```
 enum {
 #define LLDB_PROPERTIES_process
 #include "TargetPropertiesEnum.inc" // 0..20
   ePropertyExperimental,            // 21
 };
```

However, the global collection appends "thread" first in
`ProcessProperties::ProcessProperties`,

```

    [28 lines not shown]
DeltaFile
+145-0lldb/unittests/Target/ProcessPropertiesTest.cpp
+17-19lldb/source/Target/Process.cpp
+3-0lldb/include/lldb/Target/Process.h
+1-0lldb/unittests/Target/CMakeLists.txt
+166-194 files

LLVM/project f058685clang/lib/CIR/CodeGen CIRGenRecordLayoutBuilder.cpp, clang/lib/CIR/Dialect/Transforms/TargetLowering CIRABIRewriteContext.cpp

[CIR] Layout _BitInt types in record/array in CIR as it is in LLVM-IR (#219487)

I've worked through this quite a bit, and spent some time working on
seeing if I could do this during LowerToLLVM, however this causes a ton
of complication, as this level of change affects basically every
member-access invariant that we have. Additionally, we have prior art
(bool -> 8 bits, FP80 -> 128 bits), that I think it makes sense at least
to 'put it with the rest'.

The problem is that the 'i' types for bitint(which they are lowered to)
don't match alignment-wise to the BitInt types. As a result, unless we
do a bunch of transformations to change the struct/array/etc types (plus
    the get-member/initialization, etc stuff this entails), we're going
to be reprensenting these types incorrectly. We have prior art for this
as well, particularly around zero-length bitfields (which we represent
    as a field in the LLVM-IR to prevent the above conflicts).

This patch does this layout at the CIR level, which gives us layout
parity to LLVM-IR, as well as making sure we represent things correctly

    [3 lines not shown]
DeltaFile
+235-0clang/test/CIR/CodeGen/bitint-record-layout.c
+1-64clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+56-2clang/lib/CIR/Lowering/LoweringHelpers.cpp
+17-7clang/lib/CIR/CodeGen/CIRGenRecordLayoutBuilder.cpp
+22-0clang/test/CIR/CodeGen/bitint-split-storage-nyi.c
+19-2clang/lib/CIR/Dialect/Transforms/TargetLowering/CIRABIRewriteContext.cpp
+350-755 files not shown
+391-8211 files

LLVM/project cccd976llvm/test/CodeGen/AMDGPU llvm.amdgcn.fcmp.w32.ll llvm.amdgcn.fcmp.w64.ll, llvm/test/CodeGen/AMDGPU/NextUseAnalysis test_ers_emit_restore_in_loop_preheader2.mir test_ers_nested_loops.mir

Rebase, address comments

Created using spr 1.3.7
DeltaFile
+0-6,246llvm/test/CodeGen/AMDGPU/NextUseAnalysis/test_ers_nested_loops.mir
+0-4,877llvm/test/CodeGen/AMDGPU/NextUseAnalysis/test_ers_emit_restore_in_loop_preheader2.mir
+0-2,905llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w64.ll
+0-2,456llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fcmp.w32.ll
+2,428-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-0.ll
+2,426-0llvm/test/CodeGen/SPIRV/extensions/SPV_EXT_long_vector/unmerge-crash-1.ll
+4,854-16,4842,686 files not shown
+125,854-69,3492,692 files

LLVM/project 3f22742clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/CodeGen vtable-nyi-nonconvertible-functype.cpp

[CIR] Skip ABI classification for an incomplete-record declaration (#218786)

A `cir.func` declaration whose signature carries an incomplete record by
value caused the pass to fail the whole module.

C++ requires a complete type at any call or definition, so only a
declaration can carry this shape, and no translation unit anywhere can
ever call or define it with real argument data. Classic CodeGen skips
full ABI lowering rather than attempting one. We now leave such a
declaration unclassified and match classic.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+54-0clang/test/CIR/Transforms/abi-lowering/x86_64-incomplete-record-declaration.cir
+21-0clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+12-0clang/test/CIR/Transforms/abi-lowering/declaration-rewrite.cir
+10-0clang/test/CIR/Transforms/abi-lowering/x86_64-aggregate-nyi.cir
+2-4clang/test/CIR/CodeGen/vtable-nyi-nonconvertible-functype.cpp
+99-45 files

LLVM/project d8a53c6llvm/test/CodeGen/PowerPC convert-rr-to-ri-instrs-out-of-range.mir convert-rr-to-ri-p9-vector.mir

[PowerPC] Update MIR syntax for INSERT_SUBREG in tests (#219523)

Use names instead of numbers for the subreg index operands in
INSERT_SUBREG instructions.
DeltaFile
+72-72llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs.mir
+4-4llvm/test/CodeGen/PowerPC/convert-rr-to-ri-p9-vector.mir
+3-3llvm/test/CodeGen/PowerPC/convert-rr-to-ri-instrs-out-of-range.mir
+79-793 files

LLVM/project e5cd716llvm/lib/Target/PowerPC PPCISelDAGToDAG.cpp PPCISelLowering.cpp

[PowerPC] Remove assumptions about subreg index values. NFC. (#219524)

Use subreg index names instead of hard coded values in a few places in
the backend.
DeltaFile
+3-3llvm/lib/Target/PowerPC/PPCISelLowering.cpp
+2-2llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+5-52 files

LLVM/project 9b13cd8llvm/test/Transforms/SLPVectorizer/AArch64 non-pow2-store-chain-shared-ops.ll

[SLP][NFC]Add a test with non-profitable non-power-of-2 vectorization, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/219566
DeltaFile
+142-0llvm/test/Transforms/SLPVectorizer/AArch64/non-pow2-store-chain-shared-ops.ll
+142-01 files

LLVM/project e883292llvm/test/Transforms/SLPVectorizer/AArch64 non-pow2-store-chain-shared-ops.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+142-0llvm/test/Transforms/SLPVectorizer/AArch64/non-pow2-store-chain-shared-ops.ll
+142-01 files

LLVM/project fa4c1ballvm/lib/Transforms/Scalar SROA.cpp, llvm/test/Transforms/SROA non-integral-pointer-vector-memset.ll

[SROA] Reject illegal vector memset promotion (#216772)

SROA can select vector promotion for an `alloca` partition containing a
memset and vector accesses whose element type is an unstable pointer.

We discovered this while building Julia with LLVM 21 and assertions
enabled. SROA crashed in `convertValue` because `canConvertValue`
rejected converting an integer splat to a non-integral pointer:

```
Assertion `canConvertValue(DL, OldTy, NewTy, VScale) &&
           "Value not convertable to type"' failed.
```

Current main no longer asserts because `convertValue` was replaced by
`CreateBitPreservingCastChain`. However, the underlying unsupported
transformation remains.

For example:

    [33 lines not shown]
DeltaFile
+25-0llvm/test/Transforms/SROA/non-integral-pointer-vector-memset.ll
+5-0llvm/lib/Transforms/Scalar/SROA.cpp
+30-02 files

LLVM/project 54fbabellvm/lib/Target/RISCV RISCVVLOptimizer.cpp

RISCV: Pass instruction and operand index to VL optimizer operand info (#219507)
DeltaFile
+27-27llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
+27-271 files

LLVM/project baaaeddclang/test/CIR/CodeGenCoroutines coro-task.cpp

[CIR] Drop call-conv-lowering opt-out from coro-task.cpp (#218990)

coro-task.cpp opted out of CallConvLowering because the pass did not
handle parameters of an empty or tag class. CallConvLowering handles
them now, so the test can run the pass and pin what it produces.

complex_co_await has one non-empty value in the modified CHECK lines. We
now lower complex correctly as well.

Assisted-by: Cursor / claude-opus-5
DeltaFile
+72-44clang/test/CIR/CodeGenCoroutines/coro-task.cpp
+72-441 files

LLVM/project 252db21. .git-blame-ignore-revs

[WebAssembly] Add git blame ignored commits (#219560)

This adds mass clang-format, clang-tidy, and typo fix commits to
`.git-blame-ignore-revs`.
DeltaFile
+8-0.git-blame-ignore-revs
+8-01 files

LLVM/project 39bf040llvm/lib/Target/AMDGPU SIFoldOperands.cpp SIInstrInfo.h

[AMDGPU][NFC] Unify getImmOrMaterializedImm and getFoldableImm (#219522)

`getImmOrMaterializedImm` and `getFoldableImm` both determine if an
operand has a constant value. Make a unified implementation that
supports the interfaces of both using the `getImmOrMaterializedImm`
name.

Signed-off-by: John Lu <John.Lu at amd.com>
DeltaFile
+45-47llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+7-2llvm/lib/Target/AMDGPU/SIInstrInfo.h
+2-4llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+54-533 files

LLVM/project 468ef9bllvm/lib/Target/AMDGPU MIMGInstructions.td, llvm/test/CodeGen/AMDGPU llvm.amdgcn.image.gather4.d16.dim.ll

[AMDGPU] Add the 3-dword image_gather4 variant for packed D16 + TFE (#215972)

MIMG_Gather only defined V2/V4/V5 destination-dword variants, so a d16
gather4 with tfe (which needs 3 dwords on packed-D16 targets) hit
"Cannot select" on gfx10+
DeltaFile
+15-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.image.gather4.d16.dim.ll
+2-0llvm/lib/Target/AMDGPU/MIMGInstructions.td
+17-02 files

LLVM/project 847c164llvm/lib/Target/AMDGPU AMDGPUISelLowering.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.ubfe.i64.err.ll llvm.amdgcn.sbfe.i64.err.ll

[AMDGPU] Reject i64 amdgcn.ubfe/sbfe with a diagnostic (#217461)

- BFE_I32/BFE_U32 are 32-bit only
- wider widths now expand to shifts
DeltaFile
+22-4llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+11-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.ubfe.i64.err.ll
+11-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.sbfe.i64.err.ll
+2-2llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+46-64 files

LLVM/project 914682ellvm/lib/Target/RISCV RISCVInstrInfoZicond.td RISCVInstrInfoXVentana.td, llvm/test/CodeGen/RISCV zicond-opts.ll

[RISCV] Move combineANDOfSETCCToCZERO to isel patterns. (#219318)

This allows us to reuse RISCVDAGToDAGISel::selectSETCC to pick
the best instruction when comparing against a constant.
DeltaFile
+502-2llvm/test/CodeGen/RISCV/zicond-opts.ll
+0-59llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+15-0llvm/test/CodeGen/RISCV/rvv/zicond-crash.ll
+6-5llvm/lib/Target/RISCV/RISCVISelDAGToDAG.h
+8-0llvm/lib/Target/RISCV/RISCVInstrInfoZicond.td
+8-0llvm/lib/Target/RISCV/RISCVInstrInfoXVentana.td
+539-662 files not shown
+550-678 files

LLVM/project 4e1a982lldb/bindings/interface SBFrameExtensions.i, lldb/include/lldb/API SBFrame.h

[lldb] Fix SBAPI breakage in SBFrame::GetValueForVariablePath (#218565)

SBFrame::GetValueForVariablePath added new parameters in commit
80fffd527c20ac8970fbffc37c674caa17faa815.
This caused an ABI break because
the ABI is based on the function's mangled name, which changes when
parameters are added. Existing users depend on the original symbol being
present in the library.
changing the ABI from:
```cpp
// _ZN4lldb7SBFrame23GetValueForVariablePathEPKcNS_16DynamicValueTypeE
lldb::SBFrame::GetValueForVariablePath(char const*, lldb::DynamicValueType)
```
to
```cpp
// _ZN4lldb7SBFrame23GetValueForVariablePathEPKcNS_16DynamicValueTypeENS_7DILModeE`
lldb::SBFrame::GetValueForVariablePath(char const*, lldb::DynamicValueType, lldb::DILMode)
```


    [45 lines not shown]
DeltaFile
+71-0lldb/test/API/functionalities/var_path/TestVarPath.py
+52-5lldb/source/API/SBFrame.cpp
+33-0lldb/test/API/functionalities/var_path/main.cpp
+10-7lldb/include/lldb/API/SBFrame.h
+11-2lldb/test/API/commands/frame/var-dil/basics/ArraySubscript/TestFrameVarDILArraySubscript.py
+9-2lldb/bindings/interface/SBFrameExtensions.i
+186-168 files not shown
+210-3614 files

LLVM/project 1633ec8clang/docs ClangFormatStyleOptions.md, clang/include/clang/Format Format.h

[clang-format] Add BraceWrapping.AfterRequiresExpression option (#216465)

Thir PR adds a `BraceWrapping.AfterRequiresExpression` sub-option that
wraps the opening brace of requires expressions, and enable it in the
`Allman`, `Whitesmiths`, and `GNU` presets of `BreakBeforeBraces`.

The brace is only wrapped if the requires expression doesn't fit on a
single line, matching the behavior of `BeforeLambdaBody`. The wrapped
brace is aligned with its closing brace:

```cpp
template <typename T>
concept Uart = requires(T a)
{
    { a.write() } -> std::convertible_to<std::size_t>;
    a.flush();
};
```
Closes: #202901
DeltaFile
+92-0clang/unittests/Format/FormatTest.cpp
+17-0clang/docs/ClangFormatStyleOptions.md
+16-0clang/include/clang/Format/Format.h
+15-0clang/lib/Format/ContinuationIndenter.cpp
+6-0clang/lib/Format/Format.cpp
+5-0clang/lib/Format/TokenAnnotator.cpp
+151-02 files not shown
+155-08 files

LLVM/project d089e1fllvm/lib/MC TargetRegistry.cpp

[llvm] Change the implementation of isValidFeatureListFormat (#219266)

This is mostly to change the function-local static variable because some
programs are having static initialization order problems. Also the
coding standard states statics with ctor/dtor should be avoided. The new
implementation also does not use Regex anymore.
DeltaFile
+11-3llvm/lib/MC/TargetRegistry.cpp
+11-31 files