[all-commits] [llvm/llvm-project] c56892: [SystemZ] Properly support 16 byte atomic int/fp t...

Jonas Paulsson via All-commits all-commits at lists.llvm.org
Tue Dec 5 08:17:36 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c568927f3e2e7d9804ea74ecbf11c16c014ddcbc
      https://github.com/llvm/llvm-project/commit/c568927f3e2e7d9804ea74ecbf11c16c014ddcbc
  Author: Jonas Paulsson <paulson1 at linux.ibm.com>
  Date:   2023-12-05 (Tue, 05 Dec 2023)

  Changed paths:
    M clang/lib/Basic/Targets/SystemZ.h
    A clang/test/CodeGen/SystemZ/atomic_is_lock_free.c
    A clang/test/CodeGen/SystemZ/gnu-atomic-builtins-i128-16Al.c
    A clang/test/CodeGen/SystemZ/gnu-atomic-builtins-i128-8Al.c
    A clang/test/CodeGen/SystemZ/gnu-atomic-builtins-i16.c
    A clang/test/CodeGen/SystemZ/gnu-atomic-builtins-i32.c
    A clang/test/CodeGen/SystemZ/gnu-atomic-builtins-i64.c
    A clang/test/CodeGen/SystemZ/gnu-atomic-builtins-i8.c
    M llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
    M llvm/test/CodeGen/SystemZ/atomicrmw-ops-i128.ll
    M llvm/test/CodeGen/SystemZ/atomicrmw-xchg-07.ll

  Log Message:
  -----------
  [SystemZ] Properly support 16 byte atomic int/fp types and ops. (#73134)

- Clang FE now has MaxAtomicPromoteWidth / MaxAtomicInlineWidth set to 128, and now produces IR
  instead of calls to __atomic instrinsics for 16 bytes as well.
- Atomic __int128 (and long double) variables are now aligned to 16 bytes by default (like gcc 14).
- AtomicExpand pass now expands 16 byte operations as well.
- tests for __atomic builtins for all integer widths, and __atomic_is_lock_free with friends.
- TODO: AtomicExpand pass handles with this patch expansion of i128 atomicrmw:s. As a next step
  smaller integer types should also be possible to handle this way instead of by the backend.




More information about the All-commits mailing list