https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125303
Drea Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Blocks| |88670
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2026-05-13
Keywords| |missed-optimization
Severity|normal |enhancement
--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.
The difference comes from who does the expansion/combining.
So vec_shuf is handled by vectorizer SLP pass.
While vec_xor_shuf is handled by forwprop1 and veclowering pass.
The veclowering pass does not handle:
_15 = VEC_PERM_EXPR <_2, _2, { 4, 0, 5, 1, 6, 2, 7, 3 }>;
in a partial wise and only handles scalar wise at this stage. Nobody has
improved it yet to try to use partial vector sizes.
Referenced Bugs:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88670
[Bug 88670] [meta-bug] generic vector extension issues