LLVM/project e1c14c7clang/lib/CIR/CodeGen CIRGenBuilder.cpp, clang/test/CIR/CodeGen constexpr-ptr-offset.cpp

[CIR] Handle scalar-type element GEP in GlobalView offset computation

computeGlobalViewIndicesFromFlatOffset navigated into array and record
types to convert a flat byte offset into structured GEP indices, but hit
llvm_unreachable("unexpected type") when the pointee was a scalar integer
(e.g. !s8i for const char *).

This happens when a constexpr struct has a pointer field initialized to a
global string-literal address plus a non-zero byte offset.  Classic
CodeGen emits getelementptr i8, ptr @str, i64 N; CIR represents it as a
GlobalViewAttr with index [N].  getAddrOfConstantStringFromLiteral builds
the GlobalViewAttr with a ptr-to-char pointee (not ptr-to-array), so
applyOffset hands a char type to the offset navigator.

Add a cir::IntType case that computes offset / sizeof(element) as the flat
GEP index, mirroring the array-element logic, in both
computeGlobalViewIndicesFromFlatOffset and
computeOffsetFromGlobalViewIndices.  llvm_unreachable is kept for
genuinely unexpected types.
DeltaFile
+24-0clang/test/CIR/CodeGen/constexpr-ptr-offset.cpp
+18-4clang/lib/CIR/CodeGen/CIRGenBuilder.cpp
+42-42 files

LLVM/project 11054d2clang/lib/CIR/Lowering LoweringHelpers.cpp, clang/test/CIR/CodeGen const-array-floating-point.c

