annotate test/CodeGen/SystemZ/backchain.ll @ 128:c347d3398279 default tip

fix
author mir3636
date Wed, 06 Dec 2017 14:37:17 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
1 ; Test the backchain attribute.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
2 ;
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
5 declare i8 *@llvm.stacksave()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
6 declare void @llvm.stackrestore(i8 *)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
7 declare void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
8
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
9 ; nothing should happen if no stack frame is needed.
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
10 define void @f1() "backchain" {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
11 ; CHECK-LABEL: f1:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
12 ; CHECK-NOT: stg
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
13 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
14 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
16 ; check that backchain is saved if we call someone
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
17 define void @f2() "backchain" {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
18 ; CHECK-LABEL: f2:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
19 ; CHECK: stmg %r14, %r15, 112(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
20 ; CHECK: lgr %r1, %r15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
21 ; CHECK: aghi %r15, -160
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
22 ; CHECK: stg %r1, 0(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
23 call void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
24 call void @g()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
25 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
26 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
27
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
28 ; check that backchain is saved if we have an alloca
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
29 define void @f3() "backchain" {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
30 ; CHECK-LABEL: f3:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
31 ; CHECK-NOT: stmg
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
32 ; CHECK: lgr %r1, %r15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
33 ; CHECK: aghi %r15, -168
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
34 ; CHECK: stg %r1, 0(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
35 %ign = alloca i8, i32 4
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
36 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
37 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
38
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
39 ; check that alloca copies the backchain
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
40 define void @f4(i32 %len) "backchain" {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
41 ; CHECK-LABEL: f4:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
42 ; CHECK: stmg %r11, %r15, 88(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
43 ; CHECK: lgr %r1, %r15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
44 ; CHECK: aghi %r15, -160
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
45 ; CHECK: stg %r1, 0(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
46 ; CHECK: lgr %r11, %r15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
47 ; CHECK: lg [[BC:%r[0-9]+]], 0(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
48 ; CHECK: lgr [[NEWSP:%r[0-9]+]], %r15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
49 ; CHECK: lgr %r15, [[NEWSP]]
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
50 ; CHECK: stg [[BC]], 0([[NEWSP]])
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
51 %ign = alloca i8, i32 %len
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
52 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
53 }
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
54
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
55 ; check that llvm.stackrestore restores the backchain
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
56 define void @f5(i32 %count1, i32 %count2) "backchain" {
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
57 ; CHECK-LABEL: f5:
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
58 ; CHECK: stmg %r11, %r15, 88(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
59 ; CHECK: lgr %r1, %r15
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
60 ; CHECK: aghi %r15, -160
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
61 ; CHECK: stg %r1, 0(%r15)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
62 ; CHECK: lgr %r11, %r15
121
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
63 ; CHECK-DAG: lgr [[SAVESP:%r[0-9]+]], %r15
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
64 ; CHECK-DAG: lg [[BC:%r[0-9]+]], 0(%r15)
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
65 ; CHECK-DAG: lgr [[NEWSP:%r[0-9]+]], %r15
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
66 ; CHECK-DAG: lgr %r15, [[NEWSP]]
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
67 ; CHECK-DAG: stg [[BC]], 0([[NEWSP]])
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
68 ; CHECK-DAG: lg [[BC2:%r[0-9]+]], 0(%r15)
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
69 ; CHECK-DAG: lgr %r15, [[SAVESP]]
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
70 ; CHECK-DAG: stg [[BC2]], 0([[SAVESP]])
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
71 ; CHECK-DAG: lg [[BC3:%r[0-9]+]], 0(%r15)
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
72 ; CHECK-DAG: lgr [[NEWSP2:%r[0-9]+]], %r15
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
73 ; CHECK-DAG: lgr %r15, [[NEWSP2]]
803732b1fca8 LLVM 5.0
kono
parents: 120
diff changeset
74 ; CHECK-DAG: stg [[BC3]], 0([[NEWSP2]])
120
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
75 ; CHECK: lmg %r11, %r15, 248(%r11)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
76 ; CHECK: br %r14
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
77 %src = call i8 *@llvm.stacksave()
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
78 %array1 = alloca i8, i32 %count1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
79 store volatile i8 0, i8 *%array1
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
80 call void @llvm.stackrestore(i8 *%src)
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
81 %array2 = alloca i8, i32 %count2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
82 store volatile i8 0, i8 *%array2
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
83 ret void
1172e4bd9c6f update 4.0.0
mir3636
parents:
diff changeset
84 }