https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106708
Bug ID: 106708 Summary: [rs6000] 64bit constant generation with oris xoris Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: guojiufu at gcc dot gnu.org Target Milestone: --- For code: t.c void foo (long *arg) { *arg++ = 0x98765432ULL; *arg++ = 0xffffffff7cdeab55ULL; *arg++ = 0xffffffff65430000ULL; } gcc -O2 -S t.c lis 10,0xffff lis 8,0x9876 ori 10,10,0x7cde lis 9,0xffff ori 8,8,0x5432 sldi 10,10,16 ori 9,9,0x6543 rldicl 8,8,0,32 ori 10,10,0xab55 sldi 9,9,16 Below sequences would be better: li 8,21554 li 10,-21675 lis 9,0xe543 oris 8,8,0x9876 xoris 10,10,0x8321 xoris 9,9,0x8000