Author: jkim
Date: Fri Oct 21 06:09:30 2016
New Revision: 307705
URL: https://svnweb.freebsd.org/changeset/base/307705

Log:
  Redude code for conditional jumps.

Modified:
  head/sys/amd64/amd64/bpf_jit_machdep.c
  head/sys/i386/i386/bpf_jit_machdep.c

Modified: head/sys/amd64/amd64/bpf_jit_machdep.c
==============================================================================
--- head/sys/amd64/amd64/bpf_jit_machdep.c      Fri Oct 21 06:06:54 2016        
(r307704)
+++ head/sys/amd64/amd64/bpf_jit_machdep.c      Fri Oct 21 06:09:30 2016        
(r307705)
@@ -425,75 +425,58 @@ bpf_jit_compile(struct bpf_insn *prog, u
                                break;
 
                        case BPF_JMP|BPF_JGT|BPF_K:
+                       case BPF_JMP|BPF_JGE|BPF_K:
+                       case BPF_JMP|BPF_JEQ|BPF_K:
+                       case BPF_JMP|BPF_JSET|BPF_K:
+                       case BPF_JMP|BPF_JGT|BPF_X:
+                       case BPF_JMP|BPF_JGE|BPF_X:
+                       case BPF_JMP|BPF_JEQ|BPF_X:
+                       case BPF_JMP|BPF_JSET|BPF_X:
                                if (ins->jt == ins->jf) {
                                        JUMP(ins->jt);
                                        break;
                                }
-                               CMPid(ins->k, EAX);
-                               JCC(JA, JBE);
-                               break;
+                               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:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JGE|BPF_K:
+                                       CMPid(ins->k, EAX);
+                                       JCC(JAE, JB);
                                        break;
-                               }
-                               CMPid(ins->k, EAX);
-                               JCC(JAE, JB);
-                               break;
 
-                       case BPF_JMP|BPF_JEQ|BPF_K:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JEQ|BPF_K:
+                                       CMPid(ins->k, EAX);
+                                       JCC(JE, JNE);
                                        break;
-                               }
-                               CMPid(ins->k, EAX);
-                               JCC(JE, JNE);
-                               break;
 
-                       case BPF_JMP|BPF_JSET|BPF_K:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JSET|BPF_K:
+                                       TESTid(ins->k, EAX);
+                                       JCC(JNE, JE);
                                        break;
-                               }
-                               TESTid(ins->k, EAX);
-                               JCC(JNE, JE);
-                               break;
 
-                       case BPF_JMP|BPF_JGT|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JGT|BPF_X:
+                                       CMPrd(EDX, EAX);
+                                       JCC(JA, JBE);
                                        break;
-                               }
-                               CMPrd(EDX, EAX);
-                               JCC(JA, JBE);
-                               break;
 
-                       case BPF_JMP|BPF_JGE|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JGE|BPF_X:
+                                       CMPrd(EDX, EAX);
+                                       JCC(JAE, JB);
                                        break;
-                               }
-                               CMPrd(EDX, EAX);
-                               JCC(JAE, JB);
-                               break;
 
-                       case BPF_JMP|BPF_JEQ|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JEQ|BPF_X:
+                                       CMPrd(EDX, EAX);
+                                       JCC(JE, JNE);
                                        break;
-                               }
-                               CMPrd(EDX, EAX);
-                               JCC(JE, JNE);
-                               break;
 
-                       case BPF_JMP|BPF_JSET|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JSET|BPF_X:
+                                       TESTrd(EDX, EAX);
+                                       JCC(JNE, JE);
                                        break;
                                }
-                               TESTrd(EDX, EAX);
-                               JCC(JNE, JE);
                                break;
 
                        case BPF_ALU|BPF_ADD|BPF_X:

Modified: head/sys/i386/i386/bpf_jit_machdep.c
==============================================================================
--- head/sys/i386/i386/bpf_jit_machdep.c        Fri Oct 21 06:06:54 2016        
(r307704)
+++ head/sys/i386/i386/bpf_jit_machdep.c        Fri Oct 21 06:09:30 2016        
(r307705)
@@ -446,75 +446,58 @@ bpf_jit_compile(struct bpf_insn *prog, u
                                break;
 
                        case BPF_JMP|BPF_JGT|BPF_K:
+                       case BPF_JMP|BPF_JGE|BPF_K:
+                       case BPF_JMP|BPF_JEQ|BPF_K:
+                       case BPF_JMP|BPF_JSET|BPF_K:
+                       case BPF_JMP|BPF_JGT|BPF_X:
+                       case BPF_JMP|BPF_JGE|BPF_X:
+                       case BPF_JMP|BPF_JEQ|BPF_X:
+                       case BPF_JMP|BPF_JSET|BPF_X:
                                if (ins->jt == ins->jf) {
                                        JUMP(ins->jt);
                                        break;
                                }
-                               CMPid(ins->k, EAX);
-                               JCC(JA, JBE);
-                               break;
+                               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:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JGE|BPF_K:
+                                       CMPid(ins->k, EAX);
+                                       JCC(JAE, JB);
                                        break;
-                               }
-                               CMPid(ins->k, EAX);
-                               JCC(JAE, JB);
-                               break;
 
-                       case BPF_JMP|BPF_JEQ|BPF_K:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JEQ|BPF_K:
+                                       CMPid(ins->k, EAX);
+                                       JCC(JE, JNE);
                                        break;
-                               }
-                               CMPid(ins->k, EAX);
-                               JCC(JE, JNE);
-                               break;
 
-                       case BPF_JMP|BPF_JSET|BPF_K:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JSET|BPF_K:
+                                       TESTid(ins->k, EAX);
+                                       JCC(JNE, JE);
                                        break;
-                               }
-                               TESTid(ins->k, EAX);
-                               JCC(JNE, JE);
-                               break;
 
-                       case BPF_JMP|BPF_JGT|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JGT|BPF_X:
+                                       CMPrd(EDX, EAX);
+                                       JCC(JA, JBE);
                                        break;
-                               }
-                               CMPrd(EDX, EAX);
-                               JCC(JA, JBE);
-                               break;
 
-                       case BPF_JMP|BPF_JGE|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JGE|BPF_X:
+                                       CMPrd(EDX, EAX);
+                                       JCC(JAE, JB);
                                        break;
-                               }
-                               CMPrd(EDX, EAX);
-                               JCC(JAE, JB);
-                               break;
 
-                       case BPF_JMP|BPF_JEQ|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JEQ|BPF_X:
+                                       CMPrd(EDX, EAX);
+                                       JCC(JE, JNE);
                                        break;
-                               }
-                               CMPrd(EDX, EAX);
-                               JCC(JE, JNE);
-                               break;
 
-                       case BPF_JMP|BPF_JSET|BPF_X:
-                               if (ins->jt == ins->jf) {
-                                       JUMP(ins->jt);
+                               case BPF_JMP|BPF_JSET|BPF_X:
+                                       TESTrd(EDX, EAX);
+                                       JCC(JNE, JE);
                                        break;
                                }
-                               TESTrd(EDX, EAX);
-                               JCC(JNE, JE);
                                break;
 
                        case BPF_ALU|BPF_ADD|BPF_X:
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to