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.

Reply via email to