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

            Bug ID: 106564
           Summary: PRU: Inefficient zero-extend from 32-bit to 64-bit
                    unsigned values
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dimitar at gcc dot gnu.org
  Target Milestone: ---

Compiler uses 8-bit constant loads instead of 32-bit constant load to
zero-extend 32-bit unsigned values.

uint64_t test(uint32_t a)
{
        return a;
}

test:
        mov     r0, r14
        ldi     r1.b0, (0) & 0xffff
        ldi     r1.b1, (0) & 0xffff
        ldi     r1.b2, (0) & 0xffff
        ldi     r1.b3, (0) & 0xffff
        mov     r14, r0
        mov     r15, r1
        ret

Reply via email to