aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Borkmann <daniel@iogearbox.net>2018-02-23 19:08:03 -0500
committerAlexei Starovoitov <ast@kernel.org>2018-02-24 01:50:00 -0500
commit23d191a82c133c31bb85aa4b4b26851cd4a4b4ac (patch)
treec4c37f7cb5c524480eb73fa995d86b6dae9b0a98
parent0869175220b339b81de48872c8198c3ed75782e3 (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.c89
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
11145static int probe_filter_length(const struct bpf_insn *fp) 11234static int probe_filter_length(const struct bpf_insn *fp)