Files
archived-llvm/test/CodeGen/SystemZ/atomic-store-01.ll
Ulrich Weigand 48ff7cfe27 [SystemZ] Eliminate unnecessary serialization operations
We currently emit a serialization operation (bcr 14, 0) before every
atomic load and after every atomic store.  This is overly conservative.
The SystemZ architecture actually does not require any serialization
for atomic loads, and a serialization after an atomic store only if
we need to enforce sequential consistency.  This is what other compilers
for the platform implement as well.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310093 91177308-0d34-0410-b5e6-96231b3b80d8
2017-08-04 18:53:35 +00:00

22 lines
472 B
LLVM

; Test 8-bit atomic stores.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
define void @f1(i8 %val, i8 *%src) {
; CHECK-LABEL: f1:
; CHECK: stc %r2, 0(%r3)
; CHECK: bcr 1{{[45]}}, %r0
; CHECK: br %r14
store atomic i8 %val, i8 *%src seq_cst, align 1
ret void
}
define void @f2(i8 %val, i8 *%src) {
; CHECK-LABEL: f2:
; CHECK: stc %r2, 0(%r3)
; CHECK-NOT: bcr 1{{[45]}}, %r0
; CHECK: br %r14
store atomic i8 %val, i8 *%src monotonic, align 1
ret void
}