https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99293
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-15 branch has been updated by Michael Meissner <[email protected]>: https://gcc.gnu.org/g:9aabf931dde5120767b8ee60652489b6db95f41e commit r15-11526-g9aabf931dde5120767b8ee60652489b6db95f41e Author: Michael Meissner <[email protected]> Date: Thu Aug 27 23:47:09 2026 -0400 Backport PR target/99293 We had optimizations for splat of a vector extract for the other vector types, but we missed having one for V2DI and V2DF. This patch adds a combiner insn to do this optimization. In looking at the source, we had similar optimizations for V4SI and V4SF extract and splats, but we missed doing V2DI/V2DF. Without the patch for the code: vector long long splat_dup_l_0 (vector long long v) { return __builtin_vec_splats (__builtin_vec_extract (v, 0)); } the compiler generates (on a little endian power9): splat_dup_l_0: mfvsrld 9,34 mtvsrdd 34,9,9 blr Now it generates: splat_dup_l_0: xxpermdi 34,34,34,3 blr This change was backported from the changes checked into the master branch on 2026-08-03. 2026-08-27 Michael Meissner <[email protected]> gcc/ PR target/99293 * config/rs6000/vsx.md (vsx_splat_extract_<mode>): New insn. gcc/testsuite/ PR target/99293 * gcc.target/powerpc/pr99293.c: New test. * gcc.target/powerpc/builtins-1.c: Update instruction count.
