LLVM/project d62a997llvm/lib/Target/AMDGPU AMDGPURegBankLegalizeRules.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.fdot2.bf16.bf16.ll

[AMDGPU][GISel] Add RegBankLegalize rules for llvm.amdgcn.fdot2.bf16.bf16
DeltaFile
+76-3llvm/test/CodeGen/AMDGPU/llvm.amdgcn.fdot2.bf16.bf16.ll
+1-1llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+77-42 files

LLVM/project 7552542llvm/test/tools/llvm-objcopy/ELF binary-output-target.test cross-arch-headers.test

[llvm-objcopy] Address reviewer feedback on AMDGPU test cleanups

- Remove unused -DMACHINE yaml2obj template variable in cross-arch-headers.test,
  hardcode Machine: EM_NONE directly in the YAML instead
- Remove unused Flags: [[FLAGS=<none>]] template variable in cross-arch-headers.test
- Add comment in binary-output-target.test explaining that Arch: unknown is
  intentional when converting from binary (e_flags=0, no EF_AMDGPU_MACH set)
DeltaFile
+2-3llvm/test/tools/llvm-objcopy/ELF/cross-arch-headers.test
+2-0llvm/test/tools/llvm-objcopy/ELF/binary-output-target.test
+4-32 files

LLVM/project 958a9bbclang/include/clang/Basic arm_neon.td arm_immcheck_incl.td, clang/lib/Sema SemaARM.cpp

