summaryrefslogtreecommitdiff
path: root/gas/testsuite/gas/bpf/pseudoc-normal.s
blob: b3467d1221922b7fc335dc9d2a6664bb823f05a1 (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
193
194
195
196
# Tests for mixing pseudo-C and normal eBPF instructions
beg:
        .text
	add %r1,0xaa
	r1 += 0xaa
	add %r1,%r2
	r1 += r2
	sub %r1,0xaa
	r1 -= 0xaa
	sub %r1,%r2
	r1 -= r2
	mul %r1,0xaa
	r1 *= 0xaa
	mul %r1,%r2
	r1 *= r2
	div %r1,0xaa
	r1 /= 0xaa
	div %r1,%r2
	r1 /= r2
	or %r1,0xaa
	r1 |= 0xaa
	or %r1,%r2
	r1 |= r2
	and %r1,0xaa
	r1 &= 0xaa
	and %r1,%r2
	r1 &= r2
	lsh %r1,0xaa
	r1 <<= 0xaa
	lsh %r1,%r2
	r1 <<= r2
	rsh %r1,0xaa
	r1 >>= 0xaa
	rsh %r1,%r2
	r1 >>= r2
	xor %r1,0xaa
	r1 ^= 0xaa
	xor %r1,%r2
	r1 ^= r2
	mov %r1,0xaa
	r1 = 0xaa
	mov %r1,%r2
	r1 = r2
	arsh %r1,0xaa
	r1 s>>= 0xaa
	arsh %r1,%r2
	r1 s>>= r2
	neg %r1
	r1 = -r1
	add32 %r1,0xaa
	w1 += 0xaa
	add32 %r1,%r2
	w1 += w2
	sub32 %r1,0xaa
	w1 -= 0xaa
	sub32 %r1,%r2
	w1 -= w2
	mul32 %r1,0xaa
	w1 *= 0xaa
	mul32 %r1,%r2
	w1 *= w2
	div32 %r1,0xaa
	w1 /= 0xaa
	div32 %r1,%r2
	w1 /= w2
	or32 %r1,0xaa
	w1 |= 0xaa
	or32 %r1,%r2
	w1 |= w2
	and32 %r1,0xaa
	w1 &= 0xaa
	and32 %r1,%r2
	w1 &= w2
	lsh32 %r1,0xaa
	w1 <<= 0xaa
	lsh32 %r1,%r2
	w1 <<= w2
	rsh32 %r1,0xaa
	w1 >>= 0xaa
	rsh32 %r1,%r2
	w1 >>= w2
	xor32 %r1,0xaa
	w1 ^= 0xaa
	xor32 %r1,%r2
	w1 ^= w2
	mov32 %r1,0xaa
	w1 = 0xaa
	mov32 %r1,%r2
	w1 = w2
	arsh32 %r1,0xaa
	w1 s>>= 0xaa
	arsh32 %r1,%r2
	w1 s>>= w2
	neg32 %r1
	w1 = -w1
	endle %r1,16
	r1 = le16 r1
	endle %r1,32
	r1 = le32 r1
	endle %r1,64
	r1 = le64 r1
	endbe %r1,16
	r1 = be16 r1
	endbe %r1,32
	r1 = be32 r1
	endbe %r1,64
	r1 = be64 r1
	ldxb %r1,[%r2+0xaa]
	r1 = *(u8 *)(r2 + 0xaa)
	ldxh %r1,[%r2+0xaa]
	r1 = *(u16 *)(r2 + 0xaa)
	ldxw %r1,[%r2+0xaa]
	r1 = *(u32 *)(r2 + 0xaa)
	ldxdw %r1,[%r2+0xaa]
	r1 = *(u64 *)(r2 + 0xaa)
	stxb [%r1+0xaa],%r2
	*(u8 *)(r1 + 0xaa) = r2
	stxh [%r1+0xaa],%r2
	*(u16 *)(r1 + 0xaa) = r2
	stxw [%r1+0xaa],%r2
	*(u32 *)(r1 + 0xaa) = r2
	stxdw [%r1+0xaa],%r2
	*(u64 *)(r1 + 0xaa) = r2
	ja 187
	goto 0xbb
	jeq %r1,0xaa,187
	if r1 == 0xaa goto 0xbb
	jeq %r1,%r2,187
	if r1 == r2 goto 0xbb
	jgt %r1,0xaa,187
	if r1 > 0xaa goto 0xbb
	jgt %r1,%r2,187
	if r1 > r2 goto 0xbb
	jge %r1,0xaa,187
	if r1 >= 0xaa goto 0xbb
	jge %r1,%r2,187
	if r1 >= r2 goto 0xbb
	jlt %r1,0xaa,187
	if r1 < 0xaa goto 0xbb
	jlt %r1,%r2,187
	if r1 < r2 goto 0xbb
	jle %r1,0xaa,187
	if r1 <= 0xaa goto 0xbb
	jle %r1,%r2,187
	if r1 <= r2 goto 0xbb
	jset %r1,0xaa,187
	if r1 & 0xaa goto 0xbb
	jset %r1,%r2,187
	if r1 & r2 goto 0xbb
	jne %r1,0xaa,187
	if r1 != 0xaa goto 0xbb
	jne %r1,%r2,187
	if r1 != r2 goto 0xbb
	jsgt %r1,0xaa,187
	if r1 s> 0xaa goto 0xbb
	jsgt %r1,%r2,187
	if r1 s> r2 goto 0xbb
	jsge %r1,0xaa,187
	if r1 s>= 0xaa goto 0xbb
	jsge %r1,%r2,187
	if r1 s>= r2 goto 0xbb
	jslt %r1,0xaa,187
	if r1 s< 0xaa goto 0xbb
	jslt %r1,%r2,187
	if r1 s< r2 goto 0xbb
	jsle %r1,0xaa,187
	if r1 s<= 0xaa goto 0xbb
	jsle %r1,%r2,187
	if r1 s<= r2 goto 0xbb
	call 170
	call 0xaa
	exit
	exit
	mov %r6,main - beg
        exit
	ldabsw 0xaa
	r0 = *(u32 *)skb[0xaa]
	ldindb %r7,0xaa
	r0 = *(u8 *)skb[r7 + 0xaa]
	ldabsw 0xaa
	r0 = *(u32 *)skb[0xaa]
	ldindb %r7,0xaa
	r0 = *(u8 *)skb[r7 + 0xaa]
	lddw %r3,1
	r3 =  1 ll
	lddw %r4,0xaabbccddeeff7788
	r4 =  0xaabbccddeeff7788 ll
	r5 =  0x1122334455667788 ll
	lddw %r5,0x1122334455667788
	lddw %r6,main
	r6 = main ll
	main:
	lock *(u32 *)(r1 + 0xaa) += r2
	xaddw [%r1+0xaa],%r2
	lock *(u64 *)(r1 + 0xaa) += r2
	xadddw [%r1+0xaa],%r2