xref: /llvm-project/llvm/test/Bitcode/use-list-order.ll (revision 1f66c856b54e32e6590d1333fc8a60d56979edb8)
1; RUN: llvm-uselistorder < %s -preserve-bc-use-list-order
2
3@a = global [4 x i1] [i1 0, i1 1, i1 0, i1 1]
4@b = alias i1* getelementptr ([4 x i1]* @a, i64 0, i64 2)
5
6define i64 @f(i64 %f) {
7entry:
8  %sum = add i64 %f, 0
9  ret i64 %sum
10}
11
12define i64 @g(i64 %g) {
13entry:
14  %sum = add i64 %g, 0
15  ret i64 %sum
16}
17
18define i64 @h(i64 %h) {
19entry:
20  %sum = add i64 %h, 0
21  ret i64 %sum
22}
23
24define i64 @i(i64 %i) {
25entry:
26  %sum = add i64 %i, 1
27  ret i64 %sum
28}
29
30define i64 @j(i64 %j) {
31entry:
32  %sum = add i64 %j, 1
33  ret i64 %sum
34}
35
36define i64 @k(i64 %k) {
37entry:
38  %sum = add i64 %k, 1
39  ret i64 %sum
40}
41
42define i64 @l(i64 %l) {
43entry:
44  %sum = add i64 %l, 1
45  ret i64 %sum
46}
47
48define i1 @loadb() {
49entry:
50  %b = load i1* @b
51  ret i1 %b
52}
53
54define i1 @loada() {
55entry:
56  %a = load i1* getelementptr ([4 x i1]* @a, i64 0, i64 2)
57  ret i1 %a
58}
59
60define i32 @f32(i32 %a, i32 %b, i32 %c, i32 %d) {
61entry:
62  br label %first
63
64second:
65  %eh = mul i32 %e, %h
66  %sum = add i32 %eh, %ef
67  br label %exit
68
69exit:
70  %product = phi i32 [%ef, %first], [%sum, %second]
71  ret i32 %product
72
73first:
74  %e = add i32 %a, 7
75  %f = add i32 %b, 7
76  %g = add i32 %c, 8
77  %h = add i32 %d, 8
78  %ef = mul i32 %e, %f
79  %gh = mul i32 %g, %h
80  %gotosecond = icmp slt i32 %gh, -9
81  br i1 %gotosecond, label %second, label %exit
82}
83