aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/BPF/pr57872.ll
blob: 34f9975d6f28b57c4b3f70f82ac4d8264c814af5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc < %s -mtriple=bpf-- | FileCheck %s

%struct.event = type { i8, [84 x i8] }

define void @foo(ptr %g) {
; CHECK-LABEL: foo:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    r1 = *(u64 *)(r1 + 0)
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 83)
; CHECK-NEXT:    *(u8 *)(r10 - 4) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 82)
; CHECK-NEXT:    *(u8 *)(r10 - 5) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 81)
; CHECK-NEXT:    *(u8 *)(r10 - 6) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 80)
; CHECK-NEXT:    *(u8 *)(r10 - 7) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 79)
; CHECK-NEXT:    *(u8 *)(r10 - 8) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 78)
; CHECK-NEXT:    *(u8 *)(r10 - 9) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 77)
; CHECK-NEXT:    *(u8 *)(r10 - 10) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 76)
; CHECK-NEXT:    *(u8 *)(r10 - 11) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 75)
; CHECK-NEXT:    *(u8 *)(r10 - 12) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 74)
; CHECK-NEXT:    *(u8 *)(r10 - 13) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 73)
; CHECK-NEXT:    *(u8 *)(r10 - 14) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 72)
; CHECK-NEXT:    *(u8 *)(r10 - 15) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 71)
; CHECK-NEXT:    *(u8 *)(r10 - 16) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 70)
; CHECK-NEXT:    *(u8 *)(r10 - 17) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 69)
; CHECK-NEXT:    *(u8 *)(r10 - 18) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 68)
; CHECK-NEXT:    *(u8 *)(r10 - 19) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 67)
; CHECK-NEXT:    *(u8 *)(r10 - 20) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 66)
; CHECK-NEXT:    *(u8 *)(r10 - 21) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 65)
; CHECK-NEXT:    *(u8 *)(r10 - 22) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 64)
; CHECK-NEXT:    *(u8 *)(r10 - 23) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 63)
; CHECK-NEXT:    *(u8 *)(r10 - 24) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 62)
; CHECK-NEXT:    *(u8 *)(r10 - 25) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 61)
; CHECK-NEXT:    *(u8 *)(r10 - 26) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 60)
; CHECK-NEXT:    *(u8 *)(r10 - 27) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 59)
; CHECK-NEXT:    *(u8 *)(r10 - 28) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 58)
; CHECK-NEXT:    *(u8 *)(r10 - 29) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 57)
; CHECK-NEXT:    *(u8 *)(r10 - 30) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 56)
; CHECK-NEXT:    *(u8 *)(r10 - 31) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 55)
; CHECK-NEXT:    *(u8 *)(r10 - 32) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 54)
; CHECK-NEXT:    *(u8 *)(r10 - 33) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 53)
; CHECK-NEXT:    *(u8 *)(r10 - 34) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 52)
; CHECK-NEXT:    *(u8 *)(r10 - 35) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 51)
; CHECK-NEXT:    *(u8 *)(r10 - 36) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 50)
; CHECK-NEXT:    *(u8 *)(r10 - 37) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 49)
; CHECK-NEXT:    *(u8 *)(r10 - 38) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 48)
; CHECK-NEXT:    *(u8 *)(r10 - 39) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 47)
; CHECK-NEXT:    *(u8 *)(r10 - 40) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 46)
; CHECK-NEXT:    *(u8 *)(r10 - 41) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 45)
; CHECK-NEXT:    *(u8 *)(r10 - 42) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 44)
; CHECK-NEXT:    *(u8 *)(r10 - 43) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 43)
; CHECK-NEXT:    *(u8 *)(r10 - 44) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 42)
; CHECK-NEXT:    *(u8 *)(r10 - 45) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 41)
; CHECK-NEXT:    *(u8 *)(r10 - 46) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 40)
; CHECK-NEXT:    *(u8 *)(r10 - 47) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 39)
; CHECK-NEXT:    *(u8 *)(r10 - 48) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 38)
; CHECK-NEXT:    *(u8 *)(r10 - 49) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 37)
; CHECK-NEXT:    *(u8 *)(r10 - 50) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 36)
; CHECK-NEXT:    *(u8 *)(r10 - 51) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 35)
; CHECK-NEXT:    *(u8 *)(r10 - 52) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 34)
; CHECK-NEXT:    *(u8 *)(r10 - 53) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 33)
; CHECK-NEXT:    *(u8 *)(r10 - 54) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 32)
; CHECK-NEXT:    *(u8 *)(r10 - 55) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 31)
; CHECK-NEXT:    *(u8 *)(r10 - 56) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 30)
; CHECK-NEXT:    *(u8 *)(r10 - 57) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 29)
; CHECK-NEXT:    *(u8 *)(r10 - 58) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 28)
; CHECK-NEXT:    *(u8 *)(r10 - 59) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 27)
; CHECK-NEXT:    *(u8 *)(r10 - 60) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 26)
; CHECK-NEXT:    *(u8 *)(r10 - 61) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 25)
; CHECK-NEXT:    *(u8 *)(r10 - 62) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 24)
; CHECK-NEXT:    *(u8 *)(r10 - 63) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 23)
; CHECK-NEXT:    *(u8 *)(r10 - 64) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 22)
; CHECK-NEXT:    *(u8 *)(r10 - 65) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 21)
; CHECK-NEXT:    *(u8 *)(r10 - 66) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 20)
; CHECK-NEXT:    *(u8 *)(r10 - 67) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 19)
; CHECK-NEXT:    *(u8 *)(r10 - 68) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 18)
; CHECK-NEXT:    *(u8 *)(r10 - 69) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 17)
; CHECK-NEXT:    *(u8 *)(r10 - 70) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 16)
; CHECK-NEXT:    *(u8 *)(r10 - 71) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 15)
; CHECK-NEXT:    *(u8 *)(r10 - 72) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 14)
; CHECK-NEXT:    *(u8 *)(r10 - 73) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 13)
; CHECK-NEXT:    *(u8 *)(r10 - 74) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 12)
; CHECK-NEXT:    *(u8 *)(r10 - 75) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 11)
; CHECK-NEXT:    *(u8 *)(r10 - 76) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 10)
; CHECK-NEXT:    *(u8 *)(r10 - 77) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 9)
; CHECK-NEXT:    *(u8 *)(r10 - 78) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 8)
; CHECK-NEXT:    *(u8 *)(r10 - 79) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 7)
; CHECK-NEXT:    *(u8 *)(r10 - 80) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 6)
; CHECK-NEXT:    *(u8 *)(r10 - 81) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 5)
; CHECK-NEXT:    *(u8 *)(r10 - 82) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 4)
; CHECK-NEXT:    *(u8 *)(r10 - 83) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 3)
; CHECK-NEXT:    *(u8 *)(r10 - 84) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 2)
; CHECK-NEXT:    *(u8 *)(r10 - 85) = r2
; CHECK-NEXT:    r2 = *(u8 *)(r1 + 1)
; CHECK-NEXT:    *(u8 *)(r10 - 86) = r2
; CHECK-NEXT:    r1 = *(u8 *)(r1 + 0)
; CHECK-NEXT:    *(u8 *)(r10 - 87) = r1
; CHECK-NEXT:    r1 = r10
; CHECK-NEXT:    r1 += -88
; CHECK-NEXT:    call bar
; CHECK-NEXT:    exit
entry:
  %event = alloca %struct.event, align 8
  %hostname = getelementptr inbounds %struct.event, ptr %event, i64 0, i32 1
  %0 = load ptr, ptr %g, align 8
  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)
  call void @bar(ptr noundef nonnull %event)
  ret void
}

declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2
declare void @bar(ptr noundef)