[PATCH][ARM] optimizing _muldi3 for Thumb
Doug Kwan (關振德)
dougkwan@google.com
Wed Jul 23 19:03:00 GMT 2008
The compiler already uses very efficient code to do 64-bit
multiplication in ARM mode. In the THUMB mode, the same code cannot
be generated because the required instructions are not available. So
64-bit multiplication in THUMB is done by calling libgcc, which
implements 64-bit multiplication using 32-bit operations in C. The
code is inherently not very efficient and never uses the ARM
multiplication instruction because it is compiled for THUMB.
-Doug
2008/7/23 Nathan Froyd <froydnj@codesourcery.com>:
> On Wed, Jul 23, 2008 at 10:40:37AM -0700, Doug Kwan wrote:
>> >>> This patch adds an ARM assembly implementation for _muldi3. In
>> >>> current gcc, thumb code calls the generic version in libgcc2.c and
>> >>> generated code from C is not efficient. The thumb version is 53
>> >>> instructions long. The patch implements _muldi3 in just 6 ARM
>> >>> instructions.
>
> Obviously I'm not competent to review the patch, but out of curiousity,
> why write an assembly version rather than improve the compiler?
>
> -Nathan
>
More information about the Gcc-patches
mailing list