[{"id":3681606,"web_url":"http://patchwork.ozlabs.org/comment/3681606/","msgid":"<34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>","list_archive_url":null,"date":"2026-04-23T18:00:37","subject":"Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","submitter":{"id":4338,"url":"http://patchwork.ozlabs.org/api/people/4338/","name":"Richard Biener","email":"rguenther@suse.de"},"content":"> Am 23.04.2026 um 17:52 schrieb Pengfei Li <Pengfei.Li2@arm.com>:\n> \n> ﻿When vectorizing loops with VLA modes, GCC may insert runtime checks\n> that compare poly_int values against constants. Examples include the\n> skip_vector check for loops with known niters and the pagesize check\n> for loops with speculative loads.\n> \n> Since these poly_int values are bounded by the target's maximum vector\n> length, their maximum possible values can be determined at compile time.\n> If the upper bound does not exceed the constant used in the check, the\n> check can be omitted.\n> \n> This patch uses estimated_poly_value with POLY_VALUE_MAX to find the\n> upper bound and inserts these checks only when required.\n> \n> Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.\n\nShouldn’t this be done in general constant folding of relations?\n\n> gcc/ChangeLog:\n> \n>    * tree-vect-loop-manip.cc (vect_do_peeling): Avoid unnecessary\n>    skip_vector checks using estimated_poly_value.\n>    (vect_create_cond_for_vla_spec_read): Make the pagesize check\n>    conditional using estimated_poly_value.\n> \n> gcc/testsuite/ChangeLog:\n> \n>    * gcc.target/aarch64/sve/vect-poly-int-cmp_1.c: New test.\n>    * gcc.target/aarch64/sve/vect-poly-int-cmp_2.c: New test.\n> ---\n> .../aarch64/sve/vect-poly-int-cmp_1.c          | 14 ++++++++++++++\n> .../aarch64/sve/vect-poly-int-cmp_2.c          | 14 ++++++++++++++\n> gcc/tree-vect-loop-manip.cc                    | 18 ++++++++++++------\n> 3 files changed, 40 insertions(+), 6 deletions(-)\n> create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> \n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> new file mode 100644\n> index 00000000000..03ab37e7c4b\n> --- /dev/null\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> @@ -0,0 +1,14 @@\n> +/* { dg-do compile } */\n> +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-preference=sve-only -fdump-tree-vect\" } */\n> +\n> +void large_cst_niters (char *a)\n> +{\n> + for (int i = 0; i < 5000; i++)\n> + {\n> +   if (a[i] > 0)\n> +     return;\n> +   a[i]++;\n> + }\n> +}\n> +\n> +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 0 \"vect\" } } */\n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> new file mode 100644\n> index 00000000000..2a2af31b783\n> --- /dev/null\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> @@ -0,0 +1,14 @@\n> +/* { dg-do compile } */\n> +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-preference=sve-only -fdump-tree-vect\" } */\n> +\n> +void small_cst_niters (char *a)\n> +{\n> + for (int i = 0; i < 30; i++)\n> + {\n> +   if (a[i] > 0)\n> +     return;\n> +   a[i]++;\n> + }\n> +}\n> +\n> +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 1 \"vect\" } } */\n> diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc\n> index cd1ea746ae4..9271675dc6d 100644\n> --- a/gcc/tree-vect-loop-manip.cc\n> +++ b/gcc/tree-vect-loop-manip.cc\n> @@ -3380,8 +3380,9 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree niters, tree nitersm1,\n>   bool skip_vector = false;\n>   if (!uncounted_p)\n>     skip_vector = (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)\n> -           ? maybe_lt (LOOP_VINFO_INT_NITERS (loop_vinfo),\n> -                   bound_prolog + bound_epilog)\n> +           ? ((HOST_WIDE_INT) LOOP_VINFO_INT_NITERS (loop_vinfo)\n> +              < estimated_poly_value (bound_prolog + bound_epilog,\n> +                          POLY_VALUE_MAX))\n>           : (!LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING (loop_vinfo)\n>              || vect_epilogues));\n> \n> @@ -4162,10 +4163,15 @@ vect_create_cond_for_vla_spec_read (loop_vec_info loop_vinfo, tree *cond_expr)\n>                       amount_and_expr, cst_ul_zero);\n>   chain_cond_expr (cond_expr, powof2_cond_expr);\n> \n> -  /* Create an expression of \"amount <= cst_ul_pagesize\".  */\n> -  tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> -                     amount, cst_ul_pagesize);\n> -  chain_cond_expr (cond_expr, pagesize_cond_expr);\n> +  /* If the max possible read amount may exceed the minimum page size, create\n> +     an expression of \"amount <= cst_ul_pagesize\".  */\n> +  if (estimated_poly_value (read_amount_poly, POLY_VALUE_MAX)\n> +      > (HOST_WIDE_INT) param_min_pagesize)\n> +    {\n> +      tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> +                         amount, cst_ul_pagesize);\n> +      chain_cond_expr (cond_expr, pagesize_cond_expr);\n> +    }\n> }\n> \n> /* If LOOP_VINFO_CHECK_UNEQUAL_ADDRS contains <A1, B1>, ..., <An, Bn>,\n> --\n> 2.43.0\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=bKGg39C3;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=h8KLpGVG;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=bKGg39C3;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=h8KLpGVG;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=bKGg39C3;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=h8KLpGVG;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=bKGg39C3;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=h8KLpGVG","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=suse.de","sourceware.org; spf=pass smtp.mailfrom=suse.de","server2.sourceware.org;\n arc=none smtp.remote-ip=195.135.223.130","smtp-out1.suse.de;\n\tnone"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1kRm2qwyz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 04:01:23 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 22EF74BAE7CF\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 18:01:21 +0000 (GMT)","from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])\n by sourceware.org (Postfix) with ESMTPS id 438004BA9021\n for <gcc-patches@gcc.gnu.org>; Thu, 23 Apr 2026 18:00:49 +0000 (GMT)","from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out1.suse.de (Postfix) with ESMTPS id CA9E56A882;\n Thu, 23 Apr 2026 18:00:47 +0000 (UTC)","from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BCBA2593A3;\n Thu, 23 Apr 2026 18:00:47 +0000 (UTC)","from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])\n by imap1.dmz-prg2.suse.org with ESMTPSA id O6YQLk9e6mncPgAAD6G6ig\n (envelope-from <rguenther@suse.de>); Thu, 23 Apr 2026 18:00:47 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 22EF74BAE7CF","OpenDKIM Filter v2.11.0 sourceware.org 438004BA9021"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 438004BA9021","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 438004BA9021","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776967249; cv=none;\n b=smB1j0QgH7rirIUuJyY0N1/A0uy8Rc7L1HWaYxUqalzny9wCUi8xNANjHEhtUIgiGA87fu4MRYlxsnFBfuudCL4UKrhpef+MA5sLlhLkBB/9XtSjaIHT2DSykgR23lYRcOpxCTKQYXa9Zw/iak6cPtkOA5AIc+Vr1VXPV30oNtU=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776967249; c=relaxed/simple;\n bh=mT/GvSHeEsIIBfAOL6wl2Hpdw1wzqk9bpG9cOsxfoDE=;\n h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From:\n Mime-Version:Subject:Date:Message-Id:To;\n b=dmI3Lu2R6INJ+B0uysltGWzGRLurYo2Xdrpwq2ZNzQIVsBpM617xbUqwPFAYgWQg58mfQVl0Js/UcUHyuzXvTz4OYiFqwAjmKpQ5nGhI1k0Dkk26nL5Wa7JNkSJbc/dEMwUnkuRIRcMb6QSkuvqg8WFflIlqLFpZeFP0Qyw/nqQ=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1776967247;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ZheKAaca+2zffH7RqADuLz6GxKKg6vrzSlEpGsHWMIQ=;\n b=bKGg39C3jlvjQa3RKB09myv0ABiyA779wav1xbeomNTwE8E4f+3Y2IB6g/HtLoNJFPLS2j\n gcYwZhhFEBbzdqR6+2UuIitSMp0a64ZR/KRrDu+eEALdYbMGaNW2X7HdbbNGVh/TLhiD0m\n 4qwFSWW2DEmlcoyRqzwsxck+yGzteRI=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1776967247;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ZheKAaca+2zffH7RqADuLz6GxKKg6vrzSlEpGsHWMIQ=;\n b=h8KLpGVGM29aMfCEoipnWktfJqP1ZY0xUibLm/fSXy+ddiJ3NdjOtFLJ717WYJeEWpHYSR\n KwMZbAo53Vkys/DQ==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1776967247;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ZheKAaca+2zffH7RqADuLz6GxKKg6vrzSlEpGsHWMIQ=;\n b=bKGg39C3jlvjQa3RKB09myv0ABiyA779wav1xbeomNTwE8E4f+3Y2IB6g/HtLoNJFPLS2j\n gcYwZhhFEBbzdqR6+2UuIitSMp0a64ZR/KRrDu+eEALdYbMGaNW2X7HdbbNGVh/TLhiD0m\n 4qwFSWW2DEmlcoyRqzwsxck+yGzteRI=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1776967247;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=ZheKAaca+2zffH7RqADuLz6GxKKg6vrzSlEpGsHWMIQ=;\n b=h8KLpGVGM29aMfCEoipnWktfJqP1ZY0xUibLm/fSXy+ddiJ3NdjOtFLJ717WYJeEWpHYSR\n KwMZbAo53Vkys/DQ=="],"Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","From":"Richard Biener <rguenther@suse.de>","Mime-Version":"1.0 (1.0)","Subject":"Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Date":"Thu, 23 Apr 2026 20:00:37 +0200","Message-Id":"<34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>","References":"<20260423154930.183274-1-Pengfei.Li2@arm.com>","Cc":"gcc-patches@gcc.gnu.org, Tamar.Christina@arm.com, rdapp.gcc@gmail.com,\n Pengfei Li <Pengfei.Li2@arm.com>","In-Reply-To":"<20260423154930.183274-1-Pengfei.Li2@arm.com>","To":"Pengfei Li <Pengfei.Li2@arm.com>","X-Mailer":"iPhone Mail (23E261)","X-Spamd-Result":"default: False [-2.80 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n SUSPICIOUS_RECIPS(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000];\n NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain];\n FREEMAIL_ENVRCPT(0.00)[gmail.com]; RCVD_VIA_SMTP_AUTH(0.00)[];\n ARC_NA(0.00)[]; APPLE_IOS_MAILER_COMMON(0.00)[];\n MIME_TRACE(0.00)[0:+]; FUZZY_RATELIMITED(0.00)[rspamd.com];\n TO_DN_SOME(0.00)[]; TAGGED_RCPT(0.00)[];\n MID_RHS_MATCH_FROM(0.00)[]; RCPT_COUNT_FIVE(0.00)[5];\n FROM_HAS_DN(0.00)[];\n FREEMAIL_CC(0.00)[gcc.gnu.org,arm.com,gmail.com];\n RCVD_TLS_ALL(0.00)[]; FROM_EQ_ENVFROM(0.00)[];\n RCVD_COUNT_TWO(0.00)[2]; TO_MATCH_ENVRCPT_ALL(0.00)[];\n DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo, arm.com:email,\n suse.de:mid]","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3681615,"web_url":"http://patchwork.ozlabs.org/comment/3681615/","msgid":"<VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2026-04-23T18:22:27","subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"> -----Original Message-----\n> From: Richard Biener <rguenther@suse.de>\n> Sent: 23 April 2026 19:01\n> To: Pengfei Li <Pengfei.Li2@arm.com>\n> Cc: gcc-patches@gcc.gnu.org; Tamar Christina <Tamar.Christina@arm.com>;\n> rdapp.gcc@gmail.com; Pengfei Li <Pengfei.Li2@arm.com>\n> Subject: Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> preheader\n> \n> \n> \n> > Am 23.04.2026 um 17:52 schrieb Pengfei Li <Pengfei.Li2@arm.com>:\n> >\n> > ﻿When vectorizing loops with VLA modes, GCC may insert runtime checks\n> > that compare poly_int values against constants. Examples include the\n> > skip_vector check for loops with known niters and the pagesize check\n> > for loops with speculative loads.\n> >\n> > Since these poly_int values are bounded by the target's maximum vector\n> > length, their maximum possible values can be determined at compile time.\n> > If the upper bound does not exceed the constant used in the check, the\n> > check can be omitted.\n> >\n> > This patch uses estimated_poly_value with POLY_VALUE_MAX to find the\n> > upper bound and inserts these checks only when required.\n> >\n> > Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.\n> \n> Shouldn’t this be done in general constant folding of relations?\n\nAside from that, I'm not even sure it's correct. So I'm asking around.\n\nThe POLY_VALUE_MAX was never intended to be used for correctness only\ncosting purposes.  This Is relevant because GCC can vectorize loops in SSVE\n(Streaming SVE mode) and the Arm Architectural reference Manual says in\nSection B1.4.1 that \n\n\"There is no requirement for the Maximum implemented Streaming SVE vector length to be greater than or equal to the\nMaximum Non-streaming implemented SVE vector length.\"\n\nWhich to me indicates that SSVE can be larger than SVE VL, and indeed this\nis the case today, where SSVE has a larger VL than SVE on current cores.\n\nIt's unclear to me if it's allowed that SSVE VL can exceed SVE the architecture\ndoes not actually state this, in which case this patch would be wrong.\n\nSo I'm asking around for clarifications on this, while I do, can we please\nhold off on approving this.\n\nThanks,\nTamar\n> \n> > gcc/ChangeLog:\n> >\n> >    * tree-vect-loop-manip.cc (vect_do_peeling): Avoid unnecessary\n> >    skip_vector checks using estimated_poly_value.\n> >    (vect_create_cond_for_vla_spec_read): Make the pagesize check\n> >    conditional using estimated_poly_value.\n> >\n> > gcc/testsuite/ChangeLog:\n> >\n> >    * gcc.target/aarch64/sve/vect-poly-int-cmp_1.c: New test.\n> >    * gcc.target/aarch64/sve/vect-poly-int-cmp_2.c: New test.\n> > ---\n> > .../aarch64/sve/vect-poly-int-cmp_1.c          | 14 ++++++++++++++\n> > .../aarch64/sve/vect-poly-int-cmp_2.c          | 14 ++++++++++++++\n> > gcc/tree-vect-loop-manip.cc                    | 18 ++++++++++++------\n> > 3 files changed, 40 insertions(+), 6 deletions(-)\n> > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-\n> cmp_1.c\n> > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-\n> cmp_2.c\n> >\n> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > new file mode 100644\n> > index 00000000000..03ab37e7c4b\n> > --- /dev/null\n> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > @@ -0,0 +1,14 @@\n> > +/* { dg-do compile } */\n> > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> preference=sve-only -fdump-tree-vect\" } */\n> > +\n> > +void large_cst_niters (char *a)\n> > +{\n> > + for (int i = 0; i < 5000; i++)\n> > + {\n> > +   if (a[i] > 0)\n> > +     return;\n> > +   a[i]++;\n> > + }\n> > +}\n> > +\n> > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 0 \"vect\" }\n> } */\n> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > new file mode 100644\n> > index 00000000000..2a2af31b783\n> > --- /dev/null\n> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > @@ -0,0 +1,14 @@\n> > +/* { dg-do compile } */\n> > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> preference=sve-only -fdump-tree-vect\" } */\n> > +\n> > +void small_cst_niters (char *a)\n> > +{\n> > + for (int i = 0; i < 30; i++)\n> > + {\n> > +   if (a[i] > 0)\n> > +     return;\n> > +   a[i]++;\n> > + }\n> > +}\n> > +\n> > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 1 \"vect\" }\n> } */\n> > diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc\n> > index cd1ea746ae4..9271675dc6d 100644\n> > --- a/gcc/tree-vect-loop-manip.cc\n> > +++ b/gcc/tree-vect-loop-manip.cc\n> > @@ -3380,8 +3380,9 @@ vect_do_peeling (loop_vec_info loop_vinfo, tree\n> niters, tree nitersm1,\n> >   bool skip_vector = false;\n> >   if (!uncounted_p)\n> >     skip_vector = (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)\n> > -           ? maybe_lt (LOOP_VINFO_INT_NITERS (loop_vinfo),\n> > -                   bound_prolog + bound_epilog)\n> > +           ? ((HOST_WIDE_INT) LOOP_VINFO_INT_NITERS (loop_vinfo)\n> > +              < estimated_poly_value (bound_prolog + bound_epilog,\n> > +                          POLY_VALUE_MAX))\n> >           : (!LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING (loop_vinfo)\n> >              || vect_epilogues));\n> >\n> > @@ -4162,10 +4163,15 @@ vect_create_cond_for_vla_spec_read\n> (loop_vec_info loop_vinfo, tree *cond_expr)\n> >                       amount_and_expr, cst_ul_zero);\n> >   chain_cond_expr (cond_expr, powof2_cond_expr);\n> >\n> > -  /* Create an expression of \"amount <= cst_ul_pagesize\".  */\n> > -  tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> > -                     amount, cst_ul_pagesize);\n> > -  chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > +  /* If the max possible read amount may exceed the minimum page size,\n> create\n> > +     an expression of \"amount <= cst_ul_pagesize\".  */\n> > +  if (estimated_poly_value (read_amount_poly, POLY_VALUE_MAX)\n> > +      > (HOST_WIDE_INT) param_min_pagesize)\n> > +    {\n> > +      tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> > +                         amount, cst_ul_pagesize);\n> > +      chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > +    }\n> > }\n> >\n> > /* If LOOP_VINFO_CHECK_UNEQUAL_ADDRS contains <A1, B1>, ..., <An,\n> Bn>,\n> > --\n> > 2.43.0\n> >","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=XH7A0SB5;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=XH7A0SB5;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=XH7A0SB5;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=XH7A0SB5","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=40.107.159.45"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g1ky41HqKz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 04:24:10 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id B21AC4BAD166\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 23 Apr 2026 18:24:07 +0000 (GMT)","from OSPPR02CU001.outbound.protection.outlook.com\n (mail-norwayeastazon11013045.outbound.protection.outlook.com [40.107.159.45])\n by sourceware.org (Postfix) with ESMTPS id 226D74BABF1D\n for <gcc-patches@gcc.gnu.org>; Thu, 23 Apr 2026 18:23:37 +0000 (GMT)","from AS4P192CA0002.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::9)\n by PA6PR08MB10492.eurprd08.prod.outlook.com (2603:10a6:102:3d5::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr\n 2026 18:23:31 +0000","from AM3PEPF0000A799.eurprd04.prod.outlook.com\n (2603:10a6:20b:5da:cafe::fc) by AS4P192CA0002.outlook.office365.com\n (2603:10a6:20b:5da::9) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.21 via Frontend Transport; Thu,\n 23 Apr 2026 18:23:31 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n AM3PEPF0000A799.mail.protection.outlook.com (10.167.16.104) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18\n via Frontend Transport; Thu, 23 Apr 2026 18:23:31 +0000","from VI0PR08MB10392.eurprd08.prod.outlook.com\n (2603:10a6:800:210::10) by AS8PR08MB6390.eurprd08.prod.outlook.com\n (2603:10a6:20b:31b::24) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.21; Thu, 23 Apr\n 2026 18:22:28 +0000","from VI0PR08MB10392.eurprd08.prod.outlook.com\n ([fe80::cd7c:e19a:2072:75cc]) by VI0PR08MB10392.eurprd08.prod.outlook.com\n ([fe80::cd7c:e19a:2072:75cc%4]) with mapi id 15.20.9846.016; Thu, 23 Apr 2026\n 18:22:27 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org B21AC4BAD166","OpenDKIM Filter v2.11.0 sourceware.org 226D74BABF1D"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 226D74BABF1D","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 226D74BABF1D","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1776968617; cv=pass;\n b=CSfsFDSkf3JCx/L0xGtPo9noI0N8Q9JRRNZ3EeHyQbb8BbdxZo1l8/YYck53dQFuaPqcKZ3t2S/6eu186COg6792s9iH+3qHoos5VbCPZcFNCtR1o47fFZ7/zUBnuqKcbyHtsNs19k8KAkQoTwER/MiMQYV812BTVoBR7LI1A3E=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=Orzn0LPSXBmOIRrNuPLMuD4dTULCVNHDD08gTNBjqbgatIxb0MXIsfgKd5vg+idr8n8/fs6LljheIZB+hBtBdD7kFifLBcuMwrnHI73Av5JCbsGYvcE5XY4B69+ksgikp75bt6yaijPdGKKUtq4E8op4bOG2I7/fLMrqoqIwNUFYq2HLz5/m/zdw8zr3/fmjIpNLFAvZZikBNPjCPwHlNO4SUBsCovVb3sNL6NwVgx6jFhchC+jKCtyryW3pR+BwB1ZbpOtQqMrc/UTUvpLm4Z1ngEtFGPL7Wcv88M0c5uj1E03lMIt1UayvQVIPvb/FBGsIFvV1KilnBRD/hI2FZQ==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=IMdjy/F4sUMm1oxgeqMF2O91HN4yWBpyS87roFpmyqYhdS4IkwCVZT7qqnbbOxj2VuEk5jruiijLzuyFALOdySd6vcFa/e0RvfPf20rRH/hI4bBP8G/HD3qWqgNW+EgYgJAhK/rdwOqJXL2QYJG0m11EdH8IALdvMVU5WujucFiP8SPiS6M646uyexiZ9QEVyCNQ/j8Y8JxVK1CxTAw1Ql0udmupjLmsnuSsK7GnM+rpCU8g213zzpM0qCn0qh0jDnSfGHa7VrTu3T6D/Vr6rFzftzUyl65uRHSXocoDQHfGag8pefg5/m5Pg4nlJux/ow7bhZ5hh1yzCiv2hyGD/A=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776968617; c=relaxed/simple;\n bh=GnXTNHROzMAujE9vnwKFgb3wkcMKabfPEd3F6dkIAl0=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=hS+oR1najyQ9roWIITJTICRtvCeI/RNz3vhIv4r7mHGa1cnSOb+l6WNyLShc5gKV2YbJIRoBdQIRsTA45gvWWyBL0H7WJx+KkUdndgaGTz4y2WM/ogxJYPmqGRrm+yaHGA5RIukwyyGWiDJqKXJRPyvLLAzO285fGFq4FYUqD6k=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=GnXTNHROzMAujE9vnwKFgb3wkcMKabfPEd3F6dkIAl0=;\n b=FmkH0Z0edtgcLBCJG6njjKAie+bD3OHYBuy9Zjjx9iN3OT2LQ6S2XRHrHcpgmlIdh04kae6vg/YZQ9pzEmwkSMos3G0zCsbqXk8WDXYLUK9OPHtrv5qgbmgbbo2L+BSHtTvTwyEDuLMhGd4r5iLsKlAXeFE+zYBlL4mtO0GkCm4JmL816HRXdmTl26ihVU/maUbPfeIBxiYk2XZy0N21DZEbhvXzlo0ynvU6urha2s6CgvQZbU6WNjSw3N3tLVHWsytY51JYClp2mxukOxh3SGg2eKOyMPjcer7r+ivJOy+fInfuCweWHrgMjClzkcxBtJ4sZaCQOxxVYADhILWIWw==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=GnXTNHROzMAujE9vnwKFgb3wkcMKabfPEd3F6dkIAl0=;\n b=gGBfDc6sowTFlZMQcQ7i3F0CBhUIyz8ZDgW1XESchhzf1g3Dl066cgMmFOGyvxA64Ls2KK5cUbLSvMwb8/xAd6vfL+CDz+1AX+vUx4uznkvbTQ006dyR7Y0Ikuflr8XHJfLkI/OgLp3iN0MVxTuI2WEeuPhE4kA+0tGaCrI+0xnY8kicDToZ4hIgvY9Bv+mU6EwjWHk+uS3sEoQHtYLeVE6rBoWpKIuq7pMmhMZPxonOaQxuVOdi3MfxbKIGsF+o0speaLT+nqFIDDpv8OMLDOg/2LabgNTLueI2P83KY4hfnKaC7P+Tz64rgU/BpsXjeUonRXdROqOTFr1zJx3O9w=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=suse.de smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]\n dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=GnXTNHROzMAujE9vnwKFgb3wkcMKabfPEd3F6dkIAl0=;\n b=XH7A0SB52huCab7XxxG7Spy0MjIHT1Zi/uHtkJWsMjNk35u244OoGxLqV64Z2ULz+yPYWZr7jJelSLJd7pqkzIBPhm8DerQ8SEUBrQuLkZzH7cBh0Bd0rItfEh07EnYp/qGrkRUd6TuRrfHv3r88cLIQj6M7Wd8Cuyi3dwQtsWo=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=GnXTNHROzMAujE9vnwKFgb3wkcMKabfPEd3F6dkIAl0=;\n b=XH7A0SB52huCab7XxxG7Spy0MjIHT1Zi/uHtkJWsMjNk35u244OoGxLqV64Z2ULz+yPYWZr7jJelSLJd7pqkzIBPhm8DerQ8SEUBrQuLkZzH7cBh0Bd0rItfEh07EnYp/qGrkRUd6TuRrfHv3r88cLIQj6M7Wd8Cuyi3dwQtsWo="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Richard Biener <rguenther@suse.de>, Pengfei Li <Pengfei.Li2@arm.com>","CC":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, \"rdapp.gcc@gmail.com\"\n <rdapp.gcc@gmail.com>, Pengfei Li <Pengfei.Li2@arm.com>","Subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Thread-Topic":"[PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Thread-Index":"AQHc0zjgGh223/C63kibmKRMMY2JYbXs77uAgAAE1pA=","Date":"Thu, 23 Apr 2026 18:22:27 +0000","Message-ID":"\n <VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>","References":"<20260423154930.183274-1-Pengfei.Li2@arm.com>\n <34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>","In-Reply-To":"<34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","Authentication-Results-Original":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","x-ms-traffictypediagnostic":"\n VI0PR08MB10392:EE_|AS8PR08MB6390:EE_|AM3PEPF0000A799:EE_|PA6PR08MB10492:EE_","X-MS-Office365-Filtering-Correlation-Id":"e82c5588-404d-4632-42d2-08dea1656c4a","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|376014|366016|1800799024|56012099003|18002099003|22082099003|38070700021;","X-Microsoft-Antispam-Message-Info-Original":"\n p1c2p7VRHE78EoSasivna2vT8+tFxFafdRRQNWJZr4sL3UJ4PaOzyv+oFwrZ9+S9DCmQoILjS7L81qhOFtKtBPxrWiAPVWItvzYX1XKvnKOS0w7WjzfsxkXuYIwJLKUy9JlpEIterx0pdjx55vnQNoB1Odjoj/WSuMDUX2CjYx95nLbBhmQeh/GUNF1jTxZMcmOroMqRXIfZQ9XVd3elRIuh7tsHiiZN/kKm22GzJOeL8Q0XGdf9V/ZPThgtmhmV0curhAXRIWlaW44pnQcht/N2nLMlImReQ9YG32bq3UFJLUSp59DwhbucGjgrDypq2pdc76PnP9VtRZvLbJpok+pKdaUGFzyqJ5atp35LXS7bV6LMEDlS8EvumlmZVI/PR3jMRxcuFOen8zz32L/8oix+uC5yyOjPLBa0OY3552Q/KybLgwbZWBwkTwWBfTe/wTH5MjMv99dQLHzoaEit+xAE+Ph1pVrzoa/nefqZHL7oiiqQzm3tPSAY8kmV31h57LREw9SVqMLonsok0Rjf8e9sHzvNBulkhS364iXBXnHdwCBg1bSBCNVgVB9uXwf8RSdzIdmfZMAqq1nnZAaGYEW1JxJQi/q8H0HXuWX1lIihImla6h/cztRUY79tiqlfYFlGS9XwsCA6ANRIZsZ3Wae8i/YZt6Tpt5JGDc5HxhUBeslq5GW13gMGyuP2SAqr6M4ALC9N45Wk553Lsa7TeLej0M40oZ9Rs6+GmlRJXub8ReWe2Wna49bAk0ARjBuu","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10392.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230040)(376014)(366016)(1800799024)(56012099003)(18002099003)(22082099003)(38070700021);\n DIR:OUT; SFP:1101;","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n mD8qUREjCCtyjxgSEoSzh7HE904tATGbscCX1fnsLSCrjYlHpv+ed/YwuDk+r4aMaQWGx4gF3p1aqDtQ6h03fppsW14XVIEZL1W0iuN0nqiXPgsoOBxRab4cwFeb62xDNvuwTB+ofcgYrgX3OOa30eh0Srj4qwXznZc0TneZLJ36OAdGKbGuFr0XERxO+7JYCKoElyNBtq/6JI008eNVNcsFofgcS78OleH8JRnjufzTkduFz4jGWfgrXBnoiE/NjUHUdYwgzoyDAZlJftssxVLOW6amC+meG0uR4eVzDNWai1yADBxmI1M0E0UA/pzSNbu/siGfzjTtGk83Kyz/Fg==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["AS8PR08MB6390","PA6PR08MB10492"],"X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n AM3PEPF0000A799.eurprd04.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n eac5f34e-22ce-4b26-c84d-08dea1654670","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|35042699022|376014|1800799024|36860700016|82310400026|14060799003|13003099007|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n IbnSsceXBteq1pkgdOeX1dCOTOvTRdbUD+PgbPCeOwzwR9kkR7b7+2jHuYxEJLwRicJRntIbH4R7Xnl279W++DrLtZZm3PgfJcu+lwTQzyCeyVhbIX5VMTNX/yUIMed+xi0EAX3TTr/rCrwLiqx1cuM/HFs4DfKqHSfQkFpq4NVFLXbI+u8BXayu6awNTLuIQbpEpojsmTTg+aS0OOz1cHMN9WCsIE1556hAISpRN1kQlHt45C/PVswejQQEPPNT31rJPZF1Y2nPzHnz5/GTIfCav7aW/FMEMNnLRli4cWylyr3Kd1Br3Sq0xw0cx3l2+5mMJ8i40AxiniS7HKRab/EcZCPTISK0IAU3Nd8AC8Ou27qgnmxKhYZHB8/smNv6/YJUrH9vaKO0SYWF+LdOTvTVVIgVak67mfB4ypWxNhaot1pVIwNNwDzYPMfxuWOXkL9zT9HdRguiULP9nT2b/1SdxMa0PTJv7i/K4JDRV7QKrktrOEJ3dTDT0Y4ihxKECTUvXm5lg+6GPIXfduuyao0MrVO++tb+ROS0ar8zrt4VQoztDXSaRHat6rHidzKdxBrYYtGtvt/UDwAjglPAFvMyZ9s2q+UoTs42vNzMegeeTtTW/k0f6xcVCtwWkgg+b571bx/jUNhTSAOeqvffewg/nUwXb7n1bChphmBjxB59g5Om9HU28s5O8dvtWDK1p+mrEais/YkMevthJ2A0jZaCIONk9bRA4wPCw+p5XEA=","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(35042699022)(376014)(1800799024)(36860700016)(82310400026)(14060799003)(13003099007)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n woPx/16vr+TSk+cWgWeBj+ybvbD7ihy0TEYZgzlt3PzeUuaefdMaHlETxLINhagjEE0DvnOxtG8qmvVPVYWCkHjECULPMlF3e6cbWrJXy49I4aa5v04lGH9FP18LSI5WtLD6a8IkjBYxTPy1hFJPkoJsZW8kEbxtCtcRg5wr80d/kf8VNALh+DjLQZwo1y/taF1b4EKfWQXXHQDn9+sYkXxKgL6ypfpIGyzPAC/QEqIsokUgcbOfxnyCQPkoYGvk/uoz/Wh0M6epRj/AzFyW/ROGOiT1zQa7k4ZZm3yJtoW2ma8ZCh1GsnNw2zkAMH+VzTKAFFkAA1qYkjAYNQzwBk4lqDM6rRJUmGE0o1edW+hoOoh4iokZ1fjGSILWNy22yVQyiKgJfan0h8rdmcpS73tZqZohgMj+mU5AgjyMlxYSgbb4LHeF+ynbCV61ZeCg","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"23 Apr 2026 18:23:31.2745 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n e82c5588-404d-4632-42d2-08dea1656c4a","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n AM3PEPF0000A799.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3681869,"web_url":"http://patchwork.ozlabs.org/comment/3681869/","msgid":"<VI0PR08MB10392D136647B42DBA841C1B8FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2026-04-24T08:21:49","subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"> -----Original Message-----\n> From: Tamar Christina <Tamar.Christina@arm.com>\n> Sent: 23 April 2026 19:22\n> To: Richard Biener <rguenther@suse.de>; Pengfei Li <Pengfei.Li2@arm.com>\n> Cc: gcc-patches@gcc.gnu.org; rdapp.gcc@gmail.com; Pengfei Li\n> <Pengfei.Li2@arm.com>\n> Subject: RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> preheader\n> \n> > -----Original Message-----\n> > From: Richard Biener <rguenther@suse.de>\n> > Sent: 23 April 2026 19:01\n> > To: Pengfei Li <Pengfei.Li2@arm.com>\n> > Cc: gcc-patches@gcc.gnu.org; Tamar Christina <Tamar.Christina@arm.com>;\n> > rdapp.gcc@gmail.com; Pengfei Li <Pengfei.Li2@arm.com>\n> > Subject: Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> > preheader\n> >\n> >\n> >\n> > > Am 23.04.2026 um 17:52 schrieb Pengfei Li <Pengfei.Li2@arm.com>:\n> > >\n> > > ﻿When vectorizing loops with VLA modes, GCC may insert runtime checks\n> > > that compare poly_int values against constants. Examples include the\n> > > skip_vector check for loops with known niters and the pagesize check\n> > > for loops with speculative loads.\n> > >\n> > > Since these poly_int values are bounded by the target's maximum vector\n> > > length, their maximum possible values can be determined at compile time.\n> > > If the upper bound does not exceed the constant used in the check, the\n> > > check can be omitted.\n> > >\n> > > This patch uses estimated_poly_value with POLY_VALUE_MAX to find the\n> > > upper bound and inserts these checks only when required.\n> > >\n> > > Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.\n> >\n> > Shouldn’t this be done in general constant folding of relations?\n> \n> Aside from that, I'm not even sure it's correct. So I'm asking around.\n> \n> The POLY_VALUE_MAX was never intended to be used for correctness only\n> costing purposes.  This Is relevant because GCC can vectorize loops in SSVE\n> (Streaming SVE mode) and the Arm Architectural reference Manual says in\n> Section B1.4.1 that\n> \n> \"There is no requirement for the Maximum implemented Streaming SVE vector\n> length to be greater than or equal to the\n> Maximum Non-streaming implemented SVE vector length.\"\n> \n> Which to me indicates that SSVE can be larger than SVE VL, and indeed this\n> is the case today, where SSVE has a larger VL than SVE on current cores.\n> \n> It's unclear to me if it's allowed that SSVE VL can exceed SVE the architecture\n> does not actually state this, in which case this patch would be wrong.\n> \n> So I'm asking around for clarifications on this, while I do, can we please\n> hold off on approving this.\n\nThis seems to be OK. So my objection is withdrawn.\n\nThanks,\nTamar\n> \n> Thanks,\n> Tamar\n> >\n> > > gcc/ChangeLog:\n> > >\n> > >    * tree-vect-loop-manip.cc (vect_do_peeling): Avoid unnecessary\n> > >    skip_vector checks using estimated_poly_value.\n> > >    (vect_create_cond_for_vla_spec_read): Make the pagesize check\n> > >    conditional using estimated_poly_value.\n> > >\n> > > gcc/testsuite/ChangeLog:\n> > >\n> > >    * gcc.target/aarch64/sve/vect-poly-int-cmp_1.c: New test.\n> > >    * gcc.target/aarch64/sve/vect-poly-int-cmp_2.c: New test.\n> > > ---\n> > > .../aarch64/sve/vect-poly-int-cmp_1.c          | 14 ++++++++++++++\n> > > .../aarch64/sve/vect-poly-int-cmp_2.c          | 14 ++++++++++++++\n> > > gcc/tree-vect-loop-manip.cc                    | 18 ++++++++++++------\n> > > 3 files changed, 40 insertions(+), 6 deletions(-)\n> > > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-\n> > cmp_1.c\n> > > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-\n> > cmp_2.c\n> > >\n> > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > new file mode 100644\n> > > index 00000000000..03ab37e7c4b\n> > > --- /dev/null\n> > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > @@ -0,0 +1,14 @@\n> > > +/* { dg-do compile } */\n> > > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> > preference=sve-only -fdump-tree-vect\" } */\n> > > +\n> > > +void large_cst_niters (char *a)\n> > > +{\n> > > + for (int i = 0; i < 5000; i++)\n> > > + {\n> > > +   if (a[i] > 0)\n> > > +     return;\n> > > +   a[i]++;\n> > > + }\n> > > +}\n> > > +\n> > > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 0 \"vect\"\n> }\n> > } */\n> > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > new file mode 100644\n> > > index 00000000000..2a2af31b783\n> > > --- /dev/null\n> > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > @@ -0,0 +1,14 @@\n> > > +/* { dg-do compile } */\n> > > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> > preference=sve-only -fdump-tree-vect\" } */\n> > > +\n> > > +void small_cst_niters (char *a)\n> > > +{\n> > > + for (int i = 0; i < 30; i++)\n> > > + {\n> > > +   if (a[i] > 0)\n> > > +     return;\n> > > +   a[i]++;\n> > > + }\n> > > +}\n> > > +\n> > > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 1 \"vect\"\n> }\n> > } */\n> > > diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc\n> > > index cd1ea746ae4..9271675dc6d 100644\n> > > --- a/gcc/tree-vect-loop-manip.cc\n> > > +++ b/gcc/tree-vect-loop-manip.cc\n> > > @@ -3380,8 +3380,9 @@ vect_do_peeling (loop_vec_info loop_vinfo,\n> tree\n> > niters, tree nitersm1,\n> > >   bool skip_vector = false;\n> > >   if (!uncounted_p)\n> > >     skip_vector = (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)\n> > > -           ? maybe_lt (LOOP_VINFO_INT_NITERS (loop_vinfo),\n> > > -                   bound_prolog + bound_epilog)\n> > > +           ? ((HOST_WIDE_INT) LOOP_VINFO_INT_NITERS (loop_vinfo)\n> > > +              < estimated_poly_value (bound_prolog + bound_epilog,\n> > > +                          POLY_VALUE_MAX))\n> > >           : (!LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING (loop_vinfo)\n> > >              || vect_epilogues));\n> > >\n> > > @@ -4162,10 +4163,15 @@ vect_create_cond_for_vla_spec_read\n> > (loop_vec_info loop_vinfo, tree *cond_expr)\n> > >                       amount_and_expr, cst_ul_zero);\n> > >   chain_cond_expr (cond_expr, powof2_cond_expr);\n> > >\n> > > -  /* Create an expression of \"amount <= cst_ul_pagesize\".  */\n> > > -  tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> > > -                     amount, cst_ul_pagesize);\n> > > -  chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > > +  /* If the max possible read amount may exceed the minimum page size,\n> > create\n> > > +     an expression of \"amount <= cst_ul_pagesize\".  */\n> > > +  if (estimated_poly_value (read_amount_poly, POLY_VALUE_MAX)\n> > > +      > (HOST_WIDE_INT) param_min_pagesize)\n> > > +    {\n> > > +      tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> > > +                         amount, cst_ul_pagesize);\n> > > +      chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > > +    }\n> > > }\n> > >\n> > > /* If LOOP_VINFO_CHECK_UNEQUAL_ADDRS contains <A1, B1>, ..., <An,\n> > Bn>,\n> > > --\n> > > 2.43.0\n> > >","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=VqxW+6KU;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=VqxW+6KU;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=VqxW+6KU;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=VqxW+6KU","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=52.101.69.18"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g25ZX0kyDz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 18:23:30 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 952BF4B99F5B\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 08:23:28 +0000 (GMT)","from AM0PR83CU005.outbound.protection.outlook.com\n (mail-westeuropeazon11010018.outbound.protection.outlook.com [52.101.69.18])\n by sourceware.org (Postfix) with ESMTPS id 20D5B4B99F5B\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 08:22:57 +0000 (GMT)","from DB7PR05CA0005.eurprd05.prod.outlook.com (2603:10a6:10:36::18)\n by DUYPR08MB12013.eurprd08.prod.outlook.com (2603:10a6:10:661::18) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr\n 2026 08:22:53 +0000","from DB5PEPF00014B99.eurprd02.prod.outlook.com\n (2603:10a6:10:36:cafe::b4) by DB7PR05CA0005.outlook.office365.com\n (2603:10a6:10:36::18) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,\n 24 Apr 2026 08:22:53 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DB5PEPF00014B99.mail.protection.outlook.com (10.167.8.166) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18\n via Frontend Transport; Fri, 24 Apr 2026 08:22:52 +0000","from VI0PR08MB10392.eurprd08.prod.outlook.com\n (2603:10a6:800:210::10) by DB9PR08MB6522.eurprd08.prod.outlook.com\n (2603:10a6:10:250::7) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Fri, 24 Apr\n 2026 08:21:50 +0000","from VI0PR08MB10392.eurprd08.prod.outlook.com\n ([fe80::cd7c:e19a:2072:75cc]) by VI0PR08MB10392.eurprd08.prod.outlook.com\n ([fe80::cd7c:e19a:2072:75cc%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 08:21:50 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 952BF4B99F5B","OpenDKIM Filter v2.11.0 sourceware.org 20D5B4B99F5B"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 20D5B4B99F5B","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 20D5B4B99F5B","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1777018977; cv=pass;\n b=oQ2KqCwyxo/ejY7UO2xWOaCgCk6OHDX7CgY2YyprSSOidfqpxV99GYMBepQQFXCAgB1E1iJW06ieLzPZ40pT+e3t04HpFmc8bJSkFdYnccYD751QTp2ceVKTbQuuC+ZCGeXNfIkY9zz/hjbih3LRi3NMNi+Az+RZo1cP29W7JVY=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=waKPpN+Pky6Meb6J3fcaUwSUydhiKYdDDMrKUFuVpfh2Ze9CKVeBs59hwT7ZO/B99MEAD+uvdhJbBfRSsdY0wmQgAjln6Dn6YH0IFGAE3bLkX8XPo0lhgimKdh/m7aLut53ux25UQQVc2Ar27jUxLVxHkX7o+D86KxCgBomMpn451ZFJ0xj8dlQ1yV/AIcNu4l22P6UaAGVvnumrHddU6oiq5DAOld4m5chX6a93grg6cDd2IKNkz+jcGiomAbsrbe1UFOl9eiE3HZ696RiOyuL+3ryfRiNWFET44PdBmXWwMpCj7UvjAGbdQOLdjCB4XExLp+T/Qat6axBUV7fhzg==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=PrQaMR1avT4GQUC7fMhTozdE0h6uC9UHe80WskldWH/ds6zwIhaTXauWCcEACGVQBiz5D3T2DNdWkMwb4E0nFCztjSRks4mDPN2ZiHZExPfDntFyTlZdYgEEEjdycuywlnFF7IaRl9CKfpYUX1lUzW/sy6VIqoncOMiSkpofStmPNGRIDrHeEoTRf0PoVjxWwVDnYgWycDmY3ZVGN1p34CNHVhLwp3rCC15nkM7mr7//oPQgZ5YvSRA99CwowdXWbyuK1FpETXPiTPCj3nNVftNEKfwt8D8W1MUVIjZ9sakhtrY0q8fd4XS7gkBZPDZGTvVfpmVVhI7nWy9GPzA1ZA=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777018977; c=relaxed/simple;\n bh=dQIBqj7CUuT9Xm3sed4NJiKq2UDfG4AZTvFKtDh+fZo=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=MLcz1cWVkOotcdaB0yp0rQ/5/GQm7vsfoeuacWCZnWP5uPRgRj/l4uY3Zuk7kpI6sC7rVohV/DaqrQ3rFDKmSCHuNsnPagv1pQm8rkvGYy50iEAjcSLJv6BCLHBQHaPtVpFCtlXMcOjn2qIJGkamJrxMH5t9XCGVdZaE3Ll5bOA=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=dQIBqj7CUuT9Xm3sed4NJiKq2UDfG4AZTvFKtDh+fZo=;\n b=zJ9NNL/Cm95AtBbmwL5mSajyxYX1pEEu6SbIlpfr/UhvL2nw+fYxdtkuawoBK2PsxcvPkOdT35WryuBbNc66MLqrVusmTvMvjrklaxQHWIPgZV5OG3aZYUMB88s6cg8za2ObuPdHlGWZcifUBy+sKmlEss/9sdXjIgsNb69iL69bb8aH5KzO3XwIBy1M3oK2isN5ECJzExi6Lwo1vOP6PA4YAAWuzweiWtncHRup2prBNY4YOWRswz2VNDN0HBq1i6Uh3u7TeVkuvUZr7s+CNT//y+56NGSKpi9dP4Ak3oCE5N9XKTO9AVL5PCYHUtTQF/XGozqDf84ojZl2+rhBFA==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=dQIBqj7CUuT9Xm3sed4NJiKq2UDfG4AZTvFKtDh+fZo=;\n b=YmsI8KJEjEnI+fGLkqG4P00K+oXdpvWgWcmXnOqUbn5s9FdwNaKnYYi5r7pddCLdghOf/cxLIfzvaPhJpKoQjTeQrjnXg/cExVg134KeJHdwIXVFer3dL04T/YwqmsvBXWaiqOS08Z0lKBzlf+4Glia8r24NKuXlbn0e7nXp4yGk/KwOfuGoAPDhqUncQI3pZu2q+7zv6URC25StKu7YkWHm2431FgX1NznapFEjqF4wS/S9My5keSDxZ7bR9TGNXKgqeM5R0IfNph9+znn2dDHP5EqweRv9iuO1PmQZLKbUpyRi1gNVwFFG7bGZfwcWRlYQyCCFbYz3LIg2RKXApQ=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=suse.de smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]\n dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=dQIBqj7CUuT9Xm3sed4NJiKq2UDfG4AZTvFKtDh+fZo=;\n b=VqxW+6KUieF1mN64BZUBSNVONzwEBwKHi+FbBkr73yDdpZ/zK0yjx0BY+Y6PhqcS143+St4STwdVNa8P84o3vdrU+TOTgr3ARHYPo8H+0M5qfyG6wojgxc/aObt3+GmdKKdc6NhKTdetGLut3TpFRftERt1ucTMluFgbV7zFzqI=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=dQIBqj7CUuT9Xm3sed4NJiKq2UDfG4AZTvFKtDh+fZo=;\n b=VqxW+6KUieF1mN64BZUBSNVONzwEBwKHi+FbBkr73yDdpZ/zK0yjx0BY+Y6PhqcS143+St4STwdVNa8P84o3vdrU+TOTgr3ARHYPo8H+0M5qfyG6wojgxc/aObt3+GmdKKdc6NhKTdetGLut3TpFRftERt1ucTMluFgbV7zFzqI="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Tamar Christina <Tamar.Christina@arm.com>, Richard Biener\n <rguenther@suse.de>, Pengfei Li <Pengfei.Li2@arm.com>","CC":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, \"rdapp.gcc@gmail.com\"\n <rdapp.gcc@gmail.com>, Pengfei Li <Pengfei.Li2@arm.com>","Subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Thread-Topic":"[PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Thread-Index":"AQHc0zjgGh223/C63kibmKRMMY2JYbXs77uAgAAE1pCAAOulcA==","Date":"Fri, 24 Apr 2026 08:21:49 +0000","Message-ID":"\n <VI0PR08MB10392D136647B42DBA841C1B8FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","References":"<20260423154930.183274-1-Pengfei.Li2@arm.com>\n <34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>\n <VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>","In-Reply-To":"\n <VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","Authentication-Results-Original":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","x-ms-traffictypediagnostic":"\n VI0PR08MB10392:EE_|DB9PR08MB6522:EE_|DB5PEPF00014B99:EE_|DUYPR08MB12013:EE_","X-MS-Office365-Filtering-Correlation-Id":"73642834-642e-44c2-fde0-08dea1daae2e","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|366016|376014|1800799024|38070700021|22082099003|56012099003|18002099003;","X-Microsoft-Antispam-Message-Info-Original":"\n CD54+BJZNhqxMD/hQJe+kynmzKAsp3SAtRMWKxVWP9Ch4k+sISEFqZxFhSlMzolAHejZuyY/cMxFCIF7m1pZQm41yhBkID+Wj02e1vyYCldjX1J78R+4uqkHyoizD2uBwQlQ9YL3iMfVIRB7tnrLKCBOqAcjbQSavmJKN8YLrrR4sm+u6ZcwnN/15hID5BG+yU4/PnYBqlu1lnMpHd9i65aa/PWz0fD6hPXCscccztTPm7O7kHfzueRLIBoLsKEo/wIM6AcFtjYMj1/wO038azL5PwQcHvQ07jlCNpnwuivA7rdT5wj52+1Kuax2opKy0kny2fc9qM9LdvgsOAOD6/GOyx/P2XOYlrS3oL4SiEbxKxHPym/ibpv+8a7TgEoYzgFHPVHqQE7yrRmdO97BmYnJtLVb0jJYqnfKRYk9int8Rx2RFa4kr12vPTL0aZbNjINEwtaOcENHatN2FFISBdgqvSphjDeOTeNmwa52hHBegldk7GP6KvG3cvmuMEaJPE9iMdX6lCDdAJIvCRx+1ikfZXFrUIVDANc+D/UEmYLPJieK425WsEYQEXinYtMJDK57qiVAkOf63REPZ7BbKOkXpCW/pFGVS+QSN3eQ8yusAF74sC+zgXJWemmSfGErL++howsfwsRx+zs5NKv5h4I1uGFu4yI7ZIc74ebEjZPrUritHtU0BBvXtBdbg+ve9I1wiiHAz90eSHJ6mYNBfOcF77Ggf+7LtGA/979y3xr2icCUC/7n9bqmCY0YGxOz","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10392.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230040)(366016)(376014)(1800799024)(38070700021)(22082099003)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n i+HNUhfi7+LdXaKsb8rbKStcQoygst6UGipEEYP3cf9jL9+wgXJsPWBueu4B9vLJhhY03WUVJkVY9YhhvzgD6sp/75Hk05b8Nz7JcFyF4xhp1cFMW/DlyyaQbLFejN50TOB0ZeudIG/pAYQD8xrKdJOcjyHJTg2xaPs3KlRu6tqeeacgjqSiJgYoVKqMCPAFD3pcTVN+Y6FpCMwvJUuKwgx9JexUAlTwsg7kHeD5mvdQ6AWIl6ya8/U1hMvUtKYV+XePWVcqkEXH5x3FDzaQyeDyQ6kwfiL0vi9eP5/laYaORGjwoIO0QfO6TwxHStffOvtEU4PfLZEv3KHJz5xnYw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["DB9PR08MB6522","DUYPR08MB12013"],"X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DB5PEPF00014B99.eurprd02.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 6d1d4f45-a99a-417d-8cc2-08dea1da889c","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|14060799003|35042699022|36860700016|376014|1800799024|82310400026|22082099003|56012099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n 1LnmGhs6OqooOLczTU5yc3b7gxuO+j7mc16PHKw0fACxic6xIdEF4PESFcgzTpXxEVXEinjAuRcpPs4fNOxqbATHGcgpNIE66i5bSpdM5UvuKve0YleUnl5H+okeOYbouunDWUt5itnaZ4rc+yuLMJ57NqS/moKox3DqAktd31qZxEcWfvgloK6B33foDGP74Dva69KnrqFaDjixJifabtm0Y/u+s7ksWuaRzDgUjjEDnntYIsnbMCnPW3a0rfIv95bqeX9jOrzP1gAVvqMxRLvstO+dKRhF1B0PuKGp5YKd+mSY+NBoYtgZTHu85Zh1PP59Icieri2fGfz6ohX7uZW8JJ69x2mxfWyRnQHgYtnagsGCzLifw9scJYnuZgtoywurEd+SkqQ3Js2xLp4GD66DuILMOpx82gBMa08fcNlZ+CG74UiTnLxIQHz6gSlZU5/36BPMJ3iMG2a5PVHyqpxim75F1TLnir9qcfZgLp+IDin8RvLkovqVBbdwIpA0BNhp0vRInoprwt2RXrFVBhz85No6KV00/44V7MiDDugvirtQiBwiG0uHm975FbGcDQYEz3Ef1zJyq4vfeSvj7W63jF6bNCxjs8MFWBTo32AItZ7VjRtdYrKkxQm8daaacfM6Rz2u5VgMv0nTkC0WiJS8zwWNZxhZT0jv6T9GEPD4KOAiR/Hmw/zkV114eYEFBXwwxz2wDwl8dp2TQFn3Fl6s/h0fp4XlwYE5LTmTvgk=","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(14060799003)(35042699022)(36860700016)(376014)(1800799024)(82310400026)(22082099003)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n 90ahC9XK/vg0fGeHkD4kiEQLEmLamHSx0O02K067Pz/qgCehRgtCL43j14qu7/naqE8JWbkNq0nR7INhub0a1Quk/uvUB16TgHlIgYWW2PR434wx22tlxjzZB1z6ITUFjiyEch8rv7UV/s1RBETOqh5tDm1q9zg7d0LAdnpT2COM8XMUsA5V5CUcgGgb5JKeXGA6vAmH3CUw4Q0F2JdGtiePbCElgSmnvxB5qPkHodHJfM4vNwOg3s/4DRgJa69spoAxVmdC6OSRn0sM5fUq1UESb3SqzFkjSa8UUkezL4xP1FaIjJDj3onVJ2plgMB2e9y36efQ3s1cf7cI45MXjtg935v0wsLy0lUNDJtM1SZZIWpJoPICbbjCBgzmOG7NaPZwsGdwvxNTv7c1c9eRhyYlAvWBmk94e3igOcJw+gQZ8/spJcooXZaX2mH5N6VK","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"24 Apr 2026 08:22:52.9328 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 73642834-642e-44c2-fde0-08dea1daae2e","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n DB5PEPF00014B99.eurprd02.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3681873,"web_url":"http://patchwork.ozlabs.org/comment/3681873/","msgid":"<05n0ns91-ns90-9162-0933-q34npsqoqq0s@fhfr.qr>","list_archive_url":null,"date":"2026-04-24T08:29:53","subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","submitter":{"id":4338,"url":"http://patchwork.ozlabs.org/api/people/4338/","name":"Richard Biener","email":"rguenther@suse.de"},"content":"On Fri, 24 Apr 2026, Tamar Christina wrote:\n\n> > -----Original Message-----\n> > From: Tamar Christina <Tamar.Christina@arm.com>\n> > Sent: 23 April 2026 19:22\n> > To: Richard Biener <rguenther@suse.de>; Pengfei Li <Pengfei.Li2@arm.com>\n> > Cc: gcc-patches@gcc.gnu.org; rdapp.gcc@gmail.com; Pengfei Li\n> > <Pengfei.Li2@arm.com>\n> > Subject: RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> > preheader\n> > \n> > > -----Original Message-----\n> > > From: Richard Biener <rguenther@suse.de>\n> > > Sent: 23 April 2026 19:01\n> > > To: Pengfei Li <Pengfei.Li2@arm.com>\n> > > Cc: gcc-patches@gcc.gnu.org; Tamar Christina <Tamar.Christina@arm.com>;\n> > > rdapp.gcc@gmail.com; Pengfei Li <Pengfei.Li2@arm.com>\n> > > Subject: Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> > > preheader\n> > >\n> > >\n> > >\n> > > > Am 23.04.2026 um 17:52 schrieb Pengfei Li <Pengfei.Li2@arm.com>:\n> > > >\n> > > > ﻿When vectorizing loops with VLA modes, GCC may insert runtime checks\n> > > > that compare poly_int values against constants. Examples include the\n> > > > skip_vector check for loops with known niters and the pagesize check\n> > > > for loops with speculative loads.\n> > > >\n> > > > Since these poly_int values are bounded by the target's maximum vector\n> > > > length, their maximum possible values can be determined at compile time.\n> > > > If the upper bound does not exceed the constant used in the check, the\n> > > > check can be omitted.\n> > > >\n> > > > This patch uses estimated_poly_value with POLY_VALUE_MAX to find the\n> > > > upper bound and inserts these checks only when required.\n> > > >\n> > > > Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.\n> > >\n> > > Shouldn’t this be done in general constant folding of relations?\n> > \n> > Aside from that, I'm not even sure it's correct. So I'm asking around.\n> > \n> > The POLY_VALUE_MAX was never intended to be used for correctness only\n> > costing purposes.  This Is relevant because GCC can vectorize loops in SSVE\n> > (Streaming SVE mode) and the Arm Architectural reference Manual says in\n> > Section B1.4.1 that\n> > \n> > \"There is no requirement for the Maximum implemented Streaming SVE vector\n> > length to be greater than or equal to the\n> > Maximum Non-streaming implemented SVE vector length.\"\n> > \n> > Which to me indicates that SSVE can be larger than SVE VL, and indeed this\n> > is the case today, where SSVE has a larger VL than SVE on current cores.\n> > \n> > It's unclear to me if it's allowed that SSVE VL can exceed SVE the architecture\n> > does not actually state this, in which case this patch would be wrong.\n> > \n> > So I'm asking around for clarifications on this, while I do, can we please\n> > hold off on approving this.\n> \n> This seems to be OK. So my objection is withdrawn.\n\nOTOH estimated_poly_value (x, POLY_VALUE_MAX) is a bit odd because\nof \"estimated\".  But maybe that's just bad naming?  The comment says\n\n/* Return an estimate of the runtime value of X, for use in things\n   like cost calculations or profiling frequencies.  Note that this\n   function should never be used in situations where the actual\n   runtime value is needed for correctness, since the function only\n   provides a rough guess.  */ \n\nbut maybe that pre-dates the introduction of POLY_VALUE_MAX.\n\nIn particular the target hook docs say \"The default\nimplementation returns the lowest possible value of @var{val}\" which\nwould be wrong for a reliable POLY_VALUE_MAX.  And it indeed\ndoes that.\n\nHow does this work on the risc-v side?\n\nShouldn't the hook have a failure mode, in case there is no\nmaximum?\n\nRichard.\n\n> Thanks,\n> Tamar\n> > \n> > Thanks,\n> > Tamar\n> > >\n> > > > gcc/ChangeLog:\n> > > >\n> > > >    * tree-vect-loop-manip.cc (vect_do_peeling): Avoid unnecessary\n> > > >    skip_vector checks using estimated_poly_value.\n> > > >    (vect_create_cond_for_vla_spec_read): Make the pagesize check\n> > > >    conditional using estimated_poly_value.\n> > > >\n> > > > gcc/testsuite/ChangeLog:\n> > > >\n> > > >    * gcc.target/aarch64/sve/vect-poly-int-cmp_1.c: New test.\n> > > >    * gcc.target/aarch64/sve/vect-poly-int-cmp_2.c: New test.\n> > > > ---\n> > > > .../aarch64/sve/vect-poly-int-cmp_1.c          | 14 ++++++++++++++\n> > > > .../aarch64/sve/vect-poly-int-cmp_2.c          | 14 ++++++++++++++\n> > > > gcc/tree-vect-loop-manip.cc                    | 18 ++++++++++++------\n> > > > 3 files changed, 40 insertions(+), 6 deletions(-)\n> > > > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-\n> > > cmp_1.c\n> > > > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-\n> > > cmp_2.c\n> > > >\n> > > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > > new file mode 100644\n> > > > index 00000000000..03ab37e7c4b\n> > > > --- /dev/null\n> > > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > > @@ -0,0 +1,14 @@\n> > > > +/* { dg-do compile } */\n> > > > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> > > preference=sve-only -fdump-tree-vect\" } */\n> > > > +\n> > > > +void large_cst_niters (char *a)\n> > > > +{\n> > > > + for (int i = 0; i < 5000; i++)\n> > > > + {\n> > > > +   if (a[i] > 0)\n> > > > +     return;\n> > > > +   a[i]++;\n> > > > + }\n> > > > +}\n> > > > +\n> > > > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 0 \"vect\"\n> > }\n> > > } */\n> > > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > > new file mode 100644\n> > > > index 00000000000..2a2af31b783\n> > > > --- /dev/null\n> > > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > > @@ -0,0 +1,14 @@\n> > > > +/* { dg-do compile } */\n> > > > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> > > preference=sve-only -fdump-tree-vect\" } */\n> > > > +\n> > > > +void small_cst_niters (char *a)\n> > > > +{\n> > > > + for (int i = 0; i < 30; i++)\n> > > > + {\n> > > > +   if (a[i] > 0)\n> > > > +     return;\n> > > > +   a[i]++;\n> > > > + }\n> > > > +}\n> > > > +\n> > > > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 1 \"vect\"\n> > }\n> > > } */\n> > > > diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc\n> > > > index cd1ea746ae4..9271675dc6d 100644\n> > > > --- a/gcc/tree-vect-loop-manip.cc\n> > > > +++ b/gcc/tree-vect-loop-manip.cc\n> > > > @@ -3380,8 +3380,9 @@ vect_do_peeling (loop_vec_info loop_vinfo,\n> > tree\n> > > niters, tree nitersm1,\n> > > >   bool skip_vector = false;\n> > > >   if (!uncounted_p)\n> > > >     skip_vector = (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)\n> > > > -           ? maybe_lt (LOOP_VINFO_INT_NITERS (loop_vinfo),\n> > > > -                   bound_prolog + bound_epilog)\n> > > > +           ? ((HOST_WIDE_INT) LOOP_VINFO_INT_NITERS (loop_vinfo)\n> > > > +              < estimated_poly_value (bound_prolog + bound_epilog,\n> > > > +                          POLY_VALUE_MAX))\n> > > >           : (!LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING (loop_vinfo)\n> > > >              || vect_epilogues));\n> > > >\n> > > > @@ -4162,10 +4163,15 @@ vect_create_cond_for_vla_spec_read\n> > > (loop_vec_info loop_vinfo, tree *cond_expr)\n> > > >                       amount_and_expr, cst_ul_zero);\n> > > >   chain_cond_expr (cond_expr, powof2_cond_expr);\n> > > >\n> > > > -  /* Create an expression of \"amount <= cst_ul_pagesize\".  */\n> > > > -  tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> > > > -                     amount, cst_ul_pagesize);\n> > > > -  chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > > > +  /* If the max possible read amount may exceed the minimum page size,\n> > > create\n> > > > +     an expression of \"amount <= cst_ul_pagesize\".  */\n> > > > +  if (estimated_poly_value (read_amount_poly, POLY_VALUE_MAX)\n> > > > +      > (HOST_WIDE_INT) param_min_pagesize)\n> > > > +    {\n> > > > +      tree pagesize_cond_expr = fold_build2 (LE_EXPR, boolean_type_node,\n> > > > +                         amount, cst_ul_pagesize);\n> > > > +      chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > > > +    }\n> > > > }\n> > > >\n> > > > /* If LOOP_VINFO_CHECK_UNEQUAL_ADDRS contains <A1, B1>, ..., <An,\n> > > Bn>,\n> > > > --\n> > > > 2.43.0\n> > > >\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=HrSBCfrT;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=jrT3DccA;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=Ri5vmjXH;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=8uI0Ayo3;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256\n header.s=susede2_rsa header.b=HrSBCfrT;\n\tdkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=jrT3DccA;\n\tdkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de\n header.a=rsa-sha256 header.s=susede2_rsa header.b=Ri5vmjXH;\n\tdkim=neutral header.d=suse.de header.i=@suse.de header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=8uI0Ayo3","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=suse.de","sourceware.org; spf=pass smtp.mailfrom=suse.de","server2.sourceware.org;\n arc=none smtp.remote-ip=195.135.223.131","smtp-out2.suse.de;\n\tnone"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g25kb1LPBz1yDD\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 18:30:29 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 9D24B4BB1C32\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 08:30:27 +0000 (GMT)","from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])\n by sourceware.org (Postfix) with ESMTPS id 621B64BB1C32\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 08:29:56 +0000 (GMT)","from murzim.nue2.suse.org (unknown [10.168.4.243])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out2.suse.de (Postfix) with ESMTPS id E035D5BD89;\n Fri, 24 Apr 2026 08:29:53 +0000 (UTC)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 9D24B4BB1C32","OpenDKIM Filter v2.11.0 sourceware.org 621B64BB1C32"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 621B64BB1C32","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 621B64BB1C32","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777019396; cv=none;\n b=pew4shWSDgliVgghlE0LjBRjrLhfyxuYN7Kc2WfIjG5LOXd5jmTW0LXdeEzECRix0GWNgjTXZGYcg8b3/TU0OEMguyEOu5qfG1fzOiNkBBNnfcumhC3m9wGNlzcWENLC+3fn+o/4za8qz3+wiU+1exGqHiTVnz8C3VfqGE1RirM=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777019396; c=relaxed/simple;\n bh=5IMSigUPXEjC/lNJx6dLq46FdkuP6/8SSV1BgT7aiMA=;\n h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:Date:\n From:To:Subject:Message-ID:MIME-Version;\n b=A2p6IOIPXfGDpfA7UDOaMmIEw/ZMG54HTD6uChdl00znZpTuqUye96MYzFmj6Yoo3wgdUM6n5H4RCDa4WfonpuGb56lglZxFzcE7YLK9E9R7nqPG93T1UsAO+lZb6FYqvyiSMANlrmt9ouZK8FUkC+W8vfO320rrqywyqHK5zJk=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777019394;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=750Dh2/pRDSBK6BfqgNMlXRIWH/LCawJfHTWqGiIuEA=;\n b=HrSBCfrTlyX/bkjHkEMoyTmeflw9Py6DBB/obKtxBpndMoyDju9PDSVQN53qANXIYPHJL/\n pghpXi4mivmdVZUk2qG/JQ0vrVaTvkJ7r1nhlYjFBMS9v7Hz7K6N/oDiIGex9Onp/OQeqe\n K9ZMDkDthZwM0C1eU99NY9ATR5SckJc=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777019394;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=750Dh2/pRDSBK6BfqgNMlXRIWH/LCawJfHTWqGiIuEA=;\n b=jrT3DccAQsQrUawQiqs/UzMhyOa1fRHTdVykNxmOwXzK68NiJnJn6hCi4oZIpN62WQjs1b\n 7wDRZoNzZfzF5WDA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_rsa;\n t=1777019393;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=750Dh2/pRDSBK6BfqgNMlXRIWH/LCawJfHTWqGiIuEA=;\n b=Ri5vmjXH/eY3fmGqsXDOM125s4flXunEyj8IGLqUgu2EUJr9SxKr2CMK8hVdCJvhgVqqm4\n rLiq5eimJkLHupa1v/xkG0GoLUJgRgpHwBDp4oyXeSN7osbvb3CS1xUj3XXha7ivqP8qP8\n jBVZOML/J+ojjWxPlGGTjVYEkALUVLg=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;\n s=susede2_ed25519; t=1777019393;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=750Dh2/pRDSBK6BfqgNMlXRIWH/LCawJfHTWqGiIuEA=;\n b=8uI0Ayo3ldT868Iu668Ww0JibrpWJVU0XkWPWsKmnMIik6+Fmrw3vaqBUzt/t8y1gnLYmE\n TIJQCOKyp10sNnCw=="],"Date":"Fri, 24 Apr 2026 10:29:53 +0200 (CEST)","From":"Richard Biener <rguenther@suse.de>","To":"Tamar Christina <Tamar.Christina@arm.com>","cc":"Pengfei Li <Pengfei.Li2@arm.com>,\n \"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>,\n \"rdapp.gcc@gmail.com\" <rdapp.gcc@gmail.com>","Subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","In-Reply-To":"\n <VI0PR08MB10392D136647B42DBA841C1B8FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","Message-ID":"<05n0ns91-ns90-9162-0933-q34npsqoqq0s@fhfr.qr>","References":"<20260423154930.183274-1-Pengfei.Li2@arm.com>\n <34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>\n <VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>\n <VI0PR08MB10392D136647B42DBA841C1B8FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","MIME-Version":"1.0","Content-Type":"multipart/mixed;\n boundary=\"-1475677436-2010202624-1777019393=:28865\"","X-Spamd-Result":"default: False [-3.30 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n NEURAL_HAM_LONG(-1.00)[-1.000]; CTYPE_MIXED_BOGUS(1.00)[];\n NEURAL_HAM_SHORT(-0.20)[-1.000];\n MIME_GOOD(-0.10)[multipart/mixed,text/plain];\n FREEMAIL_ENVRCPT(0.00)[gmail.com]; TO_DN_EQ_ADDR_SOME(0.00)[];\n MISSING_XM_UA(0.00)[]; MIME_TRACE(0.00)[0:+,1:+];\n TO_DN_SOME(0.00)[]; ARC_NA(0.00)[];\n FUZZY_RATELIMITED(0.00)[rspamd.com]; TAGGED_RCPT(0.00)[];\n RCVD_COUNT_ZERO(0.00)[0]; FROM_HAS_DN(0.00)[];\n FREEMAIL_CC(0.00)[arm.com,gcc.gnu.org,gmail.com];\n RCPT_COUNT_THREE(0.00)[4]; FROM_EQ_ENVFROM(0.00)[];\n DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];\n TO_MATCH_ENVRCPT_ALL(0.00)[];\n DBL_BLOCKED_OPENRESOLVER(0.00)[gnu.org:email, tree-vect-loop-manip.cc:url,\n fhfr.qr:mid, suse.de:email, gcc.target:url, arm.com:email]","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3681881,"web_url":"http://patchwork.ozlabs.org/comment/3681881/","msgid":"<VI0PR08MB10392CCF75DA04ACB50E8F157FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2026-04-24T08:40:35","subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"> -----Original Message-----\n> From: Richard Biener <rguenther@suse.de>\n> Sent: 24 April 2026 09:30\n> To: Tamar Christina <Tamar.Christina@arm.com>\n> Cc: Pengfei Li <Pengfei.Li2@arm.com>; gcc-patches@gcc.gnu.org;\n> rdapp.gcc@gmail.com\n> Subject: RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> preheader\n> \n> On Fri, 24 Apr 2026, Tamar Christina wrote:\n> \n> > > -----Original Message-----\n> > > From: Tamar Christina <Tamar.Christina@arm.com>\n> > > Sent: 23 April 2026 19:22\n> > > To: Richard Biener <rguenther@suse.de>; Pengfei Li\n> <Pengfei.Li2@arm.com>\n> > > Cc: gcc-patches@gcc.gnu.org; rdapp.gcc@gmail.com; Pengfei Li\n> > > <Pengfei.Li2@arm.com>\n> > > Subject: RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n> > > preheader\n> > >\n> > > > -----Original Message-----\n> > > > From: Richard Biener <rguenther@suse.de>\n> > > > Sent: 23 April 2026 19:01\n> > > > To: Pengfei Li <Pengfei.Li2@arm.com>\n> > > > Cc: gcc-patches@gcc.gnu.org; Tamar Christina\n> <Tamar.Christina@arm.com>;\n> > > > rdapp.gcc@gmail.com; Pengfei Li <Pengfei.Li2@arm.com>\n> > > > Subject: Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in\n> loop\n> > > > preheader\n> > > >\n> > > >\n> > > >\n> > > > > Am 23.04.2026 um 17:52 schrieb Pengfei Li <Pengfei.Li2@arm.com>:\n> > > > >\n> > > > > ﻿When vectorizing loops with VLA modes, GCC may insert runtime\n> checks\n> > > > > that compare poly_int values against constants. Examples include the\n> > > > > skip_vector check for loops with known niters and the pagesize check\n> > > > > for loops with speculative loads.\n> > > > >\n> > > > > Since these poly_int values are bounded by the target's maximum\n> vector\n> > > > > length, their maximum possible values can be determined at compile\n> time.\n> > > > > If the upper bound does not exceed the constant used in the check, the\n> > > > > check can be omitted.\n> > > > >\n> > > > > This patch uses estimated_poly_value with POLY_VALUE_MAX to find\n> the\n> > > > > upper bound and inserts these checks only when required.\n> > > > >\n> > > > > Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.\n> > > >\n> > > > Shouldn’t this be done in general constant folding of relations?\n> > >\n> > > Aside from that, I'm not even sure it's correct. So I'm asking around.\n> > >\n> > > The POLY_VALUE_MAX was never intended to be used for correctness only\n> > > costing purposes.  This Is relevant because GCC can vectorize loops in SSVE\n> > > (Streaming SVE mode) and the Arm Architectural reference Manual says in\n> > > Section B1.4.1 that\n> > >\n> > > \"There is no requirement for the Maximum implemented Streaming SVE\n> vector\n> > > length to be greater than or equal to the\n> > > Maximum Non-streaming implemented SVE vector length.\"\n> > >\n> > > Which to me indicates that SSVE can be larger than SVE VL, and indeed this\n> > > is the case today, where SSVE has a larger VL than SVE on current cores.\n> > >\n> > > It's unclear to me if it's allowed that SSVE VL can exceed SVE the\n> architecture\n> > > does not actually state this, in which case this patch would be wrong.\n> > >\n> > > So I'm asking around for clarifications on this, while I do, can we please\n> > > hold off on approving this.\n> >\n> > This seems to be OK. So my objection is withdrawn.\n> \n> OTOH estimated_poly_value (x, POLY_VALUE_MAX) is a bit odd because\n> of \"estimated\".  But maybe that's just bad naming?  The comment says\n> \n\nYeah, so the problem is, and why I mentioned before that we never\nused these values for correctness is that they change based on the\ntuning cost model.\n\nSo usage of estimated_poly_value in this patch is definitely wrong as it\ncreates broken binaries.\n\nOn AArch64 estimated_poly_value returns the maximum theoretical\nSVE size only when the cost model is set to `scalable`.\n\nBut with a specific CPU like `-mcpu=neoverse-v2` it'll use 128.\n\nBasically\n\n  unsigned int width_source = aarch64_tune_params.sve_width;\n  /* Allow sve_width to be a bitmask of different VL, treating the lowest\n     as likely.  This could be made more general if future -mtune options\n     need it to be.  */\n  if (kind == POLY_VALUE_MAX)\n    width_source = 1 << floor_log2 (width_source);\n  else\n    width_source = least_bit_hwi (width_source);\n\n  /* If the core provides width information, use that.  */\n  HOST_WIDE_INT over_128 = width_source - 128;\n  return val.coeffs[0] + val.coeffs[1] * over_128 / 128;\n\nSo this is unsafe, as it'll fail on a VL > 128 machine.\n\nFrom what I remember when we first added this check, Richard\nmentioned there is no way to get the limit of an ISA generically.\nand this was done intentionally so that code don't make faulty\nassumptions.\n\nThanks,\nTamar\n\n> /* Return an estimate of the runtime value of X, for use in things\n>    like cost calculations or profiling frequencies.  Note that this\n>    function should never be used in situations where the actual\n>    runtime value is needed for correctness, since the function only\n>    provides a rough guess.  */\n> \n> but maybe that pre-dates the introduction of POLY_VALUE_MAX.\n> \n> In particular the target hook docs say \"The default\n> implementation returns the lowest possible value of @var{val}\" which\n> would be wrong for a reliable POLY_VALUE_MAX.  And it indeed\n> does that.\n> \n> How does this work on the risc-v side?\n> \n> Shouldn't the hook have a failure mode, in case there is no\n> maximum?\n> \n> Richard.\n> \n> > Thanks,\n> > Tamar\n> > >\n> > > Thanks,\n> > > Tamar\n> > > >\n> > > > > gcc/ChangeLog:\n> > > > >\n> > > > >    * tree-vect-loop-manip.cc (vect_do_peeling): Avoid unnecessary\n> > > > >    skip_vector checks using estimated_poly_value.\n> > > > >    (vect_create_cond_for_vla_spec_read): Make the pagesize check\n> > > > >    conditional using estimated_poly_value.\n> > > > >\n> > > > > gcc/testsuite/ChangeLog:\n> > > > >\n> > > > >    * gcc.target/aarch64/sve/vect-poly-int-cmp_1.c: New test.\n> > > > >    * gcc.target/aarch64/sve/vect-poly-int-cmp_2.c: New test.\n> > > > > ---\n> > > > > .../aarch64/sve/vect-poly-int-cmp_1.c          | 14 ++++++++++++++\n> > > > > .../aarch64/sve/vect-poly-int-cmp_2.c          | 14 ++++++++++++++\n> > > > > gcc/tree-vect-loop-manip.cc                    | 18 ++++++++++++------\n> > > > > 3 files changed, 40 insertions(+), 6 deletions(-)\n> > > > > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-\n> int-\n> > > > cmp_1.c\n> > > > > create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-\n> int-\n> > > > cmp_2.c\n> > > > >\n> > > > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > > b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > > > new file mode 100644\n> > > > > index 00000000000..03ab37e7c4b\n> > > > > --- /dev/null\n> > > > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n> > > > > @@ -0,0 +1,14 @@\n> > > > > +/* { dg-do compile } */\n> > > > > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> > > > preference=sve-only -fdump-tree-vect\" } */\n> > > > > +\n> > > > > +void large_cst_niters (char *a)\n> > > > > +{\n> > > > > + for (int i = 0; i < 5000; i++)\n> > > > > + {\n> > > > > +   if (a[i] > 0)\n> > > > > +     return;\n> > > > > +   a[i]++;\n> > > > > + }\n> > > > > +}\n> > > > > +\n> > > > > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 0\n> \"vect\"\n> > > }\n> > > > } */\n> > > > > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > > b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > > > new file mode 100644\n> > > > > index 00000000000..2a2af31b783\n> > > > > --- /dev/null\n> > > > > +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n> > > > > @@ -0,0 +1,14 @@\n> > > > > +/* { dg-do compile } */\n> > > > > +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n> > > > preference=sve-only -fdump-tree-vect\" } */\n> > > > > +\n> > > > > +void small_cst_niters (char *a)\n> > > > > +{\n> > > > > + for (int i = 0; i < 30; i++)\n> > > > > + {\n> > > > > +   if (a[i] > 0)\n> > > > > +     return;\n> > > > > +   a[i]++;\n> > > > > + }\n> > > > > +}\n> > > > > +\n> > > > > +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 1\n> \"vect\"\n> > > }\n> > > > } */\n> > > > > diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc\n> > > > > index cd1ea746ae4..9271675dc6d 100644\n> > > > > --- a/gcc/tree-vect-loop-manip.cc\n> > > > > +++ b/gcc/tree-vect-loop-manip.cc\n> > > > > @@ -3380,8 +3380,9 @@ vect_do_peeling (loop_vec_info loop_vinfo,\n> > > tree\n> > > > niters, tree nitersm1,\n> > > > >   bool skip_vector = false;\n> > > > >   if (!uncounted_p)\n> > > > >     skip_vector = (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)\n> > > > > -           ? maybe_lt (LOOP_VINFO_INT_NITERS (loop_vinfo),\n> > > > > -                   bound_prolog + bound_epilog)\n> > > > > +           ? ((HOST_WIDE_INT) LOOP_VINFO_INT_NITERS (loop_vinfo)\n> > > > > +              < estimated_poly_value (bound_prolog + bound_epilog,\n> > > > > +                          POLY_VALUE_MAX))\n> > > > >           : (!LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING\n> (loop_vinfo)\n> > > > >              || vect_epilogues));\n> > > > >\n> > > > > @@ -4162,10 +4163,15 @@ vect_create_cond_for_vla_spec_read\n> > > > (loop_vec_info loop_vinfo, tree *cond_expr)\n> > > > >                       amount_and_expr, cst_ul_zero);\n> > > > >   chain_cond_expr (cond_expr, powof2_cond_expr);\n> > > > >\n> > > > > -  /* Create an expression of \"amount <= cst_ul_pagesize\".  */\n> > > > > -  tree pagesize_cond_expr = fold_build2 (LE_EXPR,\n> boolean_type_node,\n> > > > > -                     amount, cst_ul_pagesize);\n> > > > > -  chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > > > > +  /* If the max possible read amount may exceed the minimum page\n> size,\n> > > > create\n> > > > > +     an expression of \"amount <= cst_ul_pagesize\".  */\n> > > > > +  if (estimated_poly_value (read_amount_poly, POLY_VALUE_MAX)\n> > > > > +      > (HOST_WIDE_INT) param_min_pagesize)\n> > > > > +    {\n> > > > > +      tree pagesize_cond_expr = fold_build2 (LE_EXPR,\n> boolean_type_node,\n> > > > > +                         amount, cst_ul_pagesize);\n> > > > > +      chain_cond_expr (cond_expr, pagesize_cond_expr);\n> > > > > +    }\n> > > > > }\n> > > > >\n> > > > > /* If LOOP_VINFO_CHECK_UNEQUAL_ADDRS contains <A1, B1>, ...,\n> <An,\n> > > > Bn>,\n> > > > > --\n> > > > > 2.43.0\n> > > > >\n> >\n> \n> --\n> Richard Biener <rguenther@suse.de>\n> SUSE Software Solutions Germany GmbH,\n> Frankenstrasse 146, 90461 Nuernberg, Germany;\n> GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG\n> Nuernberg)","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=CjWqzhCe;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=CjWqzhCe;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=CjWqzhCe;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=CjWqzhCe","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=52.101.84.9"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g260K170zz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 18:42:23 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 662E04BA79BF\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 08:42:20 +0000 (GMT)","from DB3PR0202CU003.outbound.protection.outlook.com\n (mail-northeuropeazon11010009.outbound.protection.outlook.com [52.101.84.9])\n by sourceware.org (Postfix) with ESMTPS id D601E4BA7996\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 08:41:47 +0000 (GMT)","from AM9P195CA0002.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:21f::7)\n by AM8PR08MB6401.eurprd08.prod.outlook.com (2603:10a6:20b:361::8) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr\n 2026 08:41:41 +0000","from AM1PEPF000252DD.eurprd07.prod.outlook.com\n (2603:10a6:20b:21f:cafe::5b) by AM9P195CA0002.outlook.office365.com\n (2603:10a6:20b:21f::7) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,\n 24 Apr 2026 08:41:41 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n AM1PEPF000252DD.mail.protection.outlook.com (10.167.16.55) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18\n via Frontend Transport; Fri, 24 Apr 2026 08:41:40 +0000","from VI0PR08MB10392.eurprd08.prod.outlook.com\n (2603:10a6:800:210::10) by AS8PR08MB6360.eurprd08.prod.outlook.com\n (2603:10a6:20b:33e::22) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.20; Fri, 24 Apr\n 2026 08:40:35 +0000","from VI0PR08MB10392.eurprd08.prod.outlook.com\n ([fe80::cd7c:e19a:2072:75cc]) by VI0PR08MB10392.eurprd08.prod.outlook.com\n ([fe80::cd7c:e19a:2072:75cc%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 08:40:35 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 662E04BA79BF","OpenDKIM Filter v2.11.0 sourceware.org D601E4BA7996"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org D601E4BA7996","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org D601E4BA7996","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1777020108; cv=pass;\n b=jRmrlBwNdQhqtfMCSGlwL0glihQ8Z4ZJ0O9xWVx/nXchgaT8JNoUIMlMijVKgJ4CFEBvvetfJoXNuCghmJcPGZrk/Mftsayx0NL/fAyu2yJAlW/Oqn6EMbAY4qhLnkwhb4EBfdj5xiFcS9Ml9cImW7MNBaLvq8D00nIGGgW7RmQ=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=OU5gpf4tMuI5K5vtskefg8azSLRGypFh3ZdjkUyz6hg2IVKaMlI8Tk6qa559EBQFV0+lXhZpM6xae1Nir86wvTcazfbGyc9pOIb3MjgR6c4oIPe91sUWaICiyqt85rhuUYwRmHiZyqM80cB9B9GmAf/+myEWLIIjb0zkHa3qmboPvonMRoF3Sx4PYVg4cldy7A7paaFJND9oMC3YZx6mM7VhjiPsli01GSJXgmDCC+SIJaZqN4x6FNZUjLW32Ixezwiiefk1+QHPYpz3PhIxp9cAayHWeUjhqOGzVXnDnnpZmBjLK9gk4GyY91bRzW4J1GYM+Ss3yPT9ilNGPsRF1g==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=RolFTDCHjneEt3Q4KR81KYUfkaUijvXuw+I/10+Xd3KE5fmaRDUL1fHM6MSdL2mPXF7OSxu4zHwIg2Mt/ExbE4AZ81rL1NKwb2ghrWN9gO2ABGC8Rs1rSrjBTtKQb7I8DEJ9TTQus0p3LEWaC5kEiQtEaFwLIiH2GnqYSAm9l0J/2f/jLLIMkj6OcMF+DKSa9fNisUp1hrvvdk/C0RQFMYixW7e/sgUmMNtENoqX9PoYosKjmqhtgHxpd1/QUqxAhyjRhvKfio82FolFIKfapnzRx4YsvYF7M/tFsaNGdCjpNbx0DD3gi6Emz6HmgOUyN9sd+LGJXatrN2bBybgdjw=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777020108; c=relaxed/simple;\n bh=V8eVvfPfCqvis242Bsb1UfuLw/aWnL25tTBPcF8NrCQ=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=upxFoLnOCIYzsEimmx38S7Ty0ymhoBBbVcPjYAxiP7LBssk6Yn/TCo4JrgQVqYXzBhzlWoevmliAIyIw5yMwBAsWHVm5SwXavmHOKucv7JcNLJ1Uh44pvbZRGguietdiSDjLczNtIJcKHI+25x+yfENnviqL+HDzCvTXAPaGYe0=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=V8eVvfPfCqvis242Bsb1UfuLw/aWnL25tTBPcF8NrCQ=;\n b=GCod0E35bdTfougBUcn7Ub2Oo8oHKKUNWtDuOEG4SyohXfbYIYuplE7sp7UrIbUFtFvxxxdAi8l1kfFPlQ6znT9RNuN9E4EUffQvM8XRPz2NjRXFTumrx4eWFtL6i+cPUSITA24Mz6zFgnKLtgKGqSi+oCp8pl1tAHVaZ2sNLeePHP4zMgqk86/UMejrLMe9p5LMrYOCMf60oBHzd3q4mrGYNzV7FkIAV2uWXwMaha1qSWQhR7OE8Xr8sRccfnoSlmBpSWBZqQ2I4uocD6maEMMmZ6VpmCjoFJanM2jJ5qAcaXuUJMoPOCiYj3oHaTABO4TP7jZtUvVeDftKVveKdg==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=V8eVvfPfCqvis242Bsb1UfuLw/aWnL25tTBPcF8NrCQ=;\n b=RfecgPi/D8KfyLYgfqMYbJ8fwTTIb69+FHp4UJM0fPzkhZaxfCFCDdoceSJlE2sdD46Hoozd9aJafUPf2dPaF9Li84CwQ1DCCwY9nxpnhKcOZ2efTaTiuhmTpCxI3Mad5eKoaQCZIIttULbVUeZPQBxpJkA2t8DmTMXKRreKovroUy6KqKTIY9/HBa0jAZglx+DHZoKTy6YRgaLpPKKvlDRPQXeUu9OBChYfBakZH3d9Lzhj2FN9ztGlVRaXdKlZWEbTawTdWsehzPhf68LTmjGtf0C5/nO/kxwHhEy3BXqAjxUEWD/dSYCjRNAYpogdd9KMPSj6fsEHhUMg/xAi1A=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=suse.de smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]\n dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=V8eVvfPfCqvis242Bsb1UfuLw/aWnL25tTBPcF8NrCQ=;\n b=CjWqzhCeWwwSu19QYNzVA29ayfM+OZTrpgv864oIH7JXrw1LSSy9aJAC8QjJppPQesOm59+J3j+bWUGTC2Ij/+Ak0XJTdlse8GaWFvsVPFrFCQ9rGMxMpoFZawZoRAND3Ujyr8t8m1SVQOkWIreY0h1erU450wvEFNP3FXAItRs=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=V8eVvfPfCqvis242Bsb1UfuLw/aWnL25tTBPcF8NrCQ=;\n b=CjWqzhCeWwwSu19QYNzVA29ayfM+OZTrpgv864oIH7JXrw1LSSy9aJAC8QjJppPQesOm59+J3j+bWUGTC2Ij/+Ak0XJTdlse8GaWFvsVPFrFCQ9rGMxMpoFZawZoRAND3Ujyr8t8m1SVQOkWIreY0h1erU450wvEFNP3FXAItRs="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Richard Biener <rguenther@suse.de>","CC":"Pengfei Li <Pengfei.Li2@arm.com>, \"gcc-patches@gcc.gnu.org\"\n <gcc-patches@gcc.gnu.org>, \"rdapp.gcc@gmail.com\" <rdapp.gcc@gmail.com>","Subject":"RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Thread-Topic":"[PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Thread-Index":"AQHc0zjgGh223/C63kibmKRMMY2JYbXs77uAgAAE1pCAAOulcIAAAmSAgAAAZRA=","Date":"Fri, 24 Apr 2026 08:40:35 +0000","Message-ID":"\n <VI0PR08MB10392CCF75DA04ACB50E8F157FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","References":"<20260423154930.183274-1-Pengfei.Li2@arm.com>\n <34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>\n <VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>\n <VI0PR08MB10392D136647B42DBA841C1B8FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>\n <05n0ns91-ns90-9162-0933-q34npsqoqq0s@fhfr.qr>","In-Reply-To":"<05n0ns91-ns90-9162-0933-q34npsqoqq0s@fhfr.qr>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","Authentication-Results-Original":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","x-ms-traffictypediagnostic":"\n VI0PR08MB10392:EE_|AS8PR08MB6360:EE_|AM1PEPF000252DD:EE_|AM8PR08MB6401:EE_","X-MS-Office365-Filtering-Correlation-Id":"f3c9bbe7-7b4e-4bb4-b133-08dea1dd4e8e","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|376014|366016|1800799024|22082099003|18002099003|56012099003|38070700021;","X-Microsoft-Antispam-Message-Info-Original":"\n KD5JBGZoRILACuJbQzQlP70tNiSvbzzLfdzkgAT2zBzX6wX6EReuDB59jRJtfeIjTTV2Tia0TdXaj0okOSHNk+6cfIuJ2sX/Sx+bBZDX6LFGEhCOevvwYwXlK6TyZKB5ymP0TfyoXTHKkMEOU+u1YBlwSdkep4xz8KQmuPfmkR4GaxOS/qlRNo4lNjUupsuZeb3xN9G0L9rSFepuj3p6DvsEh2yfmU8LmCOLz7Q4S0FVUMj/ybLqVRqC3Z4aKezSKALARNz/nmHv4QX+95k7Z5klYNIv6s4Xofe+Qdxl9opLb7NAkOEoRuORx4gt/7eh4AJW9cTHNM6uLfKx2/HQRI9wbxiwKKb5x2re/CXnSgQarhGZBHcUuu8teraP8HvDLs4CMOpsWQC05o09XT+kyW157kEls8ZIUdPMOt1ZwMnj4ZrRGpLCl33ITzn79n00y7JvdTmat0E2/1Z5ekHO3GlGXXYrvdQTbxVr8gyVC5fSCjmazoU1jG7TcJydGiQzTbJ9bjrtUanGFonA/DmxB6HdNEsr6xmaH9gu8uNzM/RdV1mi+5AC/fbIHRuhAbUIt+WB8dIpp/MUOyEaYWT4ahitXCMlNgQeWXD+gYcux66EJLQMbw4aXXpbzgzpA6vT4tZBcRMAUp4lUv0fc6fXdSEXHKNFxMYjbocNgcOsIhGG+Nt6+afaMCGyolx1OwcxzvbUIuvxQu8Vx/UenYeKznwsNowdoRKWwnhPJE+POfE9qkybWaRDdJpQOFIS207V","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI0PR08MB10392.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230040)(376014)(366016)(1800799024)(22082099003)(18002099003)(56012099003)(38070700021);\n DIR:OUT; SFP:1101;","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n ovYaEage60MhGydnxoDCk3ykzhT5qVmA/QDjVSdlIxP3aNI6w4CcMGmOKNjyXqG6SweTnDYlt4P5h4W+jhO4wavc3pR0A3LdaDoOGmAUSTQ5T5Ut1j/dXjMWpDoApH3Ms/uANmGmHg18RT2TlfnFAmQIER1Rp8ZRoPetJP43q6iwKuB3nwEhDLGfEe+TAJ4Snd9njcbNZFJfEWEABXx6l+GVKKnKLAYS2zaWgaY8IarqLTHbVyuwtX+x/IpMVus2gWCGBpZrGwRssO1WlBEa/pm+M0M3/cAtsF7NqkWaSpfw2dBWAc3jnCGk8C97usJL0YAcLcDTCUvS+g2y1fq6Sw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["AS8PR08MB6360","AM8PR08MB6401"],"X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n AM1PEPF000252DD.eurprd07.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 6eacb4a3-d340-419d-0234-08dea1dd2795","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|35042699022|36860700016|14060799003|82310400026|376014|1800799024|56012099003|22082099003|18002099003|13003099007;","X-Microsoft-Antispam-Message-Info":"\n BUJmcqRu5mojq9EEcpIXXTXAEulv+2xRXte/CDAHCgpsN4iKg9EmS7CRIxtxtcy4Vzbh/m62PX7FkbCFttGKY8E1pfa3MoPfJbPPk7smnsZdrOPiHsUUlSxNwhv6aLvD30Yv59xpYM7S4i8Jf7dVu4WN0UW2BzwkOTN+I5hG5LnwvNfkPHx/KL4A0oJNGvj+JEG8XIqyESUoWgK7ZFad1k0Hu7wEzwPkExhw6MGo8fThjKNovgbooLU24nrE/I3ZmkzUmeYtN0zeS65zsW3bzC5Xq0SdSXF9Jz7B3ZCN0SCiRKjyhCrp6pbknF9/yjS2j+cx9UCD0CBnt4Rcug77xT4yp95N8C6xrULZbUTxMJvO6zNQ/iuLtM7wou8mDFBS0GCBYSw+ilI+1bEPRDppwNu3mCt53yptYlbh+x89jhcFr98ZWSMlh3BwoFggK38aiMcnNw5iVa7+ep4olCa+cJO8JyQeSyLvmMHdSQILEDe1yPRhg4VCvvkJ/mhJyrMm99Tz+DuAuPE70YEoWisbZpgDZdM6rOWpBmIgHcnYAQh8qYxHwv/qI/wfumYUkDfNrGQGah856QUmDDbG0KcOSIBlRJwTvRFQ3etCmJKXsRmmMrN54SwTFbpRC/6nROb9qYpReOguR3PWCi1osZTlBpstDrc3RiYmwTO/ec5N3WY/7Jc8unLnXzKHfqD10eqE3Q+6L6bjBcLsW6dDWm6ZPZ+QwKqvj7mQU1DaFL3eHEs=","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(35042699022)(36860700016)(14060799003)(82310400026)(376014)(1800799024)(56012099003)(22082099003)(18002099003)(13003099007);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n sZYOvRXqr6gDOp3U1yRjgiwVCB5YfdEiTfLdAaGNyjaQtWJF5CwH8IxxYsXC07unlNlKBvBu+ByLNWuYfLD9bepmds5r78YNK2oq+jufNOr1A2O6l7Smh10xSeQni02HnCs1uOXyVragCXZ5BZ2MW2TJXHyBQDFLGiJsQCp8rh6bXfjkt4NKkSBqBfHarQE9E1ok/Q079eoy37A0SFjKIJITOst3YlYJZ3aXcUp1H2PaUbgMA1WOX3Jtq+qCbVcdNWzcgKbwJlBk+50SNmyOoBHd7OkT/06poGEnSjT7lIR/5fWYttHY1tjdoMb3iUvgtouK37bpa6nRYbHJ7miSzqy8HSb9ac49q//GKopAf4ENmbpzARRpNEL8wWbmfVQdefhMHYJDd0LIxoZ5NZcZ/WsoP8niw4tNiCAQN7XYKxMMrerQ6yqcRuaPQ0IL7zhl","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"24 Apr 2026 08:41:40.9931 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n f3c9bbe7-7b4e-4bb4-b133-08dea1dd4e8e","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n AM1PEPF000252DD.eurprd07.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3681926,"web_url":"http://patchwork.ozlabs.org/comment/3681926/","msgid":"<2df43830-0a58-4fd9-9314-69d4b434d802@arm.com>","list_archive_url":null,"date":"2026-04-24T09:57:10","subject":"Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","submitter":{"id":90721,"url":"http://patchwork.ozlabs.org/api/people/90721/","name":"Pengfei Li","email":"Pengfei.Li2@arm.com"},"content":"On 24/04/2026 09:40, Tamar Christina wrote:\n>> -----Original Message-----\n>> From: Richard Biener <rguenther@suse.de>\n>> Sent: 24 April 2026 09:30\n>> To: Tamar Christina <Tamar.Christina@arm.com>\n>> Cc: Pengfei Li <Pengfei.Li2@arm.com>; gcc-patches@gcc.gnu.org;\n>> rdapp.gcc@gmail.com\n>> Subject: RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n>> preheader\n>>\n>> On Fri, 24 Apr 2026, Tamar Christina wrote:\n>>\n>>>> -----Original Message-----\n>>>> From: Tamar Christina <Tamar.Christina@arm.com>\n>>>> Sent: 23 April 2026 19:22\n>>>> To: Richard Biener <rguenther@suse.de>; Pengfei Li\n>> <Pengfei.Li2@arm.com>\n>>>> Cc: gcc-patches@gcc.gnu.org; rdapp.gcc@gmail.com; Pengfei Li\n>>>> <Pengfei.Li2@arm.com>\n>>>> Subject: RE: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n>>>> preheader\n>>>>\n>>>>> -----Original Message-----\n>>>>> From: Richard Biener <rguenther@suse.de>\n>>>>> Sent: 23 April 2026 19:01\n>>>>> To: Pengfei Li <Pengfei.Li2@arm.com>\n>>>>> Cc: gcc-patches@gcc.gnu.org; Tamar Christina\n>> <Tamar.Christina@arm.com>;\n>>>>> rdapp.gcc@gmail.com; Pengfei Li <Pengfei.Li2@arm.com>\n>>>>> Subject: Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in\n>> loop\n>>>>> preheader\n>>>>>\n>>>>>\n>>>>>\n>>>>>> Am 23.04.2026 um 17:52 schrieb Pengfei Li <Pengfei.Li2@arm.com>:\n>>>>>>\n>>>>>> ﻿When vectorizing loops with VLA modes, GCC may insert runtime\n>> checks\n>>>>>> that compare poly_int values against constants. Examples include the\n>>>>>> skip_vector check for loops with known niters and the pagesize check\n>>>>>> for loops with speculative loads.\n>>>>>>\n>>>>>> Since these poly_int values are bounded by the target's maximum\n>> vector\n>>>>>> length, their maximum possible values can be determined at compile\n>> time.\n>>>>>> If the upper bound does not exceed the constant used in the check, the\n>>>>>> check can be omitted.\n>>>>>>\n>>>>>> This patch uses estimated_poly_value with POLY_VALUE_MAX to find\n>> the\n>>>>>> upper bound and inserts these checks only when required.\n>>>>>>\n>>>>>> Bootstrapped and tested on aarch64-linux-gnu and x86_64-linux-gnu.\n>>>>> Shouldn’t this be done in general constant folding of relations?\n>>>> Aside from that, I'm not even sure it's correct. So I'm asking around.\n>>>>\n>>>> The POLY_VALUE_MAX was never intended to be used for correctness only\n>>>> costing purposes.  This Is relevant because GCC can vectorize loops in SSVE\n>>>> (Streaming SVE mode) and the Arm Architectural reference Manual says in\n>>>> Section B1.4.1 that\n>>>>\n>>>> \"There is no requirement for the Maximum implemented Streaming SVE\n>> vector\n>>>> length to be greater than or equal to the\n>>>> Maximum Non-streaming implemented SVE vector length.\"\n>>>>\n>>>> Which to me indicates that SSVE can be larger than SVE VL, and indeed this\n>>>> is the case today, where SSVE has a larger VL than SVE on current cores.\n>>>>\n>>>> It's unclear to me if it's allowed that SSVE VL can exceed SVE the\n>> architecture\n>>>> does not actually state this, in which case this patch would be wrong.\n>>>>\n>>>> So I'm asking around for clarifications on this, while I do, can we please\n>>>> hold off on approving this.\n>>> This seems to be OK. So my objection is withdrawn.\n>> OTOH estimated_poly_value (x, POLY_VALUE_MAX) is a bit odd because\n>> of \"estimated\".  But maybe that's just bad naming?  The comment says\n>>\n> Yeah, so the problem is, and why I mentioned before that we never\n> used these values for correctness is that they change based on the\n> tuning cost model.\n>\n> So usage of estimated_poly_value in this patch is definitely wrong as it\n> creates broken binaries.\n>\n> On AArch64 estimated_poly_value returns the maximum theoretical\n> SVE size only when the cost model is set to `scalable`.\n>\n> But with a specific CPU like `-mcpu=neoverse-v2` it'll use 128.\n>\n> Basically\n>\n>    unsigned int width_source = aarch64_tune_params.sve_width;\n>    /* Allow sve_width to be a bitmask of different VL, treating the lowest\n>       as likely.  This could be made more general if future -mtune options\n>       need it to be.  */\n>    if (kind == POLY_VALUE_MAX)\n>      width_source = 1 << floor_log2 (width_source);\n>    else\n>      width_source = least_bit_hwi (width_source);\n>\n>    /* If the core provides width information, use that.  */\n>    HOST_WIDE_INT over_128 = width_source - 128;\n>    return val.coeffs[0] + val.coeffs[1] * over_128 / 128;\n>\n> So this is unsafe, as it'll fail on a VL > 128 machine.\n\nThanks for all replies.\n\nI didn't notice estimated_poly_value is a pure costing heuristic helper \nand shouldn't be used here. I agree this patch is not valid.\n\n>  From what I remember when we first added this check, Richard\n> mentioned there is no way to get the limit of an ISA generically.\n> and this was done intentionally so that code don't make faulty\n> assumptions.\n\nAs a follow-up question: If we really wanted to eliminate those \ncomparisons in the preheader, is introducing another target hook that \ncan return the VL upper bound (or non-existence) a reasonable way? I \nrealize that new target hooks should be generally avoided where \npossible, but I was wondering whether it makes sense as other targets \nalso have VL bounds (e.g., RISC-V appears to have a limit of 65556 \nbits). Alternatively, do you think the elimination of a few instructions \noutside the loop body is not worth adding this kind of hook?\n\n> Thanks,\n> Tamar\n>\n>> /* Return an estimate of the runtime value of X, for use in things\n>>     like cost calculations or profiling frequencies.  Note that this\n>>     function should never be used in situations where the actual\n>>     runtime value is needed for correctness, since the function only\n>>     provides a rough guess.  */\n>>\n>> but maybe that pre-dates the introduction of POLY_VALUE_MAX.\n>>\n>> In particular the target hook docs say \"The default\n>> implementation returns the lowest possible value of @var{val}\" which\n>> would be wrong for a reliable POLY_VALUE_MAX.  And it indeed\n>> does that.\n>>\n>> How does this work on the risc-v side?\n>>\n>> Shouldn't the hook have a failure mode, in case there is no\n>> maximum?\n>>\n>> Richard.\n>>\n>>> Thanks,\n>>> Tamar\n>>>> Thanks,\n>>>> Tamar\n>>>>>> gcc/ChangeLog:\n>>>>>>\n>>>>>>     * tree-vect-loop-manip.cc (vect_do_peeling): Avoid unnecessary\n>>>>>>     skip_vector checks using estimated_poly_value.\n>>>>>>     (vect_create_cond_for_vla_spec_read): Make the pagesize check\n>>>>>>     conditional using estimated_poly_value.\n>>>>>>\n>>>>>> gcc/testsuite/ChangeLog:\n>>>>>>\n>>>>>>     * gcc.target/aarch64/sve/vect-poly-int-cmp_1.c: New test.\n>>>>>>     * gcc.target/aarch64/sve/vect-poly-int-cmp_2.c: New test.\n>>>>>> ---\n>>>>>> .../aarch64/sve/vect-poly-int-cmp_1.c          | 14 ++++++++++++++\n>>>>>> .../aarch64/sve/vect-poly-int-cmp_2.c          | 14 ++++++++++++++\n>>>>>> gcc/tree-vect-loop-manip.cc                    | 18 ++++++++++++------\n>>>>>> 3 files changed, 40 insertions(+), 6 deletions(-)\n>>>>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-\n>> int-\n>>>>> cmp_1.c\n>>>>>> create mode 100644 gcc/testsuite/gcc.target/aarch64/sve/vect-poly-\n>> int-\n>>>>> cmp_2.c\n>>>>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n>>>>> b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n>>>>>> new file mode 100644\n>>>>>> index 00000000000..03ab37e7c4b\n>>>>>> --- /dev/null\n>>>>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_1.c\n>>>>>> @@ -0,0 +1,14 @@\n>>>>>> +/* { dg-do compile } */\n>>>>>> +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n>>>>> preference=sve-only -fdump-tree-vect\" } */\n>>>>>> +\n>>>>>> +void large_cst_niters (char *a)\n>>>>>> +{\n>>>>>> + for (int i = 0; i < 5000; i++)\n>>>>>> + {\n>>>>>> +   if (a[i] > 0)\n>>>>>> +     return;\n>>>>>> +   a[i]++;\n>>>>>> + }\n>>>>>> +}\n>>>>>> +\n>>>>>> +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 0\n>> \"vect\"\n>>>> }\n>>>>> } */\n>>>>>> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n>>>>> b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n>>>>>> new file mode 100644\n>>>>>> index 00000000000..2a2af31b783\n>>>>>> --- /dev/null\n>>>>>> +++ b/gcc/testsuite/gcc.target/aarch64/sve/vect-poly-int-cmp_2.c\n>>>>>> @@ -0,0 +1,14 @@\n>>>>>> +/* { dg-do compile } */\n>>>>>> +/* { dg-options \"-O3 -msve-vector-bits=scalable -mautovec-\n>>>>> preference=sve-only -fdump-tree-vect\" } */\n>>>>>> +\n>>>>>> +void small_cst_niters (char *a)\n>>>>>> +{\n>>>>>> + for (int i = 0; i < 30; i++)\n>>>>>> + {\n>>>>>> +   if (a[i] > 0)\n>>>>>> +     return;\n>>>>>> +   a[i]++;\n>>>>>> + }\n>>>>>> +}\n>>>>>> +\n>>>>>> +/* { dg-final { scan-tree-dump-times \"if\\[^\\n\\r\\]*POLY_INT_CST\" 1\n>> \"vect\"\n>>>> }\n>>>>> } */\n>>>>>> diff --git a/gcc/tree-vect-loop-manip.cc b/gcc/tree-vect-loop-manip.cc\n>>>>>> index cd1ea746ae4..9271675dc6d 100644\n>>>>>> --- a/gcc/tree-vect-loop-manip.cc\n>>>>>> +++ b/gcc/tree-vect-loop-manip.cc\n>>>>>> @@ -3380,8 +3380,9 @@ vect_do_peeling (loop_vec_info loop_vinfo,\n>>>> tree\n>>>>> niters, tree nitersm1,\n>>>>>>    bool skip_vector = false;\n>>>>>>    if (!uncounted_p)\n>>>>>>      skip_vector = (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo)\n>>>>>> -           ? maybe_lt (LOOP_VINFO_INT_NITERS (loop_vinfo),\n>>>>>> -                   bound_prolog + bound_epilog)\n>>>>>> +           ? ((HOST_WIDE_INT) LOOP_VINFO_INT_NITERS (loop_vinfo)\n>>>>>> +              < estimated_poly_value (bound_prolog + bound_epilog,\n>>>>>> +                          POLY_VALUE_MAX))\n>>>>>>            : (!LOOP_VINFO_USE_VERSIONING_WITHOUT_PEELING\n>> (loop_vinfo)\n>>>>>>               || vect_epilogues));\n>>>>>>\n>>>>>> @@ -4162,10 +4163,15 @@ vect_create_cond_for_vla_spec_read\n>>>>> (loop_vec_info loop_vinfo, tree *cond_expr)\n>>>>>>                        amount_and_expr, cst_ul_zero);\n>>>>>>    chain_cond_expr (cond_expr, powof2_cond_expr);\n>>>>>>\n>>>>>> -  /* Create an expression of \"amount <= cst_ul_pagesize\".  */\n>>>>>> -  tree pagesize_cond_expr = fold_build2 (LE_EXPR,\n>> boolean_type_node,\n>>>>>> -                     amount, cst_ul_pagesize);\n>>>>>> -  chain_cond_expr (cond_expr, pagesize_cond_expr);\n>>>>>> +  /* If the max possible read amount may exceed the minimum page\n>> size,\n>>>>> create\n>>>>>> +     an expression of \"amount <= cst_ul_pagesize\".  */\n>>>>>> +  if (estimated_poly_value (read_amount_poly, POLY_VALUE_MAX)\n>>>>>> +      > (HOST_WIDE_INT) param_min_pagesize)\n>>>>>> +    {\n>>>>>> +      tree pagesize_cond_expr = fold_build2 (LE_EXPR,\n>> boolean_type_node,\n>>>>>> +                         amount, cst_ul_pagesize);\n>>>>>> +      chain_cond_expr (cond_expr, pagesize_cond_expr);\n>>>>>> +    }\n>>>>>> }\n>>>>>>\n>>>>>> /* If LOOP_VINFO_CHECK_UNEQUAL_ADDRS contains <A1, B1>, ...,\n>> <An,\n>>>>> Bn>,\n>>>>>> --\n>>>>>> 2.43.0\n>>>>>>\n>> --\n>> Richard Biener <rguenther@suse.de>\n>> SUSE Software Solutions Germany GmbH,\n>> Frankenstrasse 146, 90461 Nuernberg, Germany;\n>> GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG\n>> Nuernberg)\nThanks,\nPengfei","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=c3vXp/xC;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=c3vXp/xC;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=c3vXp/xC;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=c3vXp/xC","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=52.101.83.63"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g27hs4jcrz1xvV\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 19:59:07 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 075A14BB24FF\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 09:59:05 +0000 (GMT)","from GVXPR05CU001.outbound.protection.outlook.com\n (mail-swedencentralazon11013063.outbound.protection.outlook.com\n [52.101.83.63])\n by sourceware.org (Postfix) with ESMTPS id 4BB654BB24FF\n for <gcc-patches@gcc.gnu.org>; Fri, 24 Apr 2026 09:58:30 +0000 (GMT)","from AS4P192CA0011.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:5da::8)\n by AS8PR08MB9767.eurprd08.prod.outlook.com (2603:10a6:20b:614::14) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Fri, 24 Apr\n 2026 09:58:17 +0000","from DU6PEPF0000A7DD.eurprd02.prod.outlook.com\n (2603:10a6:20b:5da:cafe::19) by AS4P192CA0011.outlook.office365.com\n (2603:10a6:20b:5da::8) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.22 via Frontend Transport; Fri,\n 24 Apr 2026 09:58:17 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DU6PEPF0000A7DD.mail.protection.outlook.com (10.167.8.37) with Microsoft SMTP\n Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9846.18 via\n Frontend Transport; Fri, 24 Apr 2026 09:58:16 +0000","from PA4PR08MB7410.eurprd08.prod.outlook.com (2603:10a6:102:2a2::20)\n by AS2PR08MB9944.eurprd08.prod.outlook.com (2603:10a6:20b:547::17)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.22; Fri, 24 Apr\n 2026 09:57:11 +0000","from PA4PR08MB7410.eurprd08.prod.outlook.com\n ([fe80::af30:5110:51eb:5180]) by PA4PR08MB7410.eurprd08.prod.outlook.com\n ([fe80::af30:5110:51eb:5180%3]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 09:57:11 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 075A14BB24FF","OpenDKIM Filter v2.11.0 sourceware.org 4BB654BB24FF"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 4BB654BB24FF","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 4BB654BB24FF","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1777024710; cv=pass;\n b=Pfn5NuGxY1I+E8jicaC1yZ9cTZLrvciN9/i1xHCWnQ2mp4ecz3yVFGav0mxOlcStskUtpYZJfcKPSQGwCXdEH7HeZxHd5+TLmG20FxPU2Vy6nmOOHrDY0cpN4f+90sz0odk+iXVBHh4wFXeDR1tFK03A6BBZf+T2Un3t81/qrMg=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=fQ2QdEF8W1/kJvgbvEm4zLG0BKXAeME14aNv1pa0F0VKhVj4O6FQ4uzuety1jFHItUHrEItjDMvqbjipF+CSh/XXjtuEWcpXxKdSS42cBzpzKWeDXsJloepDmvkQMAHLt8JGu/B3dB6clz75llEfcuXVeQBeTMh09KnTTKmXAJ38BkRTRwRgm4Ru6YjSV6EBZcRNH9DjsacPR6tMpxoubXrNhCCCjiGRFVg0G7wQJpUhducpfn830F+fsqYh80ADQpFhdC9P7K5heVa8/bOQ9kGL5qA3T3E6/mg4ZN7Xfjy1l1HrOcSu5WZU/68+jq2xvA+6jMdra9r+pNRvMpDAPw==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=eXRuFOnPUvCYKLN5Wx5+7oxohT8uCRg8+3N5ojWj5ogTcKxYG6s1w82jSipkpsONkNNazEaSwgVEqfxRSGW1GN4EJgXZ5LJBwn3O0RzC3mwsX/VRvSKLCVUENkFZsdGA2HdbPr3YYwXZS+pGOsQHiSW/tvTPY0PMsvyS+QwsbGIzEipIJuPZT7Z2pVJyMxrPIyH9VZwe3oEy04C2Ml8ggGVOdW5yh3jFnlAED25pIRN6AnaaLsLkyYW4z6VRLmtdfaLj2yOURPJI9tm1w4yDVhjbK7xJJZaRrQYon8x0nAytUtkM/qThnDwvs4gO6XoneXF//Ngd1SdtD9A2LibIpQ=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777024710; c=relaxed/simple;\n bh=gPphF3pPhl0QZH7MexC+Z9ordq9m6Tuv7YX6KQMEGXs=;\n h=DKIM-Signature:DKIM-Signature:Message-ID:Date:Subject:To:From:\n MIME-Version;\n b=px+GpwSwAX0IQS9G21MIqT8k2AQiSBjtSrtaZiFlDLLpdTMhPaY2WxpzMC5Wos8/wsaPgrxTz1odc7Bl1nJXc6dumxYn+JhC/RPI/li6rvT+hMpXldX0fIiVxUR/xnTTIJqStTyMoBbSEDgqFuDXRnjEIJY1KeGvHne8En7pUiA=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=WtI6luhPSNE0ZQ7KSU4BGzVfnKCO7zsnsMmFVC6uZTg=;\n b=bzRlcVOL/7fyHYbANWLSKoepVah1rL6uZsT3sDxWnQS0XkY2Llr/jXAZAuxyrFP3Y5n2ScId0klt6VpEzBTYTWtcujxJquffJhBs3LYyHsuNBeFXc0G1iCsoTny5xBaGbccZvkNRSBCuECjCgyH2tt8TuHJEoOqNQ2piSJQ1eNhvbIH/FnHEljeX8ESX/336l7YiZK4l0SOT7Kf3MGWaHctUNpm99P6WI7BI4509uz0MFkxgOx5vsHbRY+5jSr9FVx501cusyqK18posfvy3LDu0PJyhzpTb86AYd9xFIMrUqmdGHTUNWVLTUg5o80eXv0DhBW9FQXydkPDu8ZTUiw==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=WtI6luhPSNE0ZQ7KSU4BGzVfnKCO7zsnsMmFVC6uZTg=;\n b=IX+8Cbo6x32DfW2geAd7wL6tjbPKe0VtnGNHZuRU7J/1o0yiFyk5at5Kjc/YM6gnXkI92IFVHhzD0TlMTJMrUb+AphKpMXwSyB6M8vyp1zUON1LTJrXN9mqyy5WMZvlx0qJW912T2B+URa5JSKyUM0rvAfSNk1+Porg0zrMnN5b7ipl+8FzlxNptYlINJK/hqVfFGCJXYat4z6xShM+/hD+3+zCrTwPE1EPPw97NowPvnNp4aFWwUFYaWSDWJOkU8ZgsIiPLUc6VXPxI4d7t01RFLI0XSQJnEwxARt1yB03sNgf68pDnMAZlZUrCofLrOKanaVN7AGRnHSdMCwOTLw=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=suse.de smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]\n dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=WtI6luhPSNE0ZQ7KSU4BGzVfnKCO7zsnsMmFVC6uZTg=;\n b=c3vXp/xC3/cnZ+Wxvn2L1BKSCmWnG/BXqw4H/miYRkgZhTqlrB0o/Vx8UMNSdqPTBjrZwt1WsABabEAKfYz4D5VrcgidnTt0ujGJMU9VK2grmI4Q8ciaZxDnN4k6set09icuzXJTtHQNxk/0ION7ua4umjmtGqbzoNMXdwe1nI8=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=WtI6luhPSNE0ZQ7KSU4BGzVfnKCO7zsnsMmFVC6uZTg=;\n b=c3vXp/xC3/cnZ+Wxvn2L1BKSCmWnG/BXqw4H/miYRkgZhTqlrB0o/Vx8UMNSdqPTBjrZwt1WsABabEAKfYz4D5VrcgidnTt0ujGJMU9VK2grmI4Q8ciaZxDnN4k6set09icuzXJTtHQNxk/0ION7ua4umjmtGqbzoNMXdwe1nI8="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","Authentication-Results-Original":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","Message-ID":"<2df43830-0a58-4fd9-9314-69d4b434d802@arm.com>","Date":"Fri, 24 Apr 2026 10:57:10 +0100","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH] vect: Avoid unnecessary poly_int comparisons in loop\n preheader","Content-Language":"en-GB","To":"Tamar Christina <Tamar.Christina@arm.com>,\n Richard Biener <rguenther@suse.de>","Cc":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>,\n \"rdapp.gcc@gmail.com\" <rdapp.gcc@gmail.com>","References":"<20260423154930.183274-1-Pengfei.Li2@arm.com>\n <34BAA729-9AB5-4F38-B3E6-FD4C630AC9D9@suse.de>\n <VI0PR08MB103921B82DC67B9116BFC61D5FF2A2@VI0PR08MB10392.eurprd08.prod.outlook.com>\n <VI0PR08MB10392D136647B42DBA841C1B8FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>\n <05n0ns91-ns90-9162-0933-q34npsqoqq0s@fhfr.qr>\n <VI0PR08MB10392CCF75DA04ACB50E8F157FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","From":"Pengfei Li <pengfei.li2@arm.com>","In-Reply-To":"\n <VI0PR08MB10392CCF75DA04ACB50E8F157FF2B2@VI0PR08MB10392.eurprd08.prod.outlook.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-ClientProxiedBy":"PR3P250CA0020.EURP250.PROD.OUTLOOK.COM\n (2603:10a6:102:57::25) To PA4PR08MB7410.eurprd08.prod.outlook.com\n (2603:10a6:102:2a2::20)","MIME-Version":"1.0","X-MS-TrafficTypeDiagnostic":"\n PA4PR08MB7410:EE_|AS2PR08MB9944:EE_|DU6PEPF0000A7DD:EE_|AS8PR08MB9767:EE_","X-MS-Office365-Filtering-Correlation-Id":"3b60ebab-dd91-4695-1e75-08dea1e801fd","x-checkrecipientrouted":"true","NoDisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|376014|1800799024|366016|18002099003|22082099003|56012099003;","X-Microsoft-Antispam-Message-Info-Original":"\n +H8M+02x5crQti8PjVYUWJCi/PcCmGE2OR1falAfRoYCVc/a/HB6lC69F0X7SDu4Ybby9+1XQmppLWhbhZi6Qg+dKv+XkS2JCSSk3FcaaHyhoRrxgygoT+ms6RWYh6TyFjT679g7IaIcVrUaxHOwKXDIcmqye5nPQxvG8GZrtncH2haaIgqybo5AUMriNtR8rpKytsWKd3Q3jVO3yJ4htGf7rDqe3fVYrLMtSUAynZnv4e0+nB4MxBJgcnrMm45u6tTnqDn5Z6ed96I8XEusc3y6ZPlQi78l8mNPoBLWWtB7kCMQtv/3LMfScR5KEWkSnMOP/MwSIZ6gkVjO4EiIK62hclv4a4FPnQFcyRpD6PHyGYi26CzcmW3qhLmL5ojRB6akGfBpPTSpizKqo3uGb51pxBJgQJCefveO4emuwdQChh9RrCpYFWkmcuPc+HVgxsls0eyr7xEndUg6PZ7COTrWUezqbzsD8TlnUzCnLGeef5+e16RcwJluc7eS4h9jNcYti/UpTBgKwuSPTEjNGLD5Tl7otk8RbQ9f4Y16V+x+n8dsATBfWp45nfpzXzaxgDOPIuipcAopbV/SRvcXKkWfi9faa04slnhDXtcylE+QynqjKR+JIrIuZQhuGZzHzW5Cj+ilf8Admbcr2pLADGdViUfNLCr0yvUpohrHInTTOefSzvJ99226S/zEAnSK862jcv4sANKQyssTKHsJiw==","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB7410.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230040)(376014)(1800799024)(366016)(18002099003)(22082099003)(56012099003);\n DIR:OUT; SFP:1101;","X-Exchange-RoutingPolicyChecked":"\n UmSK/0qyLm+Yn61ItqJaDHIZ8vuYsAS2yTHDNZgUYNIIUclXkgxjbcDB0CRmy9RzBjfwx3v82glGC0PdmSIgUEynXBihuyRfs7aFeAtzl6KQuhfLfJDFa2crvqY7fZmwG9TSo2UmpHMgeNvdvZApmcZCcERBuVEZ5lk9W/7kFV2N/pI3Dg3H89RDCeRWlg0e2tBevYH7OqJKk2R+xkcDhNTS3iKR092YhZ0xFme9SpvQ+Uy9eNIU44qIH1PXM9QAi5bTdF0coAC4otTyV3dyp8hCH6rCUiibUzP+VpWZf+K5DMPuo0kaEGPt14C6hyiLOB68ydwWqOerlo3EwwXHUg==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["AS2PR08MB9944","AS8PR08MB9767"],"X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DU6PEPF0000A7DD.eurprd02.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 74248a7d-e21b-4834-fab5-08dea1e7da8a","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|35042699022|14060799003|36860700016|82310400026|376014|1800799024|56012099003|13003099007|18002099003|22082099003;","X-Microsoft-Antispam-Message-Info":"\n tsEtww4JyM2GEhgh0MB3QqFi05g6gK44kWFJxvczB4M8YwRky0RAl264n4du9hQIJNrg66zVo2CdD2i8jD7dEMYnTAInKLNA4Cqxwvasl5ifQ/i79MCGMcJVM2fmHbQezTFaFY0C87hLL3Sh20ZzB4J27gOVnrtcn9V7H8LQOnBkUAS2Bp5rXN6ePQCwobgwPnuF6bK2Pa43QaCU45x1Og8BiAqnaagoe7zPcqAgL4DHxSuSLdD3cFHf4z8YgwIavYNQTr6tf5C+52b7gYcEkeWrNVt7NSV2wencdRje24nLUkiVuV1IlCCs0AnD5uC4q0EUiFiX9xze51QjR5zRkEVCT+X3WstmPSm1KPQOSwM0BDxjF9C/0+5zdsz1of6BTc9/XqIj/DzM8PAP5NKXqkf/KWluIL5b3jPiHMWubYbgX3ijC0/hsjGOlVabB5pB0NsD3m5+uXiOqUVJbJ/wBMAEFx7n4xaq4L/RrMg317uaeh4BtmicKemBmZV25Otre7moxS65jpjRw2zphTOT4IO75zXuqF3WRRcJgPhRV9kXP/KksE5TV4c3iGbjuydPrKycABFFUWE0nZXcyxYyi/NWXpnjUxQKF+Yx4olTmfDADr4/hKzbetIh3h5vfKOf9Vjoe69ahdOjPJQt2SIWujU3HSGCSY0hUBMX8iRK45DIc/pAo+2lRQw5d/zFZplasa/Yu2PaaE/RzD50uC03eFs5CsiCEveAL0eo0Nb83n0=","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(35042699022)(14060799003)(36860700016)(82310400026)(376014)(1800799024)(56012099003)(13003099007)(18002099003)(22082099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n OSIooRwwEFbIV20DdEOvhcIIXLaF5Vy97nWYMiS/6r49OmJ3xCdh7TWQQv7emNUZoQH0oM/y5BbeS8ZSZkdhtUrRj6/NyPSTrV+c5ihpG476qKBgA2sxWaf1ySE8RgcxHRYc2KR2lFb3cpjzQd4xPZsd0Fej9Rl5ekHH4yIY9kR7t3v+lcLaZj3e1ZMA0DayEDdNbPti9ZY2ICusF4gVCM/16m+S7gR/Ald6G8OPxCqjm/nywhwaVTFU1lxt8h3V5OQIOGt6a6WqSbVkso9kWZQfryNs2jCuV6PthdKJ1k/t2esWUNy6PQp0gME4UTSAcnoSqjzHrb1lYIGdV4blDQyhSv5M6ZGyKPTKXXfVuKsdCcsM4sTfmt5m9RAv578Z7vNMeZQDlJOqlUEXwBiEPq6bpQzMMeh65jxS1gQ3nwg58S55wC05kL/IzcYEfkIj","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"24 Apr 2026 09:58:16.9966 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 3b60ebab-dd91-4695-1e75-08dea1e801fd","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n DU6PEPF0000A7DD.eurprd02.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]