diff options
author | Daniel Borkmann <daniel@iogearbox.net> | 2018-02-23 19:08:03 -0500 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-02-24 01:50:00 -0500 |
commit | 23d191a82c133c31bb85aa4b4b26851cd4a4b4ac (patch) | |
tree | c4c37f7cb5c524480eb73fa995d86b6dae9b0a98 | |
parent | 0869175220b339b81de48872c8198c3ed75782e3 (diff) |
bpf: add various jit test cases
Add few test cases that check the rnu-time results under JIT.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
-rw-r--r-- | tools/testing/selftests/bpf/test_verifier.c | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c index 2971ba2829ac..c987d3a2426f 100644 --- a/tools/testing/selftests/bpf/test_verifier.c +++ b/tools/testing/selftests/bpf/test_verifier.c | |||
@@ -11140,6 +11140,95 @@ static struct bpf_test tests[] = { | |||
11140 | .result = REJECT, | 11140 | .result = REJECT, |
11141 | .prog_type = BPF_PROG_TYPE_TRACEPOINT, | 11141 | .prog_type = BPF_PROG_TYPE_TRACEPOINT, |
11142 | }, | 11142 | }, |
11143 | { | ||
11144 | "jit: lsh, rsh, arsh by 1", | ||
11145 | .insns = { | ||
11146 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11147 | BPF_MOV64_IMM(BPF_REG_1, 0xff), | ||
11148 | BPF_ALU64_IMM(BPF_LSH, BPF_REG_1, 1), | ||
11149 | BPF_ALU32_IMM(BPF_LSH, BPF_REG_1, 1), | ||
11150 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x3fc, 1), | ||
11151 | BPF_EXIT_INSN(), | ||
11152 | BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 1), | ||
11153 | BPF_ALU32_IMM(BPF_RSH, BPF_REG_1, 1), | ||
11154 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0xff, 1), | ||
11155 | BPF_EXIT_INSN(), | ||
11156 | BPF_ALU64_IMM(BPF_ARSH, BPF_REG_1, 1), | ||
11157 | BPF_JMP_IMM(BPF_JEQ, BPF_REG_1, 0x7f, 1), | ||
11158 | BPF_EXIT_INSN(), | ||
11159 | BPF_MOV64_IMM(BPF_REG_0, 2), | ||
11160 | BPF_EXIT_INSN(), | ||
11161 | }, | ||
11162 | .result = ACCEPT, | ||
11163 | .retval = 2, | ||
11164 | }, | ||
11165 | { | ||
11166 | "jit: mov32 for ldimm64, 1", | ||
11167 | .insns = { | ||
11168 | BPF_MOV64_IMM(BPF_REG_0, 2), | ||
11169 | BPF_LD_IMM64(BPF_REG_1, 0xfeffffffffffffffULL), | ||
11170 | BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 32), | ||
11171 | BPF_LD_IMM64(BPF_REG_2, 0xfeffffffULL), | ||
11172 | BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1), | ||
11173 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11174 | BPF_EXIT_INSN(), | ||
11175 | }, | ||
11176 | .result = ACCEPT, | ||
11177 | .retval = 2, | ||
11178 | }, | ||
11179 | { | ||
11180 | "jit: mov32 for ldimm64, 2", | ||
11181 | .insns = { | ||
11182 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11183 | BPF_LD_IMM64(BPF_REG_1, 0x1ffffffffULL), | ||
11184 | BPF_LD_IMM64(BPF_REG_2, 0xffffffffULL), | ||
11185 | BPF_JMP_REG(BPF_JEQ, BPF_REG_1, BPF_REG_2, 1), | ||
11186 | BPF_MOV64_IMM(BPF_REG_0, 2), | ||
11187 | BPF_EXIT_INSN(), | ||
11188 | }, | ||
11189 | .result = ACCEPT, | ||
11190 | .retval = 2, | ||
11191 | }, | ||
11192 | { | ||
11193 | "jit: various mul tests", | ||
11194 | .insns = { | ||
11195 | BPF_LD_IMM64(BPF_REG_2, 0xeeff0d413122ULL), | ||
11196 | BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL), | ||
11197 | BPF_LD_IMM64(BPF_REG_1, 0xefefefULL), | ||
11198 | BPF_ALU64_REG(BPF_MUL, BPF_REG_0, BPF_REG_1), | ||
11199 | BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2), | ||
11200 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11201 | BPF_EXIT_INSN(), | ||
11202 | BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL), | ||
11203 | BPF_ALU64_REG(BPF_MUL, BPF_REG_3, BPF_REG_1), | ||
11204 | BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2), | ||
11205 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11206 | BPF_EXIT_INSN(), | ||
11207 | BPF_MOV32_REG(BPF_REG_2, BPF_REG_2), | ||
11208 | BPF_LD_IMM64(BPF_REG_0, 0xfefefeULL), | ||
11209 | BPF_ALU32_REG(BPF_MUL, BPF_REG_0, BPF_REG_1), | ||
11210 | BPF_JMP_REG(BPF_JEQ, BPF_REG_0, BPF_REG_2, 2), | ||
11211 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11212 | BPF_EXIT_INSN(), | ||
11213 | BPF_LD_IMM64(BPF_REG_3, 0xfefefeULL), | ||
11214 | BPF_ALU32_REG(BPF_MUL, BPF_REG_3, BPF_REG_1), | ||
11215 | BPF_JMP_REG(BPF_JEQ, BPF_REG_3, BPF_REG_2, 2), | ||
11216 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11217 | BPF_EXIT_INSN(), | ||
11218 | BPF_LD_IMM64(BPF_REG_0, 0x952a7bbcULL), | ||
11219 | BPF_LD_IMM64(BPF_REG_1, 0xfefefeULL), | ||
11220 | BPF_LD_IMM64(BPF_REG_2, 0xeeff0d413122ULL), | ||
11221 | BPF_ALU32_REG(BPF_MUL, BPF_REG_2, BPF_REG_1), | ||
11222 | BPF_JMP_REG(BPF_JEQ, BPF_REG_2, BPF_REG_0, 2), | ||
11223 | BPF_MOV64_IMM(BPF_REG_0, 1), | ||
11224 | BPF_EXIT_INSN(), | ||
11225 | BPF_MOV64_IMM(BPF_REG_0, 2), | ||
11226 | BPF_EXIT_INSN(), | ||
11227 | }, | ||
11228 | .result = ACCEPT, | ||
11229 | .retval = 2, | ||
11230 | }, | ||
11231 | |||
11143 | }; | 11232 | }; |
11144 | 11233 | ||
11145 | static int probe_filter_length(const struct bpf_insn *fp) | 11234 | static int probe_filter_length(const struct bpf_insn *fp) |