[all-commits] [llvm/llvm-project] 05eef6: IR/Verifier: Allow vector type in atomic load and ...

jofrn via All-commits all-commits at lists.llvm.org
Sun Jun 1 22:40:38 PDT 2025


  Branch: refs/heads/users/jofrn/gt/atomicvec-stack4
  Home:   https://github.com/llvm/llvm-project
  Commit: 05eef63446c0dda7eb61c2ba57de41a877e42d0c
      https://github.com/llvm/llvm-project/commit/05eef63446c0dda7eb61c2ba57de41a877e42d0c
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/docs/ReleaseNotes.md
    M llvm/lib/IR/Verifier.cpp
    M llvm/test/Assembler/atomic.ll
    M llvm/test/Verifier/atomics.ll

  Log Message:
  -----------
  IR/Verifier: Allow vector type in atomic load and store

Vector types on atomics are assumed to be invalid by the verifier. However,
this type can be valid if it is lowered by codegen.

commit-id:72529270


  Commit: d711f83da19661bbf8fae2ef0ad64bd1bb834e44
      https://github.com/llvm/llvm-project/commit/d711f83da19661bbf8fae2ef0ad64bd1bb834e44
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
    M llvm/test/CodeGen/X86/atomic-load-store.ll

  Log Message:
  -----------
  [SelectionDAG] Legalize <1 x T> vector types for atomic load

`load atomic <1 x T>` is not valid. This change legalizes
vector types of atomic load via scalarization in SelectionDAG
so that it can, for example, translate from `v1i32` to `i32`.

commit-id:5c36cc8c


  Commit: c6adf851f514295e15f7cca1cc63fb75a84ae32d
      https://github.com/llvm/llvm-project/commit/c6adf851f514295e15f7cca1cc63fb75a84ae32d
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/test/CodeGen/X86/atomic-load-store.ll

  Log Message:
  -----------
  [X86] Manage atomic load of fp -> int promotion in DAG

When lowering atomic <1 x T> vector types with floats, selection can fail since
this pattern is unsupported. To support this, floats can be casted to
an integer type of the same size.

commit-id:f9d761c5


  Commit: 3364982a3c7de07b8b2e42cf9463acb71562cbd1
      https://github.com/llvm/llvm-project/commit/3364982a3c7de07b8b2e42cf9463acb71562cbd1
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/test/CodeGen/X86/atomic-load-store.ll

  Log Message:
  -----------
  [X86] Add atomic vector tests for unaligned >1 sizes.

Unaligned atomic vectors with size >1 are lowered to calls.
Adding their tests separately here.

commit-id:a06a5cc6


  Commit: 38e98d8ba2b8bfff0a9019683c4386b1e0637bf8
      https://github.com/llvm/llvm-project/commit/38e98d8ba2b8bfff0a9019683c4386b1e0637bf8
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h
    M llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
    M llvm/test/CodeGen/X86/atomic-load-store.ll

  Log Message:
  -----------
  [SelectionDAG] Widen <2 x T> vector types for atomic load

Vector types of 2 elements must be widened. This change does this
for vector types of atomic load in SelectionDAG
so that it can translate aligned vectors of >1 size.

commit-id:2894ccd1


  Commit: 74d77f7a3b33834127223bb61df2697ba9ef88d8
      https://github.com/llvm/llvm-project/commit/74d77f7a3b33834127223bb61df2697ba9ef88d8
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/lib/Target/X86/X86InstrCompiler.td
    M llvm/test/CodeGen/X86/atomic-load-store.ll

  Log Message:
  -----------
  [X86] Remove extra MOV after widening atomic load

This change adds patterns to optimize out an extra MOV
present after widening the atomic load.

commit-id:45989503


  Commit: ef31affba0d85387f26e6595e0c0266235166ef4
      https://github.com/llvm/llvm-project/commit/ef31affba0d85387f26e6595e0c0266235166ef4
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/lib/Target/X86/X86ISelLowering.cpp
    M llvm/lib/Target/X86/X86ISelLowering.h
    M llvm/test/CodeGen/X86/atomic-load-store.ll

  Log Message:
  -----------
  [X86] Cast atomic vectors in IR to support floats

This commit casts floats to ints in an atomic load during AtomicExpand to support
floating point types. It also is required to support 128 bit vectors in SSE/AVX.

commit-id:80b9b6a7


  Commit: 9c36e73fa40bcadd31dbb76d1b7d0a4ab42549f6
      https://github.com/llvm/llvm-project/commit/9c36e73fa40bcadd31dbb76d1b7d0a4ab42549f6
  Author: jofrn <jofernau at amd.com>
  Date:   2025-06-02 (Mon, 02 Jun 2025)

  Changed paths:
    M llvm/include/llvm/Target/TargetSelectionDAG.td
    M llvm/lib/CodeGen/AtomicExpandPass.cpp
    M llvm/lib/Target/X86/X86InstrCompiler.td
    M llvm/test/CodeGen/ARM/atomic-load-store.ll
    M llvm/test/CodeGen/X86/atomic-load-store.ll
    M llvm/test/Transforms/AtomicExpand/X86/expand-atomic-non-integer.ll

  Log Message:
  -----------
  [AtomicExpand] Add bitcasts when expanding load atomic vector

AtomicExpand fails for aligned `load atomic <n x T>` because it
does not find a compatible library call. This change adds appropriate
bitcasts so that the call can be lowered. It also adds support for
128 bit lowering in tablegen to support SSE/AVX.

commit-id:f430c1af


Compare: https://github.com/llvm/llvm-project/compare/05eef63446c0%5E...9c36e73fa40b

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