From: Richard Biener <rguenther@suse.de>
To: Juzhe-Zhong <juzhe.zhong@rivai.ai>
Cc: gcc-patches@gcc.gnu.org, richard.sandiford@arm.com
Subject: Re: [PATCH] VECT: Fix ICE on MASK_LEN_{LOAD,STORE} when no LEN recorded[PR110989]
Date: Fri, 11 Aug 2023 12:16:34 +0000 (UTC) [thread overview]
Message-ID: <nycvar.YFH.7.77.849.2308111215250.12935@jbgna.fhfr.qr> (raw)
In-Reply-To: <20230811114919.2556172-1-juzhe.zhong@rivai.ai>
On Fri, 11 Aug 2023, Juzhe-Zhong wrote:
> This patch fixes bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110989
>
> 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.
Looks reasonable. Note there is size_int (...) you could use to shorten
the code.
Thanks,
Richard.
> 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/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c | 11 +++++++++++
> gcc/tree-vect-stmts.cc | 7 ++-----
> 2 files changed, 13 insertions(+), 5 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..e0e2083d022 100644
> --- a/gcc/tree-vect-stmts.cc
> +++ b/gcc/tree-vect-stmts.cc
> @@ -9126,9 +9126,8 @@ vectorizable_store (vec_info *vinfo,
> {
> /* 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,
> + = build_int_cst (sizetype,
> TYPE_VECTOR_SUBPARTS (vectype));
> }
> if (!final_mask)
> @@ -10713,10 +10712,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,
> + = build_int_cst (sizetype,
> 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)
prev parent reply other threads:[~2023-08-11 12:16 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-11 11:49 Juzhe-Zhong
2023-08-11 12:16 ` Richard Biener [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=nycvar.YFH.7.77.849.2308111215250.12935@jbgna.fhfr.qr \
--to=rguenther@suse.de \
--cc=gcc-patches@gcc.gnu.org \
--cc=juzhe.zhong@rivai.ai \
--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).