From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2049.outbound.protection.outlook.com [40.107.21.49]) by sourceware.org (Postfix) with ESMTPS id 558623858D28 for ; Wed, 3 May 2023 15:01:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 558623858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qqY9CFVUeG0yKlkTfACq62yL4wlbZetdycQmwE+joVE=; b=CJ0UrGNR/l+FE+CBW5UsRn0tallNrhU9TorN709/KWNip0ejT4Mzj3kxbtltemagYqhOBHAx0PmIOWyhSwT8D8kwfOzzVm9IW7/FpJkVRKMonmuK1X6THliXNVrtFJWI2g5mujqRNCKWWeJG1uLcptwSMwPj2SvklktguXLX17o= Received: from DB6PR07CA0080.eurprd07.prod.outlook.com (2603:10a6:6:2b::18) by AM0PR08MB5377.eurprd08.prod.outlook.com (2603:10a6:208:181::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.21; Wed, 3 May 2023 15:01:17 +0000 Received: from DBAEUR03FT003.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:2b:cafe::e2) by DB6PR07CA0080.outlook.office365.com (2603:10a6:6:2b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.21 via Frontend Transport; Wed, 3 May 2023 15:01:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT003.mail.protection.outlook.com (100.127.142.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.22 via Frontend Transport; Wed, 3 May 2023 15:01:16 +0000 Received: ("Tessian outbound 945aec65ec65:v136"); Wed, 03 May 2023 15:01:16 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 7400ab949603cd1b X-CR-MTA-TID: 64aa7808 Received: from 75471906eb46.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B8198BC4-45FB-4FDB-8BA8-F0FF480CD588.1; Wed, 03 May 2023 15:01:05 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 75471906eb46.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 03 May 2023 15:01:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lA39CNdEnbjxzmOju9APSfJLFz2Mv6D1+OaWgROx5z/9QqYWadaNGwW4ihBcZ+mxzl9Oi/e9WCo1/Ydq1+iNXg4Y++Ny4yNTkeCf5pnNvjfzfM4Z+zqOQwiuY3FrRPVQ+OeMwgiTPQqgKgvf8ryGcy3/9w1vgQ3YYXtSXLw5Fu40bl4wbWbt2QXGkTz3GE17kt6ypZLH9RBPeadL6PnTuHO5M5kjF1W6wh7635iK722Ayl8SGeyHbcmjt0EPZJJcoto4cq3njmvfwUHbtlxoWAszlrP0mrrOlI+ykmcBUKNPry2ejdmzC3nzwJ4PtZdbCre3nsZg/5y+QeUMZMGN1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=qqY9CFVUeG0yKlkTfACq62yL4wlbZetdycQmwE+joVE=; b=dGh5Qca0+UcnyAamfC7G0jK3NUCLLDd7W6mD/9U+LfEUtBhBtiT2nvI2vmgkell0+AtR/VV5jqZhpVynjIrbKjww/PYE42ssrKO3Dcww7sApcG33r37rCIOWgaTg4yxeT3XRST47j3Z6taXWb8mLjc++G0syusJOhFtK+VoJIE8EdsPjI+3Kw5VdIk8zb1DN/aHviUyowdjvDGDU9N8VaOd2RmnC0O/IgnkEpaLGwu1vRx954qm878IXsQjeSB1YmKXJKoDZ3tzCtT/Q7kpLr5rnhg6H5HA59Gb3+8Zx86JIaBKtvhrngSJyZn4TGDY9t8rTxflvdrEEQdkpaEKW9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qqY9CFVUeG0yKlkTfACq62yL4wlbZetdycQmwE+joVE=; b=CJ0UrGNR/l+FE+CBW5UsRn0tallNrhU9TorN709/KWNip0ejT4Mzj3kxbtltemagYqhOBHAx0PmIOWyhSwT8D8kwfOzzVm9IW7/FpJkVRKMonmuK1X6THliXNVrtFJWI2g5mujqRNCKWWeJG1uLcptwSMwPj2SvklktguXLX17o= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB3390.eurprd08.prod.outlook.com (2603:10a6:803:7d::27) by AS2PR08MB10112.eurprd08.prod.outlook.com (2603:10a6:20b:64e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.21; Wed, 3 May 2023 15:01:03 +0000 Received: from VI1PR08MB3390.eurprd08.prod.outlook.com ([fe80::1a93:2d42:2bb5:eae9]) by VI1PR08MB3390.eurprd08.prod.outlook.com ([fe80::1a93:2d42:2bb5:eae9%2]) with mapi id 15.20.6340.031; Wed, 3 May 2023 15:01:03 +0000 Message-ID: <7894e075-2945-1343-2cd5-5856e2e3f95b@arm.com> Date: Wed, 3 May 2023 17:01:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 Subject: Re: [PATCH 00/22] arm: New framework for MVE intrinsics To: Kyrylo Tkachov , "gcc-patches@gcc.gnu.org" , Richard Earnshaw , Richard Sandiford References: <20230418134608.244751-1-christophe.lyon@arm.com> <3ae3da58-0cdd-3657-8a7f-00c08c3b1e54@arm.com> Content-Language: en-US From: Christophe Lyon In-Reply-To: <3ae3da58-0cdd-3657-8a7f-00c08c3b1e54@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO3P265CA0017.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:bb::22) To VI1PR08MB3390.eurprd08.prod.outlook.com (2603:10a6:803:7d::27) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: VI1PR08MB3390:EE_|AS2PR08MB10112:EE_|DBAEUR03FT003:EE_|AM0PR08MB5377:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e7c9b74-57b5-4e7c-ff4f-08db4be73efb 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: mP/esCqUo6WSeyUYMLrWCb+o+3FK7l8PpLYlpwKxD+eVBR9OtGAU0TdsXbxGg2ldO4u0l6bTe9QKpdtZUhsxOA15nOWdCJ3sNr1Uk1JDY7qKZJTsm4N/A8xpJY/7VWvN94pgtsOgRn/4zTERS+T9uL+l4LHwxLBTOcNJ6KeqNWdiMoxJlS5BCxSB7+SCISQ6F4asTHrJJzMlie22zJYDiHOpnPRlwSpiw5YIkHY4cgq45Ox99Pe0Btk9VL72KBrrriMs1u29ik9S644b/2eIeDcgZKHhDAx8Abcu56p3fHkuLMrLE/Touclsw/tiT77sB9RqhuNk4U8HDgjhiaHuVjc6A5by2z5pGT0Ai7LbsrorKefkVLBQGkyvgGCpHACY3le/rjT+99x4Wz0wrivHWF/dTj/oY8GeTkTOZHi4JAWbax8hNw7pIw6d9JL2gI8scfB0IE+nTE7N3a8GIitD7WT/mIN0/vqbaonz4OYOV7xv6vDfuwV/8rz/0xvOy8yTYAq6r3kJTeHOu8dB3S832ZMYdOVqdXbsM+52iBL5YdP298PwUW5d0Hw9i8l5LJ6Kkb+yMrZph11txpT59Y3JwI2tqmDZ+VZjpo0Xt+ksZnJz3DVRXmE4wuzse6mM4+vA X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB3390.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(376002)(366004)(136003)(346002)(396003)(451199021)(44832011)(38100700002)(2906002)(8936002)(66899021)(8676002)(5660300002)(31696002)(36756003)(86362001)(6486002)(478600001)(110136005)(186003)(6506007)(26005)(6512007)(53546011)(31686004)(2616005)(83380400001)(41300700001)(66556008)(66946007)(66476007)(6636002)(316002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB10112 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 72086d9b-6094-4693-3afd-08db4be73654 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UAyCiaDQOZYTC1oHixrCNBhbTRpvVN4unsHbxbJt6IWOTFO6ROqdYBr7ygpf9evz2c2OD4WVA04ADqVok8/PhYUctRiqmT0jr0f4DiQbMElkQfhI/JrCRbaXuSvGQoBTQm7UGwGoOSiW2CXjSXoVniKK6FNSUmT/5BPrIyLDmkhIcv81wxKF8tiYvHBz7gpV/PtGAK301IG5XAhRf80GufgRPP/+EmKMSh7a152qyg/6vObAPjhceWABBvPQFOSbzxIPrDHoqchqtzZg5PD7vDB72Vo5Ig3+XimnjCj+yzjwGa85UQ3VOUJvGvVZ4ooukYxm+9DV/PkVq2gAS/KTY8suv87EfUX9fIrZy8vCymlhnel70nFsuqjLDJXU4IYLGRQPVSlx8jGmhOC28b6Iysuiaf2tD5LQBqvwqWM1gkKGFt9iFF1E8NXF11E7vsAZu4XRyJ7y4xs5jSoOLsNh9i4WwQmWa7dXgTiJG7sESKQXVk+XoARgD5jP2sza6M+5gTtKW4ud5P2HjjDE7uvqysU87Hl+VIfi+lEtdyo/G+c5SBu7uoIS9qD0OsWMrTL+TMQOu0HHY1fuvd2C2i/yZmEOCdDjsY+kyn27zFhZln9q4CMdWc6gHUVtNnyV3LnsKeJHcAzcnJkUXT4Qkq/RGLWdp2II8me6+jWyRq997ag2FE8zEI39spf2eTrIynOaNH2O26JX6CxWSOYtXicuvSnkIKKS7F4xT9MgUpBEnbAEZqGUKl3wHTxap8iWfJqM X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230028)(4636009)(396003)(136003)(346002)(376002)(39860400002)(451199021)(46966006)(40470700004)(36840700001)(478600001)(110136005)(53546011)(31686004)(2616005)(186003)(6506007)(6512007)(26005)(336012)(36860700001)(47076005)(6486002)(6636002)(41300700001)(70206006)(70586007)(34020700004)(316002)(83380400001)(66899021)(8676002)(5660300002)(81166007)(44832011)(356005)(82740400003)(2906002)(40460700003)(8936002)(40480700001)(31696002)(36756003)(82310400005)(86362001)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2023 15:01:16.9288 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1e7c9b74-57b5-4e7c-ff4f-08db4be73efb X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DBAEUR03FT003.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5377 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 5/2/23 17:04, Christophe Lyon via Gcc-patches wrote: > > > On 5/2/23 11:18, Kyrylo Tkachov wrote: >> Hi Christophe, >> >>> -----Original Message----- >>> From: Christophe Lyon >>> Sent: Tuesday, April 18, 2023 2:46 PM >>> To: gcc-patches@gcc.gnu.org; Kyrylo Tkachov ; >>> Richard Earnshaw ; Richard Sandiford >>> >>> Cc: Christophe Lyon >>> Subject: [PATCH 00/22] arm: New framework for MVE intrinsics >>> >>> Hi, >>> >>> This is the beginning of a long patch series to change the way Arm MVE >>> intrinsics are implemented. The goal is to get rid of arm_mve.h, which >>> takes a long time to parse and compile. >>> >> >> Thanks for doing this. It is a significant improvement to the MVE >> intrinsics and should address some of the biggest maintainability and >> scalability issues we have in that area. >> I'll be going through the patches one-by-one (I've looked at these >> offline already before), but the approach looks good to me at a high >> level. >> >> My hope is that we'll move all the intrinsics, including the Neon ones >> to use this framework in the future, but getting the framework in >> place first is a good major first step in that direction. >> > > Indeed. Ideally we'd probably want to make this framework more generic > so that it supports aarch64 SVE, arm MVE and Neon, but that can be done > later. I tried to highlight the differences I noticed compared to SVE, > so that it helps us think what needs to be specialized for different > targets, as opposed to what is already generic enough. > > Thanks, > > Christophe > Thank you Kyrill for the quick review. I've pushed the series with the minor changes you requested. I am going to prepare the next batch :-) Thanks, Christophe >> Thanks, >> Kyrill >> >>> Roughly speaking, it's about using a framework very similar to what is >>> implemented for AArch64/SVE intrinsics. I haven't converted all the >>> intrinsics yet, but I think it would be good to start the conversion >>> when stage-1 reopens. >>> >>> * Factorizing names >>> One of the main implementation differences I noticed between SVE and >>> MVE is that mve.md provides only full builtin names at the moment, and >>> makes almost no use of "parameterized names" >>> (https://gcc.gnu.org/onlinedocs/gccint/Parameterized- >>> Names.html#Parameterized-Names). >>> >>> Without this, we'd need the builtin expander to use a large >>> switch/case of the form: >>> >>> switch (code) >>> case VADDQ_S: insn_code = code_for_mve_vaddq_s (...) >>> case VADDQ_U: insn_code = code_for_mve_vaddq_u (...) >>> case VSUBQ_S: insn_code = code_for_mve_vsubq_s (...) >>> case VSUBQ_U: insn_code = code_for_mve_vsubq_u (...) >>> .... >>> >>> so part of the work (which I called "factorize" in the commit >>> messages) is about replacing >>> >>> (define_insn "mve_vaddq_n_" >>> with >>> (define_insn "@mve_q_n_" >>> with the help of a new iterator (mve_insn). >>> >>> Doing so makes it more obvious that some patterns are identical, >>> except for the instruction name. I took this opportunity to merge >>> them, so for instance I have a patch which merges add, sub and mul >>> patterns.  Although not strictly necessary for the MVE intrinsics >>> restructuring work, this is a good opportunity to reduce such code >>> duplication (I did notice a few bugs during that process, which led me >>> to post a few small patches in the past months).  Note that identical >>> patterns will probably remain after the series, they can be merged >>> later if we want. >>> >>> This factorization also implies the introduction of new iterators, but >>> also means that several existing ones become useless. These patches do >>> not remove them because it's a bit painful to reorder patches which >>> remove lines at some "random" places, leading to merge conflicts. It's >>> much simpler to write a big cleanup patch at the end of the serie to >>> remove all such useless iterators at once. >>> >>> * Intrinsic re-implementation >>> After intrinsic names have been factorized, the actual >>> re-implementation patch is small: >>> - add 1 line in each of arm-mve-builtins-base.{cc,def,h} describing >>>    the intrinsic shape/signature, types and predicates involved, >>>    RTX/unspec codes >>> - remove the intrinsic definitions from arm_mve.h >>> >>> The full series of ~140 patches is organized like this: >>> - patches 1 and 2 introduce the new framework >>> - new implementation of vreinterpretq >>> - new implementation of vuninitialized >>> - patch groups of varying size, consisting in: >>>    - add a new "shape" if needed (e.g. unary, binary, ternary, ....) >>>    - add framework support functions if needed >>>    - factorize a set of intrinsics (at minimum, just make use of >>>      parameterized-names) >>>    - actual re-implementation of the intrinsics >>> >>> I kept patches small so the incremental progress is easy to follow and >>> check.  I'll submit the patches in small groups, this first one will >>> make sure we agree on the implementation. >>> >>> Tested on arm-eabi with -mthumb/-mfloat-abi=hard/-march=armv8.1- >>> m.main+mve. >>> >>> To help reviewers, I suggest to compare arm-mve-builtins.cc with >>> aarch64-sve-builtins.cc. >>> >>> Christophe Lyon (22): >>>    arm: move builtin function codes into general numberspace >>>    arm: [MVE intrinsics] Add new framework >>>    arm: [MVE intrinsics] Rework vreinterpretq >>>    arm: [MVE intrinsics] Rework vuninitialized >>>    arm: [MVE intrinsics] add binary_opt_n shape >>>    arm: [MVE intrinsics] add unspec_based_mve_function_exact_insn >>>    arm: [MVE intrinsics] factorize vadd vsubq vmulq >>>    arm: [MVE intrinsics] rework vaddq vmulq vsubq >>>    arm: [MVE intrinsics] add binary shape >>>    arm: [MVE intrinsics] factorize vandq veorq vorrq vbicq >>>    arm: [MVE intrinsics] rework vandq veorq >>>    arm: [MVE intrinsics] add binary_orrq shape >>>    arm: [MVE intrinsics] rework vorrq >>>    arm: [MVE intrinsics] add unspec_mve_function_exact_insn >>>    arm: [MVE intrinsics] add create shape >>>    arm: [MVE intrinsics] factorize vcreateq >>>    arm: [MVE intrinsics] rework vcreateq >>>    arm: [MVE intrinsics] factorize several binary_m operations >>>    arm: [MVE intrinsics] factorize several binary _n operations >>>    arm: [MVE intrinsics] factorize several binary _m_n operations >>>    arm: [MVE intrinsics] factorize several binary operations >>>    arm: [MVE intrinsics] rework vhaddq vhsubq vmulhq vqaddq vqsubq >>>      vqdmulhq vrhaddq vrmulhq >>> >>>   gcc/config.gcc                                |    2 +- >>>   gcc/config/arm/arm-builtins.cc                |  237 +- >>>   gcc/config/arm/arm-builtins.h                 |    1 + >>>   gcc/config/arm/arm-c.cc                       |   42 +- >>>   gcc/config/arm/arm-mve-builtins-base.cc       |  163 + >>>   gcc/config/arm/arm-mve-builtins-base.def      |   50 + >>>   gcc/config/arm/arm-mve-builtins-base.h        |   47 + >>>   gcc/config/arm/arm-mve-builtins-functions.h   |  387 + >>>   gcc/config/arm/arm-mve-builtins-shapes.cc     |  529 ++ >>>   gcc/config/arm/arm-mve-builtins-shapes.h      |   47 + >>>   gcc/config/arm/arm-mve-builtins.cc            | 2013 ++++- >>>   gcc/config/arm/arm-mve-builtins.def           |   40 +- >>>   gcc/config/arm/arm-mve-builtins.h             |  672 +- >>>   gcc/config/arm/arm-protos.h                   |   24 + >>>   gcc/config/arm/arm.cc                         |   27 + >>>   gcc/config/arm/arm_mve.h                      | 7581 +---------------- >>>   gcc/config/arm/arm_mve_builtins.def           |    6 - >>>   gcc/config/arm/arm_mve_types.h                | 1430 ---- >>>   gcc/config/arm/iterators.md                   |  240 +- >>>   gcc/config/arm/mve.md                         | 1747 +--- >>>   gcc/config/arm/predicates.md                  |    4 + >>>   gcc/config/arm/t-arm                          |   32 +- >>>   gcc/config/arm/unspecs.md                     |    1 + >>>   gcc/config/arm/vec-common.md                  |    8 +- >>>   gcc/testsuite/g++.target/arm/mve.exp          |    8 +- >>>   .../arm/mve/general-c++/nomve_fp_1.c          |   15 + >>>   .../arm/mve/general-c++/vreinterpretq_1.C     |   25 + >>>   .../gcc.target/arm/mve/general-c/nomve_fp_1.c |   15 + >>>   .../arm/mve/general-c/vreinterpretq_1.c       |   25 + >>>   29 files changed, 4926 insertions(+), 10492 deletions(-) >>>   create mode 100644 gcc/config/arm/arm-mve-builtins-base.cc >>>   create mode 100644 gcc/config/arm/arm-mve-builtins-base.def >>>   create mode 100644 gcc/config/arm/arm-mve-builtins-base.h >>>   create mode 100644 gcc/config/arm/arm-mve-builtins-functions.h >>>   create mode 100644 gcc/config/arm/arm-mve-builtins-shapes.cc >>>   create mode 100644 gcc/config/arm/arm-mve-builtins-shapes.h >>>   create mode 100644 gcc/testsuite/g++.target/arm/mve/general- >>> c++/nomve_fp_1.c >>>   create mode 100644 gcc/testsuite/g++.target/arm/mve/general- >>> c++/vreinterpretq_1.C >>>   create mode 100644 gcc/testsuite/gcc.target/arm/mve/general- >>> c/nomve_fp_1.c >>>   create mode 100644 gcc/testsuite/gcc.target/arm/mve/general- >>> c/vreinterpretq_1.c >>> >>> -- >>> 2.34.1 >>