Hi!

On Tue, Aug 07, 2018 at 02:24:58PM -0500, Will Schmidt wrote:
>    This adds support for gimple folding of vec_mergeh and vec_mergel
> for float and double types.   Support for the integral types is already
> in-tree.

> +  /* The permute_type will match the lhs for integral types.  For double and
> +     float types, the permute type needs to map to the V2 or V4 type that
> +     matches size.  */
> +  tree permute_type;
> +  if (INTEGRAL_TYPE_P (TREE_TYPE (lhs_type)))
> +    permute_type = lhs_type;
> +  else
> +    if (TREE_TYPE (lhs_type) == TREE_TYPE (V2DF_type_node))
> +      permute_type = V2DI_type_node;
> +    else if (TREE_TYPE (lhs_type) == TREE_TYPE (V4SF_type_node))
> +      permute_type = V4SI_type_node;
> +    else
> +      gcc_unreachable ();

Please write this as

  if (INTEGRAL_TYPE_P (TREE_TYPE (lhs_type)))
    permute_type = lhs_type;
  else if (TREE_TYPE (lhs_type) == TREE_TYPE (V2DF_type_node))
    permute_type = V2DI_type_node;
  else if (TREE_TYPE (lhs_type) == TREE_TYPE (V4SF_type_node))
    permute_type = V4SI_type_node;
  else
    gcc_unreachable ();

or, if you want to emphasize integer vs. float:

  if (INTEGRAL_TYPE_P (TREE_TYPE (lhs_type)))
    permute_type = lhs_type;
  else
    {
      if (TREE_TYPE (lhs_type) == TREE_TYPE (V2DF_type_node))
        permute_type = V2DI_type_node;
      else if (TREE_TYPE (lhs_type) == TREE_TYPE (V4SF_type_node))
        permute_type = V4SI_type_node;
      else
        gcc_unreachable ();
    }

Okay for trunk with that changed.  Thanks!


Segher

Reply via email to