[Patch, AVR]: Better 32=16*16 widening multiplication

Denis Chertykov chertykov@gmail.com
Tue Jun 28 14:14:00 GMT 2011


2011/6/28 Georg-Johann Lay <avr@gjlay.de>:
> This implements "mulhisi3" and "umulhisi3" widening multiplication
> insns if AVR_HAVE_MUL.
>
> I chose the interface as r25:r22 = r19:r18 * r21:r20 which is ok
> because only avr-gcc BE will call respective __* support functions in
> libgcc.
>
> Tested without regression and hand-tested assembler code.
>
> Johann
>
>        * config/avr/t-avr (LIB1ASMFUNCS): Add _mulhisi3, _umulhisi3,
>        _xmulhisi3_exit.
>        * config/avr/libgcc.S (_xmulhisi3_exit): New Function.
>        (__mulhisi3): Optimize if have MUL*.  Use XJMP instead of rjmp.
>        (__umulhisi3): Ditto.
>        * config/avr/avr.md (mulhisi3): New insn expender.
>        (umulhisi3): New insn expender.
>        (*mulhisi3_call): New insn.
>        (*umulhisi3_call): New insn.
>

Approved.

Denis.



More information about the Gcc-patches mailing list