LLVM/project 89b97e9llvm/lib/Target/RISCV RISCVInstrInfoXwch.td, llvm/test/MC/RISCV xwchc-valid.s

[RISC-V] Use an optional offset for Xwch instructions

Following up on the previous commits to remove unnecessary InstAlias.

This commit was prepared with the help of AI.

Reviewed By: lenary, ArcaneNibble

Pull Request: https://github.com/llvm/llvm-project/pull/215005
DeltaFile
+12-25llvm/lib/Target/RISCV/RISCVInstrInfoXwch.td
+24-0llvm/test/MC/RISCV/xwchc-valid.s
+36-252 files

LLVM/project 78bacccclang/include/clang/Basic AttrDocs.td, llvm/test/CodeGen/AArch64 vector-ldst-align-float.ll

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.8-beta.1-arichardson

[skip ci]
DeltaFile
+17,286-3,454llvm/test/tools/llvm-mca/AArch64/Cortex/C1Premium-sve-instructions.s
+13,787-6,856llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-sve-instructions.s
+9,921-0llvm/test/CodeGen/AArch64/vector-ldst-align-float.ll
+7,985-1,589llvm/test/tools/llvm-mca/AArch64/Cortex/C1Premium-neon-instructions.s
+6,355-3,146llvm/test/tools/llvm-mca/AArch64/Cortex/C1Nano-neon-instructions.s
+4,430-4,297clang/include/clang/Basic/AttrDocs.td
+59,764-19,34214,551 files not shown
+868,878-452,11214,557 files

LLVM/project 8e7fa6fllvm/lib/Target/RISCV RISCVInstrInfo.td RISCVInstrInfoXqci.td, llvm/test/MC/RISCV xqciio-invalid.s xqcilo-pseudos-invalid.s

[RISC-V] Use an optional offset for Xqc* instructions

Following up on the previous commits to remove unnecessary InstAlias.

This commit was prepared with the help of AI.

Reviewed By: lenary

Pull Request: https://github.com/llvm/llvm-project/pull/215002
DeltaFile
+14-78llvm/lib/Target/RISCV/RISCVInstrInfoXqci.td
+37-25llvm/test/MC/RISCV/xqcilsm-invalid.s
+11-17llvm/test/MC/RISCV/xqciio-invalid.s
+14-14llvm/test/MC/RISCV/xqcilo-pseudos-invalid.s
+6-0llvm/lib/Target/RISCV/RISCVInstrInfo.td
+82-1345 files

LLVM/project e16901cclang/lib/AST/ByteCode Compiler.cpp

