rs6000: Vector string isolate instructions
authorKelvin Nilsen <kelvin@gcc.gnu.org>
Mon, 11 May 2020 21:33:19 +0000 (16:33 -0500)
committerBill Schmidt <wschmidt@linux.ibm.com>
Mon, 11 May 2020 21:33:19 +0000 (16:33 -0500)
commit89ce32902a674598e969a7b30980537ee23079b7
tree90e4f71bb647b750cd0224e646b5376850f6f5d4
parent840ac85ced0695fefecee433327e4298b4adb20a
rs6000: Vector string isolate instructions

Adds new instructions vstribr, vstrihr, vstribl, and vstrihl, with
overloaded built-in support.

[gcc]

2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* config/rs6000/altivec.h (vec_strir): New #define.
(vec_stril): Likewise.
(vec_strir_p): Likewise.
(vec_stril_p): Likewise.
* config/rs6000/altivec.md (UNSPEC_VSTRIR): New constant.
(UNSPEC_VSTRIL): Likewise.
(vstrir_<mode>): New expansion.
(vstrir_code_<mode>): New insn.
(vstrir_p_<mode>): New expansion.
(vstrir_p_code_<mode>): New insn.
(vstril_<mode>): New expansion.
(vstril_code_<mode>): New insn.
(vstril_p_<mode>): New expansion.
(vstril_p_code_<mode>): New insn.
* config/rs6000/rs6000-builtin.def (__builtin_altivec_vstribr):
New built-in function.
(__builtin_altivec_vstrihr): Likewise.
(__builtin_altivec_vstribl): Likewise.
(__builtin_altivec_vstrihl): Likewise.
(__builtin_altivec_vstribr_p): Likewise.
(__builtin_altivec_vstrihr_p): Likewise.
(__builtin_altivec_vstribl_p): Likewise.
(__builtin_altivec_vstrihl_p): Likewise.
(__builtin_vec_strir): New overloaded built-in function.
(__builtin_vec_stril): Likewise.
(__builtin_vec_strir_p): Likewise.
(__builtin_vec_stril_p): Likewise.
* config/rs6000/rs6000-call.c (altivec_overloaded_builtins):
Define overloaded forms of __builtin_vec_strir,
__builtin_vec_stril, __builtin_vec_strir_p, and
__builtin_vec_stril_p.
* doc/extend.texi (PowerPC AltiVec Built-in Functions Available
for a Future Architecture): Add description of vec_stril,
vec_stril_p, vec_strir, and vec_strir_p built-in functions.

[gcc]

2020-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>

* gcc.target/powerpc/vec-stril-0.c: New.
* gcc.target/powerpc/vec-stril-1.c: New.
* gcc.target/powerpc/vec-stril-10.c: New.
* gcc.target/powerpc/vec-stril-11.c: New.
* gcc.target/powerpc/vec-stril-12.c: New.
* gcc.target/powerpc/vec-stril-13.c: New.
* gcc.target/powerpc/vec-stril-14.c: New.
* gcc.target/powerpc/vec-stril-15.c: New.
* gcc.target/powerpc/vec-stril-16.c: New.
* gcc.target/powerpc/vec-stril-17.c: New.
* gcc.target/powerpc/vec-stril-18.c: New.
* gcc.target/powerpc/vec-stril-19.c: New.
* gcc.target/powerpc/vec-stril-2.c: New.
* gcc.target/powerpc/vec-stril-20.c: New.
* gcc.target/powerpc/vec-stril-21.c: New.
* gcc.target/powerpc/vec-stril-22.c: New.
* gcc.target/powerpc/vec-stril-23.c: New.
* gcc.target/powerpc/vec-stril-3.c: New.
* gcc.target/powerpc/vec-stril-4.c: New.
* gcc.target/powerpc/vec-stril-5.c: New.
* gcc.target/powerpc/vec-stril-6.c: New.
* gcc.target/powerpc/vec-stril-7.c: New.
* gcc.target/powerpc/vec-stril-8.c: New.
* gcc.target/powerpc/vec-stril-9.c: New.
* gcc.target/powerpc/vec-stril_p-0.c: New.
* gcc.target/powerpc/vec-stril_p-1.c: New.
* gcc.target/powerpc/vec-stril_p-10.c: New.
* gcc.target/powerpc/vec-stril_p-11.c: New.
* gcc.target/powerpc/vec-stril_p-2.c: New.
* gcc.target/powerpc/vec-stril_p-3.c: New.
* gcc.target/powerpc/vec-stril_p-4.c: New.
* gcc.target/powerpc/vec-stril_p-5.c: New.
* gcc.target/powerpc/vec-stril_p-6.c: New.
* gcc.target/powerpc/vec-stril_p-7.c: New.
* gcc.target/powerpc/vec-stril_p-8.c: New.
* gcc.target/powerpc/vec-stril_p-9.c: New.
* gcc.target/powerpc/vec-strir-0.c: New.
* gcc.target/powerpc/vec-strir-1.c: New.
* gcc.target/powerpc/vec-strir-10.c: New.
* gcc.target/powerpc/vec-strir-11.c: New.
* gcc.target/powerpc/vec-strir-12.c: New.
* gcc.target/powerpc/vec-strir-13.c: New.
* gcc.target/powerpc/vec-strir-14.c: New.
* gcc.target/powerpc/vec-strir-15.c: New.
* gcc.target/powerpc/vec-strir-16.c: New.
* gcc.target/powerpc/vec-strir-17.c: New.
* gcc.target/powerpc/vec-strir-18.c: New.
* gcc.target/powerpc/vec-strir-19.c: New.
* gcc.target/powerpc/vec-strir-2.c: New.
* gcc.target/powerpc/vec-strir-20.c: New.
* gcc.target/powerpc/vec-strir-21.c: New.
* gcc.target/powerpc/vec-strir-22.c: New.
* gcc.target/powerpc/vec-strir-23.c: New.
* gcc.target/powerpc/vec-strir-3.c: New.
* gcc.target/powerpc/vec-strir-4.c: New.
* gcc.target/powerpc/vec-strir-5.c: New.
* gcc.target/powerpc/vec-strir-6.c: New.
* gcc.target/powerpc/vec-strir-7.c: New.
* gcc.target/powerpc/vec-strir-8.c: New.
* gcc.target/powerpc/vec-strir-9.c: New.
* gcc.target/powerpc/vec-strir_p-0.c: New.
* gcc.target/powerpc/vec-strir_p-1.c: New.
* gcc.target/powerpc/vec-strir_p-10.c: New.
* gcc.target/powerpc/vec-strir_p-11.c: New.
* gcc.target/powerpc/vec-strir_p-2.c: New.
* gcc.target/powerpc/vec-strir_p-3.c: New.
* gcc.target/powerpc/vec-strir_p-4.c: New.
* gcc.target/powerpc/vec-strir_p-5.c: New.
* gcc.target/powerpc/vec-strir_p-6.c: New.
* gcc.target/powerpc/vec-strir_p-7.c: New.
* gcc.target/powerpc/vec-strir_p-8.c: New.
* gcc.target/powerpc/vec-strir_p-9.c: New.
79 files changed:
gcc/ChangeLog
gcc/config/rs6000/altivec.h
gcc/config/rs6000/altivec.md
gcc/config/rs6000/rs6000-builtin.def
gcc/config/rs6000/rs6000-call.c
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/vec-stril-0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-13.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-14.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-18.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-19.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-20.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-21.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-22.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-23.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-stril_p-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-13.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-14.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-17.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-18.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-19.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-20.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-21.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-22.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-23.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir-9.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-0.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/vec-strir_p-9.c [new file with mode: 0644]