lib: test_mul_u64_u64_div_u64(): test both generic and arch versions
authorDavid Laight <david.laight.linux@gmail.com>
Wed, 5 Nov 2025 20:10:32 +0000 (20:10 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 20 Nov 2025 22:03:42 +0000 (14:03 -0800)
commitf0bff2eb04686f13386b2af97bc7aaa09f020f35
tree66301f3a52f32a57f5965ed2eec39e550ca7bb86
parent500db21917e8aaafd65360bfed35845d549aa3dd
lib: test_mul_u64_u64_div_u64(): test both generic and arch versions

Change the #if in div64.c so that test_mul_u64_u64_div_u64.c can compile
and test the generic version (including the 'long multiply') on
architectures (eg amd64) that define their own copy.

Test the kernel version and the locally compiled version on all arch.
Output the time taken (in ns) on the 'test completed' trace.

For reference, on my zen 5, the optimised version takes ~220ns and the
generic version ~3350ns.  Using the native multiply saves ~200ns and
adding back the ilog2() 'optimisation' test adds ~50ms.

Link: https://lkml.kernel.org/r/20251105201035.64043-7-david.laight.linux@gmail.com
Signed-off-by: David Laight <david.laight.linux@gmail.com>
Reviewed-by: Nicolas Pitre <npitre@baylibre.com>
Cc: Biju Das <biju.das.jz@bp.renesas.com>
Cc: Borislav Betkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Li RongQing <lirongqing@baidu.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleinxer <tglx@linutronix.de>
Cc: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/math/div64.c
lib/math/test_mul_u64_u64_div_u64.c