Hi!

On Mon, Jun 01, 2020 at 09:14:40AM -0700, Carl Love wrote:
>         * config/rs6000/altivec.h: Add define vec_insertl, vec_inserth.

        * config/rs6000/altivec.h (vec_insertl, vec_inserth): New defines.

>       * config/rs6000/rs6000-builtin.def (BU_FUTURE_V_3): Add definition for
>       VINSERTGPRBL, VINSERTGPRHL, VINSERTGPRWL, VINSERTGPRDL, VINSERTVPRBL,
>       VINSERTVPRHL, VINSERTVPRWL, VINSERTGPRBR, VINSERTGPRHR, VINSERTGPRWR,
>       VINSERTGPRDR, VINSERTVPRBR, VINSERTVPRHR, VINSERTVPRWR.

        * config/rs6000/rs6000-builtin.def (VINSERTGPRBL, VINSERTGPRHL,
        VINSERTGPRWL, VINSERTGPRDL, VINSERTVPRBL, VINSERTVPRHL, VINSERTVPRWL,
        VINSERTGPRBR, VINSERTGPRHR, VINSERTGPRWR, VINSERTGPRDR, VINSERTVPRBR,
        VINSERTVPRHR, VINSERTVPRWR): New builtins.

>       (BU_FUTURE_OVERLOAD_3): Add definition for INSERTL, INSERTH.

        (INSERTL, INSERTH): New builtins.

>       * config/rs6000/rs6000-call.c (FUTURE_BUILTIN_VEC_INSERTL): Add 
> overloaded
>       argument declarations.
>       (FUTURE_BUILTIN_VEC_INSERTH):  Add overloaded   argument declarations.

Maybe just "New overloads." for both?  (That latter one has whitespace
problems).

>       (builtin_function_type): Add case entries for 
> FUTURE_BUILTIN_VINSERTGPRBL,
>       FUTURE_BUILTIN_VINSERTGPRHL, FUTURE_BUILTIN_VINSERTGPRWL,
>       FUTURE_BUILTIN_VINSERTGPRDL, FUTURE_BUILTIN_VINSERTVPRBL,
>       FUTURE_BUILTIN_VINSERTVPRHL, FUTURE_BUILTIN_VINSERTVPRWL.

builtin_function_type is not the name of what you changed (FUTURE* is).

> +(define_expand "vinsertvr_<mode>"
> +  [(set (match_operand:VI2 0 "altivec_register_operand")
> +       (unspec:VI2 [(match_operand:VI2 1 "altivec_register_operand")
> +                    (match_operand:VI2 2 "altivec_register_operand")
> +                    (match_operand:SI 3 "register_operand" "r")]
> +                UNSPEC_INSERTR))]
> +  "TARGET_FUTURE"
> +{
> +  if (BYTES_BIG_ENDIAN)
> +     emit_insn (gen_vinsertvr_internal_<mode> (operands[0], operands[3],
> +                                               operands[1], operands[2]));
> +   else
> +     emit_insn (gen_vinsertvr_internal_<mode> (operands[0], operands[3],
> +                                               operands[1], operands[2]));
> +   DONE;
> +})

The two cases (BE and LE) are now exactly identical?  Same for all
similar cases.

Okay for trunk with those nits taken care of.  Thanks!


Segher

Reply via email to