LLVM/project fb314f4llvm/lib/Target/AArch64 AArch64ISelLowering.cpp AArch64ISelLowering.h, llvm/test/CodeGen/AArch64/Atomics aarch64-atomic-load-lse2.ll aarch64-atomic-load-lse2_lse128.ll

[AArch64] emit fence before 128-bit SC atomic load
DeltaFile
+12-0llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+2-0llvm/lib/Target/AArch64/AArch64ISelLowering.h
+2-0llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-lse2.ll
+2-0llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-lse2_lse128.ll
+2-0llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-rcpc3.ll
+2-0llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-rcpc_immo.ll
+22-05 files not shown
+30-011 files

LLVM/project 0312e28llvm/test/CodeGen/AArch64 v8.4-atomic-128.ll, llvm/test/CodeGen/AArch64/GlobalISel v8.4-atomic-128.ll

[AArch64][NFC] split up atomic tests
DeltaFile
+75-5llvm/test/CodeGen/AArch64/GlobalISel/v8.4-atomic-128.ll
+73-5llvm/test/CodeGen/AArch64/v8.4-atomic-128.ll
+148-102 files

LLVM/project 88983e8llvm/include/llvm/CodeGen TargetRegisterInfo.h, llvm/lib/CodeGen RegAllocPBQP.cpp TargetRegisterInfo.cpp

[spr] initial version

Created using spr 1.3.8-wip
DeltaFile
+31-10llvm/utils/TableGen/RegisterInfoEmitter.cpp
+19-19llvm/include/llvm/CodeGen/TargetRegisterInfo.h
+3-2llvm/lib/CodeGen/RegAllocPBQP.cpp
+2-1llvm/lib/CodeGen/TargetRegisterInfo.cpp
+1-1llvm/unittests/CodeGen/MachineInstrTest.cpp
+1-1llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
+57-342 files not shown
+59-368 files

LLVM/project 9c51ed3llvm/lib/Target/NVPTX NVPTXAsmPrinter.cpp NVPTXISelLowering.cpp, llvm/test/CodeGen/NVPTX empty-type.ll

