LLVM/project e878583mlir/docs/DefiningDialects _index.md Operations.md, mlir/include/mlir/IR DialectBase.td

[MLIR][ODS] Add strict property assembly format mode

Introduce a dialect-level ODS flag for strict property handling in declarative
assembly formats. It is disabled by default for now, preserving existing parser
behavior unless a dialect opts in.

Enable the mode immediately for dialects whose declarative assembly formats
already satisfy these binding rules.

When enabled, a property-backed op format must bind every inherent attribute
and property directly or include prop-dict.

Generated parsers for opted-in dialects also reject inherent attributes that
arrive through attr-dict, preventing Operation::setAttrs from populating
properties through that path.

Add mlir-tblgen coverage and document default and strict dialect behavior.

Assisted-by: Codex
DeltaFile
+57-3mlir/tools/mlir-tblgen/OpFormatGen.cpp
+58-0mlir/test/mlir-tblgen/op-format.td
+26-0mlir/test/mlir-tblgen/op-format-invalid.td
+20-0mlir/docs/DefiningDialects/_index.md
+7-0mlir/docs/DefiningDialects/Operations.md
+6-0mlir/include/mlir/IR/DialectBase.td
+174-322 files not shown
+202-328 files

LLVM/project 535814fllvm/lib/CodeGen/SelectionDAG LegalizeDAG.cpp TargetLowering.cpp, llvm/test/CodeGen/AMDGPU arbitrary-fp-to-float.ll

