1 # RUN: llvm-mc -triple bpfel -filetype=obj -o %t %s
2 # RUN: llvm-objdump -d -r %t | FileCheck %s
3 # RUN: llvm-objdump --mattr=+alu32 -d -r %t | FileCheck %s
5 // ======== BPF_ALU Class
========
7 w0
+= w1
// BPF_ADD | BPF_X
8 w1
-= w2
// BPF_SUB | BPF_X
9 w2
*= w3
// BPF_MUL | BPF_X
10 w3
/= w4
// BPF_DIV | BPF_X
11 // CHECK
: 84 01 00 00 00 00 00 00 w1
= -w1
12 // CHECK
: 0c
10 00 00 00 00 00 00 w0
+= w1
13 // CHECK
: 1c
21 00 00 00 00 00 00 w1
-= w2
14 // CHECK
: 2c
32 00 00 00 00 00 00 w2
*= w3
15 // CHECK
: 3c
43 00 00 00 00 00 00 w3
/= w4
17 w4 |
= w5
// BPF_OR | BPF_X
18 w5
&= w6
// BPF_AND | BPF_X
19 w6
<<= w7
// BPF_LSH | BPF_X
20 w7
>>= w8
// BPF_RSH | BPF_X
21 w8 ^
= w9
// BPF_XOR | BPF_X
22 w9
= w10
// BPF_MOV | BPF_X
23 w10 s
>>= w0
// BPF_ARSH | BPF_X
24 // CHECK
: 4c
54 00 00 00 00 00 00 w4 |
= w5
25 // CHECK
: 5c
65 00 00 00 00 00 00 w5
&= w6
26 // CHECK
: 6c
76 00 00 00 00 00 00 w6
<<= w7
27 // CHECK
: 7c
87 00 00 00 00 00 00 w7
>>= w8
28 // CHECK
: ac
98 00 00 00 00 00 00 w8 ^
= w9
29 // CHECK
: bc a9
00 00 00 00 00 00 w9
= w10
30 // CHECK
: cc
0a 00 00 00 00 00 00 w10 s
>>= w0
32 w0
+= 1 // BPF_ADD | BPF_K
33 w1
-= 0x1 // BPF_SUB | BPF_K
34 w2
*= -4 // BPF_MUL | BPF_K
35 w3
/= 5 // BPF_DIV | BPF_K
36 // CHECK
: 04 00 00 00 01 00 00 00 w0
+= 1
37 // CHECK
: 14 01 00 00 01 00 00 00 w1
-= 1
38 // CHECK
: 24 02 00 00 fc ff ff ff w2
*= -4
39 // CHECK
: 34 03 00 00 05 00 00 00 w3
/= 5
41 w4 |
= 0xff // BPF_OR | BPF_K
42 w5
&= 0xFF // BPF_AND | BPF_K
43 w6
<<= 63 // BPF_LSH | BPF_K
44 w7
>>= 32 // BPF_RSH | BPF_K
45 w8 ^
= 0 // BPF_XOR | BPF_K
46 w9
= 1 // BPF_MOV | BPF_K
47 w9
= 0xffffffff // BPF_MOV | BPF_K
48 w10 s
>>= 64 // BPF_ARSH | BPF_K
49 // CHECK
: 44 04 00 00 ff
00 00 00 w4 |
= 255
50 // CHECK
: 54 05 00 00 ff
00 00 00 w5
&= 255
51 // CHECK
: 64 06 00 00 3f
00 00 00 w6
<<= 63
52 // CHECK
: 74 07 00 00 20 00 00 00 w7
>>= 32
53 // CHECK
: a4
08 00 00 00 00 00 00 w8 ^
= 0
54 // CHECK
: b4
09 00 00 01 00 00 00 w9
= 1
55 // CHECK
: b4
09 00 00 ff ff ff ff w9
= -1
56 // CHECK
: c4
0a 00 00 40 00 00 00 w10 s
>>= 64
58 if w0
== w1 goto Llabel0
// BPF_JEQ | BPF_X
59 if w3
!= w4 goto Llabel0
// BPF_JNE | BPF_X
60 // CHECK
: 1e
10 0b 00 00 00 00 00 if w0
== w1 goto
+11
61 // CHECK
: 5e
43 0a 00 00 00 00 00 if w3
!= w4 goto
+10
63 if w1
> w2 goto Llabel0
// BPF_JGT | BPF_X
64 if w2
>= w3 goto Llabel0
// BPF_JGE | BPF_X
65 if w4 s
> w5 goto Llabel0
// BPF_JSGT | BPF_X
66 if w5 s
>= w6 goto Llabel0
// BPF_JSGE | BPF_X
67 // CHECK
: 2e
21 09 00 00 00 00 00 if w1
> w2 goto
+9
68 // CHECK
: 3e
32 08 00 00 00 00 00 if w2
>= w3 goto
+8
69 // CHECK
: 6e
54 07 00 00 00 00 00 if w4 s
> w5 goto
+7
70 // CHECK
: 7e
65 06 00 00 00 00 00 if w5 s
>= w6 goto
+6
72 if w6
< w7 goto Llabel0
// BPF_JLT | BPF_X
73 if w7
<= w8 goto Llabel0
// BPF_JLE | BPF_X
74 if w8 s
< w9 goto Llabel0
// BPF_JSLT | BPF_X
75 if w9 s
<= w10 goto Llabel0
// BPF_JSLE | BPF_X
76 // CHECK
: ae 76 05 00 00 00 00 00 if w6
< w7 goto
+5
77 // CHECK
: be 87 04 00 00 00 00 00 if w7
<= w8 goto
+4
78 // CHECK
: ce
98 03 00 00 00 00 00 if w8 s
< w9 goto
+3
79 // CHECK
: de a9
02 00 00 00 00 00 if w9 s
<= w10 goto
+2
81 if w0
== 0 goto Llabel0
// BPF_JEQ | BPF_K
82 if w3
!= -1 goto Llabel0
// BPF_JNE | BPF_K
83 // CHECK
: 16 00 01 00 00 00 00 00 if w0
== 0 goto
+1
84 // CHECK
: 56 03 00 00 ff ff ff ff if w3
!= -1 goto
+0
87 if w1
> 64 goto Llabel0
// BPF_JGT | BPF_K
88 if w2
>= 0xffffffff goto Llabel0
// BPF_JGE | BPF_K
89 if w4 s
> 0xffffffff goto Llabel0
// BPF_JSGT | BPF_K
90 if w5 s
>= 0x7fffffff goto Llabel0
// BPF_JSGE | BPF_K
91 // CHECK
: 26 01 ff ff
40 00 00 00 if w1
> 64 goto
-1
92 // CHECK
: 36 02 fe ff ff ff ff ff if w2
>= -1 goto
-2
93 // CHECK
: 66 04 fd ff ff ff ff ff if w4 s
> -1 goto
-3
94 // CHECK
: 76 05 fc ff ff ff ff
7f if w5 s
>= 2147483647 goto
-4
96 if w6
< 0xff goto Llabel0
// BPF_JLT | BPF_K
97 if w7
<= 0xffff goto Llabel0
// BPF_JLE | BPF_K
98 if w8 s
< 0 goto Llabel0
// BPF_JSLT | BPF_K
99 if w9 s
<= -1 goto Llabel0
// BPF_JSLE | BPF_K
100 // CHECK
: a6
06 fb ff ff
00 00 00 if w6
< 255 goto
-5
101 // CHECK
: b6
07 fa ff ff ff
00 00 if w7
<= 65535 goto
-6
102 // CHECK
: c6
08 f9 ff
00 00 00 00 if w8 s
< 0 goto
-7
103 // CHECK
: d6
09 f8 ff ff ff ff ff if w9 s
<= -1 goto
-8