public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Li, Pan2" <pan2.li@intel.com>
To: Richard Biener <rguenther@suse.de>, Juzhe-Zhong <juzhe.zhong@rivai.ai>
Cc: "gcc-patches@gcc.gnu.org" <gcc-patches@gcc.gnu.org>,
	"richard.sandiford@arm.com" <richard.sandiford@arm.com>
Subject: RE: [PATCH V2] VECT: Fix ICE on MASK_LEN_{LOAD,STORE} when no LEN recorded[PR110989]
Date: Fri, 11 Aug 2023 21:51:08 +0000	[thread overview]
Message-ID: <MW5PR11MB5908E39C137EB2D4CF823652A910A@MW5PR11MB5908.namprd11.prod.outlook.com> (raw)
In-Reply-To: <nycvar.YFH.7.77.849.2308111356540.12935@jbgna.fhfr.qr>

Committed, thanks Richard.

Pan

-----Original Message-----
From: Gcc-patches <gcc-patches-bounces+pan2.li=intel.com@gcc.gnu.org> On Behalf Of Richard Biener via Gcc-patches
Sent: Friday, August 11, 2023 9:57 PM
To: Juzhe-Zhong <juzhe.zhong@rivai.ai>
Cc: gcc-patches@gcc.gnu.org; richard.sandiford@arm.com
Subject: Re: [PATCH V2] VECT: Fix ICE on MASK_LEN_{LOAD,STORE} when no LEN recorded[PR110989]

On Fri, 11 Aug 2023, Juzhe-Zhong wrote:

> This ICE is caused because of this situation:
> 
> mask__49.21_99 = vect__17.19_96 == { 0.0, ... };
> ...
> vect__6.24_107 = .MASK_LEN_LOAD (vectp.22_105, 32B, mask__49.21_99, POLY_INT_CST [2, 2], 0);
> 
> The MASK_LEN_LOAD is using real MASK which is produced by the EQ comparison wheras the LEN
> is the dummy LEN which is the vectorization factor.
> 
> In this situation, we didn't enter 'vect_record_loop_len' since there is no LEN loop control.
> Then 'LOOP_VINFO_RGROUP_IV_TYPE' is not suitable type for 'build_int_cst' used for producing
> LEN argument for 'MASK_LEN_LOAD', so use sizetype instead which is perfectly matching
> RVV length requirement.

OK.

>         PR middle-end/110989
> 
> gcc/ChangeLog:
> 
>         * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype.
>         (vectorizable_load): Ditto.
> 
> gcc/testsuite/ChangeLog:
> 
>         * gcc.target/riscv/rvv/autovec/pr110989.c: New test.
> 
> ---
>  .../gcc.target/riscv/rvv/autovec/pr110989.c          | 11 +++++++++++
>  gcc/tree-vect-stmts.cc                               | 12 +++---------
>  2 files changed, 14 insertions(+), 9 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c
> 
> diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c
> new file mode 100644
> index 00000000000..cf3b247e604
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +/* { dg-options "-march=rv64gcv -mabi=lp64d --param=riscv-autovec-preference=scalable -Ofast" } */
> +
> +int a, b, c;
> +double *d;
> +void e() {
> +  double f;
> +  for (; c; c++, d--)
> +    f = *d ?: *(&a + c);
> +  b = f;
> +}
> diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc
> index 398fbe945e5..89607a98f99 100644
> --- a/gcc/tree-vect-stmts.cc
> +++ b/gcc/tree-vect-stmts.cc
> @@ -9125,11 +9125,8 @@ vectorizable_store (vec_info *vinfo,
>  		  if (!final_len)
>  		    {
>  		      /* Pass VF value to 'len' argument of
> -		         MASK_LEN_STORE if LOOP_LENS is invalid.  */
> -		      tree iv_type = LOOP_VINFO_RGROUP_IV_TYPE (loop_vinfo);
> -		      final_len
> -			= build_int_cst (iv_type,
> -					 TYPE_VECTOR_SUBPARTS (vectype));
> +			 MASK_LEN_STORE if LOOP_LENS is invalid.  */
> +		      final_len = size_int (TYPE_VECTOR_SUBPARTS (vectype));
>  		    }
>  		  if (!final_mask)
>  		    {
> @@ -10713,11 +10710,8 @@ vectorizable_load (vec_info *vinfo,
>  			  {
>  			    /* Pass VF value to 'len' argument of
>  			       MASK_LEN_LOAD if LOOP_LENS is invalid.  */
> -			    tree iv_type
> -			      = LOOP_VINFO_RGROUP_IV_TYPE (loop_vinfo);
>  			    final_len
> -			      = build_int_cst (iv_type,
> -					       TYPE_VECTOR_SUBPARTS (vectype));
> +			      = size_int (TYPE_VECTOR_SUBPARTS (vectype));
>  			  }
>  			if (!final_mask)
>  			  {
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

      reply	other threads:[~2023-08-11 21:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-11 13:55 Juzhe-Zhong
2023-08-11 13:56 ` Richard Biener
2023-08-11 21:51   ` Li, Pan2 [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=MW5PR11MB5908E39C137EB2D4CF823652A910A@MW5PR11MB5908.namprd11.prod.outlook.com \
    --to=pan2.li@intel.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=juzhe.zhong@rivai.ai \
    --cc=rguenther@suse.de \
    --cc=richard.sandiford@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).