[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / MC / BPF / insn-unit-32.s
blobd7cb9a62098bc9195ebc317fabc1199c0fd5f0e9
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 ========
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
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
86 Llabel0 :
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