[CIR] Fix const-array lowering for long double (#203617)

A global array constant of `long double` crashes CIR's lowering to LLVM.
`getZeroInitFromType<APFloat>` in LoweringHelpers seeds a zero-filled vector
for the const-array path but only handled `SingleType`/`DoubleType`, asserting
"only float and double supported" on every other CIR floating-point type.  The
const-array dispatch already routes any `cir::FPTypeInterface` element type into
`getZeroInitFromType<APFloat>`, so `long double` (`x86_fp80`) hit the assert even
though classic codegen lowers it fine.  The SingleSource ieee-copysign2 test
exercises exactly this.

The fix derives the zero from the element type's APFloat semantics via
`cir::FPTypeInterface::getFloatSemantics()`, the same construction `FPAttr::getZero`
uses, which covers float, double, long double, FP128, half, and bfloat.  The test
pins all of those against classic codegen output.
DeltaFile
+30-0clang/test/CIR/CodeGen/const-array-floating-point.c
+2-10clang/lib/CIR/Lowering/LoweringHelpers.cpp
+32-102 files

LLVM/project bca375bllvm/docs AMDGPUUsage.rst

Fix references maybe?
DeltaFile
+2-2llvm/docs/AMDGPUUsage.rst
+2-21 files

LLVM/project 1c07fe8clang/lib/CIR/Dialect/IR CIRDialect.cpp, clang/lib/CIR/Interfaces CIRLoopOpInterface.cpp

[CIR][NFC] Sync ClangIR with MLIR RegionSuccessor changes (#203950)

Sync ClangIR with MLIR RegionSuccessor changes that were introduced in
#203552
DeltaFile
+27-27clang/lib/CIR/Dialect/IR/CIRDialect.cpp
+2-2clang/lib/CIR/Interfaces/CIRLoopOpInterface.cpp
+2-2clang/unittests/CIR/ControlFlowTest.cpp
+31-313 files

LLVM/project c3c915fllvm/include/llvm/Support CommandLine.h, llvm/lib/Support CommandLine.cpp

[Support] Move the command-line Option constructor out of line (#202847)

Move the shared `Option` base constructor from `CommandLine.h` to
`CommandLine.cpp`. Typed `opt`, `list`, and `bits` constructors remain
unchanged; option construction gains one direct non-virtual call and
parsing behavior is unaffected.

A native AArch64 Release `opt` shrinks by 358,576 bytes, with `__text`
down 229,796 bytes and dyld fixups unchanged.

Work towards #202616

AI tool disclosure: Co-authored with OpenAI Codex.
DeltaFile
+2-7llvm/include/llvm/Support/CommandLine.h
+7-0llvm/lib/Support/CommandLine.cpp
+9-72 files

LLVM/project 3fff3e6llvm/docs/CommandGuide index.rst, llvm/docs/GlobalISel index.rst Pipeline.rst

[docs] Enforce unambiguous toctree in llvm/docs

It seems like using a non-`hidden` `toctree` for page navigation is a
bit of a trap, in that every doc must have a single unique path through
the global toctree to the root doc, and it is very easy to end up with
multiple.

This patch tries to address the warnings (actually infos, hence why it
does not fail the build) in llvm/docs/, namely:

  $ sphinx-build -b html -jauto llvm/docs/ /tmp/sphinx-out
  checking consistency...
  llvm/docs/AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack/AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack.md: document is referenced in multiple toctrees: ['UserGuides', 'AMDGPUUsage'], selecting: UserGuides <- AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack/AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack
  llvm/docs/AMDGPUDwarfExtensionsForHeterogeneousDebugging.rst: document is referenced in multiple toctrees: ['UserGuides', 'AMDGPUUsage'], selecting: UserGuides <- AMDGPUDwarfExtensionsForHeterogeneousDebugging
  llvm/docs/CommandGuide/llvm-reduce.rst: document is referenced in multiple toctrees: ['CommandGuide/index', 'CommandGuide/index', 'Reference'], selecting: Reference <- CommandGuide/llvm-reduce
  llvm/docs/GitHub.rst: document is referenced in multiple toctrees: ['GettingInvolved', 'UserGuides'], selecting: UserGuides <- GitHub
  llvm/docs/GlobalISel/IRTranslator.rst: document is referenced in multiple toctrees: ['GlobalISel/index', 'GlobalISel/Pipeline'], selecting: GlobalISel/index <- GlobalISel/IRTranslator
  llvm/docs/GlobalISel/InstructionSelect.rst: document is referenced in multiple toctrees: ['GlobalISel/index', 'GlobalISel/Pipeline'], selecting: GlobalISel/index <- GlobalISel/InstructionSelect
  llvm/docs/GlobalISel/Legalizer.rst: document is referenced in multiple toctrees: ['GlobalISel/index', 'GlobalISel/Pipeline'], selecting: GlobalISel/index <- GlobalISel/Legalizer

    [35 lines not shown]
DeltaFile
+88-39llvm/docs/CommandGuide/index.rst
+30-21llvm/docs/GlobalISel/index.rst
+50-0utils/docs/llvm_sphinx/ext/checks.py
+21-21llvm/tools/llvm-debuginfo-analyzer/README.md
+0-14llvm/docs/tutorial/MyFirstLanguageFrontend/index.rst
+0-8llvm/docs/GlobalISel/Pipeline.rst
+189-1035 files not shown
+191-11211 files

LLVM/project ee24192clang/docs ghlinks.py conf.py, lldb/docs conf.py

[docs] Create utils/docs

llvm-project is home to many sphinx documentation sites, each with
configuration quirks and bespoke extentions.

The sphinx config model makes sharing code somewhat difficult. There
are options like sphinx-multiproject, but some of our docs builds are
out of the source tree while some are done out of the binary tree, so
the multiproject configuration itself would need to be generated. It
also would impose more uniformity around extensions than required.

This change instead creates a python package at utils/docs/llvm_sphinx
and makes it available to all sphinx-build processes via PYTHONPATH.
Each conf.py does not modify its own sys.path because not all builds are
out of the source tree, so there isn't a stable relative path to use to
refer to the utils/docs/ directory.

Type checking via pyright in new package is pinned to being python 3.8
compatible.

    [29 lines not shown]
DeltaFile
+0-273clang/docs/ghlinks.py
+151-0utils/docs/llvm_sphinx/ext/ghlinks/__init__.py
+72-0utils/docs/llvm_sphinx/__init__.py
+6-39lldb/docs/conf.py
+5-38llvm/docs/conf.py
+10-30clang/docs/conf.py
+244-38022 files not shown
+416-64128 files

LLVM/project ad6c8a5llvm CMakeLists.txt

Bump minimum required sphinx Python to 3.8

There seems to be de-facto use of at least 3.6 in docs, namely:

* Use of pathlib (3.4) in various places
* Format f-strings (3.6) and used in clang/docs/ghlinks.py

I don't see a strong reason to maintain the divide in minimum version
between test/docs, especially considering the "FIXME" indicating
the 3.0 lower bound was just a guess to begin with.

Change-Id: I11e00295ae0a13ec0f1c5cefbb2fdd2db272b152
DeltaFile
+1-1llvm/CMakeLists.txt
+1-11 files

LLVM/project df2ccb6bolt/docs index.rst

[docs] Add BOLTAArch64OptimizationStatus to toctree

Building docs-bolt-html fails with:

  Warning, treated as error:
  /home/slinder1/llvm-project/scratch/bolt/docs/BOLTAArch64OptimizationStatus.rst:document isn't included in any toctree

Just add the orphan document to the toctree in the index to silence
this. If there is a better parent it can be moved somewhere else in the
tree.

Change-Id: I1d26d96d5485d97d29231da89f8c8408b375c41f
DeltaFile
+5-0bolt/docs/index.rst
+5-01 files

LLVM/project 96adb80llvm/lib/Target/AArch64 AArch64PerfectShuffle.cpp AArch64PerfectShuffle.h, llvm/utils/PerfectShuffle PerfectShuffle.cpp

[AArch64] Move the perfect-shuffle table out of line (#202617)

Move the generated `PerfectShuffleTable` from `AArch64PerfectShuffle.h`
to one hidden definition in `AArch64PerfectShuffle.cpp`. The three
consumers retain direct indexed access.

On Darwin arm64 Release, `__TEXT,__const` decreases by 26,240 bytes and
stripped AArch64-only `llc` decreases from 48,207,312 to 48,190,816
bytes (-16,496 bytes).

Work towards #202616

AI tool disclosure: Co-authored with OpenAI Codex.
DeltaFile
+6,583-0llvm/lib/Target/AArch64/AArch64PerfectShuffle.cpp
+3-6,571llvm/lib/Target/AArch64/AArch64PerfectShuffle.h
+1-1llvm/utils/PerfectShuffle/PerfectShuffle.cpp
+1-0llvm/utils/gn/secondary/llvm/lib/Target/AArch64/BUILD.gn
+1-0llvm/lib/Target/AArch64/CMakeLists.txt
+6,589-6,5725 files

LLVM/project df0c6bdllvm/lib/Target/X86 X86InstrFragmentsSIMD.td X86InstrSSE.td

[X86] Replace alignedstore/alignedload custom predicates with MinAlignment. NFC (#201980)

These custom alignment predicates predate PatFrag's dedicated
MinAlignment field. Replace them with per-size fragments
(alignedstore128/256/512, alignedload128/256/512) so both SelectionDAG
and GlobalISel get the alignment check without hand-written predicate
code.

Stacked above https://github.com/llvm/llvm-project/pull/197860; stacked
below https://github.com/llvm/llvm-project/pull/197861.
DeltaFile
+38-41llvm/lib/Target/X86/X86InstrFragmentsSIMD.td
+25-25llvm/lib/Target/X86/X86InstrSSE.td
+18-18llvm/lib/Target/X86/X86InstrAVX512.td
+3-3llvm/lib/Target/X86/X86InstrVecCompiler.td
+84-874 files

LLVM/project 89a0869clang-tools-extra/clangd Preamble.h

[clangd] Keep ModuleCache alive for captured preamble AST (#203952)

Since #164889 made ModuleManager's ModuleCache reference non-owning, the
preamble's CompilerInstance solely owns the module buffers so retain the
shared_ptr<ModuleCache> in CapturedASTCtx.

Fixes #203799
DeltaFile
+4-1clang-tools-extra/clangd/Preamble.h
+4-11 files

LLVM/project 671d1e6llvm/include/llvm/IR IntrinsicsAMDGPU.td, llvm/lib/Target/AMDGPU AMDGPUInstructionSelector.cpp SIISelLowering.cpp

[AMDGPU] Guard more intrinsics with target features
DeltaFile
+1-51llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
+0-42llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+0-24llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+14-0llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+4-4llvm/test/CodeGen/AMDGPU/unsupported-av-store.ll
+4-4llvm/test/CodeGen/AMDGPU/unsupported-av-load.ll
+23-12512 files not shown
+44-14118 files

LLVM/project e407a5bclang/include/clang/AST OpenMPClause.h, clang/lib/Sema SemaOpenMP.cpp

[OpenMP] Introduce the ompx_name clause for kernel naming

This adds support for the ompx_name clause that allows users to specify
custom kernel names for OpenMP target offloading regions. The clause
accepts a string literal and overrides the default compiler-generated
kernel names.

Example usage:
  #pragma omp target ompx_name("my_kernel")
  { ... }

Kernel names need to be unique or they are diagnosed at compile or link
time as errors.

Co-Authored-By: Claude (claude-sonnet-4.5) <noreply at anthropic.com>
DeltaFile
+78-0offload/test/offloading/ompx_name.c
+62-0clang/test/OpenMP/ompx_name_messages_errors.cpp
+53-0clang/test/OpenMP/ompx_name_codegen.cpp
+40-0offload/test/offloading/ompx_name_duplicate_link.c
+36-0clang/lib/Sema/SemaOpenMP.cpp
+33-0clang/include/clang/AST/OpenMPClause.h
+302-014 files not shown
+415-920 files

LLVM/project 5a4af44clang/test/OpenMP target_codegen.cpp target_simd_codegen.cpp, llvm/include/llvm/Frontend/Offloading Utility.h

[OpenMP] Use ext linkage for kernels handles and globals handles keep linkage

Host handles are now emmitted with external linkage to clash if two
kernels with the same name are registered. This could have happen right
now and silently corrupt the program, but it can happen more easily once
we allow users to name their kernels.

In the same patch we make global variable handles retain the linkage of
the global variable, forcing clashes for external ones and continue to
support weak use cases.
DeltaFile
+11-11clang/test/OpenMP/target_codegen.cpp
+8-8clang/test/OpenMP/target_simd_codegen.cpp
+8-8mlir/test/Target/LLVMIR/omptarget-declare-target-llvm-host.mlir
+7-6llvm/lib/Frontend/Offloading/Utility.cpp
+4-4clang/test/OpenMP/target_indirect_codegen.cpp
+4-4llvm/include/llvm/Frontend/Offloading/Utility.h
+42-4114 files not shown
+70-6820 files

LLVM/project 5754a48clang/include/clang/Basic AttrDocs.td, clang/lib/CodeGen CGDebugInfo.cpp CGDebugInfo.h

[Clang][BPF] Support btf_type_tag on typedef underlying types (#203089)

Emil Tsalapatis suggested to add type tag for typedef like below:
```
  $ cat tag.c
  #define __type_tag(x) __attribute__((btf_type_tag(x)))

  struct bar { int c; int d; };
  typedef struct bar __type_tag("a") bar_t;
  int use(bar_t *v)
  {
    return v->c + v->d;
  }
```
This makes the code simpler -- using `bar_t *v` instead of the longer
form `struct bar __type_tag("a") *v`.

So the goal is to allow type tag for typedef underlying types. The
following describes the main changes:

    [10 lines not shown]
DeltaFile
+137-0llvm/test/CodeGen/BPF/BTF/type-tag-typedef-noptr.ll
+51-31clang/lib/CodeGen/CGDebugInfo.cpp
+40-0clang/test/DebugInfo/Generic/attr-btf_type_tag-typedef-no-ptr.c
+29-2clang/include/clang/Basic/AttrDocs.td
+16-6llvm/lib/Target/BPF/BTFDebug.cpp
+12-0clang/lib/CodeGen/CGDebugInfo.h
+285-396 files

LLVM/project 0e759d3lldb/include/lldb/Utility FileSpec.h, lldb/source/API SBLaunchInfo.cpp

[lldb][NFC] Remove FileSpec::GetPathAsConstString (#203428)

I'm trying to clean up the FileSpec API. Even if it is currently
implemented as a pair of ConstStrings, I think it would be better if
FileSpec users only created new ConstStrings as necessary.
DeltaFile
+4-4lldb/source/Host/common/HostInfoBase.cpp
+0-8lldb/include/lldb/Utility/FileSpec.h
+4-4lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
+4-4lldb/source/Target/Platform.cpp
+0-4lldb/source/Utility/FileSpec.cpp
+2-2lldb/source/API/SBLaunchInfo.cpp
+14-267 files not shown
+24-3713 files

LLVM/project 0aa0fe9llvm/include/llvm/IR IntrinsicsAMDGPU.td, llvm/lib/Target/AMDGPU AMDGPUInstructionSelector.cpp SIISelLowering.cpp

[AMDGPU] Guard more intrinsics with target features
DeltaFile
+1-33llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
+0-34llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+0-24llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+12-0llvm/include/llvm/IR/IntrinsicsAMDGPU.td
+4-4llvm/test/CodeGen/AMDGPU/unsupported-av-load.ll
+4-4llvm/test/CodeGen/AMDGPU/unsupported-av-store.ll
+21-999 files not shown
+38-11115 files

LLVM/project 553eafcllvm/include/llvm/CodeGen TargetSubtargetInfo.h, llvm/lib/CodeGen/GlobalISel IRTranslator.cpp

[RFC][CodeGen] Add generic target feature checks for intrinsics

This PR adds target-independent infrastructure for annotating LLVM intrinsics
with required subtarget feature expressions.

It introduces a TargetFeatures string field to intrinsic TableGen records.
TableGen emits an intrinsic-to-feature mapping table.

Both SelectionDAG and GlobalISel now perform this check before lowering target
intrinsics. This allows targets to opt in by annotating intrinsic definitions
directly, rather than adding custom checks during lowering, legalization, or
instruction selection.

This PR uses one AMDGPU intrinsic as an example.
DeltaFile
+96-3llvm/lib/MC/MCSubtargetInfo.cpp
+47-0llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+33-1llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp
+28-0llvm/test/TableGen/intrinsic-target-features.td
+28-0llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+22-1llvm/include/llvm/CodeGen/TargetSubtargetInfo.h
+254-510 files not shown
+327-916 files

LLVM/project 208ef91llvm/lib/Target/WebAssembly WebAssemblyInstrSIMD.td, llvm/test/CodeGen/WebAssembly fpclamptosat_vec.ll saturating-truncation.ll

[WebAssembly] narrow instructions use signed saturation (#201798)

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

Per
https://www.w3.org/TR/wasm-core-2/#-hrefop-narrowmathrmnarrowmathsfu_m-n-i
the saturation is signed, the truncation is unsigned.

(cherry picked from commit c19fa5be5f47d8747f523509382b12997f2bd25f)
DeltaFile
+123-133llvm/test/CodeGen/WebAssembly/fpclamptosat_vec.ll
+70-6llvm/test/CodeGen/WebAssembly/saturating-truncation.ll
+17-3llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td
+210-1423 files

LLVM/project 766bd4ellvm/include/llvm/CodeGen TargetSubtargetInfo.h, llvm/lib/CodeGen/GlobalISel IRTranslator.cpp

[RFC][CodeGen] Add generic target feature checks for intrinsics

This PR adds target-independent infrastructure for annotating LLVM intrinsics
with required subtarget feature expressions.

It introduces a TargetFeatures string field to intrinsic TableGen records.
TableGen emits an intrinsic-to-feature mapping table.

Both SelectionDAG and GlobalISel now perform this check before lowering target
intrinsics. This allows targets to opt in by annotating intrinsic definitions
directly, rather than adding custom checks during lowering, legalization, or
instruction selection.

This PR uses one AMDGPU intrinsic as an example.
DeltaFile
+96-3llvm/lib/MC/MCSubtargetInfo.cpp
+55-0llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+33-1llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp
+28-0llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+28-0llvm/test/TableGen/intrinsic-target-features.td
+22-1llvm/include/llvm/CodeGen/TargetSubtargetInfo.h
+262-510 files not shown
+335-916 files

LLVM/project b31c239llvm/docs LangRef.rst

[LangRef] allow omitting `va_end` (#203087)

In Rust we'd like to be able to omit `va_end`: it is a no-op on all
currently supported targets, and the requirement that it is paired
exactly with `va_start` and `va_copy` (in the same frame) cannot be
unified with a language with move semantics.

cc https://github.com/rust-lang/rust/pull/157627
https://github.com/rust-lang/rust/pull/155697
DeltaFile
+13-3llvm/docs/LangRef.rst
+13-31 files

LLVM/project b9bc15cllvm/test/CodeGen/RISCV clmul.ll clmulr.ll, llvm/test/CodeGen/RISCV/rvv clmulh-sdnode.ll clmul-sdnode.ll

Merge branch 'main' into users/jeanPerier/mem2reg-view-interface-fir
DeltaFile
+38,494-84,026llvm/test/CodeGen/RISCV/rvv/clmulh-sdnode.ll
+22,388-22,086llvm/test/CodeGen/RISCV/rvv/clmul-sdnode.ll
+19,087-24,391llvm/test/CodeGen/RISCV/clmul.ll
+10,473-12,572llvm/test/CodeGen/RISCV/clmulr.ll
+10,287-12,385llvm/test/CodeGen/RISCV/clmulh.ll
+8,361-8,920llvm/test/CodeGen/RISCV/rvv/expandload.ll
+109,090-164,3809,719 files not shown
+825,133-538,3489,725 files

LLVM/project 83fed2bllvm/lib/Target/AMDGPU SIInstrInfo.h

inline isVALU into isLDSDMA to avoid recursive calls

Change-Id: I5b7e0c09fd310639ebf918d0152a419dca415798
DeltaFile
+3-2llvm/lib/Target/AMDGPU/SIInstrInfo.h
+3-21 files

LLVM/project ff3e8f4llvm/lib/Target/AMDGPU SIISelLowering.cpp

Rebase for new isVALU calls

Change-Id: Id2280498a63994268e902d90b787e32fdccc912a
DeltaFile
+2-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+2-21 files

LLVM/project f414c69llvm/lib/Target/AMDGPU GCNHazardRecognizer.cpp SIInstrInfo.cpp

Formatting

Change-Id: I0fbcad129f96986d2a448bfa4b5a027a2a5c07bd
DeltaFile
+27-16llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+6-3llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+4-4llvm/lib/Target/AMDGPU/AMDGPUIGroupLP.cpp
+2-2llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp
+2-1llvm/lib/Target/AMDGPU/SIInstrInfo.h
+2-1llvm/lib/Target/AMDGPU/SIFixSGPRCopies.cpp
+43-271 files not shown
+45-287 files

LLVM/project 1cadcb6llvm/lib/Target/AMDGPU GCNHazardRecognizer.cpp SIInstrInfo.h

[AMDGPU] NFC: Obviously show isVALU includes LDSDMA instructions

Change-Id: I3854fe397cafad4484c5af53c739e2117287d2c9
DeltaFile
+41-41llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+13-7llvm/lib/Target/AMDGPU/SIInstrInfo.h
+8-8llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+3-5llvm/lib/Target/AMDGPU/SIInsertWaitcnts.cpp
+2-2llvm/lib/Target/AMDGPU/AMDGPUSetWavePriority.cpp
+2-2llvm/lib/Target/AMDGPU/AMDGPUHazardLatency.cpp
+69-657 files not shown
+78-7413 files

LLVM/project 211abecllvm/include/llvm/CodeGen TargetSubtargetInfo.h, llvm/lib/CodeGen/GlobalISel IRTranslator.cpp

[RFC][CodeGen] Add generic target feature checks for intrinsics

This PR adds target-independent infrastructure for annotating LLVM intrinsics
with required subtarget feature expressions.

It introduces a TargetFeatures string field to intrinsic TableGen records.
TableGen emits an intrinsic-to-feature mapping table.

Both SelectionDAG and GlobalISel now perform this check before lowering target
intrinsics. This allows targets to opt in by annotating intrinsic definitions
directly, rather than adding custom checks during lowering, legalization, or
instruction selection.

This PR uses one AMDGPU intrinsic as an example.
DeltaFile
+92-0llvm/lib/MC/MCSubtargetInfo.cpp
+55-0llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+33-1llvm/utils/TableGen/Basic/IntrinsicEmitter.cpp
+28-0llvm/test/TableGen/intrinsic-target-features.td
+28-0llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp
+22-1llvm/include/llvm/CodeGen/TargetSubtargetInfo.h
+258-210 files not shown
+331-616 files

LLVM/project abd1ba0llvm/test/MC/AMDGPU gfx12_asm_vop3_dpp16.s, llvm/test/MC/Disassembler/AMDGPU gfx12_dasm_vop3_dpp16.txt gfx12_dasm_vop3_dpp16-fake.txt

[AMDGPU][NFC] Templatise and roundtrip gfx12_asm_vop3_dpp16.s

This is effectively the changes between the non-template versions
of gfx11/12_asm_vop3_dpp16.s applied on top of the templatised
gfx11_asm_vop3_dpp16.s.
DeltaFile
+11,856-3,719llvm/test/MC/AMDGPU/gfx12_asm_vop3_dpp16.s
+0-8,306llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_vop3_dpp16.txt
+5,672-0llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_vop3_dpp16-fake.txt
+17,528-12,0253 files

LLVM/project aca6ce1llvm/lib/CodeGen/SelectionDAG DAGCombiner.cpp

Update assert message
DeltaFile
+1-1llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
+1-11 files