LLVM/project cdab5d7llvm/docs AMDGPUUsage.rst, llvm/lib/Target/AMDGPU AMDGPUMemoryUtils.cpp SIDefines.h

[AMDGPU] Add synthetic apertures and use them for barriers (#209748)

Define what a synthetic aperture is, and adjust the barrier AS
to use this new system. This makes the barrier AS even safer to
use as now we can use all 32 bits of it without ever risking
hitting a valid address of any kind (LDS or outside LDS).
DeltaFile
+73-90llvm/test/CodeGen/AMDGPU/addrspacecast-barrier.ll
+51-5llvm/docs/AMDGPUUsage.rst
+21-23llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+18-17llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+13-0llvm/lib/Target/AMDGPU/SIDefines.h
+9-0llvm/lib/Target/AMDGPU/AMDGPUMemoryUtils.cpp
+185-1354 files not shown
+195-14010 files

LLVM/project 59c5d5ellvm/lib/Target/X86 X86ISelLowering.h X86ISelLowering.cpp, llvm/test/CodeGen/X86 branch-on-zero.ll

[X86] Enable preferZeroCompareBranch() (#219919)

This makes CodeGenPrepare reorganize code such as:

```
%c = icmp eq i32 %x, 10
br %c, then, else
%a = add i32 %x, -10
```

into

```
%a = add i32 %x, -10
%cmp = icmp eq %a, 0
%br %cmp, then, else
```

so that the zero-compare and branch gets lowered to a JCC based on the

    [3 lines not shown]
DeltaFile
+601-0llvm/test/CodeGen/X86/branch-on-zero.ll
+2-0llvm/lib/Target/X86/X86ISelLowering.h
+2-0llvm/lib/Target/X86/X86ISelLowering.cpp
+605-03 files

LLVM/project 5bf967cllvm/lib/Target/AMDGPU SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU amdgpu-lower-exec-sync.ll amdgpu-lower-exec-sync-and-module-lds.ll

[RFC][AMDGPU] Add BARRIER address space (#209746)

Add a new BARRIER address space that is used for global variables that
are used to represent the barrier IDs in GFX12.5.

These barrier addresses just have values corresponding 1-1 to barrier
IDs. They are still implemented on top of LDS, but the offsetting
happens during an addrspacecast to generic, not whenever the barrier GV
is used.

The motivation for this is to make the relation between LDS and barrier
GVs explicit in the compiler. It does add a bit more complexity, but
that complexity was already there, just hidden by pretending barrier GVs
were actual LDS.
DeltaFile
+481-0llvm/test/CodeGen/AMDGPU/addrspacecast-barrier.ll
+85-76llvm/test/CodeGen/AMDGPU/s-barrier-signal-var-gep.ll
+72-61llvm/test/CodeGen/AMDGPU/s-barrier.ll
+59-43llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+32-32llvm/test/CodeGen/AMDGPU/amdgpu-lower-exec-sync.ll
+32-32llvm/test/CodeGen/AMDGPU/amdgpu-lower-exec-sync-and-module-lds.ll
+761-24453 files not shown
+1,289-58259 files

LLVM/project c4cd7b7llvm/include/llvm/ADT DenseMap.h, llvm/lib/Target/AMDGPU GCNHazardRecognizer.cpp

[ADT] Give DenseMapPair its own members instead of a std::pair base. NFC (#221853)

std::pair declares a copy assignment operator, so it is not trivially
copyable. destroyAll and copyFrom therefore ask about KeyT and ValueT
separately. Hold first and second directly.

Conversion to std::pair is explicit; insert also takes a bucket, and a
converting constructor keeps range insert working across pair types.

Co-authored-by: Kazu Hirata <kazu at google.com>
DeltaFile
+55-15llvm/include/llvm/ADT/DenseMap.h
+53-0llvm/unittests/ADT/DenseMapTest.cpp
+0-10llvm/utils/lldbDataFormatters.py
+5-4third-party/unittest/googletest/include/gtest/internal/custom/gtest-printers.h
+4-2llvm/lib/Target/AMDGPU/GCNHazardRecognizer.cpp
+4-1llvm/lib/Transforms/Scalar/GVNSink.cpp
+121-324 files not shown
+126-3810 files

LLVM/project 5201d62llvm/test/CodeGen/AMDGPU sgpr-spill-to-vmem-scc-clobber-reserved-exec-copy.mir

Update llvm/test/CodeGen/AMDGPU/sgpr-spill-to-vmem-scc-clobber-reserved-exec-copy.mir

Co-authored-by: Matt Arsenault <Matthew.Arsenault at amd.com>
DeltaFile
+1-1llvm/test/CodeGen/AMDGPU/sgpr-spill-to-vmem-scc-clobber-reserved-exec-copy.mir
+1-11 files

LLVM/project 5151d29clang/lib/CodeGen CGExpr.cpp, clang/test/CodeGen attr-sized-by-for-pointers.c attr-sized-by-or-null-for-pointers.c

Fix division bug where a small count expression type can't represent the
element size
DeltaFile
+160-44clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+145-29clang/test/CodeGen/attr-sized-by-for-pointers.c
+25-9clang/lib/CodeGen/CGExpr.cpp
+330-823 files

LLVM/project 30fc40ellvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.cpp, llvm/test/CodeGen/SPIRV/debug-info debug-local-variable-skip-type.ll debug-local-variable-dbg-value.ll

[SPIRV] Add support for NSDI DebugLocalVariable.
DeltaFile
+69-11llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+58-0llvm/test/CodeGen/SPIRV/debug-info/debug-local-variable.ll
+43-0llvm/test/CodeGen/SPIRV/debug-info/debug-local-variable-records-and-retained.ll
+41-0llvm/test/CodeGen/SPIRV/debug-info/debug-local-variable-dbg-value.ll
+41-0llvm/test/CodeGen/SPIRV/debug-info/debug-local-variable-retained-nodes.ll
+32-0llvm/test/CodeGen/SPIRV/debug-info/debug-local-variable-skip-type.ll
+284-111 files not shown
+305-117 files

LLVM/project bab4f38llvm/test/CodeGen/SPIRV/debug-info debug-declare-module-scope-variable.ll

Fix linter.
DeltaFile
+1-1llvm/test/CodeGen/SPIRV/debug-info/debug-declare-module-scope-variable.ll
+1-11 files

LLVM/project 1f115a0llvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.cpp, llvm/test/CodeGen/SPIRV/debug-info debug-declare.ll debug-declare-expression-xderef.ll

[SPIRV] Emit NonSemantic DebugDeclare, DebugExpression and DebugOperation.

Add support for
[DebugDeclare](https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.html#DebugDeclare),
[DebugExpression](https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.html#DebugExpression)
and
[DebugOperation](https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.html#DebugOperation).

Changes:
- Emit DebugDeclare from an indirect DBG_VALUE whose location register is
defined by OpVariable, which is what the spec requires of the Variable
operand. #dbg_declare does not survive as its own opcode in MIR, IRTranslator
lowers it to an indirect DBG_VALUE.
- Skip every other shape instead of emitting an invalid instruction: an access
chain into a field, an OpFunctionParameter for a byval argument, a constant
address, a register left without a def after dead storage was erased, a
variadic #dbg_value, an expression using an unmapped operation, and a variable
whose DebugLocalVariable was not emitted.
- Collect expressions from MIR, so DebugExpression and DebugOperation are

    [16 lines not shown]
DeltaFile
+183-9llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+98-0llvm/test/CodeGen/SPIRV/debug-info/debug-declare-line-scope.ll
+76-0llvm/test/CodeGen/SPIRV/debug-info/debug-global-variable-constant-value.ll
+76-0llvm/test/CodeGen/SPIRV/debug-info/debug-expression-out-of-range.ll
+60-0llvm/test/CodeGen/SPIRV/debug-info/debug-declare-expression-xderef.ll
+55-0llvm/test/CodeGen/SPIRV/debug-info/debug-declare.ll
+548-915 files not shown
+1,074-2121 files

LLVM/project 531a8acllvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.cpp, llvm/test/CodeGen/SPIRV/debug-info debug-scope-same-line.ll debug-scope-block.ll

Add support for NSDI DebugScope, DebugNoScope and DebugInlinedAt (#218959)

Add support for NSDI
[DebugScope](https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.html#DebugScope),
[DebugNoScope](https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.html#DebugNoScope)
and
[DebugInlinedAt](https://github.khronos.org/SPIRV-Registry/nonsemantic/NonSemantic.Shader.DebugInfo.html#DebugInlinedAt).

DebugScope/DebugNoScope are region delimiters following the same region
rule as DebugLine/DebugNoLine. The two regions are tracked separately
because a DebugScope region could span several DebugLine regions, and
either can skip emission on a cache miss at different times.

DebugInlinedAt is not an region instruction, so it is emitted at module
scope. We allow recursive traversal when building them to support
chains.

The PR also adds a test showing a limitation in the DebugLine
deduplication that is at the DILocation pointer level which may lead to
duplicate opcodes.
DeltaFile
+131-18llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+83-0llvm/test/CodeGen/SPIRV/debug-info/debug-inlined-at-recursive.ll
+68-0llvm/test/CodeGen/SPIRV/debug-info/debug-inlined-at.ll
+67-0llvm/test/CodeGen/SPIRV/debug-info/debug-scope.ll
+66-0llvm/test/CodeGen/SPIRV/debug-info/debug-scope-block.ll
+63-0llvm/test/CodeGen/SPIRV/debug-info/debug-scope-same-line.ll
+478-1816 files not shown
+726-2122 files

LLVM/project c34bd41flang/lib/Lower OpenACC.cpp PFTBuilder.cpp, flang/test/Lower/OpenACC acc-unstructured.f90

[flang][OpenACC] Don't emit unstructured-loop TODO for wrappable loops

`genOpenACCLoopFromDoConstruct` raised an NYI for any unstructured DO inside `acc kernels`. That check ran before the wrapping in `genFIR(DoConstruct)`, so a loop whose CFG is self-contained aborted lowering even though the fall-back path would have wrapped it in an `scf.execute_region`.

Skip the TODO when `isWrappableConstruct()` accepts the loop. Such a loop is not attached to a directive; it is only nested inside the kernels region.

Correspondingly, a DO loop sitting directly in an `acc kernels` body is no longer wrappable, since it is the loop the directive parallelizes and hiding its CFG would leave the kernels region with nothing to partition.
DeltaFile
+36-3flang/lib/Lower/PFTBuilder.cpp
+2-25flang/test/Lower/OpenACC/Todo/do-loops-to-acc-loops-todo.f90
+27-0flang/test/Lower/OpenACC/acc-unstructured.f90
+7-1flang/lib/Lower/OpenACC.cpp
+72-294 files

LLVM/project d0a5991llvm/include/llvm/IR Type.h DerivedTypes.h, llvm/lib/AsmParser LLParser.cpp

[IR] Remove obsolete visited sets from type queries (NFC) (#221743)

Recursive types have been rejected since 2024 (#114799), making the
visited sets in type queries unnecessary.

Improves CTMark geomean -0.08% on aarch64-O0-g. Also improves
compile-time slightly for several other targets.

https://llvm-compile-time-tracker.com/compare.php?from=97cbc1e404b980edc58bfbcabb6f1c61793b624b&to=45c1423e7e38b6950ae760fc159ecb69cafdd691&stat=instructions%3Au

Assisted-by: codex
DeltaFile
+31-55llvm/lib/IR/Type.cpp
+5-10llvm/lib/IR/Verifier.cpp
+5-10llvm/lib/AsmParser/LLParser.cpp
+4-9llvm/include/llvm/IR/DerivedTypes.h
+3-9llvm/include/llvm/IR/Type.h
+3-6llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+51-992 files not shown
+53-1108 files

LLVM/project 8c3cb9cllvm/include/llvm InitializePasses.h, llvm/include/llvm/CodeGen MachinePipeliner.h

[CodeGen][NPM] Port MachinePipeliner to NPM (#221676)

changes of note,
1. registers the pass with AMDGPUCodeGenPassBuilder::addPreRegAlloc()
2. Changes the core MachinePipeliner::run() method to return actual
"Changed" state
DeltaFile
+162-52llvm/lib/CodeGen/MachinePipeliner.cpp
+17-44llvm/include/llvm/CodeGen/MachinePipeliner.h
+3-0llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+1-1llvm/lib/CodeGen/CodeGen.cpp
+1-1llvm/include/llvm/InitializePasses.h
+1-0llvm/test/CodeGen/AMDGPU/swp-amdgpu-pipeline-loop-carried-mem.mir
+185-984 files not shown
+189-9810 files

LLVM/project cdd1900llvm/include/llvm/IR Attributes.td InstrTypes.h, llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp

[IR] Do not inherit ABI attributes from the callee (#207173)

Usually attributes that are missing on the call-site are inherited form
the callee instead. This is fine for optional optimization attributes,
but problematic for ABI-affecting attributes.

ABI attributes generally must be placed at the call-site as well,
because there is no callee to inherit from for indirect calls. Failing
to specify ABI attributes at the call-site generally indicates a bug.

The motivation for being stricter about this (apart from just being the
right thing to do) is to properly support cases where the attributes at
the call-site and the callee actually differ. Two examples I'm aware of
are:

* During cross-language LTO, it's possible to have one side use a `ptr`
argument and the other a `ptr byval(ptr)` argument. Both represent the
same ABI using different IR encodings, but you can't just inherit the
`byval` attribute from one to the other (because the byval case requires

    [22 lines not shown]
DeltaFile
+34-38llvm/include/llvm/IR/InstrTypes.h
+20-17llvm/include/llvm/IR/Attributes.td
+5-21llvm/test/CodeGen/WebAssembly/signext-zeroext-callsite.ll
+12-12llvm/test/CodeGen/VE/Scalar/va_callee.ll
+12-12llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+8-8llvm/test/CodeGen/AArch64/GlobalISel/call-translator.ll
+91-10849 files not shown
+226-23355 files

LLVM/project 7941a2cflang/lib/Lower OpenACC.cpp, flang/test/Lower/OpenACC acc-unstructured.f90

[flang][OpenACC] Don't emit unstructured-loop TODO for wrappable loops

`genOpenACCLoopFromDoConstruct` raised an NYI for any unstructured DO inside `acc kernels`. That check ran before the wrapping in `genFIR(DoConstruct)`, so a loop whose CFG is self-contained aborted lowering even though the fall-back path would have wrapped it in an `scf.execute_region`.

Skip the TODO when `isWrappableConstruct()` accepts the loop. Such a loop is not attached to a directive; it is only nested inside the kernels region.
DeltaFile
+55-0flang/test/Lower/OpenACC/acc-unstructured.f90
+0-48flang/test/Lower/OpenACC/Todo/do-loops-to-acc-loops-todo.f90
+7-1flang/lib/Lower/OpenACC.cpp
+62-493 files

LLVM/project ddf2077llvm/lib/CodeGen FinalizeISel.cpp, llvm/lib/CodeGen/GlobalISel InstructionSelect.cpp

[GlobalISel] Fix duplicate finalizeLowering calls (NFC) (#221902)

Improves CTMark geomean -0.07% on aarch64-O0-g.

https://llvm-compile-time-tracker.com/compare.php?from=97cbc1e404b980edc58bfbcabb6f1c61793b624b&to=d8b1a78ba013d5e687acc0e8bf00d3d77749f3db&stat=instructions:u

Assisted-by: codex
DeltaFile
+3-1llvm/lib/CodeGen/FinalizeISel.cpp
+0-2llvm/lib/Target/SPIRV/SPIRVISelLowering.cpp
+0-1llvm/lib/CodeGen/GlobalISel/InstructionSelect.cpp
+3-43 files

LLVM/project 590a3b8clang/lib/CIR/Dialect/Transforms HoistAllocas.cpp, clang/test/CIR/Transforms hoist-allocas.cir

[CIR] Reposition entry-block allocas ahead of control flow (#220496)

HoistAllocas returns early when an alloca was already in the entry
block, but being in the block is not the same as being ahead of the
control flow in it. The pass runs before FlattenCFG, which splits the
body at each structured control-flow op, so an alloca sitting after one
is left in a block that is no longer the entry block.

That matters because SROA only collects allocas from the entry block. An
alloca stranded behind a scope is invisible to it and never promoted, so
anything whose address it holds stays in memory.
DeltaFile
+27-0clang/test/CIR/Transforms/hoist-allocas.cir
+14-2clang/lib/CIR/Dialect/Transforms/HoistAllocas.cpp
+41-22 files

LLVM/project 7af13b3clang-tools-extra/docs/clang-tidy/checks/readability identifier-naming.rst identifier-naming.md, llvm/test/CodeGen/AArch64 vec-combine-compare-to-bitmask.ll arm64-xaluo.ll

Merge branch 'main' into users/jmmartinez/nfs_headache
DeltaFile
+5,248-0llvm/test/CodeGen/X86/active_lane_mask.ll
+4,997-0llvm/test/CodeGen/AArch64/overflow-vec.ll
+3,860-0clang-tools-extra/docs/clang-tidy/checks/readability/identifier-naming.md
+1,653-1,679llvm/test/CodeGen/AArch64/arm64-xaluo.ll
+0-3,287clang-tools-extra/docs/clang-tidy/checks/readability/identifier-naming.rst
+1,318-598llvm/test/CodeGen/AArch64/vec-combine-compare-to-bitmask.ll
+17,076-5,5641,744 files not shown
+77,463-39,6541,750 files

LLVM/project 7957fc1clang/lib/CodeGen CGExpr.cpp, clang/test/CodeGen attr-counted-by-or-null-for-pointers.c attr-sized-by-or-null-for-pointers.c

Add some asserts and fix unnecessary re-emission of member expression
access.
DeltaFile
+34-35clang/test/CodeGen/attr-sized-by-or-null-for-pointers.c
+25-26clang/test/CodeGen/attr-counted-by-or-null-for-pointers.c
+24-15clang/lib/CodeGen/CGExpr.cpp
+83-763 files

LLVM/project 1c1ea37llvm/include/llvm/Analysis MustExecute.h, llvm/lib/Analysis MustExecute.cpp

[LoopSafetyInfo] Compute block colors lazily (NFC) (#221954)

Computing the block colors is fairly expensive, but only rarely actually
needed. We can delay computation to first use.

Fixes https://github.com/llvm/llvm-project/issues/221162.
DeltaFile
+13-7llvm/lib/Analysis/MustExecute.cpp
+4-4llvm/include/llvm/Analysis/MustExecute.h
+3-2llvm/lib/Transforms/Scalar/LICM.cpp
+20-133 files

LLVM/project 3a8bd23clang/test/OffloadTools/clang-linker-wrapper linker-wrapper-image.c, llvm/lib/Frontend/Offloading OffloadWrapper.cpp

[OffloadWrapper] Use getPtrAdd() instead of getGetElementPtr() (#222014)

One case has a redundant zero-offset GEP. The other two just add
a byte offset in a convoluted way.
DeltaFile
+3-13llvm/lib/Frontend/Offloading/OffloadWrapper.cpp
+1-1llvm/test/tools/llvm-offload-wrapper/offload-wrapper.ll
+1-1clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c
+5-153 files

LLVM/project 6dc6c67libcxx CMakeLists.txt, libcxxabi CMakeLists.txt

[libcxx][libcxxabi][cmake] Deduplicate sanitizer flags function (#221757)

While experimenting with flang-rt builds I realised there were two
copies of this function.
We don't need it in flang-rt right now but I figure reducing duplication
is good anyway.
DeltaFile
+1-44libcxx/CMakeLists.txt
+1-40libcxxabi/CMakeLists.txt
+40-0runtimes/cmake/Modules/GetSanitizerFlags.cmake
+42-843 files

LLVM/project 586999bllvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes BundleVec.h

[SandboxVec][VecUtils] Introduce DeadInstrMorgue

Move dead instructions collector and erasor into VecUtils, so that
it is usable by both, BundleVec and LoadStoreVec, vectorizers. NFC
DeltaFile
+140-0llvm/unittests/Transforms/Vectorize/SandboxVectorizer/VecUtilsTest.cpp
+2-48llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BundleVec.cpp
+49-0llvm/lib/Transforms/Vectorize/SandboxVectorizer/VecUtils.cpp
+34-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+3-10llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BundleVec.h
+228-585 files

LLVM/project a1f878aclang/lib/Serialization ASTWriter.cpp, clang/test/Modules pr222002.cppm

[C++20] [Modules] Keep DeductionGuideDecl in the general lookup table (#222246)

Close https://github.com/llvm/llvm-project/issues/222002

The root cause of the problem is, the deduction guide was not in the
general lookup table. The fix is to move them into the general lookup
table. This should be fine as the DeductionGuide may not pollute the
name lookup results.
DeltaFile
+53-0clang/test/Modules/pr222002.cppm
+9-4clang/lib/Serialization/ASTWriter.cpp
+62-42 files

LLVM/project 962a202clang-tools-extra/clangd InlayHints.cpp, clang-tools-extra/clangd/unittests InlayHintTests.cpp

[clangd] Place deduced return type hints after noexcept (#219829)

Deduced return type hints for functions and lambdas could appear before
a `noexcept` specifier, even though a trailing return type belongs after
the exception specification.

Use the end of the function type's local source range when it is
available. For lambdas without a function type location, keep the end of
the lambda introducer as a fallback.

Fixes clangd/clangd#2696

Assisted-by: Codex
DeltaFile
+14-1clang-tools-extra/clangd/unittests/InlayHintTests.cpp
+4-4clang-tools-extra/clangd/InlayHints.cpp
+18-52 files

LLVM/project f4b84aallvm/lib/Transforms/Vectorize VPlan.h VPlanRecipes.cpp, llvm/test/Transforms/LoopVectorize/RISCV scatter-type-mismatch.ll

[VPlan] Consolidate VPIWithType and VPI (NFC) (#203019)

The extra ResultType has been absorbed into VPInstruction, and the
recipe classes can now be consolidated. The patch also fixes missing
flags-printing in the case of WideIVStep, and includes a test to guard
against bad changes, discovered during the review process.
DeltaFile
+184-36llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing-flags.ll
+57-97llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+9-84llvm/lib/Transforms/Vectorize/VPlan.h
+50-0llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing-intrinsic.ll
+46-0llvm/test/Transforms/LoopVectorize/RISCV/scatter-type-mismatch.ll
+20-20llvm/unittests/Transforms/Vectorize/VPlanTest.cpp
+366-2376 files not shown
+392-26312 files

LLVM/project 7bb9b13llvm/lib/Target/AMDGPU VOP3Instructions.td, llvm/test/CodeGen/AMDGPU pseudo-scalar-transcendental.mir

[AMDGPU] Rework pseudo-scalar transcendental inline constant restriction handling (#208459)

The f16 pseudo-scalar transcendental instructions do not support inline
constants on gfx12. The existing handling of this restriction is
incomplete. It involves checking the
hasNoF16PseudoScalarTransInlineConstants function in the right places.
For the SIInstrInfo::isInlineConstant function, for instance, this has
led to a situation where some overloads respect the restriction and
others do not. This approach also relies on completely disabling the
folding of constant operands. The machine code emission does still use
the inline constant encoding if it encounters a suitable operand.

Introduce a new "noinline" operand type and use it for the instruction
variant that is used on gfx12. This does also enable the use of literal
constants.
DeltaFile
+130-10llvm/test/MC/Disassembler/AMDGPU/gfx12_dasm_vop3.txt
+130-10llvm/test/MC/AMDGPU/gfx12_asm_vop3.s
+120-0llvm/test/MC/AMDGPU/gfx13_asm_vop3.s
+33-10llvm/lib/Target/AMDGPU/VOP3Instructions.td
+11-13llvm/test/CodeGen/AMDGPU/pseudo-scalar-transcendental.mir
+10-10llvm/test/MC/AMDGPU/gfx12_asm_vop3-fake16.s
+434-5311 files not shown
+460-6917 files

LLVM/project 7506b4cllvm/lib/Target/LoongArch LoongArchISelLowering.cpp, llvm/test/CodeGen/LoongArch/lsx pr222088.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+53-0llvm/test/CodeGen/LoongArch/lsx/pr222088.ll
+14-4llvm/lib/Target/LoongArch/LoongArchISelLowering.cpp
+67-42 files

LLVM/project d6ad623llvm/include/llvm/CodeGen MachinePipeliner.h, llvm/lib/CodeGen MachinePipeliner.cpp

comments
DeltaFile
+78-27llvm/lib/CodeGen/MachinePipeliner.cpp
+8-58llvm/include/llvm/CodeGen/MachinePipeliner.h
+86-852 files

LLVM/project 27e964ellvm/include/llvm/ExecutionEngine/Orc/Shared SymbolNameSpec.h

[ORC] Require symbol name kind in SymbolNameSpec constructor. (#222238)

Require clients to spell out the naming level that SymbolNameSpecs are
expressed in. (An implicit default is a footgun, and adds limited
convenience)
DeltaFile
+1-2llvm/include/llvm/ExecutionEngine/Orc/Shared/SymbolNameSpec.h
+1-21 files