__div64_const32(): abstract out the actual 128-bit cross product code
authorNicolas Pitre <nicolas.pitre@linaro.org>
Fri, 30 Oct 2015 21:54:56 +0000 (17:54 -0400)
committerNicolas Pitre <nicolas.pitre@linaro.org>
Mon, 16 Nov 2015 19:42:11 +0000 (14:42 -0500)
commitf682b27c57aec2f0ca8927f9bb7c267c6165ad5a
treea84d7fd54c9efe96a466617ed1c325a3e80aef3e
parent461a5e51060c93f5844113f4be9dba513cc92830
__div64_const32(): abstract out the actual 128-bit cross product code

The default C implementation for the 128-bit cross product is abstracted
into the __arch_xprod_64() macro that can be overridden to let
architectures provide their own assembly optimized implementation.

There are many advantages to an assembly version for this operation.
Carry bit handling becomes trivial, and 32-bit shifts may be achieved
simply by inverting register pairs on some architectures.  This has the
potential to be quite faster and use much fewer instructions.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
include/asm-generic/div64.h