xref: /llvm-project/llvm/test/CodeGen/BPF/pr57872.ll (revision 7852ebc088b925ef1c1940cbd56a93d9f8e3e330)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=bpf -mcpu=v1 -- | FileCheck %s
3
4%struct.event = type { i8, [84 x i8] }
5
6define 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
182entry:
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
189}
190
191declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2
192declare void @bar(ptr noundef)
193