LLVM/project 0d444d9llvm/docs AMDGPUUsage.rst, llvm/include/llvm/TargetParser AMDGPUTargetParser.def

[AMDGPU] Add SRAMECC to feature list for gfx12-5-generic

Change-Id: Ib08bed407fde6daaa8ee6e48a3af2992324ab095
DeltaFile
+16-0llvm/test/CodeGen/AMDGPU/elf-header-flags-sramecc.ll
+3-3llvm/docs/AMDGPUUsage.rst
+1-1llvm/include/llvm/TargetParser/AMDGPUTargetParser.def
+2-0llvm/test/CodeGen/AMDGPU/sramecc-subtarget-feature-any.ll
+22-44 files

LLVM/project 3919897clang/lib/Driver/ToolChains SYCL.cpp, clang/test/Driver sycl-device-lib-spirv64.cpp sycl-windows.cpp

Revert "[Driver][SYCL] Add compile-time device library linking for SPIR-V targets" (#212550)

Reverts llvm/llvm-project#196656
The CI does not yet build compiler-rt with SPIR-V support, so
libclang_rt.builtins.bc is absent on that bot. This change made the
missing file a hard error, breaking all libsycl functional tests that
compile with -fsycl.

Re-landing after CI is updated to build compiler-rt for SPIR-V.
DeltaFile
+0-32compiler-rt/lib/builtins/CMakeLists.txt
+0-30clang/lib/Driver/ToolChains/SYCL.cpp
+12-18clang/test/Driver/sycl-offload-jit.cpp
+15-15clang/test/Driver/sycl.cpp
+0-28clang/test/Driver/sycl-device-lib-spirv64.cpp
+14-14clang/test/Driver/sycl-windows.cpp
+41-1378 files not shown
+54-16614 files

LLVM/project 9d4eb0allvm/docs LangRef.md, llvm/lib/IR AutoUpgrade.cpp

PowerPC: Rename "float-abi" module flag to "long-double-type" (#210817)

PPC was emitting a "float-abi" module flag for indicating the type of
long double. The "float ABI" naming is already widely taken by soft vs. 
hard float controls (e.g., the clang flag is called -mfloat-abi), so this 
shouldn't have  taken it. This should also not be PPC specific; x86 has 
the same problem. Rename  the flag to the more specific 
long-double-type,  and  add appropriate verification and documentation 
(which was also missing).  Also  changes the value names to match the IR 
type names.

Co-authored-by: Claude (Claude-Opus-4.8) <noreply at anthropic.com>
DeltaFile
+45-0llvm/test/Bitcode/upgrade-ppc-float-abi.ll
+28-11llvm/test/CodeGen/PowerPC/gnu-attribute.ll
+37-0llvm/test/Verifier/module-flags-long-double-type.ll
+31-0llvm/test/Linker/module-flags-long-double-type.ll
+30-0llvm/docs/LangRef.md
+20-0llvm/lib/IR/AutoUpgrade.cpp
+191-116 files not shown
+254-4212 files

LLVM/project 6d59a24llvm/lib/Target/AMDGPU SIFoldOperands.cpp, llvm/test/CodeGen/AMDGPU mad-mix-bf16.ll packed-fp32.ll

[AMDGPU] Generate literal32 operand for packed fp32 instructions (#212530)

Literal32 operand is supported for gfx1250+ for v_pk_*_f32
DeltaFile
+296-99llvm/test/CodeGen/AMDGPU/packed-fp32.ll
+12-0llvm/test/MC/AMDGPU/gfx1250_asm_vop3p.s
+9-0llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_vop3p.txt
+2-3llvm/test/CodeGen/AMDGPU/mad-mix-bf16.ll
+1-0llvm/lib/Target/AMDGPU/SIFoldOperands.cpp
+320-1025 files

LLVM/project 0db9525clang/test/ClangScanDeps logging-two-threads.c

[clang][ClangScanDeps] Relax logging-two-threads for duplicate module validation (#210587)

`ClangScanDeps/logging-two-threads.c` is flaky. It asserts each module's
timestamp is written exactly once, but under
`-fmodules-validate-once-per-build-session` two workers scanning
different TUs can both notice the shared module is unvalidated this
session and each validate and record it before the other's write lands,
so its timestamp is written once or twice depending on the interleaving.

The double write is harmless: the timestamp field is atomic and both
workers store the same session time. Only the exact-count assertion was
wrong.

Relax the test to the real invariant: the shared module A is written
once or twice and the single-TU module B exactly once. Module compile
and pcm write stay exactly once (the in-memory cache builds each module
once) and the per-module event ordering is still checked by the sequence
blocks.


    [4 lines not shown]
DeltaFile
+12-4clang/test/ClangScanDeps/logging-two-threads.c
+12-41 files

LLVM/project b0960bdllvm/lib/CodeGen MachinePipeliner.cpp MachineScheduler.cpp, llvm/lib/Target/AMDGPU R600Packetizer.cpp R600OptimizeVectorRegisters.cpp

[CodeGen] Stop requiring analyses that no pass reads (#212430)

Remove analysis requirements whose pass never calls getAnalysis for
them, and MachineSchedContext::MDT, which no scheduler reads. Also remove
addPreserved calls subsumed by setPreservesCFG (MachineDominatorTree and
MachineLoopInfo are CFG-only analyses) and a now-unpaired INITIALIZE_PASS_DEPENDENCY.

The PowerPC, Hexagon and R600 pipelines each drop a MachineDominatorTree
construction.

Aided by Claude Opus 5
DeltaFile
+2-12llvm/lib/CodeGen/MachineScheduler.cpp
+0-5llvm/lib/CodeGen/MachinePipeliner.cpp
+0-4llvm/lib/Target/AMDGPU/R600OptimizeVectorRegisters.cpp
+1-3llvm/lib/Target/PowerPC/PPCLowerMASSVEntries.cpp
+0-3llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp
+0-3llvm/lib/Target/AMDGPU/R600Packetizer.cpp
+3-3018 files not shown
+3-5624 files

LLVM/project ee25d3ellvm/lib/Target/SPIRV SPIRVPreLegalizer.cpp, llvm/test/CodeGen/SPIRV/legalization signed-narrow-int.ll

[SPIRV] Preserve sign-sensitive width record across G_TRUNC replacement (#211626)

**Summary**
Follow-up to #203661. When the `G_TRUNC` handler in `SPIRVPreLegalizer`
collapses source and destination to the same widened width, it calls
`MRI.replaceRegWith(DstReg, MaskedReg)` and drops the original
`G_TRUNC`. The `SignSensitiveInfo.OrigWidth` map, however, was still
keyed on `DstReg`, so `widenSignSensitiveOps` no longer found the narrow
original width and skipped the `shl/ashr` sign extension for signed
users of the truncated value.
Rekey `OrigWidth` from `DstReg` to `MaskedReg` before the
`replaceRegWith` so signed ops fed by the truncated value still receive
`G_SEXT_INREG` on the widened type.

**Test plan**
New test case is added to
`llvm/test/CodeGen/SPIRV/legalization/signed-narrow-int.ll`: `trunc i8 →
i4` feeding `icmp slt` — src and dst both widen to `i8`, exercising the
same-width `replaceRegWith` path. Checks that the widened `i8` compare
is preceded by matching `OpShiftLeftLogical / OpShiftRightArithmetic`
pairs on both operands.
DeltaFile
+25-0llvm/test/CodeGen/SPIRV/legalization/signed-narrow-int.ll
+8-0llvm/lib/Target/SPIRV/SPIRVPreLegalizer.cpp
+33-02 files

LLVM/project a4a9b68llvm/lib/Transforms/Utils SimplifyCFG.cpp, llvm/test/Transforms/SimplifyCFG UnreachableEliminate.ll

[SimplifyCFG] Handle degenerate conditional branch (#212552)

IR before entering the function:
```
define void @func(i1 %cond) {
entry:
  br i1 %cond, label %exit, label %exit

exit:                                             ; preds = %entry, %entry
  %phi = phi i1 [ false, %entry ], [ false, %entry ]
  tail call void @llvm.assume(i1 %phi)
  ret void
}
```
The original code only removes one edge. There is still an edge from
entry to exit, triggering the `Deleted edge still exists in the CFG`
assertion.

Closes https://github.com/llvm/llvm-project/issues/212542
DeltaFile
+21-12llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+17-0llvm/test/Transforms/SimplifyCFG/UnreachableEliminate.ll
+38-122 files

LLVM/project 488ba8bclang/lib/Basic/Targets AMDGPU.h, clang/lib/Driver/ToolChains CommonArgs.cpp AMDGPU.cpp

AMDGPU: Split R600 feature bitmask into separate enum from amdgcn (#212484)
DeltaFile
+17-17llvm/unittests/TargetParser/TargetParserTest.cpp
+18-12llvm/include/llvm/TargetParser/AMDGPUTargetParser.h
+6-4llvm/utils/TableGen/Basic/AMDGPUTargetDefEmitter.cpp
+3-5clang/lib/Driver/ToolChains/CommonArgs.cpp
+4-4clang/lib/Driver/ToolChains/AMDGPU.cpp
+5-3clang/lib/Basic/Targets/AMDGPU.h
+53-454 files not shown
+62-5410 files

LLVM/project d4d007bcompiler-rt/lib/asan asan_poisoning.cpp

[asan][NFC] Fix comments in asan_poisoning.cpp (#212449)

Remove duplicated wording and fix typos in comments.

Signed-off-by: Jinseok Kim <always.starving0 at gmail.com>
DeltaFile
+3-3compiler-rt/lib/asan/asan_poisoning.cpp
+3-31 files

LLVM/project 7ac6b9flldb/source/Plugins/Process/wasm ThreadWasm.h ThreadWasm.cpp

[lldb] Report the unwound PC for WebAssembly caller frames (#212326)

RegisterContextWasm delegated the PC register read to
GDBRemoteRegisterContext, which reports the live innermost PC for every
frame. Resolving a variable whose DWARF location is a location list in a
caller frame therefore chose the entry using the innermost frame's PC
instead of the caller's, so the variable read back as unavailable even
though its location covered the caller's PC.

Return the program counter the WebAssembly unwinder recorded for the
frame (from qWasmCallStack) when reading a caller frame's PC, so the
location list entry uses the correct frame.
DeltaFile
+18-5lldb/source/Plugins/Process/wasm/RegisterContextWasm.cpp
+10-0lldb/source/Plugins/Process/wasm/ThreadWasm.cpp
+4-0lldb/source/Plugins/Process/wasm/ThreadWasm.h
+32-53 files

LLVM/project 98568f6clang/lib/CIR/Dialect/Transforms CallConvLoweringPass.cpp, clang/test/CIR/Transforms/abi-lowering x86_64-struct-direct.cir x86_64-struct-indirect.cir

[CIR] Accept __int128 in x86_64 calling-convention lowering (#211142)

The x86_64 calling-convention bridge rejected every integer wider than 64
bits, so a function taking or returning `__int128` hit `errorNYI` even though
its ABI treatment is simple.

On x86_64 `__int128` is Direct and passes in a pair of integer registers,
matching an i128 argument or return in classic CodeGen. `isSupportedType` now
accepts non-bitint integers of width 128 alongside the register-sized widths.
A struct holding a single `__int128` is exactly two eightbytes, so it reaches
the aggregate path and is Direct-coerced to i128; a struct spanning more than
two eightbytes stays Indirect (byval/sret).

`_BitInt` stays rejected pending its register-pair coercion and padding
handling, including `_BitInt(128)`. Non-C intermediate widths (65..127) stay
rejected too: the scalar Direct branch would pass them through unchanged,
without the register-pair coercion they would need.
DeltaFile
+39-0clang/test/CIR/Transforms/abi-lowering/x86_64-int-nyi.cir
+29-1clang/test/CIR/Transforms/abi-lowering/x86_64-scalars.cir
+22-1clang/test/CIR/Transforms/abi-lowering/x86_64-struct-indirect.cir
+17-1clang/test/CIR/Transforms/abi-lowering/x86_64-struct-direct.cir
+11-2clang/lib/CIR/Dialect/Transforms/CallConvLoweringPass.cpp
+118-55 files

LLVM/project f27602fllvm/lib/Transforms/Utils Local.cpp, llvm/test/Transforms/SimplifyCFG switch-default-fold-weight-overflow.ll

Revert "[SimplifyCFG] Fix branch-weight overflow when folding switch case into default" (#212540)
DeltaFile
+0-45llvm/test/Transforms/SimplifyCFG/switch-default-fold-weight-overflow.ll
+2-4llvm/lib/Transforms/Utils/Local.cpp
+2-492 files

LLVM/project a0a18e4llvm/test/Transforms/LoopVectorize vplan-based-stride-mv.ll, llvm/test/Transforms/LoopVectorize/VPlan vplan-based-stride-mv.ll

[NFC][VPlan] Add initial tests for future VPlan-based stride MV (#182594)

I tried to include both the features that current
LoopAccessAnalysis-based transformation supports (e.g., trunc/sext of
stride) but also cases where the current implementation behaves poorly,
e.g., https://godbolt.org/z/h31c3zKxK; as well as some other potentially
interesting scenarios I could imagine.

The are two test files with the same content. One is for VPlan dump
change of the future transformation alone (I'll update
`-vplan-print-after` in the next PR), another is for the full vectorizer
pipeline. The latter has two `RUN:` lines:
* No multiversioning, so the next PR diff can show the transformation
itself
* Stride multiversionin performed in LAA, so that we can compare next
PR's
VPlan-based transformation vs old behavior.
DeltaFile
+4,862-0llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
+2,988-0llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
+7,850-02 files

LLVM/project db534dclibc/src/__support/GPU utils.h

[libc] Fix Global addrspace (#212531)
DeltaFile
+1-1libc/src/__support/GPU/utils.h
+1-11 files

LLVM/project 833951ellvm/test/Instrumentation/Instrumentor inline_runtime.ll

[test] Use temp directory for output (#212379)

Test was added in #208072

Some test environment run tests in a readonly directory. Writing is only
allowed in temp directory.
DeltaFile
+1-0llvm/test/Instrumentation/Instrumentor/inline_runtime.ll
+1-01 files

LLVM/project 6541814llvm/test/Transforms/LoopVectorize/ARM mve-icmpcost.ll, llvm/test/Transforms/LoopVectorize/VPlan vplan-printing.ll vplan-printing-reductions.ll

[NFC][VPlan] Print element type for vector[-end]-pointer recipes (#212332)
DeltaFile
+70-57llvm/test/Transforms/LoopVectorize/VPlan/uncountable-early-exit-vplan.ll
+28-28llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing-reductions.ll
+28-28llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing-reductions-tail-folded.ll
+22-22llvm/test/Transforms/LoopVectorize/VPlan/vplan-printing.ll
+22-22llvm/test/Transforms/LoopVectorize/ARM/mve-icmpcost.ll
+20-20llvm/test/Transforms/LoopVectorize/X86/CostModel/vpinstruction-cost.ll
+190-17738 files not shown
+355-33844 files

LLVM/project 266f2b3llvm/utils/gn/secondary/llvm/test BUILD.gn

[gn] port 65e373abbb7b (#212548)
DeltaFile
+2-0llvm/utils/gn/secondary/llvm/test/BUILD.gn
+2-01 files

LLVM/project 2db82edmlir/test CMakeLists.txt lit.site.cfg.py.in, mlir/test/Unit lit.site.cfg.py.in

[mlir] Make lit site configs relocatable (#212406)

Follow the same pattern as all the other test suites where the PATHS
option to configure_lit_site_cfg and the path() function in the lit site
config are used to make site configs relocatable.
DeltaFile
+10-9mlir/test/lit.site.cfg.py.in
+16-0mlir/test/CMakeLists.txt
+4-3mlir/test/Unit/lit.site.cfg.py.in
+30-123 files

LLVM/project b55886fllvm/test/tools/llvm-objcopy/ELF cross-arch-headers.test

[llvm-objcopy] Address review feedback for AMDGPU test in cross-arch-headers

Per reviewer feedback, use the existing non-AMDGPU input (%t.o, EM_NONE)
to test conversion to elf64-amdgpu. This properly demonstrates that
--output-format changes the machine type, consistent with all other cases
in this test file.

The output reports Arch: unknown because converting from a non-AMDGPU ELF
produces e_flags=0 (no EF_AMDGPU_MACH set); added a comment explaining
this. Flag control is a separate concern for a follow-on PR.
DeltaFile
+5-3llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+5-31 files

LLVM/project 583a958libcxx/test/benchmarks/containers/sequence sequence_container_benchmarks.h

[libc++] Reduce sequence container benchmark size ladder (#212281)

The sequence containers were registered for 32, 1024 and 8192. This
patch drops the mid-size point to get roughly a 30% speedup when running
the benchmarks.
DeltaFile
+1-1libcxx/test/benchmarks/containers/sequence/sequence_container_benchmarks.h
+1-11 files

LLVM/project 15b9ee4libcxx/test/benchmarks/containers string.bench.cpp

[libc++] Drop char8_t instantiation from string benchmarks (#212283)

The string benchmarks instantiated every benchmark for char, char8_t and
wchar_t. char8_t exercises the same code paths as char, so drop it to
get roughly a 30% speedup on this benchmark time.
DeltaFile
+0-4libcxx/test/benchmarks/containers/string.bench.cpp
+0-41 files

LLVM/project 6e90682llvm/lib/Transforms/Utils Local.cpp, llvm/test/Transforms/SimplifyCFG switch-default-fold-weight-overflow.ll

Revert "[SimplifyCFG] Fix branch-weight overflow when folding switch case int…"

This reverts commit 4674ce3fe91a0edea6cf780332891575af0884e9.
DeltaFile
+0-45llvm/test/Transforms/SimplifyCFG/switch-default-fold-weight-overflow.ll
+2-4llvm/lib/Transforms/Utils/Local.cpp
+2-492 files

LLVM/project 8ea9597libcxx/docs/ReleaseNotes 24.rst, libcxx/include bitset

[libc++] Defer removal of two escape hatches to LLVM 25 (#211553)

Rather than removing the escape hatches for trivially default
constructible allocator and bitset's const reference type in LLVM 24,
keep them around for another release since they have not been widely
deployed yet.
DeltaFile
+7-6libcxx/docs/ReleaseNotes/24.rst
+1-1libcxx/include/bitset
+1-1libcxx/include/__memory/allocator.h
+9-83 files

LLVM/project d5c3533llvm/docs ReleaseNotes.md

[lldb][Windows] Cleanup release notes (#212527)

The other release notes were meant for the 23 release.
DeltaFile
+3-12llvm/docs/ReleaseNotes.md
+3-121 files

LLVM/project ab77d2bllvm/lib/Target/SPIRV SPIRVNonSemanticDebugHandler.cpp

Fix rebase.
DeltaFile
+0-6llvm/lib/Target/SPIRV/SPIRVNonSemanticDebugHandler.cpp
+0-61 files

LLVM/project 2ddb832llvm/test/tools/llvm-objcopy/ELF binary-output-target.test

[llvm-objcopy] Add AMDGPU case to binary-output-target.test

Add test coverage for converting binary input to elf64-amdgpu format,
verifying the output has the correct format string, arch (amdgpu),
and machine type (EM_AMDGPU 0xE0). Follows the same pattern as all
other architectures in this test file.
DeltaFile
+6-0llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+6-01 files

LLVM/project 88253a4llvm/test/tools/llvm-objcopy/ELF cross-arch-headers.test

[llvm-objcopy] Fix AMDGPU arch string in test: amdgpu not amdgcn

llvm-readobj reports 'Arch: amdgpu' for EM_AMDGPU ELF files
(the generic AMDGPU ELF format used by elf64-amdgpu). The test
was incorrectly expecting 'amdgcn', which is the AMDGCN-specific
arch string used by ROCm HSA code objects.
DeltaFile
+1-1llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+1-11 files

LLVM/project c082d45llvm/test/tools/llvm-objcopy/ELF binary-output-target.test

[llvm-objcopy] Fix AMDGPU arch checks in tests

ELFObjectFile.h getArch() for EM_AMDGPU returns Triple::UnknownArch
when e_flags & EF_AMDGPU_MACH is 0 (no GPU target specified). Only
when a MACH flag in the AMDGCN range is present does it return
Triple::amdgpu.

- cross-arch-headers.test: restore EF_AMDGPU_MACH_AMDGCN_GFX900 flag
  on the input ELF so that after format conversion the output correctly
  reports Arch: amdgpu.

- binary-output-target.test: expect Arch: unknown since converting
  from raw binary input (-I binary) produces an ELF with e_flags=0
  (no MACH flags), giving UnknownArch. This is correct behavior.
DeltaFile
+1-1llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+1-11 files

LLVM/project dd0e023llvm/test/tools/llvm-objcopy/ELF cross-arch-headers.test, llvm/tools/llvm-objcopy ObjcopyOptions.cpp

[AMDGPU] Add AMDGPU support for llvm-objcopy

Co-authored-by: Aakanksha Patil <paakan at amd.com>
DeltaFile
+11-2llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+2-0llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+13-22 files