Redude code for conditional jumps.
This commit is contained in:
parent
b35ec131f8
commit
42d876c52e
@ -425,75 +425,58 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, size_t *size)
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGT|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
TESTid(ins->k, EAX);
|
||||
JCC(JNE, JE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGT|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
TESTrd(EDX, EAX);
|
||||
JCC(JNE, JE);
|
||||
switch (ins->code) {
|
||||
case BPF_JMP|BPF_JGT|BPF_K:
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_K:
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_K:
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_K:
|
||||
TESTid(ins->k, EAX);
|
||||
JCC(JNE, JE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGT|BPF_X:
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_X:
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_X:
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_X:
|
||||
TESTrd(EDX, EAX);
|
||||
JCC(JNE, JE);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BPF_ALU|BPF_ADD|BPF_X:
|
||||
|
@ -446,75 +446,58 @@ bpf_jit_compile(struct bpf_insn *prog, u_int nins, size_t *size)
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGT|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_K:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
TESTid(ins->k, EAX);
|
||||
JCC(JNE, JE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGT|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_X:
|
||||
if (ins->jt == ins->jf) {
|
||||
JUMP(ins->jt);
|
||||
break;
|
||||
}
|
||||
TESTrd(EDX, EAX);
|
||||
JCC(JNE, JE);
|
||||
switch (ins->code) {
|
||||
case BPF_JMP|BPF_JGT|BPF_K:
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_K:
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_K:
|
||||
CMPid(ins->k, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_K:
|
||||
TESTid(ins->k, EAX);
|
||||
JCC(JNE, JE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGT|BPF_X:
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JA, JBE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JGE|BPF_X:
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JAE, JB);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JEQ|BPF_X:
|
||||
CMPrd(EDX, EAX);
|
||||
JCC(JE, JNE);
|
||||
break;
|
||||
|
||||
case BPF_JMP|BPF_JSET|BPF_X:
|
||||
TESTrd(EDX, EAX);
|
||||
JCC(JNE, JE);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case BPF_ALU|BPF_ADD|BPF_X:
|
||||
|
Loading…
Reference in New Issue
Block a user