Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / pacbti-m-outliner-5.ll
blob053d6a1d01800c605d1934bdfe1ec4d658c3d437
1 ; RUN: llc %s -o - | FileCheck %s
2 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
3 target triple = "thumbv7m-arm-none-eabi"
5 ; CHECK-LABEL: x:
6 ; CHECK: bl OUTLINED_FUNCTION
7 ; CHECK-LABEL: y:
8 ; CHECK: bl OUTLINED_FUNCTION
9 ; CHECK-LABEL: z:
10 ; CHECK-NOT: bl OUTLINED_FUNCTION
12 @a = hidden global i32 0, align 4
13 @b = hidden global i32 0, align 4
14 @c = hidden global i32 0, align 4
15 @d = hidden global i32 0, align 4
16 @e = hidden global i32 0, align 4
17 @f = hidden global i32 0, align 4
18 @g = hidden global i32 0, align 4
19 @h = hidden global i32 0, align 4
20 @i = hidden global i32 0, align 4
22 define hidden i32 @x() local_unnamed_addr #0 {
23 entry:
24   %0 = load volatile i32, ptr @a, align 4
25   %1 = load volatile i32, ptr @b, align 4
26   %add = add nsw i32 %1, %0
27   %2 = load volatile i32, ptr @c, align 4
28   %3 = load volatile i32, ptr @d, align 4
29   %add1 = add nsw i32 %3, %2
30   %div = sdiv i32 %add, %add1
31   %4 = load volatile i32, ptr @e, align 4
32   %5 = load volatile i32, ptr @f, align 4
33   %6 = load volatile i32, ptr @g, align 4
34   %div3 = sdiv i32 %5, %6
35   %7 = load volatile i32, ptr @h, align 4
36   %8 = load volatile i32, ptr @i, align 4
37   %add2 = add i32 %div, 1
38   %add4 = add i32 %add2, %4
39   %add5 = add i32 %add4, %div3
40   %add6 = add i32 %add5, %7
41   %add7 = add i32 %add6, %8
42   ret i32 %add7
45 define hidden i32 @y() local_unnamed_addr #0 {
46 entry:
47   %0 = load volatile i32, ptr @a, align 4
48   %1 = load volatile i32, ptr @b, align 4
49   %add = add nsw i32 %1, %0
50   %2 = load volatile i32, ptr @c, align 4
51   %3 = load volatile i32, ptr @d, align 4
52   %add1 = add nsw i32 %3, %2
53   %div = sdiv i32 %add, %add1
54   %4 = load volatile i32, ptr @e, align 4
55   %5 = load volatile i32, ptr @f, align 4
56   %6 = load volatile i32, ptr @g, align 4
57   %div3 = sdiv i32 %5, %6
58   %7 = load volatile i32, ptr @h, align 4
59   %8 = load volatile i32, ptr @i, align 4
60   %add2 = add i32 %div, 2
61   %add4 = add i32 %add2, %4
62   %add5 = add i32 %add4, %div3
63   %add6 = add i32 %add5, %7
64   %add7 = add i32 %add6, %8
65   ret i32 %add7
68 define hidden i32 @z() local_unnamed_addr #1 {
69 entry:
70   %0 = load volatile i32, ptr @a, align 4
71   %1 = load volatile i32, ptr @b, align 4
72   %add = add nsw i32 %1, %0
73   %2 = load volatile i32, ptr @c, align 4
74   %3 = load volatile i32, ptr @d, align 4
75   %add1 = add nsw i32 %3, %2
76   %div = sdiv i32 %add, %add1
77   %4 = load volatile i32, ptr @e, align 4
78   %5 = load volatile i32, ptr @f, align 4
79   %6 = load volatile i32, ptr @g, align 4
80   %div3 = sdiv i32 %5, %6
81   %7 = load volatile i32, ptr @h, align 4
82   %8 = load volatile i32, ptr @i, align 4
83   %add2 = add i32 %div, 3
84   %add4 = add i32 %add2, %4
85   %add5 = add i32 %add4, %div3
86   %add6 = add i32 %add5, %7
87   %add7 = add i32 %add6, %8
88   ret i32 %add7
91 attributes #0 = { minsize nofree norecurse nounwind optsize "sign-return-address"="non-leaf" }
92 attributes #1 = { minsize nofree norecurse nounwind optsize }
94 !llvm.module.flags = !{!0, !1, !2}
96 !0 = !{i32 8, !"branch-target-enforcement", i32 0}
97 !1 = !{i32 8, !"sign-return-address", i32 1}
98 !2 = !{i32 8, !"sign-return-address-all", i32 0}