LLVM/project b2ffc0dllvm/lib/Transforms/Scalar LoopInterchange.cpp, llvm/test/Transforms/LoopInterchange inner-header-has-duplicate-succs.ll

[LoopInterchange] Reject if inner loop header has duplicate successors (#204128)

Previously, loop interchange crashed in several cases where the inner
loop header had duplicate successors. In practice, the following was
happening:

- During the transformation phase, the inner loop header was not split
because its first non-PHI instruction was its terminator.
- `updateSuccessor` was called on the header with `MustUpdateOnce=true`,
which triggers an assertion failure.

This patch fixes the issue by rejecting such cases during the legality
check phase. I believe this situation is rare, so it should not
significantly affect real-world cases.

Fix #203887.
DeltaFile
+184-0llvm/test/Transforms/LoopInterchange/inner-header-has-duplicate-succs.ll
+7-0llvm/lib/Transforms/Scalar/LoopInterchange.cpp
+191-02 files

LLVM/project d58c356llvm/lib/Target/AMDGPU AMDGPUISelDAGToDAG.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU packed-fp64.ll packed-u64.ll

[AMDGPU] Make v2x64 BUILD_VECTOR legal on gfx1251
DeltaFile
+120-174llvm/test/CodeGen/AMDGPU/packed-fp64.ll
+70-106llvm/test/CodeGen/AMDGPU/packed-u64.ll
+14-36llvm/test/CodeGen/AMDGPU/shl.v2i64.ll
+15-16llvm/test/CodeGen/AMDGPU/pk-lshl-add-u64.ll
+11-6llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+3-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+233-3406 files

LLVM/project a24e158llvm/lib/Target/AMDGPU SIFoldOperands.cpp, llvm/test/CodeGen/AMDGPU fold-imm-pk64.mir

[AMDGPU] Prevent folding of immediates larger than 64 bit
DeltaFile
+37-0llvm/test/CodeGen/AMDGPU/fold-imm-pk64.mir
+3-0llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+40-02 files

LLVM/project ced82d8clang/lib/Headers spirvintrin.h nvptxintrin.h

[Clang] Make the pointers to gpuintrin AS query const (#204492)

Summary:
Right now these force a const cast if the user is checking a read-only
pointer, not great.
DeltaFile
+2-2clang/lib/Headers/spirvintrin.h
+2-2clang/lib/Headers/nvptxintrin.h
+2-2clang/lib/Headers/amdgpuintrin.h
+6-63 files

LLVM/project d6d9346llvm/include/llvm/Transforms/IPO InstrumentorRuntimeHelper.h, llvm/lib/Transforms/IPO Instrumentor.cpp

[Instrumentor] Move NumericFlags into InstrumentorRuntimeHelper.h (#204068)

This patch makes the `NumericFlags` enum visible to the end user by
moving it into `InstrumentorRuntimeHelper.h`.
DeltaFile
+14-0llvm/test/Instrumentation/Instrumentor/default_rt.h
+14-0llvm/include/llvm/Transforms/IPO/InstrumentorRuntimeHelper.h
+1-12llvm/lib/Transforms/IPO/Instrumentor.cpp
+29-123 files

LLVM/project 3a6eb67llvm/lib/Target/AArch64 AArch64SystemOperands.td AArch64InstrFormats.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

fixup! Convert PSB to use PSBHint for consistency
DeltaFile
+7-23llvm/lib/Target/AArch64/AArch64SystemOperands.td
+18-5llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+5-6llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+4-4llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
+3-2llvm/lib/Target/AArch64/AArch64InstrFormats.td
+1-1llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+38-411 files not shown
+39-417 files

LLVM/project 0aea056llvm/lib/Target/AArch64 AArch64SystemOperands.td AArch64InstrInfo.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

fixup! Address PR comments
DeltaFile
+24-48llvm/lib/Target/AArch64/AArch64SystemOperands.td
+25-23llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+16-22llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+15-8llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
+5-13llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+9-8llvm/lib/Target/AArch64/AArch64InstrInfo.td
+94-1224 files not shown
+108-13510 files

LLVM/project a40055cllvm/include/llvm/Support CHERICapabilityFormat.h, llvm/lib/Support CHERICapabilityFormat.cpp

[CHERI] Fix incorrect MAX_E for RV64Y capabilities. (#204487)

Add tests for all capability formats at the upper end of their ranges, which would have caught this oversight.
DeltaFile
+13-0llvm/unittests/Support/CHERICapabilityFormatTest.cpp
+2-2llvm/lib/Support/CHERICapabilityFormat.cpp
+1-1llvm/include/llvm/Support/CHERICapabilityFormat.h
+16-33 files

LLVM/project 5dc8ac2llvm/lib/Target/DirectX DXILRemoveUnusedResources.cpp DXILRemoveUnusedResources.h, llvm/test/CodeGen/DirectX unused-resources-impl-binding.ll resources-in-unused-function.ll

[DirectX] Add DXILRemoveUnusedResources pass (#200965)

Adds `DXILRemoveUnusedResources` pass that scans the module and removes
any resource that is not used. It means that it removes calls to
`dx_resource_handlefrom{implicit}binding` whose return value is either
not used at all, or it is saved to a global variable that does not have
external linkage and is not used anywhere else in the module.

This pass needs to run before implicit resource binding assignment pass.
The test `unused-resources-impl-binding.ll` makes sure the implicit
binding assignments are not affected by the unused resources.

Since we have many tests that are initializing resources without
actually using them, an internal option
`-disable-dxil-remove-unused-resource` has been added to `llc` so we can
keep these tests simple without adding extra code to artificially use
each resource.

Depends on #200312

Fixes #192524
DeltaFile
+140-0llvm/lib/Target/DirectX/DXILRemoveUnusedResources.cpp
+109-0llvm/test/CodeGen/DirectX/unused-resources-impl-binding.ll
+81-0llvm/test/CodeGen/DirectX/resources-in-unused-function.ll
+68-0llvm/test/CodeGen/DirectX/unused-resources.ll
+29-0llvm/lib/Target/DirectX/DXILRemoveUnusedResources.h
+6-0llvm/lib/Target/DirectX/DirectX.h
+433-018 files not shown
+453-1424 files

LLVM/project e4a0e1dlibc/benchmarks LibcRsqrtf16GoogleBenchmarkMain.cpp CMakeLists.txt, libc/src/__support/math rsqrtf16.h CMakeLists.txt

[libc][math][c23] Improve rsqrtf16 function for targets without fp32 FPUs. (#160639)

Closes #159378 

#### Changes
- This PR adds math approximation for targets that don't have hardware
for floats - in other words, targets that don't have
`LIBC_TARGET_CPU_HAS_FPU_FLOAT`
- This PR also introduces Google Benchmark for rsqrtf16
- Fixed typo in `+inf` case. Should return +0 according to
[F.10.4.9](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf)
DeltaFile
+241-5libc/src/__support/math/rsqrtf16.h
+105-0libc/benchmarks/LibcRsqrtf16GoogleBenchmarkMain.cpp
+21-0libc/benchmarks/CMakeLists.txt
+6-0libc/src/__support/math/CMakeLists.txt
+1-1utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+374-65 files

LLVM/project 14d163elldb/source/Plugins/ObjectFile/wasm ObjectFileWasm.cpp, lldb/source/Plugins/Platform/WebAssembly PlatformWasm.cpp

[lldb] Report a generic wasm32 architecture for Wasm object files (#204496)

ObjectFileWasm hardcoded the architecture of every Wasm module as
"wasm32-unknown-unknown-wasm". A Wasm binary does not actually encode a
vendor or OS, those are properties of the runtime executing it.

When debugging via a runtime whose gdb stub reports a more specific
triple (e.g. WAMR reports "wasm32-wamr-wasi-wasm"), lldb adopts that
triple and clears the module list. The dynamic loader then tries to
reload the main executable, but GetOrCreateModule rejects the on-disk
file because the triples are incompatible. This causes lldb to back to
reading from memory.

Fix all this by reporting a bare "wasm32"/"wasm64" architecture instead.
DeltaFile
+3-3lldb/source/Plugins/ObjectFile/wasm/ObjectFileWasm.cpp
+1-2lldb/source/Plugins/Platform/WebAssembly/PlatformWasm.cpp
+1-1lldb/test/Shell/ObjectFile/wasm/embedded-debug-sections.yaml
+1-1lldb/test/Shell/ObjectFile/wasm/unified-debug-sections.yaml
+1-1lldb/test/Shell/ObjectFile/wasm/basic.yaml
+1-1lldb/test/Shell/ObjectFile/wasm/stripped-debug-sections.yaml
+8-96 files

LLVM/project bcca9afllvm/lib/CodeGen AtomicExpandPass.cpp, llvm/test/CodeGen/ARM atomic-load-store.ll

[AtomicExpand] Add bitcasts when expanding store atomic vector

AtomicExpand fails for aligned \`store atomic <n x T>\` because it
does not find a compatible library call. This change adds appropriate
ptrtoint + bitcast so that the call can be lowered, mirroring the
load-side handling from #148900.
DeltaFile
+99-6llvm/test/CodeGen/X86/atomic-load-store.ll
+98-0llvm/test/Transforms/AtomicExpand/X86/expand-atomic-non-integer.ll
+49-0llvm/test/CodeGen/ARM/atomic-load-store.ll
+4-2llvm/lib/CodeGen/AtomicExpandPass.cpp
+250-84 files

LLVM/project 8f2ef03llvm/lib/CodeGen/SelectionDAG LegalizeVectorTypes.cpp, llvm/test/CodeGen/X86 atomic-load-store.ll

[SelectionDAG] Keep split vector atomic store value in a vector register

When the value of an ATOMIC_STORE has a vector type whose legalization
action is split (e.g. <4 x half>/<4 x bfloat> on X86 without F16C),
SplitVecOp_ATOMIC_STORE bitcast the value straight to a scalar integer
spanning the memory width. For a split vector that bitcast is expanded
element by element, reassembling the value in GPRs (a long pextrw/shl/or
sequence) before the store.

Instead, keep the value in a vector register when a legal vector form
exists: reinterpret it as a same-shaped integer-element vector (an FP
element type may have no legal vector form, e.g. bfloat on SSE2, while
the integer-of-element-size form does), widen that to a legal vector,
and extract the low integer element of the memory width. This issues the
store directly from a vector register (a single MOVQ/MOVD on X86),
matching the widen-path codegen already produced on AVX targets. Falls
back to the scalar bitcast when no suitable legal vector type exists.
DeltaFile
+203-329llvm/test/CodeGen/X86/atomic-load-store.ll
+33-6llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+236-3352 files

LLVM/project 8b0361bmlir/lib/Dialect/XeGPU/IR XeGPUDialect.cpp, mlir/test/Dialect/XeGPU sg-to-lane-distribute-unit.mlir

[MLIR][XeGPU] Treat lane_data repacks as compatible layouts (#204016)

A subgroup-level convert_layout that only repacks lane_data while keeping
lane_layout unchanged (e.g. [N, 1] to [1, 1] with order = [1, 0]) is a no-op
after lane distribution: each lane owns the same elements in the same order.
Previously isCompatibleWith compared per-distribution-unit block starts, which
encode the lane_data blocking, so such layouts looked incompatible.

Handle this at the Lane level in isCompatibleWith by expanding the block
starts into per-element coordinates before comparing. The expansion only runs
when lane_data differ; otherwise the cheaper block-start comparison is exact.
The shared logic lives in a compareDistributedCoords helper used by both
LayoutAttr and SliceAttr. The Subgroup level is left for a follow-up (TODO).

Add a lit test covering the fold in sg-to-lane-distribute-unit.mlir.
DeltaFile
+59-14mlir/lib/Dialect/XeGPU/IR/XeGPUDialect.cpp
+55-0mlir/test/Dialect/XeGPU/sg-to-lane-distribute-unit.mlir
+114-142 files

LLVM/project dd069b6lldb/source/Symbol Function.cpp, lldb/test/Shell/SymbolFile/DWARF/x86 prologue-entry-not-covered.s

[lldb] Skip the prologue when a function's entry has no line row (#204480)

Function::GetPrologueByteSize computed the prologue only when a line
table row contained the function's entry address (low_pc). When no row
covers low_pc it returned 0, leaving a name breakpoint sitting on the
function's entry address. For WebAssembly the entry address is the
function's locals-declaration byte rather than an instruction, so the
line table has no row there and the breakpoint is never hit.

When low_pc has no covering row, fall back to the first line row that
begins within the function's range and run the existing prologue logic
on it. For functions whose entry is already covered (all normally
compiled native code) this branch is not taken, so behavior is remains
unchanged.

This PR adds a hand (Claude) crafted regression test with a function
whose entry address is not covered by a line row.
DeltaFile
+101-0lldb/test/Shell/SymbolFile/DWARF/x86/prologue-entry-not-covered.s
+33-2lldb/source/Symbol/Function.cpp
+134-22 files

LLVM/project 0c6222dllvm/lib/Target/AArch64 AArch64SystemOperands.td AArch64InstrFormats.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

fixup! Address PR comments
DeltaFile
+22-50llvm/lib/Target/AArch64/AArch64SystemOperands.td
+21-23llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.h
+14-20llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+15-8llvm/lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
+5-13llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+6-5llvm/lib/Target/AArch64/AArch64InstrFormats.td
+83-1192 files not shown
+89-1228 files

LLVM/project aedf92cllvm/lib/Target/AMDGPU AMDGPU.td GCNHazardRecognizer.cpp, llvm/test/CodeGen/AMDGPU trans-coexecution-hazard.mir

[AMDGPU] Introduce TransCoexecutionHazard target feature (#204412)

  TransCoexecutionHazard implies there is data hazard between TRANS and
the following VALU instruction when they are co-executed. Currently
gfx1250 and gfx1251 have this target feature.
DeltaFile
+44-19llvm/test/CodeGen/AMDGPU/trans-coexecution-hazard.mir
+12-3llvm/lib/Target/AMDGPU/AMDGPU.td
+1-1llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+57-233 files

LLVM/project 0a92811utils/bazel/llvm-project-overlay/clang BUILD.bazel

[Bazel] Fixes 53dabae (#204494)

This fixes 53dabae40fb3a85148f1bb72e885e32081482dbe.

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

LLVM/project cc60ab0llvm/test/MC/AArch64 armv9.7a-memsys.s basic-a64-instructions.s

fixup! Add testcases for all missing HINTs
DeltaFile
+13-1llvm/test/MC/AArch64/armv9.7a-memsys.s
+12-0llvm/test/MC/AArch64/basic-a64-instructions.s
+9-1llvm/test/MC/AArch64/armv9.6a-pcdphint.s
+8-0llvm/test/MC/AArch64/armv8.4a-trace.s
+6-0llvm/test/MC/AArch64/armv9.5a-pauthlr.s
+3-0llvm/test/MC/AArch64/armv8.2a-statistical-profiling.s
+51-22 files not shown
+56-28 files

LLVM/project 484fc36llvm/lib/Target/AArch64 AArch64InstrFormats.td AArch64InstrInfo.td, llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp

[AArch64][llvm] Some instructions should be `HINT` aliases (NFC)

Implement the following instructions as a `HINT` alias instead of a
dedicated instruction in separate classes:
  * `stshh`
  * `stcph`
  * `shuh`
  * `tsb`

Updated all their helper methods too, and updated the `stshh` pseudo
expansion for the intrinsic to emit `HINT #0x30 | policy`.

Code in AArch64AsmPrinter::emitInstruction identified an initial BTI using a
broad bitmask on the HINT immediate, which also matched shuh/stcph (50..52)
This could move the patchable entry label after a non-BTI instruction.
Replaced it with an exact BTI check using the BTI HINT range (32..63) and
AArch64BTIHint::lookupBTIByEncoding(Imm ^ 32).

A following change will remove duplicated code and simplify.

    [2 lines not shown]
DeltaFile
+86-0llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+41-40llvm/lib/Target/AArch64/AArch64InstrFormats.td
+22-3llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+5-14llvm/lib/Target/AArch64/AArch64InstrInfo.td
+5-10llvm/lib/Target/AArch64/AArch64SystemOperands.td
+4-2llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+163-692 files not shown
+170-708 files

LLVM/project 5796aa9clang-tools-extra/docs ReleaseNotes.rst, clang-tools-extra/test/clang-tidy/checkers/bugprone branch-clone-inline-asm.cpp

[clang][AST] Fix StmtProfile handling of GCCAsmStmt asm strings and clobbers (#201481)

`VisitGCCAsmStmt` did not profile asm strings and clobbers because they
are not child statements.
As a result, different inline asm statements could produce the same
profile.
This fixes a false positive in `bugprone-branch-clone` where branches
containing inline asm were incorrectly reported as identical.

I used AI assistance when writing the test code, but I personally
reviewed it. 🤖

Fixes https://github.com/llvm/llvm-project/issues/198616
DeltaFile
+67-0clang/test/Modules/asm-stmt-odr.cppm
+43-0clang-tools-extra/test/clang-tidy/checkers/bugprone/branch-clone-inline-asm.cpp
+5-0clang-tools-extra/docs/ReleaseNotes.rst
+2-2clang/lib/AST/StmtProfile.cpp
+1-0clang/docs/ReleaseNotes.rst
+118-25 files

LLVM/project 5f3e70cbolt/lib/Rewrite RewriteInstance.cpp, bolt/test/AArch64 instrument-no-fini.s

[BOLT] Instrument static PIEs through entry point (#204475)

Static PIEs contain DT_INIT and DT_FINI. However, statically linked libc
does not read the dynamic entries, so patching those entries has no
effect. Check DT_FLAGS_1 to detect input static PIEs and rely on entry
point patching accordingly.

Fixes #201371.
DeltaFile
+34-0bolt/test/X86/instrument-static-pie.s
+1-15bolt/test/runtime/X86/instrument-wrong-target.s
+10-2bolt/lib/Rewrite/RewriteInstance.cpp
+5-3bolt/test/AArch64/instrument-no-fini.s
+5-3bolt/test/X86/instrument-no-fini.s
+55-235 files

LLVM/project adfdb40llvm/test/CodeGen/X86 atomic-load-store.ll

[X86] Add aligned atomic vector load tests wider than 128 bits (NFC)

These >128-bit loads are expanded to __atomic_load libcalls regardless
of alignment, since x86 caps atomic ops at 128 bits.
DeltaFile
+360-0llvm/test/CodeGen/X86/atomic-load-store.ll
+360-01 files

LLVM/project 7f7adfcllvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp, llvm/lib/Target/AArch64/MCTargetDesc AArch64InstPrinter.cpp AArch64InstPrinter.h

[AArch64][llvm] Deduplicate hint alias parsing code (NFC)

The code which handles instructions that are aliased in the `HINT`
encoding space is very similar and repetitive.

Move common code into templated functions, so that it's consistent and
simpler, whilst still remaining readable.

This also means any future instructions added in the `HINT` space will
be simpler to implement. Net removal of ~53 lines of code.
DeltaFile
+90-142llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+23-31llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+7-0llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
+120-1733 files

LLVM/project 53dabaeclang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation TransformationRegistry.h Transformation.h, clang/lib/ScalableStaticAnalysisFramework/SourceTransformation TransformationRegistry.cpp

[clang][ssaf] Add source-transformation library scaffolding (#204214)

Introduces the abstract base classes, registries, and force-linker
anchor for the SSAF source-transformation library.

A `Transformation` is an `ASTConsumer` that consumes a previously
computed `WPASuite` and emits source edits and findings through two
sinks: `SourceEditEmitter` (accumulates `clang::tooling::Replacement`s)
and `TransformationReportEmitter` (accumulates `(ruleId, level, range,
message)` tuples). The accumulated state is then handed to a
`SourceEditFormat` and a `TransformationReportFormat` for serialization.

Three `llvm::Registry`-backed registries — keyed by transformation name
and by file extension respectively — let transformations and formats be
linked in statically (with a force-linker anchor) or loaded dynamically
as a clang plugin. Each registry exposes the standard `is*Registered` /
`make*` / `printAvailable*` helpers used elsewhere in SSAF.

No transformation or format ships yet; this commit only adds the

    [4 lines not shown]
DeltaFile
+81-0clang/unittests/ScalableStaticAnalysisFramework/SourceTransformation/EmitterTest.cpp
+78-0clang/unittests/ScalableStaticAnalysisFramework/SourceTransformation/RegistryTest.cpp
+66-0clang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation/TransformationRegistry.h
+44-0clang/lib/ScalableStaticAnalysisFramework/SourceTransformation/TransformationRegistry.cpp
+38-0clang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation/Transformation.h
+33-0clang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation/TransformationReportEmitter.h
+340-010 files not shown
+393-016 files

LLVM/project d9d5446lldb/packages/Python/lldbsuite/test dotest.py

[lldb] Only run libc++ tests when the architecture matches (#204267)

It does not make sense to run the libc++ tests when the libc++ dylib has
an architecture that does not match the test binary.

I ran into this when running the test suite with arm64e test binaries
and the locally-built libc++ is built arm64.

---------

Co-authored-by: Dave Lee <davelee.com at gmail.com>
DeltaFile
+16-0lldb/packages/Python/lldbsuite/test/dotest.py
+16-01 files

LLVM/project bf5f523mlir/lib/Target/Cpp TranslateToCpp.cpp, mlir/test/Target/Cpp class.mlir

[mlir][emitc] Set operator precedence for `GetFieldOp` (#203416)

This sets the precedence for the `GetFieldOp`, preventing an unsupported
operation error. The precedence is set to 18, the same as `GetGlobalOp`,
because `GetFieldOp` behaves the same way.
DeltaFile
+23-0mlir/test/Target/Cpp/class.mlir
+1-0mlir/lib/Target/Cpp/TranslateToCpp.cpp
+24-02 files

LLVM/project ec6b043llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp, llvm/lib/Target/AArch64/MCTargetDesc AArch64InstPrinter.cpp AArch64InstPrinter.h

[AArch64][llvm] Deduplicate hint alias parsing code (NFC)

The code which handles instructions that are aliased in the `HINT`
encoding space is very similar and repetitive.

Move common code into templated functions, so that it's consistent and
simpler, whilst still remaining readable.

This also means any future instructions added in the `HINT` space will
be simpler to implement. Net removal of ~53 lines of code.
DeltaFile
+86-142llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+27-31llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+7-0llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
+120-1733 files

LLVM/project 7e3a85ellvm/lib/Target/NVPTX NVPTXISelLowering.h, llvm/test/CodeGen/NVPTX insert-vector-elt-bitcast-legalize.ll

Revert "[NVPTX] Fix illegal combineInsertEltToShuffle pattern (#198259)"

This reverts commit d226dcc019d6a83cba79951ec2a8a08c53a57858.
DeltaFile
+0-24llvm/test/CodeGen/NVPTX/insert-vector-elt-bitcast-legalize.ll
+0-4llvm/lib/Target/NVPTX/NVPTXISelLowering.h
+0-282 files

LLVM/project 13ee12dclang/lib/Analysis/LifetimeSafety FactsGenerator.cpp, clang/lib/Sema SemaLifetimeSafety.h AnalysisBasedWarnings.cpp

Revert "[LifetimeSafety] Support C Language in LifetimeSafety" (#204481)

Reverts llvm/llvm-project#203270 because of changes to .gitignore
DeltaFile
+0-181clang/test/Sema/LifetimeSafety/safety-c.c
+0-28clang/test/Sema/attr-lifetime-capture-by.c
+1-23clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
+0-21clang/test/Sema/attr-lifetimebound.c
+0-19clang/lib/Sema/SemaLifetimeSafety.h
+6-3clang/lib/Sema/AnalysisBasedWarnings.cpp
+7-2755 files not shown
+11-29711 files