[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / BPF / pr57872.ll
blob34f9975d6f28b57c4b3f70f82ac4d8264c814af5
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=bpf-- | FileCheck %s
4 %struct.event = type { i8, [84 x i8] }
6 define void @foo(ptr %g) {
7 ; CHECK-LABEL: foo:
8 ; CHECK:       # %bb.0: # %entry
9 ; CHECK-NEXT:    r1 = *(u64 *)(r1 + 0)
10 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 83)
11 ; CHECK-NEXT:    *(u8 *)(r10 - 4) = r2
12 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 82)
13 ; CHECK-NEXT:    *(u8 *)(r10 - 5) = r2
14 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 81)
15 ; CHECK-NEXT:    *(u8 *)(r10 - 6) = r2
16 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 80)
17 ; CHECK-NEXT:    *(u8 *)(r10 - 7) = r2
18 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 79)
19 ; CHECK-NEXT:    *(u8 *)(r10 - 8) = r2
20 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 78)
21 ; CHECK-NEXT:    *(u8 *)(r10 - 9) = r2
22 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 77)
23 ; CHECK-NEXT:    *(u8 *)(r10 - 10) = r2
24 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 76)
25 ; CHECK-NEXT:    *(u8 *)(r10 - 11) = r2
26 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 75)
27 ; CHECK-NEXT:    *(u8 *)(r10 - 12) = r2
28 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 74)
29 ; CHECK-NEXT:    *(u8 *)(r10 - 13) = r2
30 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 73)
31 ; CHECK-NEXT:    *(u8 *)(r10 - 14) = r2
32 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 72)
33 ; CHECK-NEXT:    *(u8 *)(r10 - 15) = r2
34 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 71)
35 ; CHECK-NEXT:    *(u8 *)(r10 - 16) = r2
36 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 70)
37 ; CHECK-NEXT:    *(u8 *)(r10 - 17) = r2
38 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 69)
39 ; CHECK-NEXT:    *(u8 *)(r10 - 18) = r2
40 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 68)
41 ; CHECK-NEXT:    *(u8 *)(r10 - 19) = r2
42 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 67)
43 ; CHECK-NEXT:    *(u8 *)(r10 - 20) = r2
44 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 66)
45 ; CHECK-NEXT:    *(u8 *)(r10 - 21) = r2
46 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 65)
47 ; CHECK-NEXT:    *(u8 *)(r10 - 22) = r2
48 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 64)
49 ; CHECK-NEXT:    *(u8 *)(r10 - 23) = r2
50 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 63)
51 ; CHECK-NEXT:    *(u8 *)(r10 - 24) = r2
52 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 62)
53 ; CHECK-NEXT:    *(u8 *)(r10 - 25) = r2
54 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 61)
55 ; CHECK-NEXT:    *(u8 *)(r10 - 26) = r2
56 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 60)
57 ; CHECK-NEXT:    *(u8 *)(r10 - 27) = r2
58 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 59)
59 ; CHECK-NEXT:    *(u8 *)(r10 - 28) = r2
60 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 58)
61 ; CHECK-NEXT:    *(u8 *)(r10 - 29) = r2
62 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 57)
63 ; CHECK-NEXT:    *(u8 *)(r10 - 30) = r2
64 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 56)
65 ; CHECK-NEXT:    *(u8 *)(r10 - 31) = r2
66 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 55)
67 ; CHECK-NEXT:    *(u8 *)(r10 - 32) = r2
68 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 54)
69 ; CHECK-NEXT:    *(u8 *)(r10 - 33) = r2
70 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 53)
71 ; CHECK-NEXT:    *(u8 *)(r10 - 34) = r2
72 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 52)
73 ; CHECK-NEXT:    *(u8 *)(r10 - 35) = r2
74 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 51)
75 ; CHECK-NEXT:    *(u8 *)(r10 - 36) = r2
76 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 50)
77 ; CHECK-NEXT:    *(u8 *)(r10 - 37) = r2
78 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 49)
79 ; CHECK-NEXT:    *(u8 *)(r10 - 38) = r2
80 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 48)
81 ; CHECK-NEXT:    *(u8 *)(r10 - 39) = r2
82 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 47)
83 ; CHECK-NEXT:    *(u8 *)(r10 - 40) = r2
84 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 46)
85 ; CHECK-NEXT:    *(u8 *)(r10 - 41) = r2
86 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 45)
87 ; CHECK-NEXT:    *(u8 *)(r10 - 42) = r2
88 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 44)
89 ; CHECK-NEXT:    *(u8 *)(r10 - 43) = r2
90 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 43)
91 ; CHECK-NEXT:    *(u8 *)(r10 - 44) = r2
92 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 42)
93 ; CHECK-NEXT:    *(u8 *)(r10 - 45) = r2
94 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 41)
95 ; CHECK-NEXT:    *(u8 *)(r10 - 46) = r2
96 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 40)
97 ; CHECK-NEXT:    *(u8 *)(r10 - 47) = r2
98 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 39)
99 ; CHECK-NEXT:    *(u8 *)(r10 - 48) = r2
100 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 38)
101 ; CHECK-NEXT:    *(u8 *)(r10 - 49) = r2
102 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 37)
103 ; CHECK-NEXT:    *(u8 *)(r10 - 50) = r2
104 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 36)
105 ; CHECK-NEXT:    *(u8 *)(r10 - 51) = r2
106 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 35)
107 ; CHECK-NEXT:    *(u8 *)(r10 - 52) = r2
108 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 34)
109 ; CHECK-NEXT:    *(u8 *)(r10 - 53) = r2
110 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 33)
111 ; CHECK-NEXT:    *(u8 *)(r10 - 54) = r2
112 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 32)
113 ; CHECK-NEXT:    *(u8 *)(r10 - 55) = r2
114 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 31)
115 ; CHECK-NEXT:    *(u8 *)(r10 - 56) = r2
116 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 30)
117 ; CHECK-NEXT:    *(u8 *)(r10 - 57) = r2
118 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 29)
119 ; CHECK-NEXT:    *(u8 *)(r10 - 58) = r2
120 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 28)
121 ; CHECK-NEXT:    *(u8 *)(r10 - 59) = r2
122 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 27)
123 ; CHECK-NEXT:    *(u8 *)(r10 - 60) = r2
124 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 26)
125 ; CHECK-NEXT:    *(u8 *)(r10 - 61) = r2
126 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 25)
127 ; CHECK-NEXT:    *(u8 *)(r10 - 62) = r2
128 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 24)
129 ; CHECK-NEXT:    *(u8 *)(r10 - 63) = r2
130 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 23)
131 ; CHECK-NEXT:    *(u8 *)(r10 - 64) = r2
132 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 22)
133 ; CHECK-NEXT:    *(u8 *)(r10 - 65) = r2
134 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 21)
135 ; CHECK-NEXT:    *(u8 *)(r10 - 66) = r2
136 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 20)
137 ; CHECK-NEXT:    *(u8 *)(r10 - 67) = r2
138 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 19)
139 ; CHECK-NEXT:    *(u8 *)(r10 - 68) = r2
140 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 18)
141 ; CHECK-NEXT:    *(u8 *)(r10 - 69) = r2
142 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 17)
143 ; CHECK-NEXT:    *(u8 *)(r10 - 70) = r2
144 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 16)
145 ; CHECK-NEXT:    *(u8 *)(r10 - 71) = r2
146 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 15)
147 ; CHECK-NEXT:    *(u8 *)(r10 - 72) = r2
148 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 14)
149 ; CHECK-NEXT:    *(u8 *)(r10 - 73) = r2
150 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 13)
151 ; CHECK-NEXT:    *(u8 *)(r10 - 74) = r2
152 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 12)
153 ; CHECK-NEXT:    *(u8 *)(r10 - 75) = r2
154 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 11)
155 ; CHECK-NEXT:    *(u8 *)(r10 - 76) = r2
156 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 10)
157 ; CHECK-NEXT:    *(u8 *)(r10 - 77) = r2
158 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 9)
159 ; CHECK-NEXT:    *(u8 *)(r10 - 78) = r2
160 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 8)
161 ; CHECK-NEXT:    *(u8 *)(r10 - 79) = r2
162 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 7)
163 ; CHECK-NEXT:    *(u8 *)(r10 - 80) = r2
164 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 6)
165 ; CHECK-NEXT:    *(u8 *)(r10 - 81) = r2
166 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 5)
167 ; CHECK-NEXT:    *(u8 *)(r10 - 82) = r2
168 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 4)
169 ; CHECK-NEXT:    *(u8 *)(r10 - 83) = r2
170 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 3)
171 ; CHECK-NEXT:    *(u8 *)(r10 - 84) = r2
172 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 2)
173 ; CHECK-NEXT:    *(u8 *)(r10 - 85) = r2
174 ; CHECK-NEXT:    r2 = *(u8 *)(r1 + 1)
175 ; CHECK-NEXT:    *(u8 *)(r10 - 86) = r2
176 ; CHECK-NEXT:    r1 = *(u8 *)(r1 + 0)
177 ; CHECK-NEXT:    *(u8 *)(r10 - 87) = r1
178 ; CHECK-NEXT:    r1 = r10
179 ; CHECK-NEXT:    r1 += -88
180 ; CHECK-NEXT:    call bar
181 ; CHECK-NEXT:    exit
182 entry:
183   %event = alloca %struct.event, align 8
184   %hostname = getelementptr inbounds %struct.event, ptr %event, i64 0, i32 1
185   %0 = load ptr, ptr %g, align 8
186   call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(84) %hostname, ptr noundef nonnull align 1 dereferenceable(84) %0, i64 84, i1 false)
187   call void @bar(ptr noundef nonnull %event)
188   ret void
191 declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2
192 declare void @bar(ptr noundef)