From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 38422 invoked by alias); 14 Nov 2019 19:13:54 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 37620 invoked by uid 89); 14 Nov 2019 19:13:44 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-9.0 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: EUR04-VI1-obe.outbound.protection.outlook.com Received: from mail-eopbgr80049.outbound.protection.outlook.com (HELO EUR04-VI1-obe.outbound.protection.outlook.com) (40.107.8.49) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 14 Nov 2019 19:13:27 +0000 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=weoSDpKVsjtZ6YdYFIJTcYZCorpz/S9+2yhdUtiU9nE=; b=o2EExIaV0roMMDDOY3EQbqNTYgdFX/C8AES9QxUy6Ym/YIk6oUYzRL19uhBolC4ONIDSoJwXF5j+mSn3tCv5M3arpsYVhMeUxnBopVv4++C1t+cqJYP4Y0F/tLq9aPBlFF0Jecv+5hdjSy2aJM0mkwWrcie9xucTYVJsbW45Wb0= Received: from AM6PR08CA0002.eurprd08.prod.outlook.com (2603:10a6:20b:b2::14) by AM6PR08MB4440.eurprd08.prod.outlook.com (2603:10a6:20b:bc::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Thu, 14 Nov 2019 19:13:23 +0000 Received: from AM5EUR03FT016.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::208) by AM6PR08CA0002.outlook.office365.com (2603:10a6:20b:b2::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23 via Frontend Transport; Thu, 14 Nov 2019 19:13:23 +0000 Authentication-Results: spf=fail (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received-SPF: Fail (protection.outlook.com: domain of arm.com does not designate 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT016.mail.protection.outlook.com (10.152.16.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23 via Frontend Transport; Thu, 14 Nov 2019 19:13:23 +0000 Received: ("Tessian outbound 081de437afc7:v33"); Thu, 14 Nov 2019 19:13:23 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 582956cd498cf2c4 X-CR-MTA-TID: 64aa7808 Received: from 895cc74db187.1 (cr-mta-lb-1.cr-mta-net [104.47.8.55]) by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4A198B39-F49D-4EBF-B170-D313E540B9F5.1; Thu, 14 Nov 2019 19:13:17 +0000 Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-am5eur03lp2055.outbound.protection.outlook.com [104.47.8.55]) by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 895cc74db187.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 14 Nov 2019 19:13:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aJcyiBt6FTkWk2gXTBfkPmnBTGpu6qAv1hY3qk4BDJJxQ34CYvO98S1Wgy4LcNu1Y747w8k6sXw0vg/kQmSObBJs7x+Z3EEgdaZYDDDos0EdkiDnNBqnFX/SrGfEUb6LfO4KAxY5Vx0MWPBSWG+YdoRo1fkyKnTOOFSo9nZ7XlRDHiJyqEDV0yU0YmuAomJ18ZBW6FEy2SX1izRBU0HmpKRz07FVNLyQRfWz8zdzbSZbF0rMMiI20Eov7fwkxbPn9Zu9h2DXAgYg9f9E8kOZxe+2dnwIF983FUpqtq9M/C1PmgIbdCwXr9kDy4PiqLyzES0hXiKP1HGWmzEhFeP7Qw== 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-SenderADCheck; bh=weoSDpKVsjtZ6YdYFIJTcYZCorpz/S9+2yhdUtiU9nE=; b=YdFrr9JENQZoEYrAnQ0CLlBtqn0jcMUlp7jXeNfaO9R9WJzR620bUun5c774XMD9Fv6ItIM15fe56iWHXcYgykwmpcfTDbmsuDhdTsN4QpsBy24EjBf18y0WVLZs5/pyW0eJFHuF7MpPvRJ28CPAhxQgHxMgtsBZGnNB7NQHWRsc2Go0+G+SsNDrFJ8CFOKcJgYjnOB9axEH/9jkSIe7xjJRLjfj8HqdFJG2qhfSVi9+NTbJOv1jeRdf09or56Svm/f5IR+xbxceOaQNfPGRylZHAUEBOYKWUFgDdeyhgUQJYTxZ6Srw4eGgBckWER+rV2jAZys/mlrpJ9cNIAkcig== 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=weoSDpKVsjtZ6YdYFIJTcYZCorpz/S9+2yhdUtiU9nE=; b=o2EExIaV0roMMDDOY3EQbqNTYgdFX/C8AES9QxUy6Ym/YIk6oUYzRL19uhBolC4ONIDSoJwXF5j+mSn3tCv5M3arpsYVhMeUxnBopVv4++C1t+cqJYP4Y0F/tLq9aPBlFF0Jecv+5hdjSy2aJM0mkwWrcie9xucTYVJsbW45Wb0= Received: from DBBPR08MB4775.eurprd08.prod.outlook.com (20.179.46.211) by DBBPR08MB4807.eurprd08.prod.outlook.com (20.179.46.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2430.23; Thu, 14 Nov 2019 19:13:16 +0000 Received: from DBBPR08MB4775.eurprd08.prod.outlook.com ([fe80::1c7c:c72d:2183:12d1]) by DBBPR08MB4775.eurprd08.prod.outlook.com ([fe80::1c7c:c72d:2183:12d1%7]) with mapi id 15.20.2430.028; Thu, 14 Nov 2019 19:13:16 +0000 From: Srinath Parvathaneni To: "gcc-patches@gcc.gnu.org" CC: Richard Earnshaw , Kyrylo Tkachov Subject: [PATCH][ARM][GCC][3/4x]: MVE intrinsics with quaternary operands. Date: Thu, 14 Nov 2019 19:13:00 -0000 Message-ID: References: <157375666998.31400.16652205595246718910.scripted-patch-series@arm.com> In-Reply-To: <157375666998.31400.16652205595246718910.scripted-patch-series@arm.com> Authentication-Results-Original: spf=none (sender IP is ) smtp.mailfrom=Srinath.Parvathaneni@arm.com; X-MS-Exchange-PUrlCount: 1 x-ms-exchange-transport-forked: True x-checkrecipientrouted: true x-ms-oob-tlc-oobclassifiers: OLM:628;OLM:792; X-Forefront-Antispam-Report-Untrusted: SFV:NSPM;SFS:(10009020)(1496009)(4636009)(39860400002)(396003)(366004)(376002)(346002)(136003)(54534003)(199004)(189003)(81156014)(316002)(81166006)(30864003)(2501003)(44832011)(4326008)(74316002)(7696005)(99286004)(478600001)(186003)(11346002)(26005)(54906003)(76176011)(52536014)(5660300002)(446003)(25786009)(71190400001)(71200400001)(33656002)(66946007)(52116002)(305945005)(66556008)(7736002)(66446008)(66476007)(66616009)(64756008)(256004)(9686003)(966005)(5640700003)(3846002)(66066001)(4001150100001)(6916009)(86362001)(486006)(6506007)(6436002)(14454004)(8936002)(2906002)(6116002)(2351001)(55016002)(8676002)(102836004)(386003)(476003)(6306002);DIR:OUT;SFP:1101;SCL:1;SRVR:DBBPR08MB4807;H:DBBPR08MB4775.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: xdPnUxmBH+id3abJxOAKCORQFnh0b1QXOYEah67mMnn1xHEAKInG1cYcTVqBxZl3ipR/BFsbWbCw8FJlWZD8mCP/MmeZ9D3a9YTkugpoONkZZFFB29Xt8v9E3K9NxYN09VExPFPpOZXzQkYXN1iCv/ojsNsRW0rLpV/h7KTs5pF33h8gJdHjh0Sf/cjwrF9jq50TwkfI3+Ln2vVrk1Xcgqc5OqsnVLzN5LFV6F36o4AuC7vLdK0vC8b3P8YWYFgFXkCy/ApTEvsPt7krM/nKN5TwmHO3YoW1hfZLssfbhVRmLdFFD6M980yVfk0AhcK0J29PVa0dbXwOCAsm3xF+0+/DiIzp8ANuMbHf3UmdSsusBcETiFLTKKOJgL59vG0WndcBBD6osLCEtq7kaVtNHU4H/NrtAcJnTqA7h11KY0/jfwu7q5d5ZQSKtY4kUTQHoDp4y07+S2IOBd4JnoH/oQ68mGdPfMmXMyWvIc0vkLc= Content-Type: multipart/mixed; boundary="_002_DBBPR08MB4775088E0BFBCE18939781389B710DBBPR08MB4775eurp_" MIME-Version: 1.0 Original-Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Srinath.Parvathaneni@arm.com; Return-Path: Srinath.Parvathaneni@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM5EUR03FT016.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: d9588bc5-054d-4b0c-5c58-08d76936b38e X-IsSubscribed: yes X-SW-Source: 2019-11/txt/msg01256.txt.bz2 --_002_DBBPR08MB4775088E0BFBCE18939781389B710DBBPR08MB4775eurp_ Content-Type: text/plain; charset="us-ascii" Content-ID: Content-Transfer-Encoding: quoted-printable Content-length: 14963 Hello, This patch supports following MVE ACLE intrinsics with quaternary operands. vmlaldavaq_p_s16, vmlaldavaq_p_s32, vmlaldavaq_p_u16, vmlaldavaq_p_u32, vml= aldavaxq_p_s16, vmlaldavaxq_p_s32, vmlaldavaxq_p_u16, vmlaldavaxq_p_u32, vmlsldavaq_p_s16, = vmlsldavaq_p_s32, vmlsldavaxq_p_s16, vmlsldavaxq_p_s32, vmullbq_poly_m_p16, vmullbq_poly_m_p8, vmulltq_poly_m_p16, vmulltq_poly_m_p8, vqdmullbq_m_n_s16, vqdmullbq_m_n_s32= , vqdmullbq_m_s16, vqdmullbq_m_s32, vqdmulltq_m_n_s16, vqdmulltq_m_n_s32, vqdmulltq_m_s16, vqd= mulltq_m_s32, vqrshrnbq_m_n_s16, vqrshrnbq_m_n_s32, vqrshrnbq_m_n_u16, vqrshrnbq_m_n_u32,= vqrshrntq_m_n_s16, vqrshrntq_m_n_s32, vqrshrntq_m_n_u16, vqrshrntq_m_n_u32, vqrshrunbq_m_n_s16= , vqrshrunbq_m_n_s32, vqrshruntq_m_n_s16, vqrshruntq_m_n_s32, vqshrnbq_m_n_s16, vqshrnbq_m_n_s32,= vqshrnbq_m_n_u16, vqshrnbq_m_n_u32, vqshrntq_m_n_s16, vqshrntq_m_n_s32, vqshrntq_m_n_u16, vqs= hrntq_m_n_u32, vqshrunbq_m_n_s16, vqshrunbq_m_n_s32, vqshruntq_m_n_s16, vqshruntq_m_n_s32,= vrmlaldavhaq_p_s32, vrmlaldavhaq_p_u32, vrmlaldavhaxq_p_s32, vrmlsldavhaq_p_s32, vrmlsldavhaxq_= p_s32, vrshrnbq_m_n_s16, vrshrnbq_m_n_s32, vrshrnbq_m_n_u16, vrshrnbq_m_n_u32, vrs= hrntq_m_n_s16, vrshrntq_m_n_s32, vrshrntq_m_n_u16, vrshrntq_m_n_u32, vshllbq_m_n_s16, vshl= lbq_m_n_s8, vshllbq_m_n_u16, vshllbq_m_n_u8, vshlltq_m_n_s16, vshlltq_m_n_s8, vshlltq_m= _n_u16, vshlltq_m_n_u8, vshrnbq_m_n_s16, vshrnbq_m_n_s32, vshrnbq_m_n_u16, vshrnbq_m_n_u32, vshrntq= _m_n_s16, vshrntq_m_n_s32, vshrntq_m_n_u16, vshrntq_m_n_u32. Please refer to M-profile Vector Extension (MVE) intrinsics [1] for more d= etails. [1] https://developer.arm.com/architectures/instruction-sets/simd-isas/heli= um/mve-intrinsics Regression tested on arm-none-eabi and found no regressions. Ok for trunk? Thanks, Srinath. gcc/ChangeLog: 2019-10-31 Andre Vieira Mihail Ionescu Srinath Parvathaneni * config/arm/arm-protos.h (arm_mve_immediate_check):=20 * config/arm/arm.c (arm_mve_immediate_check): Define fuction to check mode and interger value. * config/arm/arm_mve.h (vmlaldavaq_p_s32): Define macro. (vmlaldavaq_p_s16): Likewise. (vmlaldavaq_p_u32): Likewise. (vmlaldavaq_p_u16): Likewise. (vmlaldavaxq_p_s32): Likewise. (vmlaldavaxq_p_s16): Likewise. (vmlaldavaxq_p_u32): Likewise. (vmlaldavaxq_p_u16): Likewise. (vmlsldavaq_p_s32): Likewise. (vmlsldavaq_p_s16): Likewise. (vmlsldavaxq_p_s32): Likewise. (vmlsldavaxq_p_s16): Likewise. (vmullbq_poly_m_p8): Likewise. (vmullbq_poly_m_p16): Likewise. (vmulltq_poly_m_p8): Likewise. (vmulltq_poly_m_p16): Likewise. (vqdmullbq_m_n_s32): Likewise. (vqdmullbq_m_n_s16): Likewise. (vqdmullbq_m_s32): Likewise. (vqdmullbq_m_s16): Likewise. (vqdmulltq_m_n_s32): Likewise. (vqdmulltq_m_n_s16): Likewise. (vqdmulltq_m_s32): Likewise. (vqdmulltq_m_s16): Likewise. (vqrshrnbq_m_n_s32): Likewise. (vqrshrnbq_m_n_s16): Likewise. (vqrshrnbq_m_n_u32): Likewise. (vqrshrnbq_m_n_u16): Likewise. (vqrshrntq_m_n_s32): Likewise. (vqrshrntq_m_n_s16): Likewise. (vqrshrntq_m_n_u32): Likewise. (vqrshrntq_m_n_u16): Likewise. (vqrshrunbq_m_n_s32): Likewise. (vqrshrunbq_m_n_s16): Likewise. (vqrshruntq_m_n_s32): Likewise. (vqrshruntq_m_n_s16): Likewise. (vqshrnbq_m_n_s32): Likewise. (vqshrnbq_m_n_s16): Likewise. (vqshrnbq_m_n_u32): Likewise. (vqshrnbq_m_n_u16): Likewise. (vqshrntq_m_n_s32): Likewise. (vqshrntq_m_n_s16): Likewise. (vqshrntq_m_n_u32): Likewise. (vqshrntq_m_n_u16): Likewise. (vqshrunbq_m_n_s32): Likewise. (vqshrunbq_m_n_s16): Likewise. (vqshruntq_m_n_s32): Likewise. (vqshruntq_m_n_s16): Likewise. (vrmlaldavhaq_p_s32): Likewise. (vrmlaldavhaq_p_u32): Likewise. (vrmlaldavhaxq_p_s32): Likewise. (vrmlsldavhaq_p_s32): Likewise. (vrmlsldavhaxq_p_s32): Likewise. (vrshrnbq_m_n_s32): Likewise. (vrshrnbq_m_n_s16): Likewise. (vrshrnbq_m_n_u32): Likewise. (vrshrnbq_m_n_u16): Likewise. (vrshrntq_m_n_s32): Likewise. (vrshrntq_m_n_s16): Likewise. (vrshrntq_m_n_u32): Likewise. (vrshrntq_m_n_u16): Likewise. (vshllbq_m_n_s8): Likewise. (vshllbq_m_n_s16): Likewise. (vshllbq_m_n_u8): Likewise. (vshllbq_m_n_u16): Likewise. (vshlltq_m_n_s8): Likewise. (vshlltq_m_n_s16): Likewise. (vshlltq_m_n_u8): Likewise. (vshlltq_m_n_u16): Likewise. (vshrnbq_m_n_s32): Likewise. (vshrnbq_m_n_s16): Likewise. (vshrnbq_m_n_u32): Likewise. (vshrnbq_m_n_u16): Likewise. (vshrntq_m_n_s32): Likewise. (vshrntq_m_n_s16): Likewise. (vshrntq_m_n_u32): Likewise. (vshrntq_m_n_u16): Likewise. (__arm_vmlaldavaq_p_s32): Define intrinsic. (__arm_vmlaldavaq_p_s16): Likewise. (__arm_vmlaldavaq_p_u32): Likewise. (__arm_vmlaldavaq_p_u16): Likewise. (__arm_vmlaldavaxq_p_s32): Likewise. (__arm_vmlaldavaxq_p_s16): Likewise. (__arm_vmlaldavaxq_p_u32): Likewise. (__arm_vmlaldavaxq_p_u16): Likewise. (__arm_vmlsldavaq_p_s32): Likewise. (__arm_vmlsldavaq_p_s16): Likewise. (__arm_vmlsldavaxq_p_s32): Likewise. (__arm_vmlsldavaxq_p_s16): Likewise. (__arm_vmullbq_poly_m_p8): Likewise. (__arm_vmullbq_poly_m_p16): Likewise. (__arm_vmulltq_poly_m_p8): Likewise. (__arm_vmulltq_poly_m_p16): Likewise. (__arm_vqdmullbq_m_n_s32): Likewise. (__arm_vqdmullbq_m_n_s16): Likewise. (__arm_vqdmullbq_m_s32): Likewise. (__arm_vqdmullbq_m_s16): Likewise. (__arm_vqdmulltq_m_n_s32): Likewise. (__arm_vqdmulltq_m_n_s16): Likewise. (__arm_vqdmulltq_m_s32): Likewise. (__arm_vqdmulltq_m_s16): Likewise. (__arm_vqrshrnbq_m_n_s32): Likewise. (__arm_vqrshrnbq_m_n_s16): Likewise. (__arm_vqrshrnbq_m_n_u32): Likewise. (__arm_vqrshrnbq_m_n_u16): Likewise. (__arm_vqrshrntq_m_n_s32): Likewise. (__arm_vqrshrntq_m_n_s16): Likewise. (__arm_vqrshrntq_m_n_u32): Likewise. (__arm_vqrshrntq_m_n_u16): Likewise. (__arm_vqrshrunbq_m_n_s32): Likewise. (__arm_vqrshrunbq_m_n_s16): Likewise. (__arm_vqrshruntq_m_n_s32): Likewise. (__arm_vqrshruntq_m_n_s16): Likewise. (__arm_vqshrnbq_m_n_s32): Likewise. (__arm_vqshrnbq_m_n_s16): Likewise. (__arm_vqshrnbq_m_n_u32): Likewise. (__arm_vqshrnbq_m_n_u16): Likewise. (__arm_vqshrntq_m_n_s32): Likewise. (__arm_vqshrntq_m_n_s16): Likewise. (__arm_vqshrntq_m_n_u32): Likewise. (__arm_vqshrntq_m_n_u16): Likewise. (__arm_vqshrunbq_m_n_s32): Likewise. (__arm_vqshrunbq_m_n_s16): Likewise. (__arm_vqshruntq_m_n_s32): Likewise. (__arm_vqshruntq_m_n_s16): Likewise. (__arm_vrmlaldavhaq_p_s32): Likewise. (__arm_vrmlaldavhaq_p_u32): Likewise. (__arm_vrmlaldavhaxq_p_s32): Likewise. (__arm_vrmlsldavhaq_p_s32): Likewise. (__arm_vrmlsldavhaxq_p_s32): Likewise. (__arm_vrshrnbq_m_n_s32): Likewise. (__arm_vrshrnbq_m_n_s16): Likewise. (__arm_vrshrnbq_m_n_u32): Likewise. (__arm_vrshrnbq_m_n_u16): Likewise. (__arm_vrshrntq_m_n_s32): Likewise. (__arm_vrshrntq_m_n_s16): Likewise. (__arm_vrshrntq_m_n_u32): Likewise. (__arm_vrshrntq_m_n_u16): Likewise. (__arm_vshllbq_m_n_s8): Likewise. (__arm_vshllbq_m_n_s16): Likewise. (__arm_vshllbq_m_n_u8): Likewise. (__arm_vshllbq_m_n_u16): Likewise. (__arm_vshlltq_m_n_s8): Likewise. (__arm_vshlltq_m_n_s16): Likewise. (__arm_vshlltq_m_n_u8): Likewise. (__arm_vshlltq_m_n_u16): Likewise. (__arm_vshrnbq_m_n_s32): Likewise. (__arm_vshrnbq_m_n_s16): Likewise. (__arm_vshrnbq_m_n_u32): Likewise. (__arm_vshrnbq_m_n_u16): Likewise. (__arm_vshrntq_m_n_s32): Likewise. (__arm_vshrntq_m_n_s16): Likewise. (__arm_vshrntq_m_n_u32): Likewise. (__arm_vshrntq_m_n_u16): Likewise. (vmullbq_poly_m): Define polymorphic variant. (vmulltq_poly_m): Likewise. (vshllbq_m): Likewise. (vshrntq_m_n): Likewise. (vshrnbq_m_n): Likewise. (vshlltq_m_n): Likewise. (vshllbq_m_n): Likewise. (vrshrntq_m_n): Likewise. (vrshrnbq_m_n): Likewise. (vqshruntq_m_n): Likewise. (vqshrunbq_m_n): Likewise. (vqdmullbq_m_n): Likewise. (vqdmullbq_m): Likewise. (vqdmulltq_m_n): Likewise. (vqdmulltq_m): Likewise. (vqrshrnbq_m_n): Likewise. (vqrshrntq_m_n): Likewise. (vqrshrunbq_m_n): Likewise. (vqrshruntq_m_n): Likewise. (vqshrnbq_m_n): Likewise. (vqshrntq_m_n): Likewise. * config/arm/arm_mve_builtins.def (QUADOP_NONE_NONE_NONE_IMM_UNONE): Use builtin qualifiers. (QUADOP_NONE_NONE_NONE_NONE_UNONE): Likewise. (QUADOP_UNONE_UNONE_NONE_IMM_UNONE): Likewise. (QUADOP_UNONE_UNONE_UNONE_IMM_UNONE): Likewise. (QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE): Likewise. * config/arm/mve.md (VMLALDAVAQ_P): Define iterator. (VMLALDAVAXQ_P): Likewise. (VQRSHRNBQ_M_N): Likewise. (VQRSHRNTQ_M_N): Likewise. (VQSHRNBQ_M_N): Likewise. (VQSHRNTQ_M_N): Likewise. (VRSHRNBQ_M_N): Likewise. (VRSHRNTQ_M_N): Likewise. (VSHLLBQ_M_N): Likewise. (VSHLLTQ_M_N): Likewise. (VSHRNBQ_M_N): Likewise. (VSHRNTQ_M_N): Likewise. (mve_vmlaldavaq_p_): Define RTL pattern. (mve_vmlaldavaxq_p_): Likewise. (mve_vqrshrnbq_m_n_): Likewise. (mve_vqrshrntq_m_n_): Likewise. (mve_vqshrnbq_m_n_): Likewise. (mve_vqshrntq_m_n_): Likewise. (mve_vrmlaldavhaq_p_sv4si): Likewise. (mve_vrshrnbq_m_n_): Likewise. (mve_vrshrntq_m_n_): Likewise. (mve_vshllbq_m_n_): Likewise. (mve_vshlltq_m_n_): Likewise. (mve_vshrnbq_m_n_): Likewise. (mve_vshrntq_m_n_): Likewise. (mve_vmlsldavaq_p_s): Likewise. (mve_vmlsldavaxq_p_s): Likewise. (mve_vmullbq_poly_m_p): Likewise. (mve_vmulltq_poly_m_p): Likewise. (mve_vqdmullbq_m_n_s): Likewise. (mve_vqdmullbq_m_s): Likewise. (mve_vqdmulltq_m_n_s): Likewise. (mve_vqdmulltq_m_s): Likewise. (mve_vqrshrunbq_m_n_s): Likewise. (mve_vqrshruntq_m_n_s): Likewise. (mve_vqshrunbq_m_n_s): Likewise. (mve_vqshruntq_m_n_s): Likewise. (mve_vrmlaldavhaq_p_uv4si): Likewise. (mve_vrmlaldavhaxq_p_sv4si): Likewise. (mve_vrmlsldavhaq_p_sv4si): Likewise. (mve_vrmlsldavhaxq_p_sv4si): Likewise. gcc/testsuite/ChangeLog: 2019-10-31 Andre Vieira Mihail Ionescu Srinath Parvathaneni * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaq_p_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlsldavaq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmlsldavaxq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c: Likewise. * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c: Likewise. * gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrnbq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrntq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshrunbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqrshruntq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrnbq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrntq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshrunbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrmlsldavhaq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrmlsldavhaxq_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vrshrntq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshllbq_m_n_s8.c: Likewise. * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshllbq_m_n_u8.c: Likewise. * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshlltq_m_n_s8.c: Likewise. * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshlltq_m_n_u8.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrnbq_m_n_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrntq_m_n_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u16.c: Likewise. * gcc.target/arm/mve/intrinsics/vshrntq_m_n_u32.c: Likewise.= --_002_DBBPR08MB4775088E0BFBCE18939781389B710DBBPR08MB4775eurp_ Content-Type: application/gzip; name="diff18.patch.gz" Content-Description: diff18.patch.gz Content-Disposition: attachment; filename="diff18.patch.gz"; size=10979; creation-date="Thu, 14 Nov 2019 19:13:15 GMT"; modification-date="Thu, 14 Nov 2019 19:13:15 GMT" Content-ID: Content-Transfer-Encoding: base64 Content-length: 14884 H4sIAP6ezV0C/+19aXMbN9bu59Gv6OvUzJWjxdiBzlavJ8lMUpXNtuzKrUyK hTVijUTJbLTDmbz57xfNRWRzbza6aVp0IonNxnrwnA04AEzXueTi4reuT+Sz 37R+pu96rvvbM9m/LX4u7vt3/i67vE7Uurcn3Z6xg8QQBpG0hFLMUp6KlEFo OEeOKwUAgxIQlQrFLi+hdKlgIQFVDgoENcZCAi0Jt9ZhYpygDFKLExjyEXJy cXGxvn0nZ2dnG9r4P/+TXFDOzklyVvyhSfji3V3XJCFV5172M9u5u/fdu17H Wenzvs2S00x1/a28P09CoZlP9H3ekX19PU6YfHx+kpxMC+n2ur4rb7r/tZ1u Jhdy215+m4QXk/KTj59+GvKfqbu7m2H+23ch4+2tNV3pbUdfW/3v074fnCe3 Ul93e7Zze2fseVKkL3J+ZHum65JnHyf/J/nnl192nr/8vvPTyx+vfnzV+Sb5 +NmJWT+2l3opwS71eDQxFQoxHMaLSgQAN1BzKwBDghDFOBOIptwRennJuDbM hHHi0BhqUqe0CuOrUidTjbCA3FAmdbppNEPVq4YxvCrGDyOK0nOWnI0+YFgM YkG6rHtrRhTrvLPaF+PZ0YHonWt54zr3SUHH5O6+TMpkSM+TJEn6NgxIL/H9 3AbC/lmMSiDr1V0yLDJk/L9Z8jAyyTt5kwd03EofXmeJvx6VlNy54WdjXajB JN1e1rtMipEYDvHJ2YoxXte44WAXFT49Ofvj5CxJwoCfjh5Ds5M/Rn9GX5+e /vPrq86XP371dXJ6d/80+fzz5Msff3h11fn2h6unyd/+lpyGD2+efzd6+9nn CQ+l/CVkLl4Nqww5vu68gezFt8Xj09Hr//3fpHLJkC4vWnxTt2QMl5dMXo1L Ll6XhnNIoT+LP/Ymsw3SrX7nVpFtm86Nv3YydDJ8H747KUTDl7KX3OX+PvfJ bbfjr/PevxN310/kzU2iZRbgawfa3vvhl7273sV/bf8ueafD+86dc5n1J0M6 9ZKr6/xWwRGgk8xL39VDdG6SMwXkVyiQ0auxvKFMY6RB+ENTrTURwDLLmcNQ I6kEAyTFqVbk8pJjxCnnjKccQoioZCIonVRzTHXKRNAikFFkNmqPcfWrZM74 dSF3IGW4EDvDvwIXUsf/594GTg+U6OfaJ38kebfnxQCyji/49Rfy66fJnw9f DkjHFyJ7JBuSd1mu3nZuO71OLk47QXFI7bvvArt3OrL4pYpfARPhMbRjy9RL i8eoUvlrky+tALJKFaxNfnL2UMHtjbwx8p1827nvZMNWTRPqcuFbJF1V8LA1 2xW8POmKgvPtW5xXanG+fYvzrVs8qEDkQTUqDyqQeVCNzoMKhB5Uo/SgAqkH 29I62x7PWSU8Z9vjOauE56wCOrJq6MgqoCOrhI785ibImvu7m/8EgXO/jXSt kGV1RVuJwSp55qry1fvkd+qT36FPvnqf3poxMQqtkG2lpSpkWVnRVl2qkGV5 RZX7s0tvKvelYk989bHxO42Nrz42fqex8VXHxu8wNr7q2PhqY9PPrvu9EhNM UobfwbOcq2K75CsrKMnbzRWsTL6qgrxaD/LKPcir9SDfvge+2hj4ymPgq42B rzwGvtoY+Mpj4KuNga86BnlFRsirc0JekRXy6ryQV4RSXh1LeUUw5dXQVE0k VZZI1QRSZXlUTRxVlkbVhFFlWVRNFFWWRNUEUWU5VE0MVZZC1YRQZRlUUQRV l0AVBVB1+VNR/FSXPhWFT2XZ0x/74dfbeNZbJV5ZeF6l8LxC4YNKTR9s3fas CmGyioTJKrU9q9b2SgqlsolbzcKtbOBWs28rm7fVrNvKxm0127ayaVvNsq1s 2FazayubtdWs2spGbXY9nXZYMmWzrI4KWVZUtMzz3FTTpjzLq8qr9ynfqU/5 Dn3KK/bJVx8nv9M4+R3Gye82Tr76OPmdxsnvME5+l3GqoEaqapFKSqSqDqmk QqpqkEoKpKr+qKQ+qmqPSsqjqu6opDqqao5KimM7vTEOACpCkDodO/C2lxXR S52k+NzvFWl7N8PK77pmtIwNMOTDdWyAU3JOyTAIaskabXJaLFxDNhAdn8xy W+lrOXkePoXmFcEt9/2ZgJrwbd698d3eMO5lpop34rqbrJnxnEThrO9YqJyR ji+SSe/7XZV7G5KdFhS7+V3+Jxsn7HSKUn/r5aVn2fdd19VdedPpFJEVy5eT k9NxLaMWhgeMBmTS49lHPSGANWOS3E+idpaTo1TTO5INKbJgF4+DOfZOigIV 86R4gIIqP9YkxRgcO5Iib5wWeQGLvESMfA4YeTRk5DWR0QI5JgKjTI5ZcOTR 0JHXREej1Bi0JzQG773UGLQnNgbvv9wYtCo4Bu+/5Bi0KjoG77HsyFqzN7L3 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 Bptk1mBroTU4Sq3dpNbgwxZbgw9ebg0eg+AavDeSK9tgbGXbGlvZe21s1RNP VcRQNms8jUezPUlTRaJks4bQxpbWjU+Z1DfYhLXB1mAbHNGWlZTeAcBt0Bbe She0LZ/pWZlicbZndWGP0i7bftyXXFN4EJZLBaW+5ObB/Wr18l18G7A/qAD+ LYsb8ne5yHLrso2MmW3PmFUK27Zlg82lDSq0bcvilrUu+cj2TNdtOLb0o64L dReX6N3f5FnxcxIyueTi4reuT+Sz37R+pu96rvvbs1Bv8TOE1fiM1eyyyKy2 SXXS7Rk7SLDiAsvUWGgA4lIzgrV2jgAMhIBKmpQAYhy4vHQpFwRKwnnqBMWQ O62VhhhZhhF3hKBUSCJJAgFghJxcXFxs196Ts7OzLdtcnIfJID7HyVnxh5Di KMw3z1/i5PTF6+df/fhT54cff/h65te333/feV18Oh+eCTKeVQ4PxcUB4Y+4 Ln6TrPv0pEI5N1HK6cdq0NsNLToLBaGHgoa5Vv0+T+ZPPiuVuEtZKlZZJY+r Vg9nJ52qFTSHp4fVrnqlqAilTM8MqEjl+WJU/WL6cUjTj0Obt3Fa8zZSayIR 5+1O1Fnaq2m8U81iVO1i+pGa09+6PXNytSQoZreFRCijdktUhJbUpUnZ/atb Ss1CZJSmyJ2askIV1ClC1S2iBLTV0ntDGapmGf0I5OhHoMfbCO14G6MdMQjy dgNF4Nbmz5yXu7yQdRwz7+vUKWH3AmTtJsglTVjnbAV35PLWLLoqo+/HDpVI lSHOKquARYQo5hw3kglMBMM0eE0YYshYenmpgUKcOYzC/1Cq4EUZx7WgJpVS aQO1IIwa4dY6VOO6l7pQ43fDSwQ4Hl5yEf4gEJymk+Qvf/lL8ubFy6++f/3d Ny8633deJW++/+7VV8/fPP/5Reen4vHFw7sfOq/GGb758vlXX73ovPzxCnEw yhWShXyTMsZPPw8fx5nG5U6KDXV+97yUYfJ0cjHfqlDzr2FUx8U8/25Szuvy 46vp47D1r8dZXrx89c3LH/4+Kun13POryfPVpI/jTHN55rIsyTFXy1wls3VM Gvbqm+++m2aYeXo1eroqvZurrlx8ue7Z1pWeXs9R8WGUS80r9+/1bP+uZqg2 Oz7h9bjMb0Zj8VDRq/L4vCrVG0oo+vzTj9/9v1DOT5NMr4e9nXw7BuEMcWae H8brq3GuUpKrCb6Kxr9+oNcsMF4/9GnY69dzo/x6YZhL/Xw9+8WkVy/H3SyT YvptieqvZ2laasCvxU0QyeloFqpze2fs8MafYuKo8+UPb66SX07fiG++TZ6E 3/948jQ5fUNeFU/kVXgacV34V6T5xzDNt+M0/ximCU+hgkIsYAgLsYARmYqF ZPTv9M2Q04MCSp7kw+yhyd+Vvnj13beT9j/JRvU+ZH4xzv3DNPnDN6PkRaJX r/8+m6hUQqDtXAHff/vDaFDH2ScgHGe+WFL9Q9q/f/tl6fnFuDOT1oykzO75 y7lL/DLNMcNnwxbP5ll4W/5uSS0lMTCupCQMltQxwycPOWakzdIcf1+SY3Ud L5f1/eX6vr9caPbclxto/JDnxXqKvVhGshfrafZiaYdebOjRi5dLq3q5vq45 2TyBeUmzrc61NNM0T1mmdHt+JFIK4QILefLl1U/iRfJEDLOHB8jCE2STR4zC I0Zj8TL8ipHwFSOTFCL0q5y/eC5KGMoaCtNC1lBCz6EYyprZtnS97Ut/10/e PP97wXnJL+MPhXAcf3pddGF5pomwCNke5MarZEaGrM76wMkh7yxXzzwUuS9O zlZWPaH0qPaVRkohY9aX8XO5kJ/nSvl5QzGz+Cp6s9b62VTMVbmYq+VG0+s1 xZQbs8aq2lDGVamMq6Wm2Jp2lImyzlbbUMZVqYyrchlXG8uYys1QxGoDcH0B V7MFLLcS1xUwQ4jVVuT6Aq5mC1huas6LmqyXPPm4WMy5vXv3WSFwvnhSXOT1 y2lmfXJ6K72+7tzdh0p65pPCxCkWaLMEBFnW6dvfulmof/L+SfLk89/Pfz/v n49/j6ULSwEfLgulhJyTlA4FzLiKkaB7UpQaso/bYQtJVsjPaYIb2/vNXz8p RNiwB2efflr8JL8srBiU5owKchUpy/0d3nY4m+6zLL93X0y6fxbaVvxKltHg q29Xd74/lP6neS+7t7pI+ctiZrgiMyhrjkXC0wStyPr75qx4l6zBiCXJk3f3 /WU5X9+HkQh5S3K0uLsySX4tfj25ev7yn19fdb55/mZ4L+SQrKGwzP/r0wfa +8sR5f/60WdvOtl/O/bG3n7xl7++AOfJX18Wv96i4hcejclavJytw8vZErwM 5gEz2BYxgyNkIkHm5x0wM1gKmqRZ0Cys6JSn/NaAppSwAmhC33qy37/7vXMv 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 --_002_DBBPR08MB4775088E0BFBCE18939781389B710DBBPR08MB4775eurp_--