[clang][bytecode] Use IsNonNull opcode in CXXNewExpr (#221515)

Instead of emitting a null pointer and checking that for equality.
DeltaFile
+2-4clang/lib/AST/ByteCode/Compiler.cpp
+2-41 files

LLVM/project 03ff69fclang/lib/AST/ByteCode Compiler.cpp

[clang][bytecode] Do pointer-to-bool convesions without classify() (#221516)
DeltaFile
+6-5clang/lib/AST/ByteCode/Compiler.cpp
+6-51 files

LLVM/project ad426edclang-tools-extra/docs/clang-tidy/checks/readability else-after-return.md

Update clang-tools-extra/docs/clang-tidy/checks/readability/else-after-return.md

Co-authored-by: EugeneZelenko <eugene.zelenko at gmail.com>
DeltaFile
+1-1clang-tools-extra/docs/clang-tidy/checks/readability/else-after-return.md
+1-11 files

LLVM/project 72417ebllvm/lib/Target/Xtensa CMakeLists.txt

[Xtensa] Depend on CodeGenTypes to fix BUILD_SHARED_LIBS=on build (#221511)
DeltaFile
+1-0llvm/lib/Target/Xtensa/CMakeLists.txt
+1-01 files

LLVM/project bf085faclang/lib/AST/ByteCode Record.h

[clang][bytecode] Cache Is(Unnamed)BitFields bools in `Record::Field` (#221392)

We need to query those a lot and we can save them in the padding bytes
of `Record::Field`.
DeltaFile
+8-3clang/lib/AST/ByteCode/Record.h
+8-31 files

LLVM/project ad9259cclang-tools-extra/include-cleaner/unittests WalkASTTest.cpp

[include-cleaner] Add WalkAST unit tests for Objective-C constructs (#220763)

Adds test coverage for walking AST nodes related to:
- Objective-C interface inheritance (`@interface Derived : Base`)
- Forward class and protocol declarations (`@class` and `@protocol`)
- Objective-C interface types used as function arguments

This is just to make sure that current code is covered. No new features.
DeltaFile
+48-0clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
+48-01 files

LLVM/project 012428cllvm/lib/Target/X86 X86ISelLowering.cpp, llvm/test/CodeGen/X86 divrem-by-select.ll masked-urem.ll

[X86] Lower i64 vector division and remainder through float division (#215043)

Follow up to #205263 which handled i8/i16/i32.

i64 needs a different algorithm because f64 cannot hold a 64 bit
quotient exactly. Instead of one divide the quotient is built from a
reciprocal and two rounded down multiplies plus a correction for the off
by one (https://sneller.ai/blog/avx512-int-div/). That needs the
directed rounding forms which only exist as 512 bit AVX512DQ
instructions, so the whole i64 path is gated on DQ and 512 bit types
being legal.

Operands that are provably narrow enough to fit the f64 mantissa skip
the chain entirely and take the same convert divide convert path as the
<=i32 case.

strictfp i64 uses the SAE forms the same way the <=i32 path does.

combineIntDivRem is now a small dispatcher over two helpers since the

    [4 lines not shown]
DeltaFile
+414-0llvm/test/CodeGen/X86/vector-idiv-i64.ll
+310-87llvm/test/CodeGen/X86/vector-idiv-sdiv-512.ll
+298-48llvm/test/CodeGen/X86/masked-udiv.ll
+292-48llvm/test/CodeGen/X86/masked-urem.ll
+189-123llvm/test/CodeGen/X86/divrem-by-select.ll
+195-75llvm/lib/Target/X86/X86ISelLowering.cpp
+1,698-3815 files not shown
+2,374-48011 files

LLVM/project 62e6fe8llvm/include/llvm/SandboxIR Context.h, llvm/lib/SandboxIR Context.cpp

Reapply "[SandboxIR] Callback registration now allows specifying order" (#221099)

This reverts commit f111407c0502851409a887c8e5dea4a3ec190d4e.
Should fix the sanitizer issue.
DeltaFile
+98-0llvm/unittests/SandboxIR/SandboxIRTest.cpp
+57-16llvm/include/llvm/SandboxIR/Context.h
+33-39llvm/lib/SandboxIR/Context.cpp
+188-553 files

LLVM/project fe38babclang/lib/CIR/Lowering/DirectToLLVM LowerToLLVMOpenCLMetadata.h LowerToLLVM.cpp, clang/test/CIR/CodeGenOpenCL version.cl

[CIR][OpenCL] Lower OpenCL language version metadata to LLVM dialect

Propagate CIR OpenCL language version module attributes as LLVM dialect named metadata before LLVM IR translation.

Assisted-by: Codex / GPT-5.6 Sol
DeltaFile
+43-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMOpenCLMetadata.cpp
+16-0clang/test/CIR/CodeGenOpenCL/version.cl
+16-0clang/test/CIR/Lowering/opencl-version-metadata.cir
+2-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVMOpenCLMetadata.h
+2-0clang/lib/CIR/Lowering/DirectToLLVM/LowerToLLVM.cpp
+79-05 files

LLVM/project 9d25213clang/lib/CIR/CodeGen CIRGenModule.cpp, clang/lib/CodeGen CodeGenModule.cpp

fix: Supply the HIP SPIR-V version only for metadata emission

Fix the assertion exposed by PR #214246 under the version invariant from PR #219687. Supply OpenCL 2.0 in classic CodeGen and CIRGen without changing HIP language options or enabling OpenCL-only Sema restrictions.

Assisted-by: Codex / GPT-6
DeltaFile
+8-0clang/test/CodeGenHIP/hipspv-kernel.cpp
+8-0clang/test/SemaHIP/atomic-init.hip
+4-2clang/lib/CIR/CodeGen/CIRGenModule.cpp
+3-1clang/lib/CodeGen/CodeGenModule.cpp
+2-0clang/test/CIR/CodeGenHIP/amdgcnspirv-kernel.hip
+25-35 files

LLVM/project 980d3d1clang/test/CIR/CodeGenHIP amdgcnspirv-kernel.hip

fix: Check HIP SPIR-V version metadata after lowering
DeltaFile
+3-0clang/test/CIR/CodeGenHIP/amdgcnspirv-kernel.hip
+3-01 files

LLVM/project 1fe17e8clang/lib/CIR/CodeGen CIRGenModule.h CIRGenModule.cpp, clang/test/CIR/CodeGenOpenCL version.cl

[CIR][OpenCL] Emit OpenCL language version metadata in CIR

Emit OpenCL and C++ for OpenCL language version attributes from CIRGen. Preserve the compatible OpenCL version and the C++ for OpenCL version separately so later lowering does not infer one from the other.

Assisted-by: Codex / GPT-5.6 Sol
DeltaFile
+15-0clang/test/CIR/CodeGenOpenCL/version.cl
+13-0clang/lib/CIR/CodeGen/CIRGenModule.cpp
+4-0clang/test/CodeGenCUDASPIRV/kernel-cc.cu
+1-0clang/lib/CIR/CodeGen/CIRGenModule.h
+33-04 files

LLVM/project 6cb27b6clang/lib/CIR/Dialect/IR CIRDialect.cpp

fix: separate CIR attribute dispatch from OpenCL verification
DeltaFile
+20-8clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+20-81 files

LLVM/project 5e95dbeclang/include/clang/CIR/Dialect/IR CIRDialect.td CIROpenCLAttrs.td, clang/lib/CIR/Dialect/IR CIROpenCLAttrs.cpp CIRDialect.cpp

[CIR][OpenCL] Add OpenCL language version module attributes

Add structured CIR module attributes for OpenCL and C++ for OpenCL language versions. Verify their module-level placement and version components so lowering can consume explicit source-language version state.

Assisted-by: Codex / GPT-5.6 Sol
DeltaFile
+76-0clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+73-0clang/test/CIR/IR/invalid-version.cir
+28-0clang/include/clang/CIR/Dialect/IR/CIROpenCLAttrs.td
+19-0clang/test/CIR/IR/version.cir
+15-0clang/lib/CIR/Dialect/IR/CIROpenCLAttrs.cpp
+5-0clang/include/clang/CIR/Dialect/IR/CIRDialect.td
+216-01 files not shown
+219-17 files

LLVM/project 419c22cllvm/include/llvm/TableGen Record.h, llvm/lib/TableGen Record.cpp

[TableGen] Unique the remaining Init pools in a UniquingSet. NFC (#221394)

Follow-up to #219630. Every one of these keys is a handful of scalars,
pointers and trailing-object arrays already stored in the node, so a
typed key removes the FoldingSetNodeID serialization on every get() and
the profile rebuild on every hit.

llvm-tblgen instructions retired, minimum of five interleaved runs:

```
  RISCV   -gen-asm-matcher     -3.492%
  RISCV   -gen-register-info   -4.027%
  X86     -gen-dag-isel        -1.573%
  AMDGPU  -gen-subtarget       -1.140%
```

Aided by Opus 5
DeltaFile
+30-185llvm/lib/TableGen/Record.cpp
+30-10llvm/include/llvm/TableGen/Record.h
+60-1952 files

LLVM/project 5115f32llvm/lib/Transforms/Vectorize VPlan.h VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize replicate-region-branch-weights.ll

[VPlan] Preserve branch weights from VPlan0 through to codegen. (#213143)

This patch adds support for carrying through branch weights from the
original scalar loop through VPlan.

The flow is as follows:

1. On the scalar VPlan, we import the branch weights from the existing
   IR branches and add them as !prof metadata to VPInstruction terminators
2. The predicator dissolves the control flow and each block will get
     executed unconditionally. What remains are predicated recipes, with
     their lanes executing with probability relative to the header. Compute
     the executing probabilities as sum of probabilities of all incoming
     edges.
3. Each masked recipe gets the execution probability attached as custom
    !vplan.execution.frequency metadata 
4. When creating replicate regions, a predicated recipe is replaced by
    explicit control fold. The execution frequency from the recipe is
    converted to profile metadata and added to the newly introduced 

    [23 lines not shown]
DeltaFile
+976-0llvm/test/Transforms/LoopVectorize/VPlan/execution-frequencies-match-bfi.ll
+342-238llvm/test/Transforms/LoopVectorize/replicate-region-branch-weights.ll
+97-0llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+68-0llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+60-2llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+47-13llvm/lib/Transforms/Vectorize/VPlan.h
+1,590-2535 files not shown
+1,677-27211 files

LLVM/project 94cb123clang-tools-extra/include-cleaner/lib WalkAST.cpp, clang-tools-extra/include-cleaner/unittests WalkASTTest.cpp

[include-cleaner] Support Objective-C literals and boxed expressions in WalkAST (#216201)

This change adds AST visitors for ObjCBoxedExpr, ObjCArrayLiteral,
ObjCDictionaryLiteral, and ObjCStringLiteral. This ensures that the
underlying class interfaces (such as NSNumber, NSArray, NSDictionary,
and NSString) and any associated categories used for these literals are
correctly reported as referenced. Unit tests are included to verify the
new behavior.
DeltaFile
+75-0clang-tools-extra/include-cleaner/unittests/WalkASTTest.cpp
+28-0clang-tools-extra/include-cleaner/lib/WalkAST.cpp
+103-02 files

LLVM/project f42c87bllvm/lib/Target/AMDGPU AMDGPUISelLowering.cpp, llvm/test/CodeGen/AMDGPU fmin_legacy.ll fmed3.ll

[AMDGPU] Fix legacy fmin/fmax combines to preserve NaN and zero ties (#220519)
DeltaFile
+467-6llvm/test/CodeGen/AMDGPU/select-flags-to-fmin-fmax.ll
+77-60llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+48-37llvm/test/CodeGen/AMDGPU/fmed3.ll
+58-9llvm/test/CodeGen/AMDGPU/GlobalISel/fmin_legacy.ll
+54-7llvm/test/CodeGen/AMDGPU/GlobalISel/fmax_legacy.ll
+19-33llvm/test/CodeGen/AMDGPU/fmin_legacy.ll
+723-15210 files not shown
+802-19616 files

LLVM/project 45b1e62llvm/lib/CodeGen TypePromotion.cpp, llvm/test/Transforms/TypePromotion/ARM casts.ll

[TypePromotion] Support trunc-to-i1 conditions (#216311)

InstCombine may rewrite `icmp ne (X & 1), 0` to `trunc X to i1`
(#178977). Start TypePromotion searches from operands of scalar
trunc-to-i1 instructions, treating the trunc as a boolean boundary
without promoting its result or traversing its users.

Assisted-by: AI
DeltaFile
+31-9llvm/lib/CodeGen/TypePromotion.cpp
+27-0llvm/test/Transforms/TypePromotion/ARM/casts.ll
+58-92 files

LLVM/project 03de3d1llvm/include/llvm/Support/LSP Transport.h, llvm/unittests/Support/LSP Transport.cpp

[Support] Fix -Wunused-template from debugString

This is not used in the header (outside of a non-instantiated template),
so triggers -Wunused-template. Move it into the class definition to
prevent this without adding any namespace pollution.

Reviewers: MaskRay, kazutakahirata

Pull Request: https://github.com/llvm/llvm-project/pull/221478
DeltaFile
+8-7llvm/include/llvm/Support/LSP/Transport.h
+1-1llvm/unittests/Support/LSP/Transport.cpp
+9-82 files

LLVM/project b04639flldb/tools/lldb-fuzzer/lldb-target-fuzzer CMakeLists.txt target.dict

[lldb] Add a fuzzing dictionary for lldb-target-fuzzer (#221348)

target.dict gives the mutator the magic bytes and required keys for
every object file format.  Without a seed dictionary, blind mutation
essentially never lands the exact multi-byte magic these formats gate
on.

Assisted-by: claude
DeltaFile
+52-0lldb/tools/lldb-fuzzer/lldb-target-fuzzer/target.dict
+1-0lldb/tools/lldb-fuzzer/lldb-target-fuzzer/CMakeLists.txt
+53-02 files

LLVM/project 2e4ad2fllvm/docs CodeReview.rst

[docs] Fix a broken link in the 'Non-Experts Should Review Code' section (#221461)
DeltaFile
+3-2llvm/docs/CodeReview.rst
+3-21 files

LLVM/project f98cf8ellvm/lib/Target/AMDGPU AMDGPURegBankLegalizeHelper.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU div_i128.ll select-undef.ll

[AMDGPU] Freeze select condition before splitting into two halves (#219942)
DeltaFile
+108-72llvm/test/CodeGen/AMDGPU/GlobalISel/regbankselect-select.mir
+23-0llvm/test/CodeGen/AMDGPU/select-undef.ll
+12-8llvm/test/CodeGen/AMDGPU/div_i128.ll
+5-3llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+1-0llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeHelper.cpp
+149-835 files

LLVM/project 3daf505llvm/docs MemProf.md

[MemProf][Docs] Add more information on static data partitioning (#220446)

Clarify some sentences that I found hard to parse. Also update the docs
now that a linker script is no longer required.
DeltaFile
+1-2llvm/docs/MemProf.md
+1-21 files

LLVM/project c744816llvm/include/llvm/Support/LSP Transport.h, llvm/unittests/Support/LSP Transport.cpp

feedback

Created using spr 1.3.7
DeltaFile
+8-7llvm/include/llvm/Support/LSP/Transport.h
+1-1llvm/unittests/Support/LSP/Transport.cpp
+9-82 files

LLVM/project 8f270bcllvm/test/Transforms/Attributor nofpclass-bitcast-int-to-fp.ll

[KnownFPClass] Add regression tests for #174869 (#220279)

This PR just adds regression tests for
https://github.com/llvm/llvm-project/issues/174869

Otherwise, the original issue was fixed by
https://github.com/llvm/llvm-project/pull/215708 for
`APFloat::isIEEELikeFP` types (bfloat16, and ieee16/32/64/128).
DeltaFile
+28-0llvm/test/Transforms/Attributor/nofpclass-bitcast-int-to-fp.ll
+28-01 files

LLVM/project 3cc6423llvm/test/Transforms/SLPVectorizer/AMDGPU inst-count-heuristic.ll

[SLP][AMDGPU][NFC] Remove unreachable GFX940/GFX941 checks (#220745)

`inst-count-heuristic.ll` only runs
`-check-prefix=GFX950/GFX942/GFX906;` the `GFX941/GFX940 CHECK` blocks
had no matching `RUN` line and were never executed.
DeltaFile
+0-42llvm/test/Transforms/SLPVectorizer/AMDGPU/inst-count-heuristic.ll
+0-421 files