]> www.ginac.de Git - cln.git/commit
Fix ARM implementation of mulusmall_loop_up(digit, ptr, len, newdigit)...
authorRichard Kreckel <kreckel@ginac.de>
Sat, 23 Apr 2022 23:14:14 +0000 (01:14 +0200)
committerRichard Kreckel <kreckel@ginac.de>
Sat, 23 Apr 2022 23:14:14 +0000 (01:14 +0200)
commitd58e9198b54f2d89c48478f02336560c14016cae
tree6d2ad0590699f8a32c67666beb1a095819bc501a
parentdc575c8f57457ecdde4fa33dc42517070c87ba3a
Fix ARM implementation of mulusmall_loop_up(digit, ptr, len, newdigit)...

...by removing the shortcut for small 'digit' and calling
mulu32_64_vregs instead (which handles digits >= 2^16 fine).

The requirement that 'digit' be small (<= 36) is documented in cl_DS.h
but nowhere enforced. Indeed, it is clearly violated in the base-N
input function digits_to_I_baseN().

I am not sure what to do. This ARM asm seems to be the only code which
relies on small 'digit'. A future patch should either fix the input
method to guarntee that 'digit' is small or accept that it can be
large and remove the shortcut in mulusmall_loop_up for good (and also
fix the comments in cl_DS.h).
src/base/digitseq/cl_asm_arm_.cc
src/integer/conv/cl_I_from_digits.cc