[all-commits] [llvm/llvm-project] 4e2875: [LLVMABI] Classify vectors at their ABI size

Adam Smith via All-commits all-commits at lists.llvm.org
Wed Sep 30 15:19:44 PDT 2026


  Branch: refs/heads/users/adams381/llvmabi-x86-vector-abi-size
  Home:   https://github.com/llvm/llvm-project
  Commit: 4e28757f7f003432366cf9d102c97e1899da3fb7
      https://github.com/llvm/llvm-project/commit/4e28757f7f003432366cf9d102c97e1899da3fb7
  Author: Adam Smith <adams at nvidia.com>
  Date:   2026-09-30 (Wed, 30 Sep 2026)

  Changed paths:
    A clang/test/CodeGen/X86/x86_64-vector-abi-size.c
    M llvm/include/llvm/ABI/Types.h
    M llvm/lib/ABI/TargetInfo.cpp
    M llvm/lib/ABI/Targets/X86.cpp
    M llvm/unittests/ABI/AMDGPUTargetInfoTest.cpp
    M llvm/unittests/ABI/TargetInfoTest.cpp
    M llvm/unittests/ABI/TypesTest.cpp
    M llvm/unittests/ABI/X86TargetInfoTest.cpp

  Log Message:
  -----------
  [LLVMABI] Classify vectors at their ABI size

The x86-64 classifier compared a vector's payload width against Clang type
sizes, so vectors with padding were misclassified. For example,
`struct { long double __attribute__((vector_size(16))) v; }` coerced to
`<2 x double>` instead of `<1 x x86_fp80>`.

getABISizeInBits() now counts an x87 element at its allocation size, and the
classifier uses it wherever Clang uses getTypeSize() for a vector. This also
applies to vectors with a non-power-of-two element count, bool vectors, and
vectors of sub-byte _BitInt. isIllegalVectorType now sends only __int128
vectors to memory, not _BitInt(128) ones, as Clang does. isSingleElementStruct
is shared, so AMDGPU picks up the fix too.

Assisted-by: Claude Code / Claude Opus 5.5



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list