xref: /llvm-project/llvm/test/CodeGen/Thumb2/bti-outliner-cost-1.ll (revision b5b663aac17415625340eb29c8010832bfc4c21c)
1; RUN: llc -mtriple=thumbv7m-eabi %s -o - | FileCheck %s
2
3; Check an edge case of the outlining costs -
4; outlining occurs in this test and does not in `bti-outliner-cost-2.ll`
5; the only difference being the branch target enforcement is enabled in the
6; latter one.
7
8; volatile int a, b, c, d, e;
9;
10; int y(int p) {
11;   int r = (a + b) / (c + d) * e;
12;   return r + 1;
13; }
14;
15; int y(int p) {
16;   int r = (a + b) / (c + d) * e;
17;   return r + 2;
18; }
19
20@a = hidden global i32 0, align 4
21@b = hidden global i32 0, align 4
22@c = hidden global i32 0, align 4
23@d = hidden global i32 0, align 4
24@e = hidden global i32 0, align 4
25
26define hidden i32 @x(i32 %p) local_unnamed_addr #0 {
27entry:
28  %0 = load volatile i32, ptr @a, align 4
29  %1 = load volatile i32, ptr @b, align 4
30  %add = add nsw i32 %1, %0
31  %2 = load volatile i32, ptr @c, align 4
32  %3 = load volatile i32, ptr @d, align 4
33  %add1 = add nsw i32 %3, %2
34  %div = sdiv i32 %add, %add1
35  %4 = load volatile i32, ptr @e, align 4
36  %mul = mul nsw i32 %4, %div
37  %add2 = add nsw i32 %mul, 1
38  ret i32 %add2
39}
40; CHECK-LABEL: x:
41; CHECK:       bl OUTLINED_FUNCTION_0
42
43define hidden i32 @y(i32 %p) local_unnamed_addr #0 {
44entry:
45  %0 = load volatile i32, ptr @a, align 4
46  %1 = load volatile i32, ptr @b, align 4
47  %add = add nsw i32 %1, %0
48  %2 = load volatile i32, ptr @c, align 4
49  %3 = load volatile i32, ptr @d, align 4
50  %add1 = add nsw i32 %3, %2
51  %div = sdiv i32 %add, %add1
52  %4 = load volatile i32, ptr @e, align 4
53  %mul = mul nsw i32 %4, %div
54  %add2 = add nsw i32 %mul, 2
55  ret i32 %add2
56}
57; CHECK-LABEL: y:
58; CHECK:       bl OUTLINED_FUNCTION_0
59
60; CHECK-LABEL: OUTLINED_FUNCTION_0:
61; CHECK-NOT:   bti
62
63attributes #0 = { minsize nofree norecurse nounwind optsize  }
64
65!llvm.module.flags = !{!0}
66
67!0 = !{i32 8, !"branch-target-enforcement", i32 0}
68