1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/CodeGen/SystemZ/atomic-load-05.ll
Ulrich Weigand 9ee7a9a74c [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
2017-08-04 18:57:58 +00:00

14 lines
311 B
LLVM

; Test 128-bit atomic loads.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
define i128 @f1(i128 *%src) {
; CHECK-LABEL: f1:
; CHECK: lpq %r0, 0(%r3)
; CHECK-DAG: stg %r1, 8(%r2)
; CHECK-DAG: stg %r0, 0(%r2)
; CHECK: br %r14
%val = load atomic i128, i128 *%src seq_cst, align 16
ret i128 %val
}