[SystemZ] Add support for 128-bit atomic load/store/cmpxchg
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Fri, 4 Aug 2017 18:57:58 +0000 (18:57 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Fri, 4 Aug 2017 18:57:58 +0000 (18:57 +0000)
commita11f63a952664f700f076fd754476a2b9eb158cc
tree3f741cf70a27633e49f5005e1d14e62238b3e0ba
parent02f1c02c2710a3daacc098cae20b991ba5c8a7ec
[SystemZ] Add support for 128-bit atomic load/store/cmpxchg

This adds support for the main 128-bit atomic operations,
using the SystemZ instructions LPQ, STPQ, and CDSG.

Generating these instructions is a bit more complex than usual
since the i128 type is not legal for the back-end.  Therefore,
we have to hook the LowerOperationWrapper and ReplaceNodeResults
TargetLowering callbacks.

llvm-svn: 310094
llvm/lib/Target/SystemZ/SystemZISelLowering.cpp
llvm/lib/Target/SystemZ/SystemZISelLowering.h
llvm/lib/Target/SystemZ/SystemZInstrInfo.td
llvm/lib/Target/SystemZ/SystemZOperators.td
llvm/test/CodeGen/SystemZ/atomic-load-05.ll [new file with mode: 0644]
llvm/test/CodeGen/SystemZ/atomic-store-05.ll [new file with mode: 0644]
llvm/test/CodeGen/SystemZ/cmpxchg-06.ll [new file with mode: 0644]