Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / tools / testing / selftests / bpf / verifier / jit.c
1 {
2         "jit: lsh, rsh, arsh by 1",
3         .insns = {
4         BPF_MOV64_IMM(BPF_REG_0, 1),
5         BPF_MOV64_IMM(BPF_REG_1, 0xff),
6         BPF_ALU64_IMM(BPF_LSH, BPF_REG_1, 1),
7         BPF_ALU32_IMM(BPF_LSH, BPF_REG_1, 1),
8         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x3fc, 1),
9         BPF_EXIT_INSN(),
10         BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 1),
11         BPF_ALU32_IMM(BPF_RSH, BPF_REG_1, 1),
12         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0xff, 1),
13         BPF_EXIT_INSN(),
14         BPF_ALU64_IMM(BPF_ARSH, BPF_REG_1, 1),
15         BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x7f, 1),
16         BPF_EXIT_INSN(),
17         BPF_MOV64_IMM(BPF_REG_0, 2),
18         BPF_EXIT_INSN(),
19         },
20         .result = ACCEPT,
21         .retval = 2,
22 },
23 {
24         "jit: mov32 for ldimm64, 1",
25         .insns = {
26         BPF_MOV64_IMM(BPF_REG_0, 2),
27         BPF_LD_IMM64(BPF_REG_1, 0xfeffffffffffffffULL),
28         BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 32),
29         BPF_LD_IMM64(BPF_REG_2, 0xfeffffffULL),
30         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
31         BPF_MOV64_IMM(BPF_REG_0, 1),
32         BPF_EXIT_INSN(),
33         },
34         .result = ACCEPT,
35         .retval = 2,
36 },
37 {
38         "jit: mov32 for ldimm64, 2",
39         .insns = {
40         BPF_MOV64_IMM(BPF_REG_0, 1),
41         BPF_LD_IMM64(BPF_REG_1, 0x1ffffffffULL),
42         BPF_LD_IMM64(BPF_REG_2, 0xffffffffULL),
43         BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1),
44         BPF_MOV64_IMM(BPF_REG_0, 2),
45         BPF_EXIT_INSN(),
46         },
47         .result = ACCEPT,
48         .retval = 2,
49 },
50 {
51         "jit: various mul tests",
52         .insns = {
53         BPF_LD_IMM64(BPF_REG_2, 0xeeff0d413122ULL),
54         BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL),
55         BPF_LD_IMM64(BPF_REG_1, 0xefefefULL),
56         BPF_ALU64_REG(BPF_MUL, BPF_REG_0, BPF_REG_1),
57         BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2),
58         BPF_MOV64_IMM(BPF_REG_0, 1),
59         BPF_EXIT_INSN(),
60         BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL),
61         BPF_ALU64_REG(BPF_MUL, BPF_REG_3, BPF_REG_1),
62         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
63         BPF_MOV64_IMM(BPF_REG_0, 1),
64         BPF_EXIT_INSN(),
65         BPF_MOV32_REG(BPF_REG_2, BPF_REG_2),
66         BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL),
67         BPF_ALU32_REG(BPF_MUL, BPF_REG_0, BPF_REG_1),
68         BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2),
69         BPF_MOV64_IMM(BPF_REG_0, 1),
70         BPF_EXIT_INSN(),
71         BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL),
72         BPF_ALU32_REG(BPF_MUL, BPF_REG_3, BPF_REG_1),
73         BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2),
74         BPF_MOV64_IMM(BPF_REG_0, 1),
75         BPF_EXIT_INSN(),
76         BPF_LD_IMM64(BPF_REG_0, 0x952a7bbcULL),
77         BPF_LD_IMM64(BPF_REG_1, 0xfefefeULL),
78         BPF_LD_IMM64(BPF_REG_2, 0xeeff0d413122ULL),
79         BPF_ALU32_REG(BPF_MUL, BPF_REG_2, BPF_REG_1),
80         BPF_JMP_REG(BPF_JEQ, BPF_REG_2, BPF_REG_0, 2),
81         BPF_MOV64_IMM(BPF_REG_0, 1),
82         BPF_EXIT_INSN(),
83         BPF_MOV64_IMM(BPF_REG_0, 2),
84         BPF_EXIT_INSN(),
85         },
86         .result = ACCEPT,
87         .retval = 2,
88 },
89 {
90         "jit: jsgt, jslt",
91         .insns = {
92         BPF_LD_IMM64(BPF_REG_1, 0x80000000ULL),
93         BPF_LD_IMM64(BPF_REG_2, 0x0ULL),
94         BPF_JMP_REG(BPF_JSGT, BPF_REG_1, BPF_REG_2, 2),
95         BPF_MOV64_IMM(BPF_REG_0, 1),
96         BPF_EXIT_INSN(),
97
98         BPF_JMP_REG(BPF_JSLT, BPF_REG_2, BPF_REG_1, 2),
99         BPF_MOV64_IMM(BPF_REG_0, 1),
100         BPF_EXIT_INSN(),
101
102         BPF_MOV64_IMM(BPF_REG_0, 2),
103         BPF_EXIT_INSN(),
104         },
105         .result = ACCEPT,
106         .retval = 2,
107 },