[SelectionDAG] Support vector types in llvm.convert.from.arbitrary.fp expansion (#196185)

Move the bit-twiddling expansion of ISD::CONVERT_FROM_ARBITRARY_FP from
LegalizeDAG to TargetLowering and make it working on vector destination
types.
DeltaFile
+665-0llvm/test/CodeGen/NVPTX/arbitrary-fp-to-float.ll
+595-8llvm/test/CodeGen/AMDGPU/arbitrary-fp-to-float.ll
+3-224llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+69-151llvm/test/CodeGen/X86/arbitrary-fp-to-float.ll
+190-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+6-0llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
+1,528-3831 files not shown
+1,534-3837 files

LLVM/project 75f8a17llvm/lib/Target/AMDGPU AMDGPURegBankLegalizeRules.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.rsq.ll llvm.amdgcn.rsq.f16.ll

[AMDGPU][GlobalISel] Add register bank legalize rules for PST rsq. (#196116)
DeltaFile
+71-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.ll
+8-2llvm/test/CodeGen/AMDGPU/llvm.amdgcn.rsq.f16.ll
+4-2llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+83-43 files

LLVM/project 32f909ellvm/test/TableGen/GlobalISelEmitter RegSequenceBadSubReg.td, llvm/utils/TableGen GlobalISelEmitter.cpp

[TableGen][GlobalISel] Skip REG_SEQUENCE with incompatible subreg index (#196184)

The REG_SEQUENCE branch of GlobalISelEmitter::constrainOperands called
SuperClass->getMatchingSubClassWithSubRegs(...) and dereferenced the
returned SrcRCDstRCPair unconditionally, aborting on a libstdc++
optional assertion when incorrect subreg index was passed.

Add the missing guard so the malformed pattern is reported via
failedImport (a skipped pattern) instead of crashing tblgen.

Assisted by Claude.

Fixes https://github.com/llvm/llvm-project/issues/172690
DeltaFile
+14-0llvm/test/TableGen/GlobalISelEmitter/RegSequenceBadSubReg.td
+3-0llvm/utils/TableGen/GlobalISelEmitter.cpp
+17-02 files

LLVM/project 02b072emlir/include/mlir/Dialect/SPIRV/IR SPIRVBase.td, mlir/test/Dialect/SPIRV/IR logical-ops.mlir

[mlir][spirv] Allow composite types in SelectOp (#196105)

This is allowed from the version 1.4 of the spec.
DeltaFile
+25-0mlir/test/Target/SPIRV/logical-ops.mlir
+18-0mlir/test/Dialect/SPIRV/IR/logical-ops.mlir
+2-2mlir/include/mlir/Dialect/SPIRV/IR/SPIRVBase.td
+45-23 files

LLVM/project 9dc3d00clang/lib/Basic TargetInfo.cpp

Update clang/lib/Basic/TargetInfo.cpp
DeltaFile
+1-1clang/lib/Basic/TargetInfo.cpp
+1-11 files

LLVM/project f5d3d6allvm/lib/Target/AMDGPU BUFInstructions.td, llvm/test/MC/AMDGPU gfx13_asm_vbuffer_mubuf.s gfx13_asm_vbuffer_mubuf_format.s

[AMDGPU] Add VBUFFER encoding for gfx13
DeltaFile
+2,662-0llvm/test/MC/AMDGPU/gfx13_asm_vbuffer_mubuf.s
+699-0llvm/test/MC/AMDGPU/gfx13_asm_vbuffer_mubuf_format.s
+663-0llvm/test/MC/AMDGPU/gfx13_asm_vbuffer_mtbuf.s
+205-73llvm/lib/Target/AMDGPU/BUFInstructions.td
+201-0llvm/test/MC/AMDGPU/gfx13_asm_vbuffer_mubuf_alias.s
+27-0llvm/test/MC/AMDGPU/gfx13_asm_vbuffer_mtbuf_alias.s
+4,457-733 files not shown
+4,470-799 files

LLVM/project 272c8c7mlir/include/mlir/Target/SPIRV SPIRVBinaryUtils.h, mlir/lib/Target/SPIRV/Deserialization DeserializeOps.cpp Deserializer.h

[mlir][SPIR-V] Add support for SPV_INTEL_long_composites extension (#195685)

Add serialization and deserialization support for the
SPV_INTEL_long_composites extension, which allows splitting
composite/struct instructions that exceed the SPIR-V 16-bit word count
limit (65535 words) into a head instruction followed by one or more
continuation instructions
DeltaFile
+321-0mlir/unittests/Dialect/SPIRV/SerializationTest.cpp
+89-5mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
+34-0mlir/lib/Target/SPIRV/Deserialization/DeserializeOps.cpp
+20-0mlir/include/mlir/Target/SPIRV/SPIRVBinaryUtils.h
+15-0mlir/lib/Target/SPIRV/Serialization/Serializer.h
+9-0mlir/lib/Target/SPIRV/Deserialization/Deserializer.h
+488-52 files not shown
+498-78 files

LLVM/project aa70135llvm/test/Transforms/MemCpyOpt byval-src-move.ll

pre-commit tests
DeltaFile
+343-0llvm/test/Transforms/MemCpyOpt/byval-src-move.ll
+343-01 files

LLVM/project dff7e98llvm/include/llvm/Transforms/Scalar MemCpyOptimizer.h, llvm/lib/Transforms/Scalar MemCpyOptimizer.cpp

[memcpyopt] forward stores into byval through memcpy to dest
DeltaFile
+140-0llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
+6-8llvm/test/Transforms/MemCpyOpt/byval-src-move.ll
+1-0llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
+147-83 files

LLVM/project 6b5dcb2utils/bazel/llvm-project-overlay/mlir/test BUILD.bazel

[Bazel] Fixes dd57b0c (#196253)

This fixes dd57b0c9728a512e4409980829f97f2b3728a45d.

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+1-0utils/bazel/llvm-project-overlay/mlir/test/BUILD.bazel
+1-01 files

LLVM/project 6391c90llvm/test/Transforms/LoopVectorize if-pred-stores.ll float-induction.ll, llvm/test/Transforms/LoopVectorize/AArch64 masked-call.ll

[LV][NFC] Remove simplifycfg pass from RUN lines (#195817)

All the simplifycfg pass really did was remove empty blocks. I don't
believe it added any real value, but it does make the tests run slower.
DeltaFile
+259-137llvm/test/Transforms/LoopVectorize/if-pred-stores.ll
+214-86llvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll
+182-93llvm/test/Transforms/LoopVectorize/ARM/pointer_iv.ll
+164-62llvm/test/Transforms/LoopVectorize/X86/x86-interleaved-accesses-masked-group.ll
+140-76llvm/test/Transforms/LoopVectorize/AArch64/masked-call.ll
+97-50llvm/test/Transforms/LoopVectorize/float-induction.ll
+1,056-50416 files not shown
+1,394-67022 files

LLVM/project 1c06885llvm/test/MC/AMDGPU gfx13_asm_vop3.s gfx13_asm_vop3-fake16.s

[AMDGPU] Add VOP3 encoding for gfx13
DeltaFile
+8,195-0llvm/test/MC/AMDGPU/gfx13_asm_vop3.s
+8,182-0llvm/test/MC/AMDGPU/gfx13_asm_vop3-fake16.s
+5,587-0llvm/test/MC/AMDGPU/gfx13_asm_vop3_dpp16.s
+5,574-0llvm/test/MC/AMDGPU/gfx13_asm_vop3_dpp16-fake16.s
+4,106-0llvm/test/MC/AMDGPU/gfx13_asm_vop3_from_vop1-fake16.s
+3,524-0llvm/test/MC/AMDGPU/gfx13_asm_vop3_dpp8.s
+35,168-010 files not shown
+39,624-30216 files

LLVM/project 3ce28a3llvm/include/llvm/Transforms/Scalar MemCpyOptimizer.h, llvm/lib/Transforms/Scalar MemCpyOptimizer.cpp

[memcpyopt] forward stores into byval through memcpy to dest

Co-authored-by: Copilot <copilot at github.com>
DeltaFile
+145-0llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
+6-8llvm/test/Transforms/MemCpyOpt/byval-src-move.ll
+1-0llvm/include/llvm/Transforms/Scalar/MemCpyOptimizer.h
+152-83 files

LLVM/project e01ea6cclang-tools-extra/test/clang-tidy check_clang_tidy.py

[clang-tidy] Reject malformed -std spellings in `check_clang_tidy.py`. NFC. (#195609)

`check_clang_tidy.py` expanded any `-std` value containing `-or-later`,
even when extra text followed the suffix. e.g. `c++20-or-latermisc` was
treated like `c++20-or-later`.

This commit requires `-or-later` to be the actual end of the spelling
before expanding it, so malformed values are passed through and
diagnosed by clang.
DeltaFile
+5-1clang-tools-extra/test/clang-tidy/check_clang_tidy.py
+5-11 files

LLVM/project 74cadb8llvm/test/CodeGen/AArch64 bf16-v8-instructions.ll bf16-v4-instructions.ll

[AArch64][GlobalISel] Clean up and extend BF16 tests. NFC (#196175) (#196255)

This attempts to fill in the gap between the different bf16 test files,
making sure they all contain the same tests.
DeltaFile
+5,910-880llvm/test/CodeGen/AArch64/bf16-v8-instructions.ll
+3,306-504llvm/test/CodeGen/AArch64/bf16-v4-instructions.ll
+40-9llvm/test/CodeGen/AArch64/bf16-instructions.ll
+0-1llvm/test/CodeGen/AArch64/itofp-bf16.ll
+9,256-1,3944 files

LLVM/project b3cc67fllvm/docs/Frontend PerformanceTips.rst

[Docs] Warn against extremely wide integer types in PerformanceTips (#192275)

Following the discussion, this patch adds a warning to the
PerformanceTips documentation regarding the use of extremely wide
integer types.

The LLVM optimizer and certain analysis passes (like ConstantRange) are
not designed to handle integer types exceeding a few thousand bits,
which can lead to super-linear complexity and significant compile-time
hangs. Frontend authors are advised to decompose such large integers
into machine-word-sized pieces instead.

Fixes #192277

Co-authored-by: Claude Opus 4.7 (1M context) <noreply at anthropic.com>
DeltaFile
+4-0llvm/docs/Frontend/PerformanceTips.rst
+4-01 files

LLVM/project 317d1a1llvm/docs LangRef.rst

[LangRef] Adjust reduce.fmin/reduce.fmax behavior for sNaN (#196053)

The reduce.fmin/reduce.fmax intrinsics are designed as unordered
reductions, just like all reductions that do not take a start value.
However, if one of the elements is sNaN, then the reduction order
matters.

I *tried* to account for this when implementing the sNaN changes for
minnum/maxnum in LangRef, but didn't correctly consider the
consequences: It's not sufficient to just say that if one value is sNaN,
either the result is NaN or its treated as qNaN.

For example, if we reduce over `<sNaN, 0.0, 1.1>` then (picking the IEEE
behavior for each maxnum):

 * maxnum(maxnum(sNaN, 0.0), 1.0) = maxnum(qNaN, 1.0) = 1.0
 * maxnum(maxnum(sNaN, 1.0), 0.0) = maxnum(qNaN, 0.0) = 0.0
 * maxnum(maxnum(0.0, 1.0), sNaN) = maxnum(1.0, sNaN) = qNaN


    [5 lines not shown]
DeltaFile
+10-8llvm/docs/LangRef.rst
+10-81 files

LLVM/project f4e42fbllvm/lib/Analysis ScalarEvolution.cpp, llvm/test/Analysis/ScalarEvolution udiv.ll mul-udiv-folds.ll

[SCEV] Merge udiv exact logic into general udiv logic (#195840)

The udiv exact handling for constant RHS is already partially handling
in the generic udiv code:

https://github.com/llvm/llvm-project/blob/8a0c5d3f43b27c8e2895c6106d6b551d626979fd/llvm/lib/Analysis/ScalarEvolution.cpp#L3641-L3657

Move two remaining folds there as well:
 * `(%a * %b)<nuw> / %b` to `%a`
 * `(A*GCD * %b)<nuw> / (C*GCD)` to `(A * %b)<nuw> / C`

Removing common factors from a multiply does not require exact if the
multiply is nuw (and conversely, being exact is not sufficient without
nuw).

This makes getUDivExactExpr() equivalent to getUDivExpr(). I've retained
the method for now in case we want to add exact specific logic in the
future.

Proof: https://alive2.llvm.org/ce/z/iQeb6v
DeltaFile
+125-0llvm/test/Analysis/ScalarEvolution/udiv.ll
+31-49llvm/lib/Analysis/ScalarEvolution.cpp
+1-1llvm/test/Analysis/ScalarEvolution/mul-udiv-folds.ll
+157-503 files

LLVM/project dd57b0cmlir/include/mlir/Interfaces ValueBoundsOpInterface.h, mlir/lib/Dialect/Affine/Transforms ReifyValueBounds.cpp

[mlir][Interfaces] Allow integer types for `ValueBoundsOpInterface` (#196082)

Allow integer-typed SSA values in the `ValueBoundsConstraintSet`
infrastructure. Only index types were allowed until now. This new
feature is opt-in only. The implementation assumes that integer
computation will not overflow.

A new `ValueBoundsOptions` struct is added. Public entry points now take
this struct instead of the `closedUB` flag. The flag was moved to the
options struct, along with the `allowIntegerType` flag.

Note for LLVM integration: Pass `ValueBoundsOptions` instead of `bool
closedUB`.

Assisted-by: gpt-5.5-extra-high
DeltaFile
+44-29mlir/lib/Interfaces/ValueBoundsOpInterface.cpp
+35-14mlir/include/mlir/Interfaces/ValueBoundsOpInterface.h
+31-15mlir/lib/Dialect/Arith/Transforms/ReifyValueBounds.cpp
+39-0mlir/test/Dialect/Arith/value-bounds-op-interface-impl.mlir
+15-8mlir/lib/Dialect/Affine/Transforms/ReifyValueBounds.cpp
+14-7mlir/test/lib/Dialect/Affine/TestReifyValueBounds.cpp
+178-7314 files not shown
+217-10520 files

LLVM/project 75c6e77llvm/test/Transforms/MemCpyOpt byval-src-move.ll

pre-commit tests
DeltaFile
+343-0llvm/test/Transforms/MemCpyOpt/byval-src-move.ll
+343-01 files

LLVM/project ebe8353llvm/lib/Target/RISCV RISCVInstrInfoVVLPatterns.td

[RISCV][NFC] Add VPatUnaryVL_V class (#196229)

So that we can reuse it.
DeltaFile
+28-13llvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
+28-131 files

LLVM/project 0533466llvm/lib/TargetParser RISCVTargetParser.cpp, llvm/unittests/TargetParser RISCVTargetParserTest.cpp

[RISCV][MC][NFC] Update IME vtype layout to match latest spec `riscv-isa-release-fa55752-2026-05-04` (#195998)

This updates the IME-specific vtype field layout to match the [latest
IME spec, version
riscv-isa-release-fa55752-2026-05-04](https://github.com/riscv/integrated-matrix-extension/blob/main/src/integrated-matrix.adoc#new-fields-in-the-vector-type-vtype-register).
The latest spec places the IME fields as:

| Field         | New Position              | Change Description              |
|---------------|---------------------------|---------------------------------|
| `lambda[2:0]` | `vtype[XLEN-2:XLEN-4]`   | Unchanged                       |
| `bs`          | `vtype[XLEN-5]`          | Moved from `vtype[XLEN-7]`     |
| `altfmt_A`    | `vtype[XLEN-6]`          | Moved from `vtype[XLEN-5]`     |
| `altfmt_B`    | `vtype[XLEN-7]`          | Moved from `vtype[XLEN-6]`     |

Previously `bs`, `altfmt_A`, and `altfmt_B` followed the older ordering,
which was first introduced in #193956. The new position of altfmt
supports growing in the future for more datatypes.
This patch also updates tests to reflect field changes.

Currently this should be NFC since we didn't have any CodeGen
implementation that involves vtype in IME.
DeltaFile
+17-1llvm/unittests/TargetParser/RISCVTargetParserTest.cpp
+3-3llvm/lib/TargetParser/RISCVTargetParser.cpp
+20-42 files

LLVM/project 7b2f83alibc/docs/dev undefined_behavior.rst, libc/docs/gpu using.rst

[libc][docs] Minor typos in Documentation (#196066)

  - removed a duplicate "to" in dev/undefinde_behaviour.rst
  - corrected "in order or link" to "inorder to link" in gpu/using.rst

Signed-off-by: udaykiriti <udaykiriti624 at gmail.com>
DeltaFile
+1-1libc/docs/dev/undefined_behavior.rst
+1-1libc/docs/gpu/using.rst
+2-22 files

LLVM/project 259235allvm/lib/Target/AMDGPU VOP3PInstructions.td, llvm/test/MC/AMDGPU gfx13_asm_vop3p.s gfx13_asm_vop3p_features.s

[AMDGPU] Add VOP3P encoding to gfx13
DeltaFile
+1,608-0llvm/test/MC/AMDGPU/gfx13_asm_vop3p.s
+125-0llvm/test/MC/AMDGPU/gfx13_asm_vop3p_features.s
+60-42llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+34-0llvm/test/MC/AMDGPU/gfx13_asm_vop3p_dpp8.s
+18-0llvm/test/MC/AMDGPU/gfx13_asm_vop3p_dpp16.s
+1-0llvm/test/MC/AMDGPU/gfx12_asm_vop3p_aliases.s
+1,846-426 files

LLVM/project 3d6a7bfllvm/include/llvm/Analysis SimplifyQuery.h ValueTracking.h, llvm/lib/Analysis ValueTracking.cpp ScalarEvolution.cpp

[InstCombine] Drop alignment assumptions more aggressively (#196060)

`computeKnownBits` gets a context instruction now, which allows dropping
assumes based on previous assumes.
DeltaFile
+11-15llvm/lib/Analysis/ValueTracking.cpp
+13-0llvm/test/Transforms/InstCombine/assume.ll
+4-7llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
+6-0llvm/include/llvm/Analysis/SimplifyQuery.h
+5-0llvm/include/llvm/Analysis/ValueTracking.h
+3-1llvm/lib/Analysis/ScalarEvolution.cpp
+42-231 files not shown
+43-247 files

LLVM/project 018cab7llvm/include/llvm/ADT GenericUniformityInfo.h GenericUniformityImpl.h, llvm/lib/Target/AMDGPU AMDGPURegBankLegalizeRules.cpp AMDGPUCodeGenPrepare.cpp

[NFC] rename public api's in UA
DeltaFile
+61-54llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+5-5llvm/include/llvm/ADT/GenericUniformityInfo.h
+4-4llvm/unittests/Target/AMDGPU/UniformityAnalysisTest.cpp
+3-2llvm/include/llvm/ADT/GenericUniformityImpl.h
+2-2llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
+2-2llvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp
+77-6910 files not shown
+89-8116 files

LLVM/project b68f6c0lldb/packages/Python/lldbsuite/test lldbreverse.py, lldb/source/Plugins/Process/gdb-remote ProcessGDBRemote.cpp GDBRemoteClientBase.cpp

[lldb] Override UpdateBreakpointSites in ProcessGDBRemote to use MultiBreakpoint (#192988)

This concludes the implementation of MultiBreakpoint by actually using
the new packet to batch breakpoint requests.

The following PRs are related to the MultiBreakpoint feature:

* https://github.com/llvm/llvm-project/pull/192910
* https://github.com/llvm/llvm-project/pull/192914
* https://github.com/llvm/llvm-project/pull/192915
* https://github.com/llvm/llvm-project/pull/192919
* https://github.com/llvm/llvm-project/pull/192962
* https://github.com/llvm/llvm-project/pull/192964
* https://github.com/llvm/llvm-project/pull/192971
* https://github.com/llvm/llvm-project/pull/192988
DeltaFile
+170-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+22-0lldb/packages/Python/lldbsuite/test/lldbreverse.py
+17-0lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.cpp
+7-1lldb/test/API/functionalities/breakpoint/delayed_breakpoints/TestDelayedBreakpoint.py
+6-0lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
+5-0lldb/source/Plugins/Process/gdb-remote/GDBRemoteClientBase.h
+227-13 files not shown
+235-19 files

LLVM/project 67e8fc4lld/test/ELF target-specific-options.s aarch64-bti-pac-cli-error.s

[ELF,test] Cover target-specific option errors (#196247)
DeltaFile
+37-14lld/test/ELF/target-specific-options.s
+0-17lld/test/ELF/aarch64-bti-pac-cli-error.s
+3-0lld/test/ELF/aarch64-execute-only.s
+3-0lld/test/ELF/x86-64-feature-cet.s
+43-314 files

LLVM/project 626e2d2llvm/lib/Target/AArch64 AArch64TargetMachine.cpp

[AArch64] Avoid raw_svector_ostream for SubtargetMap keys (#196003)

AArch64TargetMachine::getSubtargetImpl builds a StringMap key on every
subtarget lookup. This showed up through repeated TTI queries while
profiling sqlite on aarch64-O0-g.

Building the key directly with SmallString appends and utostr instead of
raw_svector_ostream improves compile-time.

We used to do this until 07e7168048b1.

CTMark geomean:
- stage1-aarch64-O3: -0.16%
- stage1-aarch64-O0-g: -0.18%

https://llvm-compile-time-tracker.com/compare.php?from=c9d713aa48a714d20b8502d06b9feb24829e6f22&to=e7ff83884193ee70cf3a69778b891fb729e0bcba&stat=instructions%3Au

Assisted-by: codex
DeltaFile
+16-5llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+16-51 files