https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93129
Bug ID: 93129 Summary: PPC memset not using vector instruction on >= Power8 Product: gcc Version: 8.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: jens.seifert at de dot ibm.com Target Milestone: --- Input: void memclear16(char *p) { memset(p, 0, 16); } void memFF16(char *p) { memset(p, 0xFF, 16); } Output: ._Z10memclear16Pc: LFB..0: li 9,0 std 9,0(3) std 9,8(3) blr ._Z7memFF16Pc: LFB..1: mflr 0 li 5,16 li 4,255 std 0,16(1) stdu 1,-112(1) LCFI..0: bl .memset nop addi 1,1,112 LCFI..1: ld 0,16(1) mtlr 0 LCFI..2: blr Expected output: vsplitb + vector store Unaligned vector stores only perform on >= Power8, vector stores should be used only on >= Power8. On Power7 you would need to know it is at least 8-byte aligned. vsplitb has the -16..+15 limit. On Power9 a splat for 0.255 exists.