[{"id":3188526,"web_url":"http://patchwork.ozlabs.org/comment/3188526/","msgid":"<mptv8bwvw3k.fsf@arm.com>","list_archive_url":null,"date":"2023-09-27T08:50:07","subject":"Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","submitter":{"id":64746,"url":"http://patchwork.ozlabs.org/api/people/64746/","name":"Richard Sandiford","email":"richard.sandiford@arm.com"},"content":"Tamar Christina <tamar.christina@arm.com> writes:\n> Hi All,\n>\n> SVE has much bigger immediate encoding range for bitmasks than Advanced SIMD has\n> and so on a system that is SVE capable if we need an Advanced SIMD Inclusive-OR\n> by immediate and would require a reload then an unpredicated SVE ORR instead.\n>\n> This has both speed and size improvements.\n>\n> Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.\n>\n> Ok for master?\n>\n> Thanks,\n> Tamar\n>\n> gcc/ChangeLog:\n>\n> \tPR tree-optimization/109154\n> \t* config/aarch64/aarch64.md (<optab><mode>3): Convert to new syntax and\n> \tSVE split case.\n> \t* config/aarch64/iterators.md (VCONV, vconv): New.\n>\n> gcc/testsuite/ChangeLog:\n>\n> \tPR tree-optimization/109154\n> \t* gcc.target/aarch64/sve/fneg-abs_2.c: Updated.\n> \t* gcc.target/aarch64/sve/fneg-abs_4.c: Updated.\n>\n> --- inline copy of patch -- \n> diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md\n> index 60c92213c75a2a4c18a6b59ae52fe45d1e872718..377c5cafedd43d8d1320489a36267cc6e5f15239 100644\n> --- a/gcc/config/aarch64/aarch64.md\n> +++ b/gcc/config/aarch64/aarch64.md\n> @@ -4551,17 +4551,27 @@ (define_insn_and_split \"*aarch64_and<mode>_imm2\"\n>    }\n>  )\n>  \n> -(define_insn \"<optab><mode>3\"\n> -  [(set (match_operand:GPI 0 \"register_operand\" \"=r,rk,w\")\n> -\t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\" \"%r,r,w\")\n> -\t\t     (match_operand:GPI 2 \"aarch64_logical_operand\" \"r,<lconst>,w\")))]\n> -  \"\"\n> -  \"@\n> -  <logical>\\\\t%<w>0, %<w>1, %<w>2\n> -  <logical>\\\\t%<w>0, %<w>1, %2\n> -  <logical>\\\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\"\n> -  [(set_attr \"type\" \"logic_reg,logic_imm,neon_logic\")\n> -   (set_attr \"arch\" \"*,*,simd\")]\n> +(define_insn_and_split \"<optab><mode>3\"\n> +  [(set (match_operand:GPI 0 \"register_operand\")\n> +\t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\")\n> +\t\t     (match_operand:GPI 2 \"aarch64_logical_operand\")))]\n> +  \"\"\n> +  {@ [cons: =0, 1, 2; attrs: type, arch]\n> +     [r , %r, r       ; logic_reg , *   ] <logical>\\t%<w>0, %<w>1, %<w>2\n> +     [rk, r , <lconst>; logic_imm , *   ] <logical>\\t%<w>0, %<w>1, %2\n> +     [w , 0 , <lconst>; *         , sve ] #\n> +     [w , w , w       ; neon_logic, simd] <logical>\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n> +  }\n> +  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n> +   && satisfies_constraint_<lconst> (operands[2])\n> +   && FP_REGNUM_P (REGNO (operands[0]))\"\n> +  [(const_int 0)]\n> +  {\n> +    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1], <MODE>mode);\n> +    rtx op2 = gen_const_vec_duplicate (<VCONV>mode, operands[2]);\n> +    emit_insn (gen_<optab><vconv>3 (op1, op1, op2));\n> +    DONE;\n> +  }\n>  )\n\nThe WIP SME patches add a %Z modifier for 'z' register prefixes,\nsimilarly to b/h/s/d for scalar FP.  With that I think the alternative\ncan be:\n\n     [w , 0 , <lconst>; *         , sve ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n\nalthough it would be nice to keep the hex constant.\n\nWill try to post the patches up to that part soon.\n\nThanks,\nRichard\n\n>  \n>  ;; zero_extend version of above\n> diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\n> index d17becc37e230684beaee3c69e2a0f0ce612eda5..568cd5d1a3a9e00475376177ad13de72609df3d8 100644\n> --- a/gcc/config/aarch64/iterators.md\n> +++ b/gcc/config/aarch64/iterators.md\n> @@ -1432,6 +1432,11 @@ (define_mode_attr VCONQ [(V8QI \"V16QI\") (V16QI \"V16QI\")\n>  \t\t\t (HI   \"V8HI\") (QI   \"V16QI\")\n>  \t\t\t (SF   \"V4SF\") (DF   \"V2DF\")])\n>  \n> +;; 128-bit container modes for the lower part of an SVE vector to the inner or\n> +;; scalar source mode.\n> +(define_mode_attr VCONV [(SI \"VNx4SI\") (DI \"VNx2DI\")])\n> +(define_mode_attr vconv [(SI \"vnx4si\") (DI \"vnx2di\")])\n> +\n>  ;; Half modes of all vector modes.\n>  (define_mode_attr VHALF [(V8QI \"V4QI\")  (V16QI \"V8QI\")\n>  \t\t\t (V4HI \"V2HI\")  (V8HI  \"V4HI\")\n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> index a60cd31b9294af2dac69eed1c93f899bd5c78fca..fe9f27bf91b8fb18205a5891a5d5e847a5d88e4b 100644\n> --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> @@ -7,8 +7,7 @@\n>  \n>  /*\n>  ** f1:\n> -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.s, z0.s, #0x80000000\n>  **\tret\n>  */\n>  float32_t f1 (float32_t a)\n> @@ -18,9 +17,7 @@ float32_t f1 (float32_t a)\n>  \n>  /*\n>  ** f2:\n> -**\tmov\tx0, -9223372036854775808\n> -**\tfmov\td[0-9]+, x0\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.d, z0.d, #0x8000000000000000\n>  **\tret\n>  */\n>  float64_t f2 (float64_t a)\n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> index 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..707bcb0b6c53e212b55a255f500e9e548e9ccd80 100644\n> --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> @@ -6,9 +6,7 @@\n>  \n>  /*\n>  ** negabs:\n> -**\tmov\tx0, -9223372036854775808\n> -**\tfmov\td[0-9]+, x0\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.d, z0.d, #0x8000000000000000\n>  **\tret\n>  */\n>  double negabs (double x)\n> @@ -22,8 +20,7 @@ double negabs (double x)\n>  \n>  /*\n>  ** negabsf:\n> -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.s, z0.s, #0x80000000\n>  **\tret\n>  */\n>  float negabsf (float x)","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 spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=8.43.85.97; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com"],"Received":["from server2.sourceware.org (ip-8-43-85-97.sourceware.org\n [8.43.85.97])\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 4RwVgZ5K0dz1ypJ\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 18:50:34 +1000 (AEST)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id A04FE3861882\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 08:50:32 +0000 (GMT)","from foss.arm.com (foss.arm.com [217.140.110.172])\n by sourceware.org (Postfix) with ESMTP id BB8B03858035\n for <gcc-patches@gcc.gnu.org>; Wed, 27 Sep 2023 08:50:09 +0000 (GMT)","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8B0F21FB;\n Wed, 27 Sep 2023 01:50:47 -0700 (PDT)","from localhost (e121540-lin.manchester.arm.com [10.32.110.72])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6F2C53F59C;\n Wed, 27 Sep 2023 01:50:08 -0700 (PDT)"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org BB8B03858035","From":"Richard Sandiford <richard.sandiford@arm.com>","To":"Tamar Christina <tamar.christina@arm.com>","Mail-Followup-To":"Tamar Christina <tamar.christina@arm.com>,\n gcc-patches@gcc.gnu.org, nd@arm.com, Richard.Earnshaw@arm.com,\n Marcus.Shawcroft@arm.com, Kyrylo.Tkachov@arm.com, richard.sandiford@arm.com","Cc":"gcc-patches@gcc.gnu.org, nd@arm.com, Richard.Earnshaw@arm.com,\n Marcus.Shawcroft@arm.com, Kyrylo.Tkachov@arm.com","Subject":"Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","References":"<patch-17724-tamar@arm.com>","Date":"Wed, 27 Sep 2023 09:50:07 +0100","In-Reply-To":"<patch-17724-tamar@arm.com> (Tamar Christina's message of \"Wed,\n 27 Sep 2023 01:51:30 +0100\")","Message-ID":"<mptv8bwvw3k.fsf@arm.com>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain","X-Spam-Status":"No, score=-24.5 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH,\n KAM_SHORT, SPF_HELO_NONE, SPF_NONE,\n TXREP autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","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":3188534,"web_url":"http://patchwork.ozlabs.org/comment/3188534/","msgid":"<VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2023-09-27T08:54:17","subject":"RE: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","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 Sandiford <richard.sandiford@arm.com>\n> Sent: Wednesday, September 27, 2023 9:50 AM\n> To: Tamar Christina <Tamar.Christina@arm.com>\n> Cc: gcc-patches@gcc.gnu.org; nd <nd@arm.com>; Richard Earnshaw\n> <Richard.Earnshaw@arm.com>; Marcus Shawcroft\n> <Marcus.Shawcroft@arm.com>; Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>\n> Subject: Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions\n> when Advanced SIMD inefficient [PR109154]\n> \n> Tamar Christina <tamar.christina@arm.com> writes:\n> > Hi All,\n> >\n> > SVE has much bigger immediate encoding range for bitmasks than\n> > Advanced SIMD has and so on a system that is SVE capable if we need an\n> > Advanced SIMD Inclusive-OR by immediate and would require a reload then\n> an unpredicated SVE ORR instead.\n> >\n> > This has both speed and size improvements.\n> >\n> > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.\n> >\n> > Ok for master?\n> >\n> > Thanks,\n> > Tamar\n> >\n> > gcc/ChangeLog:\n> >\n> > \tPR tree-optimization/109154\n> > \t* config/aarch64/aarch64.md (<optab><mode>3): Convert to new\n> syntax and\n> > \tSVE split case.\n> > \t* config/aarch64/iterators.md (VCONV, vconv): New.\n> >\n> > gcc/testsuite/ChangeLog:\n> >\n> > \tPR tree-optimization/109154\n> > \t* gcc.target/aarch64/sve/fneg-abs_2.c: Updated.\n> > \t* gcc.target/aarch64/sve/fneg-abs_4.c: Updated.\n> >\n> > --- inline copy of patch --\n> > diff --git a/gcc/config/aarch64/aarch64.md\n> > b/gcc/config/aarch64/aarch64.md index\n> >\n> 60c92213c75a2a4c18a6b59ae52fe45d1e872718..377c5cafedd43d8d13204\n> 89a3626\n> > 7cc6e5f15239 100644\n> > --- a/gcc/config/aarch64/aarch64.md\n> > +++ b/gcc/config/aarch64/aarch64.md\n> > @@ -4551,17 +4551,27 @@ (define_insn_and_split\n> \"*aarch64_and<mode>_imm2\"\n> >    }\n> >  )\n> >\n> > -(define_insn \"<optab><mode>3\"\n> > -  [(set (match_operand:GPI 0 \"register_operand\" \"=r,rk,w\")\n> > -\t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\" \"%r,r,w\")\n> > -\t\t     (match_operand:GPI 2 \"aarch64_logical_operand\"\n> \"r,<lconst>,w\")))]\n> > -  \"\"\n> > -  \"@\n> > -  <logical>\\\\t%<w>0, %<w>1, %<w>2\n> > -  <logical>\\\\t%<w>0, %<w>1, %2\n> > -  <logical>\\\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\"\n> > -  [(set_attr \"type\" \"logic_reg,logic_imm,neon_logic\")\n> > -   (set_attr \"arch\" \"*,*,simd\")]\n> > +(define_insn_and_split \"<optab><mode>3\"\n> > +  [(set (match_operand:GPI 0 \"register_operand\")\n> > +\t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\")\n> > +\t\t     (match_operand:GPI 2 \"aarch64_logical_operand\")))]\n> > +  \"\"\n> > +  {@ [cons: =0, 1, 2; attrs: type, arch]\n> > +     [r , %r, r       ; logic_reg , *   ] <logical>\\t%<w>0, %<w>1, %<w>2\n> > +     [rk, r , <lconst>; logic_imm , *   ] <logical>\\t%<w>0, %<w>1, %2\n> > +     [w , 0 , <lconst>; *         , sve ] #\n> > +     [w , w , w       ; neon_logic, simd] <logical>\\t%0.<Vbtype>, %1.<Vbtype>,\n> %2.<Vbtype>\n> > +  }\n> > +  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n> > +   && satisfies_constraint_<lconst> (operands[2])\n> > +   && FP_REGNUM_P (REGNO (operands[0]))\"\n> > +  [(const_int 0)]\n> > +  {\n> > +    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1], <MODE>mode);\n> > +    rtx op2 = gen_const_vec_duplicate (<VCONV>mode, operands[2]);\n> > +    emit_insn (gen_<optab><vconv>3 (op1, op1, op2));\n> > +    DONE;\n> > +  }\n> >  )\n> \n> The WIP SME patches add a %Z modifier for 'z' register prefixes, similarly to\n> b/h/s/d for scalar FP.  With that I think the alternative can be:\n> \n>      [w , 0 , <lconst>; *         , sve ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n> \n> although it would be nice to keep the hex constant.\n\nMy original patch added a %u for (undecorated) which just prints the register\nnumber and changed %C to also accept a single constant instead of only a uniform vector.\n\nBut I figured you wouldn't like that? 😊\n\nCheers,\nTamar\n\n> \n> Will try to post the patches up to that part soon.\n> \n> Thanks,\n> Richard\n> \n> >\n> >  ;; zero_extend version of above\n> > diff --git a/gcc/config/aarch64/iterators.md\n> > b/gcc/config/aarch64/iterators.md index\n> >\n> d17becc37e230684beaee3c69e2a0f0ce612eda5..568cd5d1a3a9e00475376\n> 177ad13\n> > de72609df3d8 100644\n> > --- a/gcc/config/aarch64/iterators.md\n> > +++ b/gcc/config/aarch64/iterators.md\n> > @@ -1432,6 +1432,11 @@ (define_mode_attr VCONQ [(V8QI \"V16QI\")\n> (V16QI \"V16QI\")\n> >  \t\t\t (HI   \"V8HI\") (QI   \"V16QI\")\n> >  \t\t\t (SF   \"V4SF\") (DF   \"V2DF\")])\n> >\n> > +;; 128-bit container modes for the lower part of an SVE vector to the\n> > +inner or ;; scalar source mode.\n> > +(define_mode_attr VCONV [(SI \"VNx4SI\") (DI \"VNx2DI\")])\n> > +(define_mode_attr vconv [(SI \"vnx4si\") (DI \"vnx2di\")])\n> > +\n> >  ;; Half modes of all vector modes.\n> >  (define_mode_attr VHALF [(V8QI \"V4QI\")  (V16QI \"V8QI\")\n> >  \t\t\t (V4HI \"V2HI\")  (V8HI  \"V4HI\")\n> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> > b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> > index\n> >\n> a60cd31b9294af2dac69eed1c93f899bd5c78fca..fe9f27bf91b8fb18205a589\n> 1a5d5\n> > e847a5d88e4b 100644\n> > --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> > @@ -7,8 +7,7 @@\n> >\n> >  /*\n> >  ** f1:\n> > -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> > +**\torr\tz0.s, z0.s, #0x80000000\n> >  **\tret\n> >  */\n> >  float32_t f1 (float32_t a)\n> > @@ -18,9 +17,7 @@ float32_t f1 (float32_t a)\n> >\n> >  /*\n> >  ** f2:\n> > -**\tmov\tx0, -9223372036854775808\n> > -**\tfmov\td[0-9]+, x0\n> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> > +**\torr\tz0.d, z0.d, #0x8000000000000000\n> >  **\tret\n> >  */\n> >  float64_t f2 (float64_t a)\n> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> > b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> > index\n> >\n> 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..707bcb0b6c53e212b55a\n> 255f500e\n> > 9e548e9ccd80 100644\n> > --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> > @@ -6,9 +6,7 @@\n> >\n> >  /*\n> >  ** negabs:\n> > -**\tmov\tx0, -9223372036854775808\n> > -**\tfmov\td[0-9]+, x0\n> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> > +**\torr\tz0.d, z0.d, #0x8000000000000000\n> >  **\tret\n> >  */\n> >  double negabs (double x)\n> > @@ -22,8 +20,7 @@ double negabs (double x)\n> >\n> >  /*\n> >  ** negabsf:\n> > -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> > +**\torr\tz0.s, z0.s, #0x80000000\n> >  **\tret\n> >  */\n> >  float negabsf (float x)","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=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com\n header.b=vJ/uCyNs;\n\tdkim=pass (1024-bit key) header.d=armh.onmicrosoft.com\n header.i=@armh.onmicrosoft.com header.a=rsa-sha256\n header.s=selector2-armh-onmicrosoft-com header.b=vJ/uCyNs;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com"],"Received":["from server2.sourceware.org (server2.sourceware.org\n [IPv6:2620:52:3:1:0:246e:9693:128c])\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 4RwVn728Z7z1yp8\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 18:55:23 +1000 (AEST)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id 4923A38618B3\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 08:55:21 +0000 (GMT)","from EUR04-DB3-obe.outbound.protection.outlook.com\n (mail-db3eur04on2049.outbound.protection.outlook.com [40.107.6.49])\n by sourceware.org (Postfix) with ESMTPS id 03B723861888\n for <gcc-patches@gcc.gnu.org>; Wed, 27 Sep 2023 08:54:30 +0000 (GMT)","from AS9PR05CA0189.eurprd05.prod.outlook.com (2603:10a6:20b:495::9)\n by DU2PR08MB10186.eurprd08.prod.outlook.com (2603:10a6:10:46c::15)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.27; Wed, 27 Sep\n 2023 08:54:27 +0000","from AM7EUR03FT065.eop-EUR03.prod.protection.outlook.com\n (2603:10a6:20b:495:cafe::df) by AS9PR05CA0189.outlook.office365.com\n (2603:10a6:20b:495::9) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.35 via Frontend\n Transport; Wed, 27 Sep 2023 08:54:27 +0000","from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by\n AM7EUR03FT065.mail.protection.outlook.com (100.127.140.250) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6838.22 via Frontend Transport; Wed, 27 Sep 2023 08:54:26 +0000","(\"Tessian outbound 169aaa6bf2b7:v175\");\n Wed, 27 Sep 2023 08:54:26 +0000","from 8e673d8d04d0.3\n by 64aa7808-outbound-1.mta.getcheckrecipient.com id\n D8047960-F4D2-4D29-8137-94D4AB543160.1;\n Wed, 27 Sep 2023 08:54:20 +0000","from EUR05-DB8-obe.outbound.protection.outlook.com\n by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id\n 8e673d8d04d0.3\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);\n Wed, 27 Sep 2023 08:54:20 +0000","from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17)\n by AM9PR08MB6308.eurprd08.prod.outlook.com (2603:10a6:20b:287::15)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.21; Wed, 27 Sep\n 2023 08:54:17 +0000","from VI1PR08MB5325.eurprd08.prod.outlook.com\n ([fe80::662f:8e26:1bf8:aaa1]) by VI1PR08MB5325.eurprd08.prod.outlook.com\n ([fe80::662f:8e26:1bf8:aaa1%7]) with mapi id 15.20.6813.027; Wed, 27 Sep 2023\n 08:54:17 +0000"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 03B723861888","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=CpAY6EN7mMUBFGQ9QGVE8lGaPnjy8qYcSJOMjs50zjE=;\n b=vJ/uCyNsZYtkbSt3uQ2FhB1v9GwTq+AEPw5BDNpQkrxA1lbGirW74i/CPeCM0qFWnPUjPGl4EGlwrlrWID53R6ZjCUha/xmGUTQ7pqNXo31E7eHO6mkYRrkp2XG8Z/iTcPRwl/guO/QvlE+3DFdOeyXfmHuBQFvw6I3GLNLNNpI=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=CpAY6EN7mMUBFGQ9QGVE8lGaPnjy8qYcSJOMjs50zjE=;\n b=vJ/uCyNsZYtkbSt3uQ2FhB1v9GwTq+AEPw5BDNpQkrxA1lbGirW74i/CPeCM0qFWnPUjPGl4EGlwrlrWID53R6ZjCUha/xmGUTQ7pqNXo31E7eHO6mkYRrkp2XG8Z/iTcPRwl/guO/QvlE+3DFdOeyXfmHuBQFvw6I3GLNLNNpI="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 63.35.35.123)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 63.35.35.123 as permitted sender) receiver=protection.outlook.com;\n client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;\n pr=C","X-CheckRecipientChecked":"true","X-CR-MTA-CID":"544c5b47dbfef346","X-CR-MTA-TID":"64aa7808","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=nLT6qEW5H/El1zPc4q+tQA25QwZ4MBxSS+to1laINbjY8cRY7sA3xR1kx2o/EfOTuKE73B9QBXmyRA0JYGW0ImEf2COtEhkwsOBSCgZIRnpWQlkvYCK8jg1+ZxuR31/UQZYHxA8ek15+eys8ETODZFdr1ao+HmTG+ey4z+Vfy80wQVRFaWAVMYNeZhvUPXWX+2ntJWYyC69JZGEfnKu8mK6XPEIVQuSx7YEhdY7XIl4HVDnmXy+ky7Rs9Q4PNDGaIOdZS5BB1iod/VlLIGFBm7IWeTNgKcqdHxyzCfhLaVZiR/4oHosKT9muxJofg7eX5gQYgD2m/oGuFLRkJEB64w==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\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=CpAY6EN7mMUBFGQ9QGVE8lGaPnjy8qYcSJOMjs50zjE=;\n b=gcP9mHe7bJnmiFTXJQKDstuvOLbtXuasGf8h33MCE/s2WMjD3GA/AifNxTC2GmozxkN76yK7LyJdnzE+KrhJZwQP7hgHE0zs5/pcC7zUKrEi5VCltBkPzGR1cWIJ7/fmYQyxszPS9wbuSauIeQ4sGEAiMu1U25AZn4xmYbEyaLITWqj0+uXFAUv1oTKkERxZTQ1bymaazMCADWOUTuoolzzRA1qzY0u7tcBHVCqU/QD3qKMyTs79O6qxQD3Zr1w6u0GU4LNypLtpjVESNiigoSFirAs+CPkL9B3NGwiuLz8Fdod+Jb8cKpQ8OvyjSeTzYaSxyNz/ZhQJgGsk6p1QVg==","ARC-Authentication-Results":"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","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Richard Sandiford <Richard.Sandiford@arm.com>","CC":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>, Marcus Shawcroft\n <Marcus.Shawcroft@arm.com>, Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>","Subject":"RE: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","Thread-Topic":"[PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","Thread-Index":"AQHZ8NzGAXlsp89BcEOU5rT2cZbJ8rAuXZcLgAAAWhA=","Date":"Wed, 27 Sep 2023 08:54:17 +0000","Message-ID":"\n <VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>","References":"<patch-17724-tamar@arm.com> <mptv8bwvw3k.fsf@arm.com>","In-Reply-To":"<mptv8bwvw3k.fsf@arm.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 VI1PR08MB5325:EE_|AM9PR08MB6308:EE_|AM7EUR03FT065:EE_|DU2PR08MB10186:EE_","X-MS-Office365-Filtering-Correlation-Id":"65d1f552-f694-4173-5d45-08dbbf375ac5","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;","X-Microsoft-Antispam-Message-Info-Original":"\n HBe7f5lnVeUh2gXRfJizDMG5KIDKaVB1j0hk+nxseDCWgybs10JbwvALNnNtMvgubLfF5Gjq5YSBHK8GxPqssK1vAYKXQt+FOhIlsL+gaVKtFcOErcEP4YsCJjjkdB3xrQTxi1s6eD0YQusCPSZF4e/KSMrfOhS8+e0UKKZFtxRw/xLNmg1K3gDs0kTUHLxfRmz/5IJfGjytk6ik9sc8Ol2iUjVF89NavAPflgdU+EdcApgHanL+TfLskwc1/c3DvOiIJ36sDW4HWMOOX3KMa2ch8Nu0GBasbI4E3Us1QJ/P2mXaVHoiU31raTzQWfFRBJe3TaA99BGC2Hr/clOjOXMI7Ae/DwZMyiZ4lOjNWSFfVL3A7QbnTElU1hDqdotVuPkypf0d2YOMFf2C9tcE5OM1YtfFaL0s92yf9Npgfu6Rpz+ZDfLnspsctOoZO56IWMBvCrAD8Dmf3ax+Kgl6kduNCRJCDzcVokR/zy085adpsRqFvfp/i9TV2hfPGSrivJP6kh2eAbvuZQh1mGJMzC2031LTHAcEbuUTcBa9N3Cjx2k2wDNG1P/hfDsaO83eWPQk9oeDX67G9V6LKQ2v4tqPmxBrRbjNgiJFxSzI8ol3t9/8PIme7r+qgBlpJg3r4eHcEmx9/i1ihtjpfvLXCw==","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230031)(39860400002)(396003)(366004)(346002)(376002)(136003)(230922051799003)(186009)(1800799009)(451199024)(64756008)(54906003)(66446008)(66476007)(66946007)(66556008)(316002)(6636002)(76116006)(26005)(55016003)(83380400001)(9686003)(53546011)(7696005)(6506007)(71200400001)(122000001)(33656002)(38070700005)(38100700002)(86362001)(478600001)(2906002)(84970400001)(8936002)(8676002)(6862004)(4326008)(41300700001)(52536014)(5660300002);\n DIR:OUT; SFP:1101;","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","MIME-Version":"1.0","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["AM9PR08MB6308","DU2PR08MB10186"],"Original-Authentication-Results":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n AM7EUR03FT065.eop-EUR03.prod.protection.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n 9cac08e8-3d14-4a85-6562-08dbbf3754d7","X-Microsoft-Antispam":"BCL:0;","X-Microsoft-Antispam-Message-Info":"\n ukzKfRCL4YI5Pgoosf2zjXN+Op0tFHh75DQZUD0tx1FhkVUbb/1yGskFH5e+vbh9BxjAGcwqiIY4F7cFu8Z+tbsVvtTgGGLuFJnz8A3etTZmqWM4v5zyu82mBQGtde+QHGNNbL8Yi7CfLf+D6Q6RmXfNYqfyHeJBfFoCRsgq79Bde5Jw3Gr05JrAMQU1JIa34+Nc3g82mIvW5kCsINpkyNJWoweRHofZaH1CfRfEOR+Z0KNntV3oZJOKs0lrvkY3dX8wsNtMVTYyFxqnj6dN/dyloS9eAjyZBK7oVecmQ9SOTSRpko6QFNSsSNTpKU76ZG5vVpY7D7KFo610LnW0lKuzonaKb8c/r8vsR6WQKVRRL3sQWfZt6jX/cncUJu79n4xEzRV6IevDhF47+q3jT0ftz7YBpinrR1qLjew01/eRm9CwD0t+o639IZXkr+2gAx+k9fmaob/pJS2jWQHVNVs33smMAurVTlRF8E52xuX1QrTzD3VYvK6c9h1jvtQe7e/LwJJgL1NDDUrAGcHTLya0BJSE3Rs7WJGwRDEWEO7KBVdrVHi+U0uF/uoE8iGwmUYEnbExXa0UtH1FJlR1YMUgo4Axj9jcFHiOkbJhkQw/cZA4KBwt91SU+VpPY+SMEGr1PkdnYG1ULC6HRYTGzB/vRu069V/0svsJjim/PQ/x1nZLxvu13vCJCxIR73oWWEIXw/DcWc7gT1HFMj0phGsVRkgVYhi33gAqP4X00r5Qw6SbA1CfM2B2LeOJ+a4QDFlOW5sLbcIMY/P6gYUuPg==","X-Forefront-Antispam-Report":"CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;\n PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE;\n SFS:(13230031)(4636009)(396003)(136003)(39850400004)(346002)(376002)(230922051799003)(82310400011)(1800799009)(186009)(451199024)(46966006)(40470700004)(36840700001)(40480700001)(55016003)(40460700003)(47076005)(2906002)(356005)(36860700001)(83380400001)(82740400003)(81166007)(6506007)(70206006)(54906003)(9686003)(70586007)(53546011)(52536014)(5660300002)(26005)(4326008)(8676002)(316002)(41300700001)(8936002)(7696005)(6862004)(6636002)(336012)(478600001)(86362001)(33656002)(84970400001);\n DIR:OUT; SFP:1101;","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"27 Sep 2023 08:54:26.9266 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 65d1f552-f694-4173-5d45-08dbbf375ac5","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];\n Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n AM7EUR03FT065.eop-EUR03.prod.protection.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-Spam-Status":"No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED,\n DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH,\n KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE,\n TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","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":3188643,"web_url":"http://patchwork.ozlabs.org/comment/3188643/","msgid":"<mptttrfvqql.fsf@arm.com>","list_archive_url":null,"date":"2023-09-27T10:45:54","subject":"Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","submitter":{"id":64746,"url":"http://patchwork.ozlabs.org/api/people/64746/","name":"Richard Sandiford","email":"richard.sandiford@arm.com"},"content":"Tamar Christina <Tamar.Christina@arm.com> writes:\n>> -----Original Message-----\n>> From: Richard Sandiford <richard.sandiford@arm.com>\n>> Sent: Wednesday, September 27, 2023 9:50 AM\n>> To: Tamar Christina <Tamar.Christina@arm.com>\n>> Cc: gcc-patches@gcc.gnu.org; nd <nd@arm.com>; Richard Earnshaw\n>> <Richard.Earnshaw@arm.com>; Marcus Shawcroft\n>> <Marcus.Shawcroft@arm.com>; Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>\n>> Subject: Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions\n>> when Advanced SIMD inefficient [PR109154]\n>> \n>> Tamar Christina <tamar.christina@arm.com> writes:\n>> > Hi All,\n>> >\n>> > SVE has much bigger immediate encoding range for bitmasks than\n>> > Advanced SIMD has and so on a system that is SVE capable if we need an\n>> > Advanced SIMD Inclusive-OR by immediate and would require a reload then\n>> an unpredicated SVE ORR instead.\n>> >\n>> > This has both speed and size improvements.\n>> >\n>> > Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.\n>> >\n>> > Ok for master?\n>> >\n>> > Thanks,\n>> > Tamar\n>> >\n>> > gcc/ChangeLog:\n>> >\n>> > \tPR tree-optimization/109154\n>> > \t* config/aarch64/aarch64.md (<optab><mode>3): Convert to new\n>> syntax and\n>> > \tSVE split case.\n>> > \t* config/aarch64/iterators.md (VCONV, vconv): New.\n>> >\n>> > gcc/testsuite/ChangeLog:\n>> >\n>> > \tPR tree-optimization/109154\n>> > \t* gcc.target/aarch64/sve/fneg-abs_2.c: Updated.\n>> > \t* gcc.target/aarch64/sve/fneg-abs_4.c: Updated.\n>> >\n>> > --- inline copy of patch --\n>> > diff --git a/gcc/config/aarch64/aarch64.md\n>> > b/gcc/config/aarch64/aarch64.md index\n>> >\n>> 60c92213c75a2a4c18a6b59ae52fe45d1e872718..377c5cafedd43d8d13204\n>> 89a3626\n>> > 7cc6e5f15239 100644\n>> > --- a/gcc/config/aarch64/aarch64.md\n>> > +++ b/gcc/config/aarch64/aarch64.md\n>> > @@ -4551,17 +4551,27 @@ (define_insn_and_split\n>> \"*aarch64_and<mode>_imm2\"\n>> >    }\n>> >  )\n>> >\n>> > -(define_insn \"<optab><mode>3\"\n>> > -  [(set (match_operand:GPI 0 \"register_operand\" \"=r,rk,w\")\n>> > -\t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\" \"%r,r,w\")\n>> > -\t\t     (match_operand:GPI 2 \"aarch64_logical_operand\"\n>> \"r,<lconst>,w\")))]\n>> > -  \"\"\n>> > -  \"@\n>> > -  <logical>\\\\t%<w>0, %<w>1, %<w>2\n>> > -  <logical>\\\\t%<w>0, %<w>1, %2\n>> > -  <logical>\\\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\"\n>> > -  [(set_attr \"type\" \"logic_reg,logic_imm,neon_logic\")\n>> > -   (set_attr \"arch\" \"*,*,simd\")]\n>> > +(define_insn_and_split \"<optab><mode>3\"\n>> > +  [(set (match_operand:GPI 0 \"register_operand\")\n>> > +\t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\")\n>> > +\t\t     (match_operand:GPI 2 \"aarch64_logical_operand\")))]\n>> > +  \"\"\n>> > +  {@ [cons: =0, 1, 2; attrs: type, arch]\n>> > +     [r , %r, r       ; logic_reg , *   ] <logical>\\t%<w>0, %<w>1, %<w>2\n>> > +     [rk, r , <lconst>; logic_imm , *   ] <logical>\\t%<w>0, %<w>1, %2\n>> > +     [w , 0 , <lconst>; *         , sve ] #\n>> > +     [w , w , w       ; neon_logic, simd] <logical>\\t%0.<Vbtype>, %1.<Vbtype>,\n>> %2.<Vbtype>\n>> > +  }\n>> > +  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n>> > +   && satisfies_constraint_<lconst> (operands[2])\n>> > +   && FP_REGNUM_P (REGNO (operands[0]))\"\n>> > +  [(const_int 0)]\n>> > +  {\n>> > +    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1], <MODE>mode);\n>> > +    rtx op2 = gen_const_vec_duplicate (<VCONV>mode, operands[2]);\n>> > +    emit_insn (gen_<optab><vconv>3 (op1, op1, op2));\n>> > +    DONE;\n>> > +  }\n>> >  )\n>> \n>> The WIP SME patches add a %Z modifier for 'z' register prefixes, similarly to\n>> b/h/s/d for scalar FP.  With that I think the alternative can be:\n>> \n>>      [w , 0 , <lconst>; *         , sve ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n>> \n>> although it would be nice to keep the hex constant.\n>\n> My original patch added a %u for (undecorated) which just prints the register\n> number and changed %C to also accept a single constant instead of only a uniform vector.\n\nNot saying no to %u in future, but %Z seems more consistent with the\ncurrent approach.  And yeah, I'd also wondered about extending %C.\nThe problem is guessing whether to print a 32-bit, 64-bit or 128-bit\nconstant for negative immediates.\n\nThanks,\nRichard\n\n> But I figured you wouldn't like that? 😊\n>\n> Cheers,\n> Tamar\n>\n>> \n>> Will try to post the patches up to that part soon.\n>> \n>> Thanks,\n>> Richard\n>> \n>> >\n>> >  ;; zero_extend version of above\n>> > diff --git a/gcc/config/aarch64/iterators.md\n>> > b/gcc/config/aarch64/iterators.md index\n>> >\n>> d17becc37e230684beaee3c69e2a0f0ce612eda5..568cd5d1a3a9e00475376\n>> 177ad13\n>> > de72609df3d8 100644\n>> > --- a/gcc/config/aarch64/iterators.md\n>> > +++ b/gcc/config/aarch64/iterators.md\n>> > @@ -1432,6 +1432,11 @@ (define_mode_attr VCONQ [(V8QI \"V16QI\")\n>> (V16QI \"V16QI\")\n>> >  \t\t\t (HI   \"V8HI\") (QI   \"V16QI\")\n>> >  \t\t\t (SF   \"V4SF\") (DF   \"V2DF\")])\n>> >\n>> > +;; 128-bit container modes for the lower part of an SVE vector to the\n>> > +inner or ;; scalar source mode.\n>> > +(define_mode_attr VCONV [(SI \"VNx4SI\") (DI \"VNx2DI\")])\n>> > +(define_mode_attr vconv [(SI \"vnx4si\") (DI \"vnx2di\")])\n>> > +\n>> >  ;; Half modes of all vector modes.\n>> >  (define_mode_attr VHALF [(V8QI \"V4QI\")  (V16QI \"V8QI\")\n>> >  \t\t\t (V4HI \"V2HI\")  (V8HI  \"V4HI\")\n>> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n>> > b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n>> > index\n>> >\n>> a60cd31b9294af2dac69eed1c93f899bd5c78fca..fe9f27bf91b8fb18205a589\n>> 1a5d5\n>> > e847a5d88e4b 100644\n>> > --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n>> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n>> > @@ -7,8 +7,7 @@\n>> >\n>> >  /*\n>> >  ** f1:\n>> > -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n>> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n>> > +**\torr\tz0.s, z0.s, #0x80000000\n>> >  **\tret\n>> >  */\n>> >  float32_t f1 (float32_t a)\n>> > @@ -18,9 +17,7 @@ float32_t f1 (float32_t a)\n>> >\n>> >  /*\n>> >  ** f2:\n>> > -**\tmov\tx0, -9223372036854775808\n>> > -**\tfmov\td[0-9]+, x0\n>> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n>> > +**\torr\tz0.d, z0.d, #0x8000000000000000\n>> >  **\tret\n>> >  */\n>> >  float64_t f2 (float64_t a)\n>> > diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n>> > b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n>> > index\n>> >\n>> 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..707bcb0b6c53e212b55a\n>> 255f500e\n>> > 9e548e9ccd80 100644\n>> > --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n>> > +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n>> > @@ -6,9 +6,7 @@\n>> >\n>> >  /*\n>> >  ** negabs:\n>> > -**\tmov\tx0, -9223372036854775808\n>> > -**\tfmov\td[0-9]+, x0\n>> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n>> > +**\torr\tz0.d, z0.d, #0x8000000000000000\n>> >  **\tret\n>> >  */\n>> >  double negabs (double x)\n>> > @@ -22,8 +20,7 @@ double negabs (double x)\n>> >\n>> >  /*\n>> >  ** negabsf:\n>> > -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n>> > -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n>> > +**\torr\tz0.s, z0.s, #0x80000000\n>> >  **\tret\n>> >  */\n>> >  float negabsf (float x)","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 spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=8.43.85.97; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com"],"Received":["from server2.sourceware.org (ip-8-43-85-97.sourceware.org\n [8.43.85.97])\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 4RwYF36fj7z1yp0\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 20:46:15 +1000 (AEST)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id E1F5A385CCB9\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 27 Sep 2023 10:46:12 +0000 (GMT)","from foss.arm.com (foss.arm.com [217.140.110.172])\n by sourceware.org (Postfix) with ESMTP id 18BBC3858436\n for <gcc-patches@gcc.gnu.org>; Wed, 27 Sep 2023 10:45:57 +0000 (GMT)","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EBD151FB;\n Wed, 27 Sep 2023 03:46:34 -0700 (PDT)","from localhost (e121540-lin.manchester.arm.com [10.32.110.72])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 074FC3F59C;\n Wed, 27 Sep 2023 03:45:55 -0700 (PDT)"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 18BBC3858436","From":"Richard Sandiford <richard.sandiford@arm.com>","To":"Tamar Christina <Tamar.Christina@arm.com>","Mail-Followup-To":"Tamar Christina <Tamar.Christina@arm.com>,\n \"gcc-patches\\@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>,\n Marcus Shawcroft <Marcus.Shawcroft@arm.com>,\n Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>, richard.sandiford@arm.com","Cc":"\"gcc-patches\\@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>,\n Marcus Shawcroft <Marcus.Shawcroft@arm.com>,\n Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>","Subject":"Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","References":"<patch-17724-tamar@arm.com> <mptv8bwvw3k.fsf@arm.com>\n <VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>","Date":"Wed, 27 Sep 2023 11:45:54 +0100","In-Reply-To":"\n <VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>\n (Tamar Christina's message of \"Wed, 27 Sep 2023 08:54:17 +0000\")","Message-ID":"<mptttrfvqql.fsf@arm.com>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Transfer-Encoding":"quoted-printable","X-Spam-Status":"No, score=-24.5 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH,\n KAM_SHORT, SPF_HELO_NONE, SPF_NONE,\n TXREP autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","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":3193899,"web_url":"http://patchwork.ozlabs.org/comment/3193899/","msgid":"<VI1PR08MB5325517857A5065014C0755EFFCAA@VI1PR08MB5325.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2023-10-05T18:15:26","subject":"RE: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"> >>\n> >> The WIP SME patches add a %Z modifier for 'z' register prefixes,\n> >> similarly to b/h/s/d for scalar FP.  With that I think the alternative can be:\n> >>\n> >>      [w , 0 , <lconst>; *         , sve ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n> >>\n> >> although it would be nice to keep the hex constant.\n> >\n> > My original patch added a %u for (undecorated) which just prints the\n> > register number and changed %C to also accept a single constant instead of\n> only a uniform vector.\n> \n> Not saying no to %u in future, but %Z seems more consistent with the current\n> approach.  And yeah, I'd also wondered about extending %C.\n> The problem is guessing whether to print a 32-bit, 64-bit or 128-bit constant\n> for negative immediates.\n> \n\nI know we're waiting for the %Z but I've updated the remainder of the series and for\ncompleteness and CI purposes I'm sending the updated patch before the change to\nuse %Z.\n\n--\n\nSVE has much bigger immediate encoding range for bitmasks than Advanced SIMD has\nand so on a system that is SVE capable if we need an Advanced SIMD Inclusive-OR\nby immediate and would require a reload then use an unpredicated SVE ORR instead.\n\nThis has both speed and size improvements.\n\nBootstrapped Regtested on aarch64-none-linux-gnu and no issues.\n\nOk for master?\n\nThanks,\nTamar\n\ngcc/ChangeLog:\n\n\tPR tree-optimization/109154\n\t* config/aarch64/aarch64.md (<optab><mode>3): Add SVE split case.\n\t* config/aarch64/aarch64-simd.md (ior<mode>3<vczle><vczbe>): Likewise.\n\t* config/aarch64/iterators.md (VCONV, vconv): New.\n\t* config/aarch64/predicates.md(aarch64_orr_imm_sve_advsimd): New.\n\ngcc/testsuite/ChangeLog:\n\n\tPR tree-optimization/109154\n\t* gcc.target/aarch64/sve/fneg-abs_1.c: Updated.\n\t* gcc.target/aarch64/sve/fneg-abs_2.c: Updated.\n\t* gcc.target/aarch64/sve/fneg-abs_4.c: Updated.\n\n--- inline copy of patch ---\n\ndiff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md\nindex 33eceb436584ff73c7271f93639f2246d1af19e0..25a1e4e8ecf767636c0ff3cdab6cad6e1482f73e 100644\n--- a/gcc/config/aarch64/aarch64-simd.md\n+++ b/gcc/config/aarch64/aarch64-simd.md\n@@ -1216,14 +1216,29 @@ (define_insn \"and<mode>3<vczle><vczbe>\"\n )\n \n ;; For ORR (vector, register) and ORR (vector, immediate)\n-(define_insn \"ior<mode>3<vczle><vczbe>\"\n+(define_insn_and_split \"ior<mode>3<vczle><vczbe>\"\n   [(set (match_operand:VDQ_I 0 \"register_operand\")\n \t(ior:VDQ_I (match_operand:VDQ_I 1 \"register_operand\")\n-\t\t   (match_operand:VDQ_I 2 \"aarch64_reg_or_orr_imm\")))]\n+\t\t   (match_operand:VDQ_I 2 \"aarch64_orr_imm_sve_advsimd\")))]\n   \"TARGET_SIMD\"\n-  {@ [ cons: =0 , 1 , 2   ]\n-     [ w        , w , w   ] orr\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n-     [ w        , 0 , Do  ] << aarch64_output_simd_mov_immediate (operands[2], <bitsize>, AARCH64_CHECK_ORR);\n+  {@ [ cons: =0 , 1 , 2; attrs: arch ]\n+     [ w        , w , w  ; simd      ] orr\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n+     [ w        , 0 , vsl; sve       ] #\n+     [ w        , 0 , Do ; simd      ] \\\n+       << aarch64_output_simd_mov_immediate (operands[2], <bitsize>, \\\n+\t\t\t\t\t     AARCH64_CHECK_ORR);\n+  }\n+  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n+   && satisfies_constraint_vsl (operands[2])\n+   && FP_REGNUM_P (REGNO (operands[0]))\"\n+  [(const_int 0)]\n+  {\n+    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1], <MODE>mode);\n+    rtx op2 =\n+      gen_const_vec_duplicate (<VCONV>mode,\n+\t\t\t       unwrap_const_vec_duplicate (operands[2]));\n+    emit_insn (gen_ior<vconv>3 (op1, op1, op2));\n+    DONE;\n   }\n   [(set_attr \"type\" \"neon_logic<q>\")]\n )\ndiff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md\nindex 064d68ceb22533434468b22c4e5848e85a8c6eff..24349ecdbbab875f21975f116732a9e53762d4c1 100644\n--- a/gcc/config/aarch64/aarch64.md\n+++ b/gcc/config/aarch64/aarch64.md\n@@ -4545,7 +4545,7 @@ (define_insn_and_split \"*aarch64_and<mode>_imm2\"\n   }\n )\n \n-(define_insn \"<optab><mode>3\"\n+(define_insn_and_split \"<optab><mode>3\"\n   [(set (match_operand:GPI 0 \"register_operand\")\n \t(LOGICAL:GPI (match_operand:GPI 1 \"register_operand\")\n \t\t     (match_operand:GPI 2 \"aarch64_logical_operand\")))]\n@@ -4553,8 +4553,19 @@ (define_insn \"<optab><mode>3\"\n   {@ [ cons: =0 , 1  , 2        ; attrs: type , arch  ]\n      [ r        , %r , r        ; logic_reg   , *     ] <logical>\\t%<w>0, %<w>1, %<w>2\n      [ rk       , r  , <lconst> ; logic_imm   , *     ] <logical>\\t%<w>0, %<w>1, %2\n+     [ w        , 0  , <lconst> ; *           , sve   ] #\n      [ w        , w  , w        ; neon_logic  , simd  ] <logical>\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n   }\n+  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n+   && satisfies_constraint_<lconst> (operands[2])\n+   && FP_REGNUM_P (REGNO (operands[0]))\"\n+  [(const_int 0)]\n+  {\n+    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1], <MODE>mode);\n+    rtx op2 = gen_const_vec_duplicate (<VCONV>mode, operands[2]);\n+    emit_insn (gen_<optab><vconv>3 (op1, op1, op2));\n+    DONE;\n+  }\n )\n \n ;; zero_extend version of above\ndiff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\nindex d17becc37e230684beaee3c69e2a0f0ce612eda5..5ec854a364e41b9827271ca6e870c8027336c7cd 100644\n--- a/gcc/config/aarch64/iterators.md\n+++ b/gcc/config/aarch64/iterators.md\n@@ -1432,6 +1432,19 @@ (define_mode_attr VCONQ [(V8QI \"V16QI\") (V16QI \"V16QI\")\n \t\t\t (HI   \"V8HI\") (QI   \"V16QI\")\n \t\t\t (SF   \"V4SF\") (DF   \"V2DF\")])\n \n+;; 128-bit container modes for the lower part of an SVE vector to the inner or\n+;; neon source mode.\n+(define_mode_attr VCONV [(SI   \"VNx4SI\")  (DI    \"VNx2DI\")\n+\t\t\t (V8QI \"VNx16QI\") (V16QI \"VNx16QI\")\n+\t\t\t (V4HI \"VNx8HI\")  (V8HI  \"VNx8HI\")\n+\t\t\t (V2SI \"VNx4SI\")  (V4SI  \"VNx4SI\")\n+\t\t\t (V2DI \"VNx2DI\")])\n+(define_mode_attr vconv [(SI   \"vnx4si\")  (DI    \"vnx2di\")\n+\t\t\t (V8QI \"vnx16qi\") (V16QI \"vnx16qi\")\n+\t\t\t (V4HI \"vnx8hi\")  (V8HI  \"vnx8hi\")\n+\t\t\t (V2SI \"vnx4si\")  (V4SI  \"vnx4si\")\n+\t\t\t (V2DI \"vnx2di\")])\n+\n ;; Half modes of all vector modes.\n (define_mode_attr VHALF [(V8QI \"V4QI\")  (V16QI \"V8QI\")\n \t\t\t (V4HI \"V2HI\")  (V8HI  \"V4HI\")\ndiff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md\nindex 01de47439744acb3708c645b98eaa607294a1f1f..a73724a7fc05636d4c0643a291f40f2609564778 100644\n--- a/gcc/config/aarch64/predicates.md\n+++ b/gcc/config/aarch64/predicates.md\n@@ -871,6 +871,11 @@ (define_predicate \"aarch64_sve_logical_operand\"\n   (ior (match_operand 0 \"register_operand\")\n        (match_operand 0 \"aarch64_sve_logical_immediate\")))\n \n+(define_predicate \"aarch64_orr_imm_sve_advsimd\"\n+  (ior (match_operand 0 \"aarch64_reg_or_orr_imm\")\n+       (and (match_test \"TARGET_SVE\")\n+\t    (match_operand 0 \"aarch64_sve_logical_operand\"))))\n+\n (define_predicate \"aarch64_sve_gather_offset_b\"\n   (ior (match_operand 0 \"register_operand\")\n        (match_operand 0 \"aarch64_sve_gather_immediate_b\")))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\nindex 0c7664e6de77a497682952653ffd417453854d52..68e6ef0bdb234f26d0c3b055e777a9e1fb214c6d 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n@@ -6,7 +6,7 @@\n \n /*\n ** t1:\n-**\torr\tv[0-9]+.2s, #128, lsl #24\n+**\torr\tz[0-9]+.s, z[0-9]+.s, #0x80000000\n **\tret\n */\n float32x2_t t1 (float32x2_t a)\n@@ -16,7 +16,7 @@ float32x2_t t1 (float32x2_t a)\n \n /*\n ** t2:\n-**\torr\tv[0-9]+.4s, #128, lsl #24\n+**\torr\tz[0-9]+.s, z[0-9]+.s, #0x80000000\n **\tret\n */\n float32x4_t t2 (float32x4_t a)\n@@ -26,9 +26,7 @@ float32x4_t t2 (float32x4_t a)\n \n /*\n ** t3:\n-**\tadrp\tx0, .LC[0-9]+\n-**\tldr\tq[0-9]+, \\[x0, #:lo12:.LC0\\]\n-**\torr\tv[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b\n+**\torr\tz[0-9]+.d, z[0-9]+.d, #0x8000000000000000\n **\tret\n */\n float64x2_t t3 (float64x2_t a)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\nindex a60cd31b9294af2dac69eed1c93f899bd5c78fca..fe9f27bf91b8fb18205a5891a5d5e847a5d88e4b 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n@@ -7,8 +7,7 @@\n \n /*\n ** f1:\n-**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.s, z0.s, #0x80000000\n **\tret\n */\n float32_t f1 (float32_t a)\n@@ -18,9 +17,7 @@ float32_t f1 (float32_t a)\n \n /*\n ** f2:\n-**\tmov\tx0, -9223372036854775808\n-**\tfmov\td[0-9]+, x0\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.d, z0.d, #0x8000000000000000\n **\tret\n */\n float64_t f2 (float64_t a)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\nindex 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..707bcb0b6c53e212b55a255f500e9e548e9ccd80 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n@@ -6,9 +6,7 @@\n \n /*\n ** negabs:\n-**\tmov\tx0, -9223372036854775808\n-**\tfmov\td[0-9]+, x0\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.d, z0.d, #0x8000000000000000\n **\tret\n */\n double negabs (double x)\n@@ -22,8 +20,7 @@ double negabs (double x)\n \n /*\n ** negabsf:\n-**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.s, z0.s, #0x80000000\n **\tret\n */\n float negabsf (float x)","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=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com\n header.b=FqtBhDgC;\n\tdkim=pass (1024-bit key) header.d=armh.onmicrosoft.com\n header.i=@armh.onmicrosoft.com header.a=rsa-sha256\n header.s=selector2-armh-onmicrosoft-com header.b=FqtBhDgC;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com"],"Received":["from server2.sourceware.org (server2.sourceware.org\n [IPv6:2620:52:3:1:0:246e:9693:128c])\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 4S1frm4gnLz1yq9\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  6 Oct 2023 05:16:24 +1100 (AEDT)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id 9BA223857700\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  5 Oct 2023 18:16:22 +0000 (GMT)","from EUR04-VI1-obe.outbound.protection.outlook.com\n (mail-vi1eur04on2058.outbound.protection.outlook.com [40.107.8.58])\n by sourceware.org (Postfix) with ESMTPS id A61E33858C35\n for <gcc-patches@gcc.gnu.org>; Thu,  5 Oct 2023 18:15:44 +0000 (GMT)","from AS9PR04CA0102.eurprd04.prod.outlook.com (2603:10a6:20b:50e::20)\n by AS8PR08MB5941.eurprd08.prod.outlook.com (2603:10a6:20b:296::11)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.35; Thu, 5 Oct\n 2023 18:15:41 +0000","from AM7EUR03FT025.eop-EUR03.prod.protection.outlook.com\n (2603:10a6:20b:50e:cafe::ea) by AS9PR04CA0102.outlook.office365.com\n (2603:10a6:20b:50e::20) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.26 via Frontend\n Transport; Thu, 5 Oct 2023 18:15:41 +0000","from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by\n AM7EUR03FT025.mail.protection.outlook.com (100.127.140.199) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6863.24 via Frontend Transport; Thu, 5 Oct 2023 18:15:41 +0000","(\"Tessian outbound fdf44c93bd44:v211\");\n Thu, 05 Oct 2023 18:15:40 +0000","from c949e72d5f9b.1\n by 64aa7808-outbound-1.mta.getcheckrecipient.com id\n 53CFFF74-6C97-4C13-8ACD-6BCA271D5728.1;\n Thu, 05 Oct 2023 18:15:28 +0000","from EUR03-DBA-obe.outbound.protection.outlook.com\n by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id\n c949e72d5f9b.1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);\n Thu, 05 Oct 2023 18:15:28 +0000","from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17)\n by DB8PR08MB5529.eurprd08.prod.outlook.com (2603:10a6:10:115::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6838.35; Thu, 5 Oct\n 2023 18:15:26 +0000","from VI1PR08MB5325.eurprd08.prod.outlook.com\n ([fe80::662f:8e26:1bf8:aaa1]) by VI1PR08MB5325.eurprd08.prod.outlook.com\n ([fe80::662f:8e26:1bf8:aaa1%7]) with mapi id 15.20.6838.033; Thu, 5 Oct 2023\n 18:15:26 +0000"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org A61E33858C35","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=hvaTADHNDyj8AHYBJZoKwEv0xL/odA7xdjrkwW/s5dQ=;\n b=FqtBhDgCAOtzrnbbBI+FKgMN8giVgxTsa41Ko/20bL37a74ctkH99SgB+kL1yhU9T5ehKlYH3n1njpjGwktPWGkSQ60Zs2Xiiy5gDv6RcRhX+33oMEZSGWpL19nQKQU/FEow3mNPByt/aJLO23OjS8OD7EVScEPjxgsRMoUok2I=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=hvaTADHNDyj8AHYBJZoKwEv0xL/odA7xdjrkwW/s5dQ=;\n b=FqtBhDgCAOtzrnbbBI+FKgMN8giVgxTsa41Ko/20bL37a74ctkH99SgB+kL1yhU9T5ehKlYH3n1njpjGwktPWGkSQ60Zs2Xiiy5gDv6RcRhX+33oMEZSGWpL19nQKQU/FEow3mNPByt/aJLO23OjS8OD7EVScEPjxgsRMoUok2I="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 63.35.35.123)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 63.35.35.123 as permitted sender) receiver=protection.outlook.com;\n client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;\n pr=C","X-CheckRecipientChecked":"true","X-CR-MTA-CID":"c0c78dafbbf02a97","X-CR-MTA-TID":"64aa7808","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=BF2BXyJ1Yj5TraU9oQXYKAvoHOsAZWX3VVUu5mBvCEvU959Pv4Dnweuvk/GeHM7uCa0OZlo8qG7AYTRVOHkWTNCeGZ7XdP0IzaiLShpYVhB3R7r57ckIJmwRtPmFkmlMAMY+BI5xn1JI4HIBmwxzUWECDTlfaiDJNh4A6IoD43H6PLjpwDOve8wZVaEhHeDFdQpB060LxEe2ILeWzvTfjhmjCVd2qlvmnSy7zhf5vNzf+Z8iWHnIQ+s+2LRRInp4Rqh4Pl1rxoLAmm7RMihQR3cO11c+5XJEUPT3VPbJO0ZnEo0GtDSXjWJ8/njkBc9soKAfEdTCim++k5W2YRM3Fg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\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=hvaTADHNDyj8AHYBJZoKwEv0xL/odA7xdjrkwW/s5dQ=;\n b=c+JA0O/l0liVqjrZ80Q9hU/pHFYhQwMjZcQ0atbYvO86fe9qqH3UJ1gmJLedGGzaxQ9W7UAimj1a6aOIwjdFRCIwUYd5KMPV0mrAX3ttp+6QHkeUQMQo4scycO4jA7TA7imdGesHi/RR0gqACbUa0zRv0KBVraufD1tYfBhhmpAhqvHmG2uKHwqqmNdYajaXiQK+B+mDrQCW6fEQHbjJSeQpJo2a+QUVzqE1lxBzY2h5WrBvyuHlsf7AYU+DBwTgPlQ3fDjOwIMj9uMegbrnAIT9RaZqU4A1UZOC1d8/JSphYRwNhF3luBcab8aRtW1phD+mXX6vAV/mMSjTzdW4nQ==","ARC-Authentication-Results":"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","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Richard Sandiford <Richard.Sandiford@arm.com>","CC":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>, Marcus Shawcroft\n <Marcus.Shawcroft@arm.com>, Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>","Subject":"RE: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","Thread-Topic":"[PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","Thread-Index":"AQHZ8NzGAXlsp89BcEOU5rT2cZbJ8rAuXZcLgAAAWhCAAB/87oAND7DQ","Date":"Thu, 5 Oct 2023 18:15:26 +0000","Message-ID":"\n <VI1PR08MB5325517857A5065014C0755EFFCAA@VI1PR08MB5325.eurprd08.prod.outlook.com>","References":"<patch-17724-tamar@arm.com> <mptv8bwvw3k.fsf@arm.com>\n <VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>\n <mptttrfvqql.fsf@arm.com>","In-Reply-To":"<mptttrfvqql.fsf@arm.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"yes","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 VI1PR08MB5325:EE_|DB8PR08MB5529:EE_|AM7EUR03FT025:EE_|AS8PR08MB5941:EE_","X-MS-Office365-Filtering-Correlation-Id":"a6c256c6-8feb-48f5-a300-08dbc5cf1596","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;","X-Microsoft-Antispam-Message-Info-Original":"\n oanKmDIPNbclNhJv3rJpZAbscXrIKEkzokuiKjT9F+eeDUceXurFNe2Zu0S0vHsbV26aWd+GgagoSmKVZTr0kTOPuV97qGIOa1rfPJWzAiNyCA5MxmA6VcDSatOtKH+6fmDfpdO69F6/WhU7lsZP8mEjHNzf8jLEXT8qOm1R7J/520UIDP0ysZVjVtrhKQiZhAmjZ01hdeR1nPWsMkt6mILotgZjBpYYEz+IxJKAGHyxcFmpJX1cjgQPPrjoIW+yGy7hESeuBcZUAyfxS85oK7133q+o41kc10T7HKGXJm6f+gyMGAMybict1BCyqdu40pvmnwgi9JlmYzdbu/qzd167LQ2BxliNf+6X3c1ZuK1PSIwMngTT+HPbgcdWQXMXrk8/qSh1kUTpfAcis/TljG8pzGkffW7KIIgG74jZyVu2vuQ0W+H8yuRCWDZ8dzGhGiraONFEl8tujv9hoZ+847Lh48geuIQ0bBZhw8XO6usFYq3zJcZEK2s+90yf3wLxy3x2CcVrueWfP9idLaUIdfzVlS6bkgRFp6yN/os+5u0gU627XSYXlcKqOfCPW5TSciJgDIT5jJ7e24NhUHaNQ07b4vl4ey+LXAqfc/vgeBV6a3dI8GGyEkIsgk0YVbKbIzhPzjaj08F4MEEH+pHexg==","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230031)(346002)(396003)(136003)(366004)(39860400002)(376002)(230922051799003)(1800799009)(64100799003)(186009)(451199024)(84970400001)(55016003)(9686003)(6506007)(7696005)(478600001)(38100700002)(38070700005)(33656002)(122000001)(99936003)(86362001)(316002)(6636002)(2906002)(83380400001)(26005)(71200400001)(66946007)(41300700001)(76116006)(8676002)(8936002)(4326008)(66556008)(66476007)(66446008)(64756008)(54906003)(6862004)(52536014)(5660300002);\n DIR:OUT; SFP:1101;","Content-Type":"multipart/mixed;\n boundary=\"_002_VI1PR08MB5325517857A5065014C0755EFFCAAVI1PR08MB5325eurp_\"","MIME-Version":"1.0","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["DB8PR08MB5529","AS8PR08MB5941"],"Original-Authentication-Results":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n AM7EUR03FT025.eop-EUR03.prod.protection.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n c26fa93c-f43a-4ffb-0b15-08dbc5cf0c89","X-Microsoft-Antispam":"BCL:0;","X-Microsoft-Antispam-Message-Info":"\n VQZEJjHOELf7L3lWh1mJ9tWxM0i6ct9B78PNoDs/Q9SfzbnYN2SY8M3Epscsc/x9O3udOxra/JSedq54SITFUKoAMZkCkkceCx9g6jYZCRH1n84hN6Gu7Jjz3Swe0WsVlCItbQC8ewT88yMxV+lZaEi3cS+zhImajSUJf02iRo0SkFOikZqeaVwvF44D2QZRvKPT4i8krFvSTUb9ZLfQw+9uA6Su5rL2XAdtDbiE8fHbbVx3yQlrP/lBaoZ7weKJZFcRBQNpr/CFTKZe2kn30e3LGM6ixb1pVZ5DebJWSTxUEKvObLRZjiyLopAsEZfAdUCRMYHbYseJkHEJtEyXt4PC99AIibErT51Q6LQHWIWBoIt5pzrc2ij0odPMzhKGTmYfjGa8IN4iy4Zi4ASJg2dj5+kz+9XRFZ15jbXZr1tbBwiuB0uSrA9btTmMqdi3tC8wiadIeoOripBq3CTIrG1Rp9Rdbct7iEamsJmH7uoLdWco+bCGXfBHNIh1Keo92s2RP6V89SXPRmzVHGqaAP3bZHgVhOm1UQzITN2u4xj9mZjsKtC7tL8bq5ovBrLjUVIx4sSGVi768j7hD18NAjKXoz1LgbVfe4eZwaF/R8oe+FRPvr4rF+JBM33bohQXcvzpST0J5lL5ZBq5oJN1d5tcvplzjFaSegAfjZT9YEVPG/uIuQ5tB4SLF9f3HAGGiRYh6L7nPJ7K8eYurzUeUA96u9J+N4V6MBnzlenM7ZzSVQsZshv6V4D0K3NWGJRae0pP6RQopmmVI8HXYployg==","X-Forefront-Antispam-Report":"CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;\n PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE;\n SFS:(13230031)(4636009)(346002)(136003)(39860400002)(396003)(376002)(230922051799003)(186009)(1800799009)(64100799003)(82310400011)(451199024)(36840700001)(46966006)(40470700004)(40480700001)(2906002)(235185007)(478600001)(54906003)(6636002)(70206006)(41300700001)(40460700003)(70586007)(316002)(5660300002)(4326008)(6862004)(55016003)(8676002)(52536014)(8936002)(47076005)(83380400001)(82740400003)(84970400001)(36860700001)(26005)(336012)(33656002)(86362001)(99936003)(81166007)(356005)(6506007)(9686003)(7696005)(33964004);\n DIR:OUT; SFP:1101;","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"05 Oct 2023 18:15:41.3371 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n a6c256c6-8feb-48f5-a300-08dbc5cf1596","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];\n Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n AM7EUR03FT025.eop-EUR03.prod.protection.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-Spam-Status":"No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED,\n DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH,\n KAM_SHORT, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, TXREP, T_SPF_TEMPERROR,\n UNPARSEABLE_RELAY,\n URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","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":3213546,"web_url":"http://patchwork.ozlabs.org/comment/3213546/","msgid":"<VI1PR08MB532548022B6EEB78A30A9E6BFFA8A@VI1PR08MB5325.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2023-11-08T14:21:25","subject":"RE: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","submitter":{"id":69689,"url":"http://patchwork.ozlabs.org/api/people/69689/","name":"Tamar Christina","email":"Tamar.Christina@arm.com"},"content":"> >> > +  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n> >> > +   && satisfies_constraint_<lconst> (operands[2])\n> >> > +   && FP_REGNUM_P (REGNO (operands[0]))\"\n> >> > +  [(const_int 0)]\n> >> > +  {\n> >> > +    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1],\n> <MODE>mode);\n> >> > +    rtx op2 = gen_const_vec_duplicate (<VCONV>mode, operands[2]);\n> >> > +    emit_insn (gen_<optab><vconv>3 (op1, op1, op2));\n> >> > +    DONE;\n> >> > +  }\n> >> >  )\n> >>\n> >> The WIP SME patches add a %Z modifier for 'z' register prefixes,\n> >> similarly to b/h/s/d for scalar FP.  With that I think the alternative can be:\n> >>\n> >>      [w , 0 , <lconst>; *         , sve ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n> >>\n> >> although it would be nice to keep the hex constant.\n> >\n> > My original patch added a %u for (undecorated) which just prints the\n> > register number and changed %C to also accept a single constant instead of\n> only a uniform vector.\n> \n> Not saying no to %u in future, but %Z seems more consistent with the current\n> approach.  And yeah, I'd also wondered about extending %C.\n> The problem is guessing whether to print a 32-bit, 64-bit or 128-bit constant\n> for negative immediates.\n> \n\nRebased patch,\n\nBootstrapped Regtested on aarch64-none-linux-gnu and no issues.\n\nOk for master?\n\nThanks,\nTamar\n\ngcc/ChangeLog:\n\n\tPR tree-optimization/109154\n\t* config/aarch64/aarch64.md (<optab><mode>3): Add SVE case.\n\t* config/aarch64/aarch64-simd.md (ior<mode>3<vczle><vczbe>): Likewise.\n\t* config/aarch64/iterators.md (VCONV, vconv): New.\n\t* config/aarch64/predicates.md(aarch64_orr_imm_sve_advsimd): New.\n\ngcc/testsuite/ChangeLog:\n\n\tPR tree-optimization/109154\n\t* gcc.target/aarch64/sve/fneg-abs_1.c: Updated.\n\t* gcc.target/aarch64/sve/fneg-abs_2.c: Updated.\n\t* gcc.target/aarch64/sve/fneg-abs_4.c: Updated.\n\n--- inline copy of patch --\n\ndiff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md\nindex 33eceb436584ff73c7271f93639f2246d1af19e0..98c418c54a82a348c597310caa23916f9c16f9b6 100644\n--- a/gcc/config/aarch64/aarch64-simd.md\n+++ b/gcc/config/aarch64/aarch64-simd.md\n@@ -1219,11 +1219,14 @@ (define_insn \"and<mode>3<vczle><vczbe>\"\n (define_insn \"ior<mode>3<vczle><vczbe>\"\n   [(set (match_operand:VDQ_I 0 \"register_operand\")\n \t(ior:VDQ_I (match_operand:VDQ_I 1 \"register_operand\")\n-\t\t   (match_operand:VDQ_I 2 \"aarch64_reg_or_orr_imm\")))]\n-  \"TARGET_SIMD\"\n-  {@ [ cons: =0 , 1 , 2   ]\n-     [ w        , w , w   ] orr\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n-     [ w        , 0 , Do  ] << aarch64_output_simd_mov_immediate (operands[2], <bitsize>, AARCH64_CHECK_ORR);\n+\t\t   (match_operand:VDQ_I 2 \"aarch64_orr_imm_sve_advsimd\")))]\n+  \"TARGET_SIMD\"\n+  {@ [ cons: =0 , 1 , 2; attrs: arch ]\n+     [ w        , w , w  ; simd      ] orr\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n+     [ w        , 0 , vsl; sve       ] orr\\t%Z0.<Vetype>, %Z0.<Vetype>, #%2\n+     [ w        , 0 , Do ; simd      ] \\\n+       << aarch64_output_simd_mov_immediate (operands[2], <bitsize>, \\\n+\t\t\t\t\t     AARCH64_CHECK_ORR);\n   }\n   [(set_attr \"type\" \"neon_logic<q>\")]\n )\ndiff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md\nindex 4fcd71a2e9d1e8c35f35593255c4f66a68856a79..c6b1506fe7b47dd40741f26ef0cc92692008a631 100644\n--- a/gcc/config/aarch64/aarch64.md\n+++ b/gcc/config/aarch64/aarch64.md\n@@ -4599,7 +4599,8 @@ (define_insn \"<optab><mode>3\"\n   \"\"\n   {@ [ cons: =0 , 1  , 2        ; attrs: type , arch  ]\n      [ r        , %r , r        ; logic_reg   , *     ] <logical>\\t%<w>0, %<w>1, %<w>2\n-     [ rk       , r  , <lconst> ; logic_imm   , *     ] <logical>\\t%<w>0, %<w>1, %2\n+     [ rk       , ^r , <lconst> ; logic_imm   , *     ] <logical>\\t%<w>0, %<w>1, %2\n+     [ w        , 0  , <lconst> ; *           , sve   ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n      [ w        , w  , w        ; neon_logic  , simd  ] <logical>\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n   }\n )\ndiff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\nindex 1593a8fd04f91259295d0e393cbc7973daf7bf73..d24109b4fe6a867125b9474d34d616155bc36b3f 100644\n--- a/gcc/config/aarch64/iterators.md\n+++ b/gcc/config/aarch64/iterators.md\n@@ -1435,6 +1435,19 @@ (define_mode_attr VCONQ [(V8QI \"V16QI\") (V16QI \"V16QI\")\n \t\t\t (HI   \"V8HI\") (QI   \"V16QI\")\n \t\t\t (SF   \"V4SF\") (DF   \"V2DF\")])\n \n+;; 128-bit container modes for the lower part of an SVE vector to the inner or\n+;; neon source mode.\n+(define_mode_attr VCONV [(SI   \"VNx4SI\")  (DI    \"VNx2DI\")\n+\t\t\t (V8QI \"VNx16QI\") (V16QI \"VNx16QI\")\n+\t\t\t (V4HI \"VNx8HI\")  (V8HI  \"VNx8HI\")\n+\t\t\t (V2SI \"VNx4SI\")  (V4SI  \"VNx4SI\")\n+\t\t\t (V2DI \"VNx2DI\")])\n+(define_mode_attr vconv [(SI   \"vnx4si\")  (DI    \"vnx2di\")\n+\t\t\t (V8QI \"vnx16qi\") (V16QI \"vnx16qi\")\n+\t\t\t (V4HI \"vnx8hi\")  (V8HI  \"vnx8hi\")\n+\t\t\t (V2SI \"vnx4si\")  (V4SI  \"vnx4si\")\n+\t\t\t (V2DI \"vnx2di\")])\n+\n ;; Half modes of all vector modes.\n (define_mode_attr VHALF [(V8QI \"V4QI\")  (V16QI \"V8QI\")\n \t\t\t (V4HI \"V2HI\")  (V8HI  \"V4HI\")\ndiff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md\nindex 01de47439744acb3708c645b98eaa607294a1f1f..a73724a7fc05636d4c0643a291f40f2609564778 100644\n--- a/gcc/config/aarch64/predicates.md\n+++ b/gcc/config/aarch64/predicates.md\n@@ -871,6 +871,11 @@ (define_predicate \"aarch64_sve_logical_operand\"\n   (ior (match_operand 0 \"register_operand\")\n        (match_operand 0 \"aarch64_sve_logical_immediate\")))\n \n+(define_predicate \"aarch64_orr_imm_sve_advsimd\"\n+  (ior (match_operand 0 \"aarch64_reg_or_orr_imm\")\n+       (and (match_test \"TARGET_SVE\")\n+\t    (match_operand 0 \"aarch64_sve_logical_operand\"))))\n+\n (define_predicate \"aarch64_sve_gather_offset_b\"\n   (ior (match_operand 0 \"register_operand\")\n        (match_operand 0 \"aarch64_sve_gather_immediate_b\")))\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\nindex 0c7664e6de77a497682952653ffd417453854d52..a8b27199ff83d0eebadfc7dcf03f94e1229d76b8 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n@@ -6,7 +6,7 @@\n \n /*\n ** t1:\n-**\torr\tv[0-9]+.2s, #128, lsl #24\n+**\torr\tz[0-9]+.s, z[0-9]+.s, #-2147483648\n **\tret\n */\n float32x2_t t1 (float32x2_t a)\n@@ -16,7 +16,7 @@ float32x2_t t1 (float32x2_t a)\n \n /*\n ** t2:\n-**\torr\tv[0-9]+.4s, #128, lsl #24\n+**\torr\tz[0-9]+.s, z[0-9]+.s, #-2147483648\n **\tret\n */\n float32x4_t t2 (float32x4_t a)\n@@ -26,9 +26,7 @@ float32x4_t t2 (float32x4_t a)\n \n /*\n ** t3:\n-**\tadrp\tx0, .LC[0-9]+\n-**\tldr\tq[0-9]+, \\[x0, #:lo12:.LC0\\]\n-**\torr\tv[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b\n+**\torr\tz[0-9]+.d, z[0-9]+.d, #-9223372036854775808\n **\tret\n */\n float64x2_t t3 (float64x2_t a)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\nindex a60cd31b9294af2dac69eed1c93f899bd5c78fca..19a7695e605bc8aced486a9c450d1cdc6be4691a 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n@@ -7,8 +7,7 @@\n \n /*\n ** f1:\n-**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.s, z0.s, #-2147483648\n **\tret\n */\n float32_t f1 (float32_t a)\n@@ -18,9 +17,7 @@ float32_t f1 (float32_t a)\n \n /*\n ** f2:\n-**\tmov\tx0, -9223372036854775808\n-**\tfmov\td[0-9]+, x0\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.d, z0.d, #-9223372036854775808\n **\tret\n */\n float64_t f2 (float64_t a)\ndiff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\nindex 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..663d5fe17e091d128313b6b8b8dc918a01a96c4f 100644\n--- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n+++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n@@ -6,9 +6,7 @@\n \n /*\n ** negabs:\n-**\tmov\tx0, -9223372036854775808\n-**\tfmov\td[0-9]+, x0\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.d, z0.d, #-9223372036854775808\n **\tret\n */\n double negabs (double x)\n@@ -22,8 +20,7 @@ double negabs (double x)\n \n /*\n ** negabsf:\n-**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n-**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n+**\torr\tz0.s, z0.s, #-2147483648\n **\tret\n */\n float negabsf (float x)","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=armh.onmicrosoft.com header.i=@armh.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector2-armh-onmicrosoft-com\n header.b=gm0UAKl+;\n\tdkim=pass (1024-bit key) header.d=armh.onmicrosoft.com\n header.i=@armh.onmicrosoft.com header.a=rsa-sha256\n header.s=selector2-armh-onmicrosoft-com header.b=gm0UAKl+;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","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.7.57"],"Received":["from server2.sourceware.org (server2.sourceware.org\n [IPv6:2620:52:3:1:0:246e:9693:128c])\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 4SQS2f0j6Gz1yQl\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  9 Nov 2023 01:22:00 +1100 (AEDT)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id 045C0385840E\n\tfor <incoming@patchwork.ozlabs.org>; Wed,  8 Nov 2023 14:21:57 +0000 (GMT)","from EUR04-HE1-obe.outbound.protection.outlook.com\n (mail-he1eur04on2057.outbound.protection.outlook.com [40.107.7.57])\n by sourceware.org (Postfix) with ESMTPS id 714CE3858D33\n for <gcc-patches@gcc.gnu.org>; Wed,  8 Nov 2023 14:21:41 +0000 (GMT)","from DUZPR01CA0047.eurprd01.prod.exchangelabs.com\n (2603:10a6:10:469::16) by DU2PR08MB7375.eurprd08.prod.outlook.com\n (2603:10a6:10:2f3::18) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.18; Wed, 8 Nov\n 2023 14:21:36 +0000","from DB5PEPF00014B8C.eurprd02.prod.outlook.com\n (2603:10a6:10:469:cafe::32) by DUZPR01CA0047.outlook.office365.com\n (2603:10a6:10:469::16) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29 via Frontend\n Transport; Wed, 8 Nov 2023 14:21:36 +0000","from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by\n DB5PEPF00014B8C.mail.protection.outlook.com (10.167.8.200) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6977.16 via Frontend Transport; Wed, 8 Nov 2023 14:21:35 +0000","(\"Tessian outbound 8289ea11ec17:v228\");\n Wed, 08 Nov 2023 14:21:35 +0000","from 077381c6f8bd.1\n by 64aa7808-outbound-1.mta.getcheckrecipient.com id\n C9F0C6FE-856D-4E66-B6CF-1B35DDEC88C7.1;\n Wed, 08 Nov 2023 14:21:29 +0000","from EUR05-DB8-obe.outbound.protection.outlook.com\n by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id\n 077381c6f8bd.1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);\n Wed, 08 Nov 2023 14:21:29 +0000","from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17)\n by DB5PR08MB10236.eurprd08.prod.outlook.com (2603:10a6:10:4a5::12)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.29; Wed, 8 Nov\n 2023 14:21:26 +0000","from VI1PR08MB5325.eurprd08.prod.outlook.com\n ([fe80::26aa:efdd:a74a:27d0]) by VI1PR08MB5325.eurprd08.prod.outlook.com\n ([fe80::26aa:efdd:a74a:27d0%5]) with mapi id 15.20.6954.028; Wed, 8 Nov 2023\n 14:21:26 +0000"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 714CE3858D33","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 714CE3858D33","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1699453303; cv=pass;\n b=XJfmJbfpDTLrf4beS79IzC5uqVv4dnDiq8ogXEe0kTrUn2iuePkTB7zjpuYpwkCVEg72Q6yEyyy2ycWem4BXVTZMXp8Lfk/Z21bxg6K0UYRKINyrvFPo5cT1nkTxxTpSbgzZfRIhrz0Z44uWQLtBKFOYc446B89KSzZN3N3y48A=","i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;\n b=PeSRl6hox/D9U1odaXz2PJ8gzpO6ioGZkqe1uad7rWJbJz7Z7MssJuqGx0xxWzT/RiiJJ7csnFYS1YNGbjUp9LxwH6PTEBm1iawSz8jCqmIkBGwSbxjpD/Y9GqzRtcjUzsq+y+C00WfRMnc0+NvXm5p3wqoyLhPItB9BlCyHFqYtiQAh0uBDr861Y9kznBih1+CPU0giNv96xAzJ8wXtH5n3U88h9qfkOT/8leeO3wtNDLK1RlswvJnw3Zkq7PTS3slHwmXy2Dl8Fke8QK1sMOAUV9beFyTF1r9OUw+wrbvwUP6iZxfX4EA2c4PChgWWNr9JyruY2lxSUzivuNyqqA==","i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=ZXbhtrbqtlgMiea/rOsD1SM9n/guVQtSnWNih0I1NBB1SGqr3B4EX23q7KX5Kr4YqzYWXkA32jjSTymPvI/3mXGgzhVxBCNbexL91weU5nqi1xHC6lx4do1fL0aAbMZNYlsAl14Obhw1LsDQwwtavufGIhTRq9lVLWhXvFVPXP65LkbOOAgXSPFuLNkcta0vUt4Q1pG120G45mTalNEwRW54NA2CYUEv/AVHva3SXxDhB54VCPwpYFogwZ1qjHclouPgEBG1k8togTHBjKaiNtfZiQPgPh628LAwsP/FkC2mqf836JhK9mk0PAEJp5Ie4cnr1vDoHnlsK4GxzKkIDA=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1699453303; c=relaxed/simple;\n bh=g8ZCUWsoEBOT/3HDlK9D3pQlEpfsEKI2lJsiuAcM668=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=g/Kx+HpE7s8kIu/BgiTIqf7/qYc9FfLhfOZ1YA86gig/92aBc6pc4jsmDZgG9JhLAVDP/P9upB8igXn5mW4bmYfkz6dx6aOEJX31wCTT+uVSpTxB9Cx78eLOP+e5KqIAcP+n2elVD40AC2aeZSHPpUylYi6oVUTZcTF+Ly9FxVg=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\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=8aq4PD003r81+Xzvvic5WF2gXiuOT1nvvz5hPkD2nVA=;\n b=bJfGnsNKYFnT1wy8gCSN5h/ZZ/wCGgw9e3e18FcLmpdk/9nq0Ik39btYktSntCxHpmf35n8QSpdtVL9fPrC+B+scgrwkPVoz1pL5HAVIK0GRBME29l6zq8qaEHsv6jG/j2DTZxtc3MQf8TcSuS8KEoFQbsx55xUkIngOsc3ZDknnIVYYGqRZExQkFElbe0J8DBRK1zWX+yEeLK6AZoLZQl1LtPcUUABqygMdwx9RH6E6qxmZWstsLjAuIFvKoBHFvNMbv/NB9rq8lhTONTOjDrKUoIOYt12gTkRsQXQ0+abdkbKjeNbfVNJBIfWqYyFKd4SsVJ589kIS85oMnFGjhA==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\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=8aq4PD003r81+Xzvvic5WF2gXiuOT1nvvz5hPkD2nVA=;\n b=DEkbVqjq8dCiB63JAJ3FTusFqnsev+uPRNFrmIfwP2sTY9tCxJKbL28W7F2qI9F6MagdAvOXeCmMmwQVWqNOL/U3bXvtqRlNSKQyo8GNQm5zbF+dy7vMnBW5O7fsuYnMbQQfSMvAPArL5vK4bCii5RsFSdyc+pQiUpV6qZaSOwnIKdkhSWJN4UTbPRB1Fm79Vf2LHVHY62iBWKjJI2neX51g8eMRhXYeJBce4oM6yH2rWwaUnK5SLvBQWufCeH96R4CW/lGzrFta5v4ss3BaSY0McvSAgCnBIa40RehQkjZmoI10TdkXjG8StvLUvG63nn1By0ZJYBHNwKYQ0WQ5XQ=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org 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=armh.onmicrosoft.com; arc=pass (0 oda=1\n ltdi=1 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=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=8aq4PD003r81+Xzvvic5WF2gXiuOT1nvvz5hPkD2nVA=;\n b=gm0UAKl+jFzqs6uIDwF9cgdzPywMGuTNQPMGpnYGsH9goTjQPK/UZGq0uxASvf5mn4UxEEWsB8pKihxVm6Ggxr+S006xXyiGvkhJfk8lysOtaehn5nbgZFQZREucESZoDdWlI3R68UeLf7jUgY5IOO0oSd3PnsN9cXjLI5bIrZ0=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=8aq4PD003r81+Xzvvic5WF2gXiuOT1nvvz5hPkD2nVA=;\n b=gm0UAKl+jFzqs6uIDwF9cgdzPywMGuTNQPMGpnYGsH9goTjQPK/UZGq0uxASvf5mn4UxEEWsB8pKihxVm6Ggxr+S006xXyiGvkhJfk8lysOtaehn5nbgZFQZREucESZoDdWlI3R68UeLf7jUgY5IOO0oSd3PnsN9cXjLI5bIrZ0="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 63.35.35.123)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 63.35.35.123 as permitted sender) receiver=protection.outlook.com;\n client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;\n pr=C","X-CheckRecipientChecked":"true","X-CR-MTA-CID":"8ce79c6d9a07cd30","X-CR-MTA-TID":"64aa7808","From":"Tamar Christina <Tamar.Christina@arm.com>","To":"Richard Sandiford <Richard.Sandiford@arm.com>","CC":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>, Marcus Shawcroft\n <Marcus.Shawcroft@arm.com>, Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>","Subject":"RE: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","Thread-Topic":"[PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","Thread-Index":"AQHZ8NzGAXlsp89BcEOU5rT2cZbJ8rAuXZcLgAAAWhCAAB/87oBCMvKA","Date":"Wed, 8 Nov 2023 14:21:25 +0000","Message-ID":"\n <VI1PR08MB532548022B6EEB78A30A9E6BFFA8A@VI1PR08MB5325.eurprd08.prod.outlook.com>","References":"<patch-17724-tamar@arm.com> <mptv8bwvw3k.fsf@arm.com>\n <VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>\n <mptttrfvqql.fsf@arm.com>","In-Reply-To":"<mptttrfvqql.fsf@arm.com>","Accept-Language":"en-US","Content-Language":"en-US","X-MS-Has-Attach":"yes","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 VI1PR08MB5325:EE_|DB5PR08MB10236:EE_|DB5PEPF00014B8C:EE_|DU2PR08MB7375:EE_","X-MS-Office365-Filtering-Correlation-Id":"42ee04f7-cc04-4204-e816-08dbe06603db","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;","X-Microsoft-Antispam-Message-Info-Original":"\n DekNwLt0/MioFGN7PCj+DZVV0L3OdmAXusfpjvEr9xQdMa4jdz9K8NjO6p5R7JTvs1yrO+8lftwgd11THR1dWmBGWTB1nsUlgPxZqUx+H1ho99Lr1mJp/DRjxTnYvZWsaf5GDvfeto1EEa/+cqdjHDxS56b+oFhlGTIlaonxdeVSOqm6q1m0y4rMcSYvLYInaFskb+l+eg5UW7plm0JI2TXy0Ahj8CTtZftVisJAv9pclqamiRvgiL0EJdFkD8+iF971ZLvn0XLN8zOic/F712/Ix8wBQyWU3k1R1rZhQqdkfK5DjimUTPWg5n6BVz4RSK+NPi+0kj1astmiXqHDlVAqEbc1YsTS8nfuUwXheGrWLjyFmkBGHaMAk+eGTVn7tm3WzHaK9MfN3bHmc0Xh2jtLxqJABgWlXusUO/O32ok/UyTJDnTG9dh6feLn2uiTQIxX4Rpsojg85JJwJKEvOvzv5Kqp2vrkVSJJuYNGMZPVwvBSmmc2rCFzs8sotPaKCHz1EgyoIIcQJZQGCKh9QPFqNiJeEJZQjj+iriZAAoXyp7kGDUaF6O4NaftHCdeqMN3yPGpJAjsUvmOciM+Zi7bF8UuNvjau0Z8F1DbtTxD8twWHw+qV1XhnPO0ZcmE7k9PkdLtcB4b9fxGjoGYgyw==","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230031)(136003)(366004)(376002)(396003)(39850400004)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799009)(4326008)(6862004)(8676002)(41300700001)(8936002)(2906002)(38100700002)(84970400001)(55016003)(5660300002)(9686003)(66556008)(66476007)(33656002)(316002)(64756008)(6636002)(54906003)(66446008)(86362001)(52536014)(99936003)(76116006)(66946007)(83380400001)(122000001)(38070700009)(26005)(71200400001)(7696005)(6506007)(478600001);\n DIR:OUT; SFP:1101;","Content-Type":"multipart/mixed;\n boundary=\"_002_VI1PR08MB532548022B6EEB78A30A9E6BFFA8AVI1PR08MB5325eurp_\"","MIME-Version":"1.0","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["DB5PR08MB10236","DU2PR08MB7375"],"Original-Authentication-Results":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DB5PEPF00014B8C.eurprd02.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n a5321228-c8eb-4813-1091-08dbe065fdfa","X-Microsoft-Antispam":"BCL:0;","X-Microsoft-Antispam-Message-Info":"\n o+1IoBhMzBDAKEBa25fmwAOcW2Axr/E2WEbkx62L6uILiIkMB/WLvBJYemPh6bYEePPXWq9033NOXIwd4U/eI42CdzEY9WPq5Hv96xyWjBGY3KjphU+ZekbgNYLLjGD9bcJqHdw8LhQlReZC647lGyueMgPf2TwNGrSUd8kmezdm2u37poI3OAkkEYnGlMpi3VnAFxHgUVfVY9iIYxZypscpx/xY3FEr6QzbYuttSNnoKGsASZqHJFaeLQyt5oAfayq/Neo6ixf6LHxJQ4HMJQ11ETLApQo5dY4By69hMvX+ANdZkXBsz2HXk8CO8fs5nsg3NYy3E1tD7tnBdyBRzPXqK3lq/uYAROxOsjvh4vENhZw6YX+LBpNlOoqdk/W54JEXC5YvH1gsz9AtrCi8EvJIBnuY9RmjsSrgToHl5LoUsPoLXLeyWDrmn9YXPLQUOInQ+NFh45vUBK7Eodf1a8bmmUelMXW6dChhmYIAT4XHtbc8itdGBViBeq1HnC0rka5v1r4hXcy33nxeTyoweJkckL0Eb9rxMDSf/zOwfhz02l8Vh5KHNimrfpJhGzWA4Rbi82eNcbYSIYb9OBEq6Wj1dgqXLRlvcxHfhLbvpEMktlgaSrHySkeBg1XJDb4SFNOSdqLpkk77nqBZd7LdT3a/l6LMfW5YMbkB4JdK5IkI+jDpA9TRhIqG3IRje63koupeyQCFFROzE+g5725Oi0XN/fTWgzKRX7sF/cIsVmu7YOX0lN9FWMGG9x/ypG0XEUzzrb/yPJKA6jzbnwIfRw==","X-Forefront-Antispam-Report":"CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;\n PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE;\n SFS:(13230031)(4636009)(396003)(376002)(136003)(39850400004)(346002)(230922051799003)(1800799009)(186009)(82310400011)(64100799003)(451199024)(40470700004)(46966006)(36840700001)(47076005)(9686003)(356005)(70206006)(70586007)(6636002)(84970400001)(316002)(54906003)(81166007)(41300700001)(33656002)(2906002)(5660300002)(99936003)(55016003)(478600001)(82740400003)(36860700001)(235185007)(40480700001)(83380400001)(8936002)(336012)(6862004)(40460700003)(8676002)(86362001)(26005)(4326008)(52536014)(33964004)(7696005)(6506007);\n DIR:OUT; SFP:1101;","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"08 Nov 2023 14:21:35.9086 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 42ee04f7-cc04-4204-e816-08dbe06603db","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];\n Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n DB5PEPF00014B8C.eurprd02.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-Spam-Status":"No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED,\n DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, KAM_LOTSOFHASH,\n KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE,\n TXREP, T_SCC_BODY_TEXT_LINE,\n UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","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":3214101,"web_url":"http://patchwork.ozlabs.org/comment/3214101/","msgid":"<mpto7g35hyz.fsf@arm.com>","list_archive_url":null,"date":"2023-11-09T10:39:00","subject":"Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","submitter":{"id":64746,"url":"http://patchwork.ozlabs.org/api/people/64746/","name":"Richard Sandiford","email":"richard.sandiford@arm.com"},"content":"Tamar Christina <Tamar.Christina@arm.com> writes:\n>> >> > +  \"&& TARGET_SVE && rtx_equal_p (operands[0], operands[1])\n>> >> > +   && satisfies_constraint_<lconst> (operands[2])\n>> >> > +   && FP_REGNUM_P (REGNO (operands[0]))\"\n>> >> > +  [(const_int 0)]\n>> >> > +  {\n>> >> > +    rtx op1 = lowpart_subreg (<VCONV>mode, operands[1],\n>> <MODE>mode);\n>> >> > +    rtx op2 = gen_const_vec_duplicate (<VCONV>mode, operands[2]);\n>> >> > +    emit_insn (gen_<optab><vconv>3 (op1, op1, op2));\n>> >> > +    DONE;\n>> >> > +  }\n>> >> >  )\n>> >>\n>> >> The WIP SME patches add a %Z modifier for 'z' register prefixes,\n>> >> similarly to b/h/s/d for scalar FP.  With that I think the alternative can be:\n>> >>\n>> >>      [w , 0 , <lconst>; *         , sve ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n>> >>\n>> >> although it would be nice to keep the hex constant.\n>> >\n>> > My original patch added a %u for (undecorated) which just prints the\n>> > register number and changed %C to also accept a single constant instead of\n>> only a uniform vector.\n>> \n>> Not saying no to %u in future, but %Z seems more consistent with the current\n>> approach.  And yeah, I'd also wondered about extending %C.\n>> The problem is guessing whether to print a 32-bit, 64-bit or 128-bit constant\n>> for negative immediates.\n>> \n>\n> Rebased patch,\n>\n> Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.\n>\n> Ok for master?\n>\n> Thanks,\n> Tamar\n>\n> gcc/ChangeLog:\n>\n> \tPR tree-optimization/109154\n> \t* config/aarch64/aarch64.md (<optab><mode>3): Add SVE case.\n> \t* config/aarch64/aarch64-simd.md (ior<mode>3<vczle><vczbe>): Likewise.\n> \t* config/aarch64/iterators.md (VCONV, vconv): New.\n> \t* config/aarch64/predicates.md(aarch64_orr_imm_sve_advsimd): New.\n>\n> gcc/testsuite/ChangeLog:\n>\n> \tPR tree-optimization/109154\n> \t* gcc.target/aarch64/sve/fneg-abs_1.c: Updated.\n> \t* gcc.target/aarch64/sve/fneg-abs_2.c: Updated.\n> \t* gcc.target/aarch64/sve/fneg-abs_4.c: Updated.\n>\n> --- inline copy of patch --\n>\n> diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-simd.md\n> index 33eceb436584ff73c7271f93639f2246d1af19e0..98c418c54a82a348c597310caa23916f9c16f9b6 100644\n> --- a/gcc/config/aarch64/aarch64-simd.md\n> +++ b/gcc/config/aarch64/aarch64-simd.md\n> @@ -1219,11 +1219,14 @@ (define_insn \"and<mode>3<vczle><vczbe>\"\n>  (define_insn \"ior<mode>3<vczle><vczbe>\"\n>    [(set (match_operand:VDQ_I 0 \"register_operand\")\n>  \t(ior:VDQ_I (match_operand:VDQ_I 1 \"register_operand\")\n> -\t\t   (match_operand:VDQ_I 2 \"aarch64_reg_or_orr_imm\")))]\n> -  \"TARGET_SIMD\"\n> -  {@ [ cons: =0 , 1 , 2   ]\n> -     [ w        , w , w   ] orr\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n> -     [ w        , 0 , Do  ] << aarch64_output_simd_mov_immediate (operands[2], <bitsize>, AARCH64_CHECK_ORR);\n> +\t\t   (match_operand:VDQ_I 2 \"aarch64_orr_imm_sve_advsimd\")))]\n> +  \"TARGET_SIMD\"\n> +  {@ [ cons: =0 , 1 , 2; attrs: arch ]\n> +     [ w        , w , w  ; simd      ] orr\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n> +     [ w        , 0 , vsl; sve       ] orr\\t%Z0.<Vetype>, %Z0.<Vetype>, #%2\n> +     [ w        , 0 , Do ; simd      ] \\\n> +       << aarch64_output_simd_mov_immediate (operands[2], <bitsize>, \\\n> +\t\t\t\t\t     AARCH64_CHECK_ORR);\n>    }\n>    [(set_attr \"type\" \"neon_logic<q>\")]\n>  )\n> diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md\n> index 4fcd71a2e9d1e8c35f35593255c4f66a68856a79..c6b1506fe7b47dd40741f26ef0cc92692008a631 100644\n> --- a/gcc/config/aarch64/aarch64.md\n> +++ b/gcc/config/aarch64/aarch64.md\n> @@ -4599,7 +4599,8 @@ (define_insn \"<optab><mode>3\"\n>    \"\"\n>    {@ [ cons: =0 , 1  , 2        ; attrs: type , arch  ]\n>       [ r        , %r , r        ; logic_reg   , *     ] <logical>\\t%<w>0, %<w>1, %<w>2\n> -     [ rk       , r  , <lconst> ; logic_imm   , *     ] <logical>\\t%<w>0, %<w>1, %2\n> +     [ rk       , ^r , <lconst> ; logic_imm   , *     ] <logical>\\t%<w>0, %<w>1, %2\n> +     [ w        , 0  , <lconst> ; *           , sve   ] <logical>\\t%Z0.<s>, %Z0.<s>, #%2\n>       [ w        , w  , w        ; neon_logic  , simd  ] <logical>\\t%0.<Vbtype>, %1.<Vbtype>, %2.<Vbtype>\n>    }\n>  )\n> diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md\n> index 1593a8fd04f91259295d0e393cbc7973daf7bf73..d24109b4fe6a867125b9474d34d616155bc36b3f 100644\n> --- a/gcc/config/aarch64/iterators.md\n> +++ b/gcc/config/aarch64/iterators.md\n> @@ -1435,6 +1435,19 @@ (define_mode_attr VCONQ [(V8QI \"V16QI\") (V16QI \"V16QI\")\n>  \t\t\t (HI   \"V8HI\") (QI   \"V16QI\")\n>  \t\t\t (SF   \"V4SF\") (DF   \"V2DF\")])\n>  \n> +;; 128-bit container modes for the lower part of an SVE vector to the inner or\n> +;; neon source mode.\n> +(define_mode_attr VCONV [(SI   \"VNx4SI\")  (DI    \"VNx2DI\")\n> +\t\t\t (V8QI \"VNx16QI\") (V16QI \"VNx16QI\")\n> +\t\t\t (V4HI \"VNx8HI\")  (V8HI  \"VNx8HI\")\n> +\t\t\t (V2SI \"VNx4SI\")  (V4SI  \"VNx4SI\")\n> +\t\t\t (V2DI \"VNx2DI\")])\n> +(define_mode_attr vconv [(SI   \"vnx4si\")  (DI    \"vnx2di\")\n> +\t\t\t (V8QI \"vnx16qi\") (V16QI \"vnx16qi\")\n> +\t\t\t (V4HI \"vnx8hi\")  (V8HI  \"vnx8hi\")\n> +\t\t\t (V2SI \"vnx4si\")  (V4SI  \"vnx4si\")\n> +\t\t\t (V2DI \"vnx2di\")])\n> +\n>  ;; Half modes of all vector modes.\n>  (define_mode_attr VHALF [(V8QI \"V4QI\")  (V16QI \"V8QI\")\n>  \t\t\t (V4HI \"V2HI\")  (V8HI  \"V4HI\")\n\nThese attributes arne't needed any more (at least, not by this patch).\nOK for trunk with those removed.\n\nThanks,\nRichard\n\n> diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md\n> index 01de47439744acb3708c645b98eaa607294a1f1f..a73724a7fc05636d4c0643a291f40f2609564778 100644\n> --- a/gcc/config/aarch64/predicates.md\n> +++ b/gcc/config/aarch64/predicates.md\n> @@ -871,6 +871,11 @@ (define_predicate \"aarch64_sve_logical_operand\"\n>    (ior (match_operand 0 \"register_operand\")\n>         (match_operand 0 \"aarch64_sve_logical_immediate\")))\n>  \n> +(define_predicate \"aarch64_orr_imm_sve_advsimd\"\n> +  (ior (match_operand 0 \"aarch64_reg_or_orr_imm\")\n> +       (and (match_test \"TARGET_SVE\")\n> +\t    (match_operand 0 \"aarch64_sve_logical_operand\"))))\n> +\n>  (define_predicate \"aarch64_sve_gather_offset_b\"\n>    (ior (match_operand 0 \"register_operand\")\n>         (match_operand 0 \"aarch64_sve_gather_immediate_b\")))\n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n> index 0c7664e6de77a497682952653ffd417453854d52..a8b27199ff83d0eebadfc7dcf03f94e1229d76b8 100644\n> --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_1.c\n> @@ -6,7 +6,7 @@\n>  \n>  /*\n>  ** t1:\n> -**\torr\tv[0-9]+.2s, #128, lsl #24\n> +**\torr\tz[0-9]+.s, z[0-9]+.s, #-2147483648\n>  **\tret\n>  */\n>  float32x2_t t1 (float32x2_t a)\n> @@ -16,7 +16,7 @@ float32x2_t t1 (float32x2_t a)\n>  \n>  /*\n>  ** t2:\n> -**\torr\tv[0-9]+.4s, #128, lsl #24\n> +**\torr\tz[0-9]+.s, z[0-9]+.s, #-2147483648\n>  **\tret\n>  */\n>  float32x4_t t2 (float32x4_t a)\n> @@ -26,9 +26,7 @@ float32x4_t t2 (float32x4_t a)\n>  \n>  /*\n>  ** t3:\n> -**\tadrp\tx0, .LC[0-9]+\n> -**\tldr\tq[0-9]+, \\[x0, #:lo12:.LC0\\]\n> -**\torr\tv[0-9]+.16b, v[0-9]+.16b, v[0-9]+.16b\n> +**\torr\tz[0-9]+.d, z[0-9]+.d, #-9223372036854775808\n>  **\tret\n>  */\n>  float64x2_t t3 (float64x2_t a)\n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> index a60cd31b9294af2dac69eed1c93f899bd5c78fca..19a7695e605bc8aced486a9c450d1cdc6be4691a 100644\n> --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_2.c\n> @@ -7,8 +7,7 @@\n>  \n>  /*\n>  ** f1:\n> -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.s, z0.s, #-2147483648\n>  **\tret\n>  */\n>  float32_t f1 (float32_t a)\n> @@ -18,9 +17,7 @@ float32_t f1 (float32_t a)\n>  \n>  /*\n>  ** f2:\n> -**\tmov\tx0, -9223372036854775808\n> -**\tfmov\td[0-9]+, x0\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.d, z0.d, #-9223372036854775808\n>  **\tret\n>  */\n>  float64_t f2 (float64_t a)\n> diff --git a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> index 21f2a8da2a5d44e3d01f6604ca7be87e3744d494..663d5fe17e091d128313b6b8b8dc918a01a96c4f 100644\n> --- a/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> +++ b/gcc/testsuite/gcc.target/aarch64/sve/fneg-abs_4.c\n> @@ -6,9 +6,7 @@\n>  \n>  /*\n>  ** negabs:\n> -**\tmov\tx0, -9223372036854775808\n> -**\tfmov\td[0-9]+, x0\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.d, z0.d, #-9223372036854775808\n>  **\tret\n>  */\n>  double negabs (double x)\n> @@ -22,8 +20,7 @@ double negabs (double x)\n>  \n>  /*\n>  ** negabsf:\n> -**\tmovi\tv[0-9]+.2s, 0x80, lsl 24\n> -**\torr\tv[0-9]+.8b, v[0-9]+.8b, v[0-9]+.8b\n> +**\torr\tz0.s, z0.s, #-2147483648\n>  **\tret\n>  */\n>  float negabsf (float x)","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 spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=8.43.85.97; helo=server2.sourceware.org;\n envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","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=none smtp.remote-ip=217.140.110.172"],"Received":["from server2.sourceware.org (server2.sourceware.org [8.43.85.97])\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 4SQz383yQNz1yRQ\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  9 Nov 2023 21:39:16 +1100 (AEDT)","from server2.sourceware.org (localhost [IPv6:::1])\n\tby sourceware.org (Postfix) with ESMTP id 8F59D3857806\n\tfor <incoming@patchwork.ozlabs.org>; Thu,  9 Nov 2023 10:39:14 +0000 (GMT)","from foss.arm.com (foss.arm.com [217.140.110.172])\n by sourceware.org (Postfix) with ESMTP id E3C5A3858D37\n for <gcc-patches@gcc.gnu.org>; Thu,  9 Nov 2023 10:39:02 +0000 (GMT)","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 28AC212FC;\n Thu,  9 Nov 2023 02:39:47 -0800 (PST)","from localhost (e121540-lin.manchester.arm.com [10.32.110.72])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B4EBF3F703;\n Thu,  9 Nov 2023 02:39:01 -0800 (PST)"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org E3C5A3858D37","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org E3C5A3858D37","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699526344; cv=none;\n b=wUYUCVUukhGwD0sh8n8TR8tYUNUC1KYd2hRbIEtdjUdt35YLFh9vGf9GRiP9nk1WQEnt/xtNX9giy+LQY90bc3SVq5W8/EOAeZeU2KNywigc8oQWbEq7O2bryTnVRejUZWdtGUfay3Xu/G3COnIknClg2Cs65jE8svwDBgu1KRo=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1699526344; c=relaxed/simple;\n bh=r1OgFFAZf1aFc4J4hPhg7/vgTWzSw+5AhN9IK9UaPho=;\n h=From:To:Subject:Date:Message-ID:MIME-Version;\n b=k7FzFQKndiN3wFWrwhfO79xDLRTMFG0Tb5YgseFIHAlv+Zsom6Jik0cJ2p7RaX7RQ4gmezosDCcllMcNk1oyX1m2s2pR3GAMebU0lDEWf7DNXaLgWRadEiE5meQ55SrYVr+XcOQhp/zrawq4WJa4HeSaP51o9o2w71hFfoBvqUY=","ARC-Authentication-Results":"i=1; server2.sourceware.org","From":"Richard Sandiford <richard.sandiford@arm.com>","To":"Tamar Christina <Tamar.Christina@arm.com>","Mail-Followup-To":"Tamar Christina <Tamar.Christina@arm.com>,\n \"gcc-patches\\@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>,\n Marcus Shawcroft <Marcus.Shawcroft@arm.com>,\n Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>, richard.sandiford@arm.com","Cc":"\"gcc-patches\\@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>, nd <nd@arm.com>,\n Richard Earnshaw <Richard.Earnshaw@arm.com>,\n Marcus Shawcroft <Marcus.Shawcroft@arm.com>,\n Kyrylo Tkachov <Kyrylo.Tkachov@arm.com>","Subject":"Re: [PATCH]AArch64: Use SVE unpredicated LOGICAL expressions when\n Advanced SIMD inefficient [PR109154]","References":"<patch-17724-tamar@arm.com> <mptv8bwvw3k.fsf@arm.com>\n <VI1PR08MB5325B8CA7F52B5CC1E5F6978FFC2A@VI1PR08MB5325.eurprd08.prod.outlook.com>\n <mptttrfvqql.fsf@arm.com>\n <VI1PR08MB532548022B6EEB78A30A9E6BFFA8A@VI1PR08MB5325.eurprd08.prod.outlook.com>","Date":"Thu, 09 Nov 2023 10:39:00 +0000","In-Reply-To":"\n <VI1PR08MB532548022B6EEB78A30A9E6BFFA8A@VI1PR08MB5325.eurprd08.prod.outlook.com>\n (Tamar Christina's message of \"Wed, 8 Nov 2023 14:21:25 +0000\")","Message-ID":"<mpto7g35hyz.fsf@arm.com>","User-Agent":"Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)","MIME-Version":"1.0","Content-Type":"text/plain","X-Spam-Status":"No, score=-23.0 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n KAM_DMARC_NONE, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH,\n KAM_SHORT, SPF_HELO_NONE, SPF_NONE, TXREP,\n T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6","X-Spam-Checker-Version":"SpamAssassin 3.4.6 (2021-04-09) on\n server2.sourceware.org","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"}}]