Hi! On Wed, May 13, 2020 at 07:50:50AM -0500, Bill Schmidt wrote: > From: Kelvin Nilsen <kel...@gcc.gnu.org> > > Add new insns vextdu[bhw]vlx, vextddvlx, vextdu[bhw]vhx, and > vextddvhx, along with built-in access and overloaded built-in > access to these insns. > > Changes from previous patch: > * Removed the int iterators > * Created separate expansions and insns > vextractl<mode> > vextractl<mode>_internal > vextractr<mode> > vextractr<mode>_internal > * Adjusted rs6000-builtin.def entries to match the new expansion > names > > I didn't understand the comment about moving the decision making > part to the built-in handling code. All the built-in handling > does is a table-driven call to the expansions; this logic *is* > the built-in handling code. I don't see any way to simplify that.
I'll try it myself :-) > Bootstrapped and tested on powerpc64le-unknown-linux-gnu with no > regressions, using a Power9 configuration. Is this okay for > master? This is okay for trunk. Thanks! Segher > 2020-05-12 Kelvin Nilsen <kel...@gcc.gnu.org> > > * config/rs6000/altivec.h (vec_extractl): New #define. > (vec_extracth): Likewise. > * config/rs6000/altivec.md (UNSPEC_EXTRACTL): New constant. > (UNSPEC_EXTRACTR): Likewise. > (vextractl<mode>): New expansion. > (vextractl<mode>_internal): New insn. > (vextractr<mode>): New expansion. > (vextractr<mode>_internal): New insn. > * config/rs6000/rs6000-builtin.def (__builtin_altivec_vextdubvlx): > New built-in function. > (__builtin_altivec_vextduhvlx): Likewise. > (__builtin_altivec_vextduwvlx): Likewise. > (__builtin_altivec_vextddvlx): Likewise. > (__builtin_altivec_vextdubvhx): Likewise. > (__builtin_altivec_vextduhvhx): Likewise. > (__builtin_altivec_vextduwvhx): Likewise. > (__builtin_altivec_vextddvhx): Likewise. > (__builtin_vec_extractl): New overloaded built-in function. > (__builtin_vec_extracth): Likewise. > * config/rs6000/rs6000-call.c (altivec_overloaded_builtins): > Define overloaded forms of __builtin_vec_extractl and > __builtin_vec_extracth. > (builtin_function_type): Add cases to mark arguments of new > built-in functions as unsigned. > (rs6000_common_init_builtins): Add > opaque_ftype_opaque_opaque_opaque_opaque. > * config/rs6000/rs6000.md (du_or_d): New mode attribute. > * doc/extend.texi (PowerPC AltiVec Built-in Functions Available > for a Future Architecture): Add description of vec_extractl and > vec_extractr built-in functions. > > [gcc/testsuite] > > 2020-05-10 Kelvin Nilsen <kel...@gcc.gnu.org> > > * gcc.target/powerpc/vec-extracth-0.c: New. > * gcc.target/powerpc/vec-extracth-1.c: New. > * gcc.target/powerpc/vec-extracth-2.c: New. > * gcc.target/powerpc/vec-extracth-3.c: New. > * gcc.target/powerpc/vec-extracth-4.c: New. > * gcc.target/powerpc/vec-extracth-5.c: New. > * gcc.target/powerpc/vec-extracth-6.c: New. > * gcc.target/powerpc/vec-extracth-7.c: New. > * gcc.target/powerpc/vec-extracth-be-0.c: New. > * gcc.target/powerpc/vec-extracth-be-1.c: New. > * gcc.target/powerpc/vec-extracth-be-2.c: New. > * gcc.target/powerpc/vec-extracth-be-3.c: New. > * gcc.target/powerpc/vec-extractl-0.c: New. > * gcc.target/powerpc/vec-extractl-1.c: New. > * gcc.target/powerpc/vec-extractl-2.c: New. > * gcc.target/powerpc/vec-extractl-3.c: New. > * gcc.target/powerpc/vec-extractl-4.c: New. > * gcc.target/powerpc/vec-extractl-5.c: New. > * gcc.target/powerpc/vec-extractl-6.c: New. > * gcc.target/powerpc/vec-extractl-7.c: New. > * gcc.target/powerpc/vec-extractl-be-0.c: New. > * gcc.target/powerpc/vec-extractl-be-1.c: New. > * gcc.target/powerpc/vec-extractl-be-2.c: New. > * gcc.target/powerpc/vec-extractl-be-3.c: New.