[Clang][ARM] Fix immediate range for NEON widening left-shifts (#212459)

The ACLE specifies the C intrinsic 'vshll_n to have a valid immediate
range size of [0..eltsize] but it has a range of [0..((eltsize*2) - 1)].
Update the range check to match the specified behavior

---------

Co-authored-by: Lukacma <Marian.Lukac at arm.com>
DeltaFile
+217-18llvm/test/CodeGen/AArch64/neon-shift-left-long.ll
+22-21clang/include/clang/Basic/arm_immcheck_incl.td
+25-18clang/test/Sema/aarch64-neon-immediate-ranges/vector-shift-left.c
+5-6clang/include/clang/Basic/arm_neon.td
+4-0clang/lib/Sema/SemaARM.cpp
+273-635 files

LLVM/project d4ca2e5llvm/lib/Target/SPIRV SPIRVPostLegalizer.cpp, llvm/test/CodeGen/SPIRV/hlsl-intrinsics atan2_mat.ll

[SPIR-V] Preserve float types through wide float shuffles and atan2 legalization (#213785)

fixes https://github.com/llvm/llvm-project/issues/213783

Propagate result types through G_SHUFFLE_VECTOR and G_FATAN2 during
post-legalizer type deduction. This prevents wide float vectors from
producing integer-typed OpCompositeExtract instructions.

Add generic float shuffle and wide atan2 regression coverage.

assisted by Copilot (GPT-5.6-Sol)
DeltaFile
+17-0llvm/test/CodeGen/SPIRV/legalization/vector-legalization-shader.ll
+9-5llvm/test/CodeGen/SPIRV/hlsl-intrinsics/atan2_mat.ll
+2-0llvm/lib/Target/SPIRV/SPIRVPostLegalizer.cpp
+28-53 files

LLVM/project 3d1a37fllvm/lib/Target/X86/MCTargetDesc X86InstComments.cpp, llvm/test/MC/X86 symbolic-fpclass-imm.s

[X86] Don't assume the FPCLASS category mask is a literal (#213171)

`llvm-mc` asserts on a FPCLASS category mask given as a symbol:

```asm
vfpclassps $f0, %zmm1, %k1
```
```
Assertion failed: isImm() && "This is not an immediate", MCInst.h:85
```

`printFPCLASSComments` reads the last operand with `getImm()` without
checking it is one. The value is only known at link time, so there is no
category to describe; return early and print no comment.

Note this is a comment printer, so encoding is unaffected.
`--filetype=obj` already succeeds today and emits a placeholder
immediate plus an `R_X86_64_8` relocation, which is correct. The issues
describe this as producing a wrong encoding in release builds, which I

    [7 lines not shown]
DeltaFile
+19-0llvm/test/MC/X86/symbolic-fpclass-imm.s
+5-0llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp
+24-02 files

LLVM/project e5cd456flang/include/flang/Optimizer/Transforms Passes.td, flang/test/Transforms vscale-attr.fir

[flang] Add LLVM dialect dependency to VScaleAttr (#213931)

`VScaleAttr` creates an LLVM `VScaleRangeAttr`, but did not declare the
LLVM dialect as a pass dependency. This aborts when the input does not
otherwise load LLVM.

Declare the dependency and remove the unused FIR-typed argument from the
existing test. Parsing `!fir.ref` loads `FIROpsDialect`, which loads
`LLVMDialect` as a dependency and previously masked the missing pass
dependency.

Signed-off-by: Keshav Vinayak Jha <keshavvinayakjha at gmail.com>
DeltaFile
+1-1flang/test/Transforms/vscale-attr.fir
+1-0flang/include/flang/Optimizer/Transforms/Passes.td
+2-12 files

LLVM/project c1e828fllvm/test/Analysis/CostModel/AArch64 ctpop.ll ctlz.ll

[AArch64] Update cttz and ctlz cost model test. NFC (#213999)

This updates the tests to match ctpop, how we test other operations.
Some extra
type coverage and cssc is added.
DeltaFile
+66-200llvm/test/Analysis/CostModel/AArch64/cttz.ll
+61-196llvm/test/Analysis/CostModel/AArch64/ctlz.ll
+3-3llvm/test/Analysis/CostModel/AArch64/ctpop.ll
+130-3993 files

LLVM/project 3c0badfllvm/test/CodeGen/AMDGPU buffer-fat-pointer-atomicrmw-fmin.ll buffer-fat-pointer-atomicrmw-fadd.ll

Rebase

Created using spr 1.3.7
DeltaFile
+3,809-3,814llvm/test/CodeGen/AMDGPU/flat-atomicrmw-fmin.ll
+3,809-3,814llvm/test/CodeGen/AMDGPU/flat-atomicrmw-fmax.ll
+3,465-3,511llvm/test/CodeGen/AMDGPU/global-atomicrmw-fmin.ll
+3,465-3,511llvm/test/CodeGen/AMDGPU/global-atomicrmw-fmax.ll
+3,299-3,240llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fadd.ll
+2,594-2,524llvm/test/CodeGen/AMDGPU/buffer-fat-pointer-atomicrmw-fmin.ll
+20,441-20,4142,485 files not shown
+154,056-90,0332,491 files

LLVM/project 0160d12llvm/test/Transforms/SLPVectorizer/RISCV vec3-base.ll

[SLP][NFC]Remove undef mentions from test, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/213992
DeltaFile
+2-2llvm/test/Transforms/SLPVectorizer/RISCV/vec3-base.ll
+2-21 files

LLVM/project 32f3ae6clang/test/ClangScanDeps canonicalize-macros-multiarch.c

[Clang] Restrict ClangScanDeps darwin-specific test not to run in cross-compile (#213884)

The test added in 316a29603228c5d5000e0ddf8dfba2a494ac7ee9 fails when
run on MacOS but targeting Linux as a cross compiler.
DeltaFile
+1-1clang/test/ClangScanDeps/canonicalize-macros-multiarch.c
+1-11 files

LLVM/project 8cd7452mlir/lib/Target/SPIRV/Deserialization Deserializer.cpp, mlir/lib/Target/SPIRV/Serialization Serializer.cpp

[mlir][SPIR-V] Handle Volatile decoration in (de)serialization (#212951)
DeltaFile
+7-0mlir/test/Target/SPIRV/decorations.mlir
+1-0mlir/lib/Target/SPIRV/Serialization/Serializer.cpp
+1-0mlir/lib/Target/SPIRV/Deserialization/Deserializer.cpp
+9-03 files

LLVM/project 1c00b2cllvm/lib/Transforms/Vectorize VPlanRecipes.cpp

Restore type checks in computeScalarTypeForInstruction()
DeltaFile
+7-0llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp
+7-01 files

LLVM/project 146316bmlir/include/mlir/Dialect/SPIRV/IR SPIRVStructureOps.td, mlir/lib/Dialect/SPIRV/IR SPIRVOps.cpp

[mlir][SPIR-V] Verify ExecutionMode operand count and kind (#212828)

Add a verifier for spirv.ExecutionMode enforcing the correct number of
literal operands per execution mode and rejecting `<id>`-only modes and
share the operand schema with spirv.ExecutionModeId
DeltaFile
+141-0mlir/test/Dialect/SPIRV/IR/structure-ops.mlir
+78-10mlir/lib/Dialect/SPIRV/IR/SPIRVOps.cpp
+1-1mlir/include/mlir/Dialect/SPIRV/IR/SPIRVStructureOps.td
+220-113 files

LLVM/project d21342fllvm/lib/Target/AMDGPU SIInstrInfo.cpp, llvm/test/CodeGen/AMDGPU swp-amdgpu-pipeline-regpressure-retry.mir

[AMDGPU] Limit register pressure of pipelined loops

Opt AMDGPU into the generic MachinePipeliner register-pressure detector via
shouldLimitRegPressure(), and supply an occupancy-aware verdict in
isScheduleRegPressureTooHigh(): reject a schedule whose SGPR or VGPR/AGPR
pressure would drop the kernel below its target occupancy, or exceed a
register class's addressability cap. On gfx90a+ VGPRs and AGPRs share one
register file, so their combined footprint is bounded together. These match
the limits GCNSchedStrategy enforces.
DeltaFile
+181-0llvm/test/CodeGen/AMDGPU/swp-amdgpu-pipeline-regpressure-retry.mir
+46-1llvm/lib/Target/AMDGPU/SIInstrInfo.cpp
+227-12 files

LLVM/project 4a70ebflibcxx/include __locale, libcxx/include/__locale_dir codecvt.h

Rebase, update test check

Created using spr 1.3.7
DeltaFile
+4,993-0llvm/test/CodeGen/RISCV/clmul.ll
+6-1,418libcxx/include/__locale
+320-318llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ffloor.mir
+313-311llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcmp.mir
+576-0libcxx/include/__locale_dir/codecvt.h
+282-280llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fsqrt.mir
+6,490-2,327136 files not shown
+9,925-3,325142 files

LLVM/project 7980fa0libcxx/include math.h

[libc++] Tweak comments for workaround about `fpclassify` overloads (#212388)

Explaining why we have `_LIBCPP_PREFERRED_OVERLOAD` and template
versions.
DeltaFile
+6-2libcxx/include/math.h
+6-21 files

LLVM/project c358e8dllvm/lib/Target/AArch64 AArch64FrameLowering.cpp, llvm/test/CodeGen/AArch64 swift-async-context-seh.ll win-sve.ll

[AArch64][Windows] Fix swift async context slot placement (#212922)

Swift async functions can miscompile on Windows ARM64 at `-O2`, when
there's enough register pressure that a local gets scavenged into the
callee-save area: the local ends up sharing an address with the saved
caller x29, so the epilogue restores a value the function has already
overwritten. swiftlang/swift#90920 has a reduced repro.

`assignCalleeSavedSpillSlots` creates the swift async context object
before the callee-save loop instead of inside it next to the FP slot.
MachineFrameInfo ends up with it above the frame record while the
prologue stores it below at FP-8, and the 8 byte disagreement leaves a
hole in the middle of the callee-save area. PEI's scavenger hands that
hole to the local. Only reproduces at -O2 and up since scavenging is
gated on the opt level.

```
        sub     sp, sp, #112
        str     x19, [sp, #16]                  // 8-byte Spill

    [22 lines not shown]
DeltaFile
+38-0llvm/test/CodeGen/AArch64/swift-async-context-frame-record-win.ll
+10-7llvm/test/CodeGen/AArch64/swift-async-context-slot-offset-win.ll
+6-8llvm/test/CodeGen/AArch64/swift-async-win.ll
+1-8llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
+0-3llvm/test/CodeGen/AArch64/win-sve.ll
+1-1llvm/test/CodeGen/AArch64/swift-async-context-seh.ll
+56-276 files

LLVM/project 3376b0dllvm/test/Transforms/SLPVectorizer/X86 reused-mask-with-poison-index.ll

[SLP][NFC]Update test by removing attrs and replacing undefs, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/213985
DeltaFile
+4-4llvm/test/Transforms/SLPVectorizer/X86/reused-mask-with-poison-index.ll
+4-41 files

LLVM/project 8d8efbfllvm/lib/Transforms/Vectorize VPlanAnalysis.cpp, llvm/test/Transforms/LoopVectorize revec-reg-usage.ll

[LV][REVEC] Correctly compute register usage

For REVEC, the initial types might already be vectors, so make sure the
right register class is picked.
DeltaFile
+39-0llvm/test/Transforms/LoopVectorize/revec-reg-usage.ll
+17-12llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp
+56-122 files

LLVM/project 499ee50offload/test/jit save_image.c

[offload][lit] Fix XPASS on save_image.c on intelgpu (#213984)

XPASSing, see [here](https://github.com/llvm/llvm-project/pull/212384).

Signed-off-by: Nick Sarnie <nick.sarnie at intel.com>
DeltaFile
+0-1offload/test/jit/save_image.c
+0-11 files

LLVM/project ca6883cllvm/test/Transforms/SLPVectorizer/X86 reused-mask-with-poison-index.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+4-4llvm/test/Transforms/SLPVectorizer/X86/reused-mask-with-poison-index.ll
+4-41 files

LLVM/project 0a7a709llvm/lib/Transforms/Vectorize LoopVectorizationPlanner.cpp, llvm/test/Transforms/LoopVectorize revec-maximize-bandwidth.ll

Revert REVEC-specific useMaxBandwidth() change and add tests
DeltaFile
+50-0llvm/test/Transforms/LoopVectorize/AArch64/revec-maximize-bandwidth.ll
+45-0llvm/test/Transforms/LoopVectorize/revec-maximize-bandwidth.ll
+1-3llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.cpp
+96-33 files

LLVM/project 9877464llvm/lib/IR Verifier.cpp

[Verifier] Clean up load atomic elementwise mem access sizes check (NFC) (#213864)

I refactored the `load atomic elementwise` check to have the same
cleaner pattern as `atomicrmw elementwise` and remove the `ScalarTy`
intermediate.

The previous code had this segment:

```
      if (VecTy) {
        checkAtomicMemAccessSize(ScalarTy, &LI);
        ScalarTy = VecTy->getElementType();
      }
```

Which is confusing because it's checking the atomic access size on the
whole vector and then assigning `ScalarTy` to the element type so that
the second check does the check on the element type. It's cleaner to
reverse this and have the first check operate on the element type so
that the second check always checks the entire type.
DeltaFile
+6-9llvm/lib/IR/Verifier.cpp
+6-91 files

LLVM/project c703445libcxx/include __locale, libcxx/include/__locale_dir utf8_conversions.h ctype_base.h

[libc++] Granularize <__locale> into __locale_dir (#213667)

The <__locale> header was a collection of distinct utilities. This patch
splits it up into granular headers under __locale_dir/. This patch
however does not use the granular headers from users of <__locale>: this
will be done in a separate patch.

Assisted by Claude
DeltaFile
+6-1,418libcxx/include/__locale
+576-0libcxx/include/__locale_dir/codecvt.h
+316-0libcxx/include/__locale_dir/ctype.h
+198-0libcxx/include/__locale_dir/locale.h
+189-0libcxx/include/__locale_dir/ctype_base.h
+177-0libcxx/include/__locale_dir/utf8_conversions.h
+1,462-1,4183 files not shown
+1,628-1,4199 files

LLVM/project de63e4fllvm/lib/IR Verifier.cpp, llvm/test/Assembler invalid-atomicrmw-elementwise.ll

[Verifier] Reject elementwise atomicrmw with sub-byte element type (#213753)

In https://github.com/llvm/llvm-project/pull/208510/ I accidentally
introduced a bug where I allowed sub-byte element types with atomicrmw
elementwise (i.e. `<8 x i1>`).

The LangRef states:

```
The access type
must then be a fixed vector type whose total bit width is a power of two and
whose element type is supported by the corresponding scalar atomic instruction.
```

The second part of this sentence rejects sub-byte element types.

The fix is that elementwise atomics need to additionally call
`checkAtomicMemAccessSize` on the vector element type (they already call
it on the whole vector).
DeltaFile
+16-0llvm/test/Assembler/invalid-atomicrmw-elementwise.ll
+2-0llvm/lib/IR/Verifier.cpp
+18-02 files

LLVM/project 69f0090utils/bazel/llvm-project-overlay/libc BUILD.bazel

[Bazel] Fixes 962d16f (#213956)

This fixes 962d16fd97793d22c42227e7fab397f62475c18b (#211365).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=962d16fd97793d22c42227e7fab397f62475c18b

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

LLVM/project b1b973allvm/test/CodeGen/AMDGPU occupancy-levels.ll

[AMDGPU][NFC] Add occupancy tests for GFX6/7/8 (#213914)
DeltaFile
+123-0llvm/test/CodeGen/AMDGPU/occupancy-levels.ll
+123-01 files

LLVM/project c5baf4ellvm/lib/Target/AMDGPU AMDGPULegalizerInfo.cpp, llvm/test/CodeGen/AMDGPU/GlobalISel legalize-fneg.mir legalize-fabs.mir

AMDGPU/GlobalISel: Switch more FP opcodes to extended LLTs (part 5) (#213766)

Migrate G_FNEG, G_FABS, G_FSQRT, G_FFLOOR, G_FLDEXP, G_STRICT_FLDEXP,
G_FCMP, and G_IS_FPCLASS to extended LLTs.

Remove redundant scalar clamps that request unsupported f128-to-f64
narrowing.

Update the relevant MIR tests.
DeltaFile
+320-318llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-ffloor.mir
+313-311llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fcmp.mir
+282-280llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fsqrt.mir
+202-230llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fabs.mir
+202-209llvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fneg.mir
+58-75llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+1,377-1,4231 files not shown
+1,400-1,4427 files

LLVM/project f62556bllvm/docs LangRef.md, llvm/lib/CodeGen/AsmPrinter AsmPrinter.cpp

[dyndbg][AsmPrinter] Add tail padding attributes (#194852)

"tail-pad-to-size"="n": Pad functions up to at least 'n' bytes.
"tail-pad-value"="n": Pad using the value 'n' (default 0).

This patch is to support dynamic debugging, RFC:
https://discourse.llvm.org/t/90113

In order to transfer control from an optimized to an unoptimized function a
debugger may patch the optimized version with a jump to the unoptimized
one.

This patch adds a mechanism to ensure there's enough padding between functions
to avoid patches overwriting unrelated code. It adds padding to the end of
functions smaller then 'n' bytes.

The `.fill` directive expression was discussed here:
https://discourse.llvm.org/t/89658

See the RFC and pull request for discussions of alternative approaches.
DeltaFile
+80-0llvm/test/CodeGen/X86/attr-tail-pad.ll
+23-0llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+17-0llvm/test/Verifier/invalid-tail-pad-attr.ll
+9-0llvm/docs/LangRef.md
+2-0llvm/lib/IR/Verifier.cpp
+131-05 files

LLVM/project c287698llvm/lib/Target/AArch64 AArch64TargetTransformInfo.h, llvm/lib/Transforms/Vectorize LoopVectorizationPlanner.cpp LoopVectorizationLegality.cpp

Stop using isElementTypeLegalForScalableVector as type check for REVEC
DeltaFile
+5-10llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+0-9llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
+2-7llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.cpp
+7-263 files