1 # RUN: llvm-mc -triple bpfel -filetype=obj -o %t %s
2 # RUN: llvm-objdump --no-print-imm-hex -d -r %t | FileCheck %s
3 # RUN: llvm-objdump --no-print-imm-hex --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 w1
& w2 goto Llabel0
// BPF_JSET | BPF_X
59 if w1
& 0xff goto Llabel0
// BPF_JSET | BPF_K
60 // CHECK
: 4e
21 0d
00 00 00 00 00 if w1
& w2 goto
+13
61 // CHECK
: 46 01 0c
00 ff
00 00 00 if w1
& 255 goto
+12
63 if w0
== w1 goto Llabel0
// BPF_JEQ | BPF_X
64 if w3
!= w4 goto Llabel0
// BPF_JNE | BPF_X
65 // CHECK
: 1e
10 0b 00 00 00 00 00 if w0
== w1 goto
+11
66 // CHECK
: 5e
43 0a 00 00 00 00 00 if w3
!= w4 goto
+10
68 if w1
> w2 goto Llabel0
// BPF_JGT | BPF_X
69 if w2
>= w3 goto Llabel0
// BPF_JGE | BPF_X
70 if w4 s
> w5 goto Llabel0
// BPF_JSGT | BPF_X
71 if w5 s
>= w6 goto Llabel0
// BPF_JSGE | BPF_X
72 // CHECK
: 2e
21 09 00 00 00 00 00 if w1
> w2 goto
+9
73 // CHECK
: 3e
32 08 00 00 00 00 00 if w2
>= w3 goto
+8
74 // CHECK
: 6e
54 07 00 00 00 00 00 if w4 s
> w5 goto
+7
75 // CHECK
: 7e
65 06 00 00 00 00 00 if w5 s
>= w6 goto
+6
77 if w6
< w7 goto Llabel0
// BPF_JLT | BPF_X
78 if w7
<= w8 goto Llabel0
// BPF_JLE | BPF_X
79 if w8 s
< w9 goto Llabel0
// BPF_JSLT | BPF_X
80 if w9 s
<= w10 goto Llabel0
// BPF_JSLE | BPF_X
81 // CHECK
: ae 76 05 00 00 00 00 00 if w6
< w7 goto
+5
82 // CHECK
: be 87 04 00 00 00 00 00 if w7
<= w8 goto
+4
83 // CHECK
: ce
98 03 00 00 00 00 00 if w8 s
< w9 goto
+3
84 // CHECK
: de a9
02 00 00 00 00 00 if w9 s
<= w10 goto
+2
86 if w0
== 0 goto Llabel0
// BPF_JEQ | BPF_K
87 if w3
!= -1 goto Llabel0
// BPF_JNE | BPF_K
88 // CHECK
: 16 00 01 00 00 00 00 00 if w0
== 0 goto
+1
89 // CHECK
: 56 03 00 00 ff ff ff ff if w3
!= -1 goto
+0
92 if w1
> 64 goto Llabel0
// BPF_JGT | BPF_K
93 if w2
>= 0xffffffff goto Llabel0
// BPF_JGE | BPF_K
94 if w4 s
> 0xffffffff goto Llabel0
// BPF_JSGT | BPF_K
95 if w5 s
>= 0x7fffffff goto Llabel0
// BPF_JSGE | BPF_K
96 // CHECK
: 26 01 ff ff
40 00 00 00 if w1
> 64 goto
-1
97 // CHECK
: 36 02 fe ff ff ff ff ff if w2
>= -1 goto
-2
98 // CHECK
: 66 04 fd ff ff ff ff ff if w4 s
> -1 goto
-3
99 // CHECK
: 76 05 fc ff ff ff ff
7f if w5 s
>= 2147483647 goto
-4
101 if w6
< 0xff goto Llabel0
// BPF_JLT | BPF_K
102 if w7
<= 0xffff goto Llabel0
// BPF_JLE | BPF_K
103 if w8 s
< 0 goto Llabel0
// BPF_JSLT | BPF_K
104 if w9 s
<= -1 goto Llabel0
// BPF_JSLE | BPF_K
105 // CHECK
: a6
06 fb ff ff
00 00 00 if w6
< 255 goto
-5
106 // CHECK
: b6
07 fa ff ff ff
00 00 if w7
<= 65535 goto
-6
107 // CHECK
: c6
08 f9 ff
00 00 00 00 if w8 s
< 0 goto
-7
108 // CHECK
: d6
09 f8 ff ff ff ff ff if w9 s
<= -1 goto
-8