[NVPTX] Add support for empty type params and returns (#207057)
DeltaFile
+144-5llvm/test/CodeGen/NVPTX/empty-type.ll
+24-7llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+10-8llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+178-203 files

LLVM/project 9a42d6alld/ELF AMDGPUObjectLinking.cpp, lld/test/ELF amdgpu-lds-link-time-ordering-multigroup.s amdgpu-lds-link-time-random-layout.s

[RFC][AMDGPU][lld] Add object linking support

Add AMDGPU ELF object-linking support in lld, including resource propagation,
LDS layout, indirect-call handling, named-barrier updates, target compatibility
checks, and kernel descriptor/metadata patching.

This is a large PR because the linker needs to understand and validate several
AMDGPU object-linking concepts end to end. I tried to keep the changes scoped to
the necessary linker support and related metadata plumbing, but I'm open to
suggestions on how to split or structure the review to make it easier.
DeltaFile
+1,757-0lld/ELF/AMDGPUObjectLinking.cpp
+510-0lld/test/ELF/amdgpu-lds-link-time-ordering-multigroup.s
+452-0lld/test/ELF/amdgpu-lds-link-time-random-layout.s
+430-0lld/test/ELF/amdgpu-lds-link-time-grouped.s
+406-0lld/test/ELF/amdgpu-lds-link-time-ordering-complex.s
+404-0lld/test/ELF/amdgpu-resource-usage.s
+3,959-049 files not shown
+10,036-555 files

LLVM/project 4cb3cefclang/include/clang/AST Decl.h

[clang][docs] Add \code comments around code in doc comments (#207116)
DeltaFile
+4-0clang/include/clang/AST/Decl.h
+4-01 files

LLVM/project 6e3a6cflld/ELF AMDGPUObjectLinking.cpp, lld/test/ELF amdgpu-lds-link-time-ordering-multigroup.s amdgpu-lds-link-time-random-layout.s

[RFC][AMDGPU][lld] Add object linking support

Add AMDGPU ELF object-linking support in lld, including resource propagation,
LDS layout, indirect-call handling, named-barrier updates, target compatibility
checks, and kernel descriptor/metadata patching.

This is a large PR because the linker needs to understand and validate several
AMDGPU object-linking concepts end to end. I tried to keep the changes scoped to
the necessary linker support and related metadata plumbing, but I'm open to
suggestions on how to split or structure the review to make it easier.
DeltaFile
+1,757-0lld/ELF/AMDGPUObjectLinking.cpp
+510-0lld/test/ELF/amdgpu-lds-link-time-ordering-multigroup.s
+452-0lld/test/ELF/amdgpu-lds-link-time-random-layout.s
+430-0lld/test/ELF/amdgpu-lds-link-time-grouped.s
+406-0lld/test/ELF/amdgpu-lds-link-time-ordering-complex.s
+404-0lld/test/ELF/amdgpu-resource-usage.s
+3,959-049 files not shown
+10,032-555 files

LLVM/project f083dadllvm/test/TableGen submulticlass-typecheck.td exists-error-non-string.td

[NFC][LLVM] Remove `XFAIL: vg_leaks` from TableGen lit tests (#207016)
DeltaFile
+1-2llvm/test/TableGen/submulticlass-typecheck.td
+0-1llvm/test/TableGen/exists-error-non-string.td
+0-1llvm/test/TableGen/exists-error-record.td
+0-1llvm/test/TableGen/exists-error-uninitialized.td
+0-1llvm/test/TableGen/exists.td
+0-1llvm/test/TableGen/field-access-initializers.td
+1-789 files not shown
+1-9695 files

LLVM/project e8950f2llvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV/rvv pr206788.ll

[RISCV] Constant fold bitcast of constant 0 in combineVectorSizedSetCCEquality. (#207112)

There seem to be some combinations of vector type and scalar type where
a bitcast of constant 0 doesn't get folded or type legalized to a
build_vector of 0 with the vector type we want. I think it's when the
integer type is 2*xlen and <2 x iXLen> is a legal type, but I'm not
sure.

I don't have any other tests to know if adding/improving a DAG combine
is worthwhile so I just did this quick fix at the source.
DeltaFile
+7-1llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+2-4llvm/test/CodeGen/RISCV/rvv/pr206788.ll
+9-52 files

LLVM/project 4425cf1llvm/lib/Target/RISCV RISCVInstrInfoV.td, llvm/lib/Target/RISCV/AsmParser RISCVAsmParser.cpp

[RISCV] Rework vmsge(u).vx pseudos to work better with near-miss assembler support (#207097)

Previously we had 3 pseudos:
 vr destination with no mask
 vrnov0 destination with mask
 vr destination with mask and temporary dest

This was intended to prevent a v0 destination with mask and no
temporary. The vrnov0 case confused the near miss code and caused
multiple errors.

This patch reduces to 2 pseudos:
 vr destination with optional mask
 vr destination with mask and pseudo

The v0 destination with mask error is moved to validateInstruction which
allows us to give a better error.
DeltaFile
+13-5llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+2-8llvm/lib/Target/RISCV/RISCVInstrInfoV.td
+1-4llvm/test/MC/RISCV/rvv/invalid.s
+16-173 files

LLVM/project 672dfe9llvm/lib/Target/RISCV RISCVInstrInfo.td, llvm/test/MC/RISCV rv64h-invalid.s rv32h-invalid.s

[RISCV] Add HasStdExtH to hfence.gvma and hfence.vvma aliases (#207061)
DeltaFile
+11-4llvm/test/MC/RISCV/rv64h-invalid.s
+11-4llvm/test/MC/RISCV/rv32h-invalid.s
+10-4llvm/test/MC/RISCV/priv-invalid.s
+2-0llvm/lib/Target/RISCV/RISCVInstrInfo.td
+34-124 files

LLVM/project c78dd2fllvm/lib/CodeGen PHIElimination.cpp, llvm/test/CodeGen/MSP430 selectcc.ll

[PHIElimination] Preserve SlotIndexes even without LiveIntervals

There are some pipelines where we request SlotIndexes, but not
LiveIntervals before running PHIElimination. This happens in the MSP430
pipeline where StackColoring requests SlotIndexes, but nothing requests
LiveIntervals. Before PHIElimination would only update SlotIndexes
through LiveIntervals, which would mean we would fail to preserve
SlotIndexes if it was available but LiveIntervals was not. This would
cause crashes when later passes tried to use SlotIndexes under the
NewPM.

Reviewers: RKSimon, aeubanks, arsenm

Pull Request: https://github.com/llvm/llvm-project/pull/207074
DeltaFile
+22-9llvm/lib/CodeGen/PHIElimination.cpp
+1-0llvm/test/CodeGen/MSP430/selectcc.ll
+23-92 files

LLVM/project 9bb92d5lldb/packages/Python/lldbsuite/test/tools/lldb_dap dap_types.py session_helpers.py, llvm/lib/DebugInfo/LogicalView/Readers LVIRReader.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+2,630-0llvm/lib/DebugInfo/LogicalView/Readers/LVIRReader.cpp
+2,026-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/dap_types.py
+1,698-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/session_helpers.py
+847-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/utils.py
+388-355llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+649-0llvm/unittests/ExecutionEngine/Orc/InProcessEPCTest.cpp
+8,238-3551,415 files not shown
+45,612-9,3961,421 files

LLVM/project 981651dllvm/lib/Target/MSP430 MSP430AsmPrinter.h MSP430AsmPrinter.cpp

[MSP430] Port AsmPrinter to NewPM

Similar to Lanai (f3b58ad68cca340bdd12e3fd289048e5ecf0ad8d) and X86. Use
a separate header to be consistent with the other backends.

Reviewers: asl

Pull Request: https://github.com/llvm/llvm-project/pull/206822
DeltaFile
+39-0llvm/lib/Target/MSP430/MSP430AsmPrinter.h
+36-0llvm/lib/Target/MSP430/MSP430AsmPrinter.cpp
+17-0llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp
+92-03 files

LLVM/project dd64361lldb/packages/Python/lldbsuite/test/tools/lldb_dap dap_types.py session_helpers.py, llvm/lib/DebugInfo/LogicalView/Readers LVIRReader.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+2,630-0llvm/lib/DebugInfo/LogicalView/Readers/LVIRReader.cpp
+2,026-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/dap_types.py
+1,698-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/session_helpers.py
+847-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/utils.py
+388-355llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+649-0llvm/unittests/ExecutionEngine/Orc/InProcessEPCTest.cpp
+8,238-3551,415 files not shown
+45,612-9,3961,421 files

LLVM/project b8a15b4llvm/lib/Target/MSP430 MSP430BranchSelector.cpp MSP430.h

[MSP430] Port MSP430BranchSelect to NewPM

Standard pass porting.

Reviewers: asl

Pull Request: https://github.com/llvm/llvm-project/pull/206620
DeltaFile
+32-11llvm/lib/Target/MSP430/MSP430BranchSelector.cpp
+10-1llvm/lib/Target/MSP430/MSP430.h
+1-6llvm/lib/Target/MSP430/MSP430PassRegistry.def
+1-2llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp
+1-1llvm/lib/Target/MSP430/MSP430TargetMachine.cpp
+45-215 files

LLVM/project 229937blldb/packages/Python/lldbsuite/test/tools/lldb_dap dap_types.py session_helpers.py, llvm/lib/DebugInfo/LogicalView/Readers LVIRReader.cpp

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.7

[skip ci]
DeltaFile
+2,630-0llvm/lib/DebugInfo/LogicalView/Readers/LVIRReader.cpp
+2,026-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/dap_types.py
+1,698-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/session_helpers.py
+847-0lldb/packages/Python/lldbsuite/test/tools/lldb_dap/utils.py
+388-355llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+649-0llvm/unittests/ExecutionEngine/Orc/InProcessEPCTest.cpp
+8,238-3551,415 files not shown
+45,612-9,3961,421 files

LLVM/project f122acfllvm/lib/Target/MSP430 MSP430CodeGenPassBuilder.cpp MSP430PassRegistry.def

[MSP430] Add CodeGenPassBuilder

Needed to set up the pass pipeline for the NewPM.

Reviewers: asl

Pull Request: https://github.com/llvm/llvm-project/pull/206616
DeltaFile
+69-0llvm/lib/Target/MSP430/MSP430CodeGenPassBuilder.cpp
+26-0llvm/lib/Target/MSP430/MSP430PassRegistry.def
+8-0llvm/lib/Target/MSP430/MSP430TargetMachine.h
+6-0llvm/lib/Target/MSP430/CMakeLists.txt
+109-04 files

LLVM/project 90d32e8llvm/lib/Target/X86 X86TargetVerifier.cpp, llvm/test/Verifier/X86 inline-asm-registers.ll

[X86] Verify inline-asm register operands against the subtarget

Inline asm can name physical registers that require a subtarget feature
the selected subtarget lacks: zmm and mask (k) registers need AVX-512,
ymm registers need AVX. The subtarget is derived from the function's
target-cpu/target-features, so no MachineFunction is required.
DeltaFile
+33-0llvm/lib/Target/X86/X86TargetVerifier.cpp
+27-0llvm/test/Verifier/X86/inline-asm-registers.ll
+60-02 files

LLVM/project 8c46bf9llvm/lib/Target/X86 X86TargetVerifier.cpp, llvm/test/Verifier/X86 target-verifier.ll lit.local.cfg

[X86] Add subtarget-dependent checks

Checks that depend on a function's target-cpu/target-features (built into
an MCSubtargetInfo), which the triple-only IR verifier cannot express:

  - x86 intrinsics (llvm.x86.avx/avx2/avx512.*) require AVX/AVX2/AVX-512.
  - 128/256-bit AVX-512 intrinsics additionally require AVX512VL.
  - The x86_amx type requires AMX-TILE.
DeltaFile
+104-0llvm/lib/Target/X86/X86TargetVerifier.cpp
+41-0llvm/test/Verifier/X86/target-verifier.ll
+2-0llvm/test/Verifier/X86/lit.local.cfg
+147-03 files

LLVM/project 9986d0bllvm/lib/Target/X86 X86TargetVerifier.cpp X86.h

[X86] Add target verifier

Add an X86 TargetVerify and register it by triple so the
TargetVerifierPass dispatches to it for X86 modules. It performs no
checks yet; the subtarget-dependent checks are added in a follow-up.
DeltaFile
+43-0llvm/lib/Target/X86/X86TargetVerifier.cpp
+6-0llvm/lib/Target/X86/X86.h
+6-0llvm/lib/Target/X86/X86TargetMachine.cpp
+1-0llvm/lib/Target/X86/CMakeLists.txt
+56-04 files

LLVM/project a07e49fllvm/include/llvm InitializePasses.h, llvm/include/llvm/Target TargetVerifier.h

[Target] Add target-independent TargetVerifier dispatcher

Introduce a target-dependent IR verification framework that can be run
from target-independent locations.

TargetVerify is a base class each backend subclasses to check a function
for constructs that are invalid for a particular target. Backends
register a factory keyed by Triple::ArchType via registerTargetVerify(),
typically from their LLVMInitialize<Target>Target().

TargetVerifierPass (registered as "target-verifier") is the dispatcher:
it reads the module triple and, if a verifier is registered for that
architecture, runs the generic IR verifier followed by the target's
TargetVerify. It is a no-op for targets that have not registered a
verifier, so it is safe to schedule from generic, target-independent
pipelines (e.g. `opt -passes=target-verifier`).

createTargetVerifierPass() is a legacy-PM wrapper that TargetPassConfig
adds to the codegen pipeline under -verify-target, so the target verifier
can also run from llc (e.g. `llc -verify-target`).
DeltaFile
+142-0llvm/include/llvm/Target/TargetVerifier.h
+136-0llvm/lib/Target/TargetVerifier.cpp
+9-0llvm/lib/CodeGen/TargetPassConfig.cpp
+1-0llvm/include/llvm/InitializePasses.h
+1-0llvm/lib/Passes/PassBuilder.cpp
+1-0llvm/lib/Passes/PassRegistry.def
+290-01 files not shown
+291-07 files

LLVM/project 8ae4b19llvm/lib/Transforms/Utils SimplifyCFG.cpp, llvm/test/Transforms/SimplifyCFG hoist-common-skip.ll hoist-common-skip-pseudoprobe.ll

[SimplifyCFG] Don't hoist a musttail call separately from the terminator (#207094)

SimplifyCFG can accidentally hoist `musttail` away from the `ret` if
`hoistCommonCodeFromSuccessor` skipped a differing instruction, causing
a misverify. So we need to guard the `musttail` call to make sure that the `ret` is
hoisted along with the call. This can only happen when no instruction
has been skipped so both successors be folded into the the predecessor,
leaving a valid `musttail` call.

Reproducer https://godbolt.org/z/3vsnz4hc7
DeltaFile
+112-0llvm/test/Transforms/SimplifyCFG/hoist-common-skip.ll
+31-0llvm/test/Transforms/SimplifyCFG/hoist-common-skip-pseudoprobe.ll
+12-0llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+155-03 files

LLVM/project b922864orc-rt/include/orc-rt Session.h, orc-rt/lib/executor Session.cpp

[orc-rt] Add Session::tryAttach, construct ControllerAccess in attach. (#207114)

Reworks Session's controller-attachment API so that clients no longer
construct or hold a ControllerAccess directly:

- attach<ControllerAccessT>(BI, Args...) now constructs the
ControllerAccess internally, passing *this as the first constructor
argument. Suitable for ControllerAccess implementations whose
construction cannot fail.

- tryAttach<ControllerAccessT>(BI, Args...) is the new fallible
counterpart to attach. It forwards *this and the given args to
ControllerAccessT::Create, which must return an
Expected<std::shared_ptr<ControllerAccessT>>. On success, proceeds to
call connect on the instance, otherwise returns the Error. This lets
implementations surface setup failures (e.g. failing to bind a socket)
synchronously as an Error, without ever handing back a
usable-but-unconnected object.


    [4 lines not shown]
DeltaFile
+75-23orc-rt/unittests/SessionTest.cpp
+48-16orc-rt/include/orc-rt/Session.h
+2-2orc-rt/lib/executor/Session.cpp
+2-2orc-rt/unittests/InProcessControllerAccessTest.cpp
+127-434 files

LLVM/project 39f1fb9clang/lib/Sema SemaStmtAsm.cpp, clang/test/Sema asm.c

[InlineAsm] Diagnose oversized non-scalar tied asm outputs (#206230)

The 'r' asm constraint binds an operand to a general-purpose register.
For tied inline asm operands, Clang may promote a smaller integer input
to match a larger non-scalar register output. Only allow that path when
the output size can be represented by an integer type that fits in a
general-purpose register.

Otherwise, diagnose with err_store_value_to_reg before CodeGen attempts
to lower the asm and crashes.

This keeps GPR-sized aggregate/class outputs accepted while rejecting
larger array, struct, union, complex, vector, and class outputs. Add
Sema coverage for the affected C and C++ cases.

Fixes #204775
DeltaFile
+42-0clang/test/SemaCXX/inline-asm-aggregate-output.cpp
+21-3clang/test/Sema/asm.c
+7-4clang/lib/Sema/SemaStmtAsm.cpp
+70-73 files

LLVM/project 56b5db1orc-rt/include/orc-rt Error.h

[orc-rt] Apply noexcept to more Error.h APIs. (#207109)

These APIs are all unconditionally nothrow: their bodies either call
already-noexcept APIs, or move std::string / std::exception_ptr /
std::unique_ptr members whose move constructors are already noexcept.
DeltaFile
+11-11orc-rt/include/orc-rt/Error.h
+11-111 files

LLVM/project bcf504allvm/test/Transforms/SLPVectorizer non-power-of-2-buildvector.ll, llvm/test/Transforms/SLPVectorizer/X86 odd_store.ll

Fix clang-format issue.
DeltaFile
+42-23llvm/test/Transforms/SLPVectorizer/X86/odd_store.ll
+3-23llvm/test/Transforms/SLPVectorizer/non-power-of-2-buildvector.ll
+45-462 files

LLVM/project edfd65bllvm/lib/Transforms/Vectorize SLPVectorizer.cpp

Update for comments and fix lit test
DeltaFile
+4-5llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+4-51 files

LLVM/project 4e8a927llvm/lib/Transforms/Vectorize SLPVectorizer.cpp

[SLP] Allow non-power-of-2 VF in tryToVectorizeList
DeltaFile
+6-1llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+6-11 files

LLVM/project a8166e1llvm/test/Transforms/SLPVectorizer non-power-of-2-buildvector.ll

[SLP][NFC] Add non-power-of-2 buildvector test (#206332)

For this PR: https://github.com/llvm/llvm-project/pull/206259
DeltaFile
+112-0llvm/test/Transforms/SLPVectorizer/non-power-of-2-buildvector.ll
+112-01 files