• Daniel Borkmann's avatar
    bpf, x64: save several bytes by using mov over movabsq when possible · 6fe8b9c1
    Daniel Borkmann authored
    While analyzing some of the more complex BPF programs from Cilium,
    I found that LLVM generally prefers to emit LD_IMM64 instead of MOV32
    BPF instructions for loading unsigned 32-bit immediates into a
    register. Given we cannot change the current/stable LLVM versions
    that are already out there, lets optimize this case such that the
    JIT prefers to emit 'mov %eax, imm32' over 'movabsq %rax, imm64'
    whenever suitable in order to reduce the image size by 4-5 bytes per
    such load in the typical case, reducing image size on some of the
    bigger programs by up to 4%. emit_mov_imm32() and emit_mov_imm64()
    have been added as helpers.
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    6fe8b9c1
bpf_jit_comp.c 32.6 KB