• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
4
5// ======== BPF_ALU Class ========
6  w1 = -w1    // BPF_NEG
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
16
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
31
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
40
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
57