From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 31599385843D for ; Wed, 8 Dec 2021 15:23:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 31599385843D Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A29C5101E; Wed, 8 Dec 2021 07:23:48 -0800 (PST) Received: from [10.57.0.71] (unknown [10.57.0.71]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0FFE03F73B; Wed, 8 Dec 2021 07:23:47 -0800 (PST) Subject: Re: [PATCH 2/2][GCC] arm: Declare MVE types internally via pragma To: Murray Steele Cc: gcc-patches@gcc.gnu.org References: <55ba6a8c-4dda-c023-0e93-a052e4830d06@arm.com> <342ef4e3-6013-2d67-adc8-6310febe2f52@foss.arm.com> <2a59e081-0a5f-5b9b-c398-d89c6c217822@arm.com> <9ccc226a-fdf7-d465-6074-b6a78d16b316@arm.com> <060230b8-22b0-36eb-2594-c469efaabf35@arm.com> From: Richard Earnshaw Message-ID: <3ad22fca-fa13-04ea-f114-01e8c52dd280@foss.arm.com> Date: Wed, 8 Dec 2021 15:23:46 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: <060230b8-22b0-36eb-2594-c469efaabf35@arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3498.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH, KAM_SHORT, NICE_REPLY_A, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Dec 2021 15:23:51 -0000 On 25/11/2021 09:42, Murray Steele via Gcc-patches wrote: > Changes from original patch: > > 1. Merged test_redef_* test files into one > 2. Encapsulated contents of arm-mve-builtins.h in namespace arm_mve (missed > in initial patch). > 3. Added extern declarations for scalar_types and acle_vector types to > arm-mve-builtins.h (missed in initial patch). > 4. Added arm-mve-builtins.(cc|h) to gt_targets for arm-*-*-* (missed in > initial patch). > 5. Added include for gt-arm-mve-builtins.h to arm-mve-builtins.cc (missed in > initial patch). > 6. Removed explicit initialisation of handle_arm_mve_types_p as it is unneeded. > > --- > > This patch moves the implementation of MVE ACLE types from > arm_mve_types.h to inside GCC via a new pragma, which replaces the prior > type definitions. This allows for the types to be used internally for > intrinsic function definitions. > > Bootstrapped and regression tested on arm-none-linux-gnuabihf, and > regression tested on arm-eabi -- no issues. > > Thanks, > Murray > Nearly there, but... Your changelog entry needs some work: > gcc/ChangeLog: > > * config.gcc: Add arm-mve-builtins.o to extra_objs for arm-*-*-* > targets. * config.gcc (arm*-*-*): Add arm-mve-builtins.o to extra_objs. > * config/arm/arm-c.c (arm_pragma_arm): Handle new pragma. ... Handle "#pragma GCC arm". > (arm_register_target_pragmas): Register new pragma. ... Register it. > * config/arm/arm-protos.h: Add arm_mve namespace and declare > arm_handle_mve_types_h. ...arm-protos.h (arm_mve::arm_handle_mve_types.h): New prototype. > * config/arm/arm_mve_types.h: Replace MVE type definitions with > new pragma. > * config/arm/t-arm: Add arm-mve-builtins.o target. .../t-arm (arm-mve-builtins.o): New target rule. > * config/arm/arm-mve-builtins.cc: New file. > * config/arm/arm-mve-builtins.def: New file. > * config/arm/arm-mve-builtins.h: New file. > > gcc/testsuite/ChangeLog: > > * gcc.target/arm/mve/mve.exp: Add new subdirectories. > * gcc.target/arm/mve/general-c/type_redef_1.c: New test. > * gcc.target/arm/mve/general/double_pragmas_1.c: New test. > * gcc.target/arm/mve/general/nomve_1.c: New test. > diff --git a/gcc/config/arm/arm-mve-builtins.def b/gcc/config/arm/arm-mve-builtins.def new file mode 100644 index 0000000000000000000000000000000000000000..02a46bec3e4cba6add9bce4021c732e15aa8b012 --- /dev/null +++ b/gcc/config/arm/arm-mve-builtins.def @@ -0,0 +1,41 @@ +#ifndef DEF_MVE_TYPE +#define DEF_MVE_TYPE(A, B) +#endif When would this file ever be included when this macro wasn't defined? Better to require the caller to define this by using #error if it's missing. then... + +#undef DEF_MVE_TYPE This isn't needed anymore, because caller should undef it after use. diff --git a/gcc/config/arm/arm-mve-builtins.cc b/gcc/config/arm/arm-mve-builtins.cc new file mode 100644 index 0000000000000000000000000000000000000000..99ddc8d49aad39e057c1c0d349c6c02c278553d6 --- /dev/null +++ b/gcc/config/arm/arm-mve-builtins.cc ... +} + +} + +using namespace arm_mve; Add a comment that this is the end of the earlier namespace declaration. diff --git a/gcc/config/arm/arm-mve-builtins.h b/gcc/config/arm/arm-mve-builtins.h new file mode 100644 index 0000000000000000000000000000000000000000..c165ce6997b4560fc87626be4bbaa0e8afcbbfed --- /dev/null +++ b/gcc/config/arm/arm-mve-builtins.h @@ -0,0 +1,41 @@ ... +} + Likewise. R.