[all-commits] [llvm/llvm-project] 03934e: [SystemZ] Enable AtomicExpand pass (#70398)
Ilya Leoshkevich via All-commits
all-commits at lists.llvm.org
Tue Oct 31 01:51:19 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 03934e70ef1cf86a6ebd1a56e0b5b46f4fec8e13
https://github.com/llvm/llvm-project/commit/03934e70ef1cf86a6ebd1a56e0b5b46f4fec8e13
Author: Ilya Leoshkevich <iii at linux.ibm.com>
Date: 2023-10-31 (Tue, 31 Oct 2023)
Changed paths:
M llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
M llvm/lib/Target/SystemZ/SystemZISelLowering.h
M llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
A llvm/test/CodeGen/SystemZ/atomic-load-06.ll
A llvm/test/CodeGen/SystemZ/atomic-load-07.ll
A llvm/test/CodeGen/SystemZ/atomic-load-08.ll
A llvm/test/CodeGen/SystemZ/atomic-store-06.ll
A llvm/test/CodeGen/SystemZ/atomic-store-07.ll
A llvm/test/CodeGen/SystemZ/atomic-store-08.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fadd-01.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fadd-02.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fadd-03.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fmax-01.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fmax-02.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fmax-03.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fmin-01.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fmin-02.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fmin-03.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fsub-01.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fsub-02.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-fsub-03.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-udec_wrap.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-uinc_wrap.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-xchg-05.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-xchg-06.ll
A llvm/test/CodeGen/SystemZ/atomicrmw-xchg-07.ll
Log Message:
-----------
[SystemZ] Enable AtomicExpand pass (#70398)
The upcoming OpenMP support for SystemZ requires handling of IR insns
like `atomicrmw fadd`. Normally atomic float operations are expanded by
Clang and such insns do not occur, but OpenMP generates them directly.
Other architectures handle this using the AtomicExpand pass, which
SystemZ did not need so far. Enable it.
Currently AtomicExpand treats atomic load and stores of floats
pessimistically: it casts them to integers, which SystemZ does not need,
since the floating point load and store instructions are already atomic.
However, the way Clang currently expands them is pessimistic as well, so
this change does not make things worse. Optimizing operations on atomic
floats can be a separate change in the future.
This change does not create any differences the Linux kernel build.
More information about the All-commits
mailing list