On Thu, Jul 18, 2019 at 04:12:48PM +0100, Richard Earnshaw (lists) wrote: > > > On 17/07/2019 18:00, Segher Boessenkool wrote: > >On Wed, Jul 17, 2019 at 12:54:32PM +0200, Jakub Jelinek wrote: > >>On Wed, Jul 17, 2019 at 12:37:59PM +0200, Richard Biener wrote: > >>>I'm not sure if it makes sense to have both LROTATE_EXPR and > >>>RROTATE_EXPR on the GIMPLE level then (that CPUs only > >>>support one direction is natural though). So maybe simply get > >>>rid of one? Its semantics are also nowhere documented > >> > >>A lot of targets support both, > > > >Of all the linux targets, we have: > > > >No rotate: > > alpha microblaze riscv sparc > > > >Both directions: > > aarch64 c6x ia64 m68k nios2 parisc sh x86 xtensa > > AArch64 is Right only.
This is whether a port has any rotate resp. rotatert in recog, which generates HAVE_rotate and HAVE_rotatert in insn-config.h . If the hardware can only do right rotates you should either handle immediate left rotates everywhere as well, or avoid using left rotates in define_expand and define_insn. Segher