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