15eb64110SUlrich Weigand; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
25eb64110SUlrich Weigand
35eb64110SUlrich Weiganddefine void @nop_test() {
45eb64110SUlrich Weigandentry:
55eb64110SUlrich Weigand; CHECK-LABEL: nop_test:
65eb64110SUlrich Weigand
75eb64110SUlrich Weigand; 2
85eb64110SUlrich Weigand; CHECK:      bcr 0, %r0
95eb64110SUlrich Weigand
105eb64110SUlrich Weigand; 4
115eb64110SUlrich Weigand; CHECK:      bc 0, 0
125eb64110SUlrich Weigand
135eb64110SUlrich Weigand; 6
14*982695c0SJonas Paulsson; CHECK:      .Ltmp
15*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
16*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
175eb64110SUlrich Weigand
185eb64110SUlrich Weigand; 8
19*982695c0SJonas Paulsson; CHECK:      .Ltmp
20*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
21*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
225eb64110SUlrich Weigand; CHECK:      bcr 0, %r0
235eb64110SUlrich Weigand
245eb64110SUlrich Weigand; 10
25*982695c0SJonas Paulsson; CHECK:      .Ltmp
26*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
27*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
285eb64110SUlrich Weigand; CHECK:      bc 0, 0
295eb64110SUlrich Weigand
305eb64110SUlrich Weigand; 12
31*982695c0SJonas Paulsson; CHECK:      .Ltmp
32*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
33*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
34*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
35*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
365eb64110SUlrich Weigand
375eb64110SUlrich Weigand; 14
38*982695c0SJonas Paulsson; CHECK:      .Ltmp
39*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
40*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
41*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
42*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
435eb64110SUlrich Weigand; CHECK:      bcr 0, %r0
445eb64110SUlrich Weigand
455eb64110SUlrich Weigand; 16
46*982695c0SJonas Paulsson; CHECK:      .Ltmp
47*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
48*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
49*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
50*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
515eb64110SUlrich Weigand; CHECK:      bc 0, 0
525eb64110SUlrich Weigand
535eb64110SUlrich Weigand; 18
54*982695c0SJonas Paulsson; CHECK:      .Ltmp
55*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
56*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
57*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
58*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
59*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
60*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
615eb64110SUlrich Weigand
625eb64110SUlrich Weigand; 20
63*982695c0SJonas Paulsson; CHECK:      .Ltmp
64*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
65*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
66*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
67*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
68*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
69*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
705eb64110SUlrich Weigand; CHECK:      bcr 0, %r0
715eb64110SUlrich Weigand
725eb64110SUlrich Weigand; 22
73*982695c0SJonas Paulsson; CHECK:      .Ltmp
74*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
75*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
76*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
77*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
78*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
79*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
805eb64110SUlrich Weigand; CHECK:      bc 0, 0
815eb64110SUlrich Weigand
825eb64110SUlrich Weigand; 24
83*982695c0SJonas Paulsson; CHECK:      .Ltmp
84*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
85*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
86*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
87*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
88*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
89*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
90*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
91*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
925eb64110SUlrich Weigand
935eb64110SUlrich Weigand; 26
94*982695c0SJonas Paulsson; CHECK:      .Ltmp
95*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
96*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
97*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
98*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
99*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
100*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
101*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
102*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
1035eb64110SUlrich Weigand; CHECK:      bcr 0, %r0
1045eb64110SUlrich Weigand
1055eb64110SUlrich Weigand; 28
106*982695c0SJonas Paulsson; CHECK:      .Ltmp
107*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
108*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
109*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
110*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
111*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
112*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
113*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
114*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
1155eb64110SUlrich Weigand; CHECK:      bc 0, 0
1165eb64110SUlrich Weigand
1175eb64110SUlrich Weigand; 30
118*982695c0SJonas Paulsson; CHECK:      .Ltmp
119*982695c0SJonas Paulsson; CHECK-NEXT: [[LAB:.Ltmp[0-9]+]]:
120*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
121*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
122*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
123*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
124*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
125*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
126*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
127*982695c0SJonas Paulsson; CHECK:      [[LAB:.Ltmp[0-9]+]]:
128*982695c0SJonas Paulsson; CHECK-NEXT: brcl 0, [[LAB]]
1295eb64110SUlrich Weigand
1305eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  0, i32  0)
1315eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  2, i32  2)
1325eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  4, i32  4)
1335eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  6, i32  6)
1345eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  8, i32  8)
1355eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)
1365eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)
1375eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)
1385eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)
1395eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)
1405eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)
1415eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)
1425eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)
1435eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)
1445eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)
1455eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)
1465eb64110SUlrich Weigand; Add an extra stackmap with a zero-length shadow to thwart the shadow
1475eb64110SUlrich Weigand; optimization. This will force all bytes of the previous shadow to be
1485eb64110SUlrich Weigand; padded with nops.
1495eb64110SUlrich Weigand  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
1505eb64110SUlrich Weigand  ret void
1515eb64110SUlrich Weigand}
1525eb64110SUlrich Weigand
1535eb64110SUlrich Weiganddeclare void @llvm.experimental.stackmap(i64, i32, ...)
154