sparc64: Support cbcond instructions in eBPF JIT.
authorDavid S. Miller <davem@davemloft.net>
Mon, 24 Apr 2017 22:56:21 +0000 (15:56 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Apr 2017 22:56:21 +0000 (15:56 -0700)
commite3a724edeec3836ed44675a6587a6db7b6b68dbe
treecdcbe0a1744dfab53ab153dd0aff850d1746060e
parent0e43d1009d64afcc57bfb5155f1a36c395fac178
sparc64: Support cbcond instructions in eBPF JIT.

cbcond combines a compare with a branch into a single instruction.

The limitations are:

1) Only newer chips support it

2) For immediate compares we are limited to 5-bit signed immediate
   values

3) The branch displacement is limited to 10-bit signed

4) We cannot use it for JSET

Also, cbcond (unlike all other sparc control transfers) lacks a delay
slot.

Currently we don't have a useful instruction we can push into the
delay slot of normal branches.  So using cbcond pretty much always
increases code density, and is therefore a win.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/net/bpf_jit_comp_64.c