On 11/10/20 1:14 PM, Jakub Jelinek via Gcc-patches wrote: > On Tue, Nov 10, 2020 at 08:44:32PM +0100, Stefan Kanthak wrote: >> Eric Botcazou <botca...@adacore.com> wrote: >> >>>> The implementation of the __ashlDI3(), __ashrDI3() and __lshrDI3() >>>> functions >>>> is rather bad, it yields bad machine code at least on i386 and AMD64. Since >>>> GCC knows how to shift integers twice the register size these functions can >>>> be written as one-liners. >>> These functions are precisely meant to be used when GCC cannot do that. >> On which processor(s) is GCC unable to generate code for DWtype shifts? > E.g. avr-none, msp430-elf, pdp11-aout. > And I see recursive __cmpdi2 calls on avr-none too.
FWIW, the tester only builds libgcc for avr-elf as there's no newlib port. msp430-elf builds newlib and will run the testsuite using the simulator from binutils/gdb. I don't test pdp11 at all. While the avr port may advertise DImode shifts and such, under the hood they're actually implemented as calls into hand written assembly in libgcc and probably implement an internal ABI, particularly WRT register usage. jeff