提交 d148134b 编写于 作者: J Joe Perches 提交者: 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: NJoe Perches <joe@perches.com>
Tested-by: NAlexei Starovoitov <ast@plumgrid.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册