On Mon, Oct 14, 2024 at 1:12 PM <pan2...@intel.com> wrote:
>
> From: Pan Li <pan2...@intel.com>
>
> Almost the same as vector unsigned integer SAT_TRUNC, try to match
> the signed version during the vector pattern matching.
>
> The below test suites are passed for this patch.
> * The rv64gcv fully regression test.
> * The x86 bootstrap test.
> * The x86 fully regression test.

OK.

Richard.

> gcc/ChangeLog:
>
>         * tree-vect-patterns.cc (gimple_signed_integer_sat_trunc): Add
>         new func decl for signed SAT_TRUNC.
>         (vect_recog_sat_trunc_pattern): Try signed match pattern for
>         the SAT_TRUNC.
>
> Signed-off-by: Pan Li <pan2...@intel.com>
> ---
>  gcc/tree-vect-patterns.cc | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc
> index 746f100a084..ce5a528141f 100644
> --- a/gcc/tree-vect-patterns.cc
> +++ b/gcc/tree-vect-patterns.cc
> @@ -4539,6 +4539,7 @@ extern bool gimple_unsigned_integer_sat_trunc (tree, 
> tree*, tree (*)(tree));
>
>  extern bool gimple_signed_integer_sat_add (tree, tree*, tree (*)(tree));
>  extern bool gimple_signed_integer_sat_sub (tree, tree*, tree (*)(tree));
> +extern bool gimple_signed_integer_sat_trunc (tree, tree*, tree (*)(tree));
>
>  static gimple *
>  vect_recog_build_binary_gimple_stmt (vec_info *vinfo, stmt_vec_info 
> stmt_info,
> @@ -4770,7 +4771,8 @@ vect_recog_sat_trunc_pattern (vec_info *vinfo, 
> stmt_vec_info stmt_vinfo,
>    tree lhs = gimple_assign_lhs (last_stmt);
>    tree otype = TREE_TYPE (lhs);
>
> -  if (gimple_unsigned_integer_sat_trunc (lhs, ops, NULL)
> +  if ((gimple_unsigned_integer_sat_trunc (lhs, ops, NULL)
> +       || gimple_signed_integer_sat_trunc (lhs, ops, NULL))
>        && type_has_mode_precision_p (otype))
>      {
>        tree itype = TREE_TYPE (ops[0]);
> --
> 2.43.0
>

Reply via email to