Commit d148134b authored by Joe Perches's avatar Joe Perches Committed by David S. Miller

x86: bpf_jit_comp: Reduce is_ereg() code size

Use the (1 << reg) & mask trick to reduce code size.

x86-64 size difference -O2 without profiling for various
gcc versions:

$ size arch/x86/net/bpf_jit_comp.o*
   text    data     bss     dec     hex filename
   9266       4       0    9270    2436 arch/x86/net/bpf_jit_comp.o.4.4.new
  10042       4       0   10046    273e arch/x86/net/bpf_jit_comp.o.4.4.old
   9109       4       0    9113    2399 arch/x86/net/bpf_jit_comp.o.4.6.new
   9717       4       0    9721    25f9 arch/x86/net/bpf_jit_comp.o.4.6.old
   8789       4       0    8793    2259 arch/x86/net/bpf_jit_comp.o.4.7.new
  10245       4       0   10249    2809 arch/x86/net/bpf_jit_comp.o.4.7.old
   9671       4       0    9675    25cb arch/x86/net/bpf_jit_comp.o.4.9.new
  10679       4       0   10683    29bb arch/x86/net/bpf_jit_comp.o.4.9.old
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Tested-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 57d743a3
...@@ -135,11 +135,11 @@ static const int reg2hex[] = { ...@@ -135,11 +135,11 @@ static const int reg2hex[] = {
*/ */
static inline bool is_ereg(u32 reg) static inline bool is_ereg(u32 reg)
{ {
if (reg == BPF_REG_5 || reg == AUX_REG || return (1 << reg) & (BIT(BPF_REG_5) |
(reg >= BPF_REG_7 && reg <= BPF_REG_9)) BIT(AUX_REG) |
return true; BIT(BPF_REG_7) |
else BIT(BPF_REG_8) |
return false; BIT(BPF_REG_9));
} }
/* add modifiers if 'reg' maps to x64 registers r8..r15 */ /* add modifiers if 'reg' maps to x64 registers r8..r15 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment