[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20180626135924.0050ab10@cakuba.netronome.com>
Date: Tue, 26 Jun 2018 13:59:24 -0700
From: Jakub Kicinski <jakub.kicinski@...ronome.com>
To: Jiong Wang <jiong.wang@...ronome.com>
Cc: alexei.starovoitov@...il.com, daniel@...earbox.net,
oss-drivers@...ronome.com, netdev@...r.kernel.org
Subject: Re: [PATCH bpf-next 7/7] nfp: bpf: migrate to advanced reciprocal
divide in reciprocal_div.h
On Sun, 24 Jun 2018 20:54:21 -0700, Jakub Kicinski wrote:
> + * NOTE: because we are using "reciprocal_value_adv" which doesn't
> + * support dividend with MSB set, so we need to JIT separate NFP
> + * sequence to handle such case. It could be a simple sequence if there
> + * is conditional move, however there isn't for NFP. So, we don't bother
> + * generating compare-if-set-branch sequence by rejecting the program
> + * straight away when the u32 dividend has MSB set. Divide by such a
> + * large constant would be rare in practice. Also, the programmer could
> + * simply rewrite it as "result = divisor >= the_const".
Thinking about this again, can we just use carry bit? The code may end
up shorter than the explanation why we don't support that case :P
immed[c, 0]
alu[--, a, -, b]
alu[c, c, +carry, 0]
Should be equivalent to:
c = a >= b
(Thanks to Edwin for double-checking the carry semantics.)
Powered by blists - more mailing lists