Skip to content

Commit b0a0e6a

Browse files
committed
Updated per review
1 parent d73eca0 commit b0a0e6a

File tree

6 files changed

+52
-16
lines changed

6 files changed

+52
-16
lines changed

llvm/test/CodeGen/SystemZ/atomic-load-05.ll

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,18 @@
55

66
define i128 @f1(ptr %src) {
77
; CHECK-LABEL: f1:
8-
; CHECK: lpq %r0, 0(%r3)
9-
; CHECK-DAG: stg %r1, 8(%r2)
10-
; CHECK-DAG: stg %r0, 0(%r2)
11-
; CHECK: br %r14
8+
; CHECK: # %bb.0:
9+
; CHECK-NEXT: lpq %r0, 0(%r3)
10+
; CHECK-NEXT: stg %r1, 8(%r2)
11+
; CHECK-NEXT: stg %r0, 0(%r2)
12+
; CHECK-NEXT: br %r14
1213
%val = load atomic i128, ptr %src seq_cst, align 16
1314
ret i128 %val
1415
}
16+
17+
define i128 @f2(ptr %src) {
18+
; CHECK-LABEL: f2:
19+
; CHECK: brasl %r14, __atomic_load@PLT
20+
%val = load atomic i128, ptr %src seq_cst, align 8
21+
ret i128 %val
22+
}

llvm/test/CodeGen/SystemZ/atomic-load-08.ll

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2-
;
31
; Test long double atomic loads. These are emitted by the Clang FE as i128
42
; loads with a bitcast, and this test case gets converted into that form as
53
; well by the AtomicExpand pass.
64
;
75
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
6+
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
87

98
define void @f1(ptr %ret, ptr %src) {
109
; CHECK-LABEL: f1:
@@ -17,3 +16,11 @@ define void @f1(ptr %ret, ptr %src) {
1716
store fp128 %val, ptr %ret, align 8
1817
ret void
1918
}
19+
20+
define void @f2(ptr %ret, ptr %src) {
21+
; CHECK-LABEL: f2:
22+
; CHECK: brasl %r14, __atomic_load@PLT
23+
%val = load atomic fp128, ptr %src seq_cst, align 8
24+
store fp128 %val, ptr %ret, align 8
25+
ret void
26+
}

llvm/test/CodeGen/SystemZ/atomic-store-05.ll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,10 @@ define void @f2(i128 %val, ptr %src) {
2424
store atomic i128 %val, ptr %src monotonic, align 16
2525
ret void
2626
}
27+
28+
define void @f3(i128 %val, ptr %src) {
29+
; CHECK-LABEL: f3:
30+
; CHECK: brasl %r14, __atomic_store@PLT
31+
store atomic i128 %val, ptr %src seq_cst, align 8
32+
ret void
33+
}
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1-
; Test float atomic loads.
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2+
; Test float atomic stores.
23
;
34
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
45

56
define void @f1(ptr %src, float %val) {
67
; CHECK-LABEL: f1:
7-
; CHECK: lgdr [[R:%r[0-9]+]], %f0
8-
; CHECK: srlg [[R]], [[R]], 32
9-
; CHECK: st [[R]], 0(%r2)
10-
; CHECK: br %r14
8+
; CHECK: # %bb.0:
9+
; CHECK-NEXT: # kill: def $f0s killed $f0s def $f0d
10+
; CHECK-NEXT: lgdr %r0, %f0
11+
; CHECK-NEXT: srlg %r0, %r0, 32
12+
; CHECK-NEXT: st %r0, 0(%r2)
13+
; CHECK-NEXT: bcr 15, %r0
14+
; CHECK-NEXT: br %r14
1115
store atomic float %val, ptr %src seq_cst, align 4
1216
ret void
1317
}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
12
; Test double atomic stores.
23
;
34
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
45

56
define void @f1(ptr %dst, double %val) {
67
; CHECK-LABEL: f1:
7-
; CHECK: std %f0, 0(%r2)
8-
; CHECK: br %r14
8+
; CHECK: # %bb.0:
9+
; CHECK-NEXT: std %f0, 0(%r2)
10+
; CHECK-NEXT: bcr 15, %r0
11+
; CHECK-NEXT: br %r14
912
store atomic double %val, ptr %dst seq_cst, align 8
1013
ret void
1114
}
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2-
;
31
; Test long double atomic stores. The atomic store is converted to i128 by
42
; the AtomicExpand pass.
53
;
64
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5+
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
76

87
define void @f1(ptr %dst, ptr %src) {
98
; CHECK-LABEL: f1:
109
; CHECK: # %bb.0:
1110
; CHECK-NEXT: lg %r1, 8(%r3)
1211
; CHECK-NEXT: lg %r0, 0(%r3)
1312
; CHECK-NEXT: stpq %r0, 0(%r2)
14-
; CHECK-NEXT: bcr 15, %r0
13+
; CHECK-NEXT: bcr 1{{[45]}}, %r0
1514
; CHECK-NEXT: br %r14
1615
%val = load fp128, ptr %src, align 8
1716
store atomic fp128 %val, ptr %dst seq_cst, align 16
1817
ret void
1918
}
19+
20+
define void @f2(ptr %dst, ptr %src) {
21+
; CHECK-LABEL: f2:
22+
; CHECK: brasl %r14, __atomic_store@PLT
23+
%val = load fp128, ptr %src, align 8
24+
store atomic fp128 %val, ptr %dst seq_cst, align 8
25+
ret void
26+
}

0 commit comments

Comments
 (0)