Originated from https://gcc.gnu.org/pipermail/gcc-patches/2020-September/554240.html with patch split and some refinement per review comments.
Patch of IFN VEC_SET for ARRAY_REF(VIEW_CONVERT_EXPR) is committed, this patch set enables expanding IFN VEC_SET for Power9 and Power8 with specfic instruction sequences. Xionghu Luo (4): rs6000: Change rs6000_expand_vector_set param rs6000: Support variable insert and Expand vec_insert in expander [PR79251] rs6000: Enable vec_insert for P8 with rs6000_expand_vector_set_var_p8 rs6000: Update testcases' instruction count gcc/config/rs6000/rs6000-c.c | 44 +++-- gcc/config/rs6000/rs6000-call.c | 2 +- gcc/config/rs6000/rs6000-protos.h | 3 +- gcc/config/rs6000/rs6000.c | 181 +++++++++++++++++- gcc/config/rs6000/vector.md | 4 +- .../powerpc/fold-vec-insert-char-p8.c | 8 +- .../powerpc/fold-vec-insert-char-p9.c | 12 +- .../powerpc/fold-vec-insert-double.c | 11 +- .../powerpc/fold-vec-insert-float-p8.c | 6 +- .../powerpc/fold-vec-insert-float-p9.c | 10 +- .../powerpc/fold-vec-insert-int-p8.c | 6 +- .../powerpc/fold-vec-insert-int-p9.c | 11 +- .../powerpc/fold-vec-insert-longlong.c | 10 +- .../powerpc/fold-vec-insert-short-p8.c | 6 +- .../powerpc/fold-vec-insert-short-p9.c | 8 +- .../gcc.target/powerpc/pr79251-run.c | 28 +++ gcc/testsuite/gcc.target/powerpc/pr79251.h | 19 ++ gcc/testsuite/gcc.target/powerpc/pr79251.p8.c | 17 ++ gcc/testsuite/gcc.target/powerpc/pr79251.p9.c | 18 ++ .../gcc.target/powerpc/vsx-builtin-7.c | 4 +- 20 files changed, 337 insertions(+), 71 deletions(-) create mode 100644 gcc/testsuite/gcc.target/powerpc/pr79251-run.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr79251.h create mode 100644 gcc/testsuite/gcc.target/powerpc/pr79251.p8.c create mode 100644 gcc/testsuite/gcc.target/powerpc/pr79251.p9.c -- 2.25.1