MSP430: Add 64-bit hardware multiply support
commitbf7b94d40739428fda3d798b4add833054f7d012
authorJozef Lawrynowicz <jozef.l@mittosystems.com>
Sun, 15 Nov 2020 21:03:14 +0000 (15 21:03 +0000)
committerJozef Lawrynowicz <jozef.l@mittosystems.com>
Wed, 18 Nov 2020 11:05:27 +0000 (18 11:05 +0000)
treeaf1a2afd2aaa765b753f3b65ead1c8d815516618
parente045b85836091f2461263a3c3f4f1972b3753f9d
MSP430: Add 64-bit hardware multiply support

Hardware multipliers that support widening 32-bit multiplication can
be used to perform a 64-bit * 64-bit multiplication more efficiently
than a software implementation.

The following equation is used to perform 64-bit multiplication for
devices with "32bit" or "f5series" hardware multiply versions:

  64bit_result = (low32_op0 * lop32_op1)
    + ((low32_op0 * high32_op1) << 32)
       + ((high32_op0 * low32_op1) << 32)

libgcc/ChangeLog:

* config/msp430/lib2hw_mul.S (mult64_hw): New.
(if MUL_32): Use mult64_hw for __muldi3.
(if MUL_F5): Use mult64_hw for __muldi3.
* config/msp430/lib2mul.c (__muldi3): New.
* config/msp430/t-msp430 (LIB2FUNCS_EXCLUDE): Define.
libgcc/config/msp430/lib2hw_mul.S
libgcc/config/msp430/lib2mul.c
libgcc/config/msp430/t-msp430