https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93176

--- Comment #10 from Jens Seifert <jens.seifert at de dot ibm.com> ---
Looks like no patch in the area got delivered. I did a small test for 

unsigned long long c0000FFFF00000000()
{
    return 0x0000FFFF00000000ULL;
}

gcc 13.2.0:
        li 3,0
        ori 3,3,0xffff
        sldi 3,3,32

expected:
        li 3, -1
        rldic 3, 3, 32, 16

All consecutive ones can be created with li + rldic.

The rotate eliminates the bits on the right and the clear the bits on the left
as described below:

  li t,-1
  rldic d,T,MB,63-ME

Reply via email to