From patchwork Wed May 5 17:39:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tamar Christina X-Patchwork-Id: 1474482 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=WqgHE/Xt; dkim-atps=neutral Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4Fb3r34ZWzz9sCD for ; Thu, 6 May 2021 03:39:47 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id EE143385040D; Wed, 5 May 2021 17:39:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EE143385040D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1620236385; bh=V5eRHN6ssoQHnymMUlW7/xK8GriWRkOCuYEC5DPxztg=; h=Date:To:Subject:In-Reply-To:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:Cc:From; b=WqgHE/XtBbW/183se0S5A/RlVQrI8ZJC4C1lNEyxd13kv9hD34rVOq3Mn58VS2+Ck wK3IcntTAaojEWkNvds10c9G1MQaDbjQh5WEaUqNnRvRw/QTfw+Sc+hj5nLkaSy6bS 1b8ugQ97vKZ7LhqACz9y8kW3qa25yMaUt/k9uVRY= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2061.outbound.protection.outlook.com [40.107.21.61]) by sourceware.org (Postfix) with ESMTPS id 0B12F385802B for ; Wed, 5 May 2021 17:39:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0B12F385802B Received: from AM5PR1001CA0049.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:15::26) by AM5PR0801MB1827.eurprd08.prod.outlook.com (2603:10a6:203:3c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.25; Wed, 5 May 2021 17:39:39 +0000 Received: from VE1EUR03FT035.eop-EUR03.prod.protection.outlook.com (2603:10a6:206:15:cafe::31) by AM5PR1001CA0049.outlook.office365.com (2603:10a6:206:15::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24 via Frontend Transport; Wed, 5 May 2021 17:39:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (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=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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT035.mail.protection.outlook.com (10.152.18.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Wed, 5 May 2021 17:39:38 +0000 Received: ("Tessian outbound 8ca198b738d3:v91"); Wed, 05 May 2021 17:39:38 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 6d988fca55432500 X-CR-MTA-TID: 64aa7808 Received: from a0b219fa34cd.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D99125A6-7778-4E93-9701-66FE8CCA3016.1; Wed, 05 May 2021 17:39:30 +0000 Received: from EUR02-VE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id a0b219fa34cd.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 05 May 2021 17:39:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DcDe9Q9UH2uST0xl4bL/mShZVMjlwWDWOd6ISkgOS29DGWNalfpYB0cbYn6pm9Yd0X5twY/bFZuTFosUo1ah41AEtxew5stg0pP2pgImc0rKoG7Z3n9M6MLK6R26Urk9rZN2Qnx+mOepAnokn5zJavUKlXUIcJSBhnioTeJYwtxZnqJEoDIeQBUjrwJ/SBhjT5gLcBfKj1hm/lZ/d6PKw3Curn6FlnEKI3ue2T8qhOEK0tVf9wrb+J5LXNLlqM/2OIwZ22YRsG55HVKr08OXn4MQ4G+CJoYn0JVPD3AbzQWeGHutaYtPRH++G5ERrzSU8S03IIFzefH4dN9vIXMmvw== 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=V5eRHN6ssoQHnymMUlW7/xK8GriWRkOCuYEC5DPxztg=; b=bExp03e27r4o8LOM1ddm8jt6Yk/fsfhc/fJBWhG4CpgdLGjslR+LArTogRMHUKBDBMfRnrUIxogUhUabWUmXEg3av3prdGUmOEv3Hkea+FOnx3jKMzKszdCnPrPjQ2VMYuKKydEIEi5OYC9nWHIfDDPl8YD5JEbYFSYJX1Lq4qNr7QlTbm2zdbcmxMOIr/dsSUk2aMv6ZLOVt9oEKGh5IAo084bsOqb916JMhhz3fZcQrmBELzn37wEJ4XnuTx8e2lNYIfS4yIdC1hBn2vJNvaYvN9QjE3PBQd4Jza3KklvvuMbxsR5vupXIMbzZdYxttrlRInMuhZKB5lVvCucMag== 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 Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; Received: from VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) by VI1PR0801MB1680.eurprd08.prod.outlook.com (2603:10a6:800:5a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25; Wed, 5 May 2021 17:39:27 +0000 Received: from VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::5828:531c:5ccb:5bae]) by VI1PR08MB5325.eurprd08.prod.outlook.com ([fe80::5828:531c:5ccb:5bae%3]) with mapi id 15.20.4087.044; Wed, 5 May 2021 17:39:27 +0000 Date: Wed, 5 May 2021 18:39:25 +0100 To: gcc-patches@gcc.gnu.org Subject: [PATCH 3/4][AArch32]: Add support for sign differing dot-product usdot for NEON. Message-ID: <20210505173923.GA20719@arm.com> Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-Originating-IP: [217.140.106.51] X-ClientProxiedBy: LO4P123CA0410.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:189::19) To VI1PR08MB5325.eurprd08.prod.outlook.com (2603:10a6:803:13e::17) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from arm.com (217.140.106.51) by LO4P123CA0410.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:189::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.24 via Frontend Transport; Wed, 5 May 2021 17:39:27 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b5289552-2d48-4248-e86d-08d90fecc1cd X-MS-TrafficTypeDiagnostic: VI1PR0801MB1680:|AM5PR0801MB1827: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:1775;OLM:1775; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: ESiYeO8TTSQ52WUw/FRRrTUpZ/H+0OAO6eEZWQ6gF/Jp7avKLcfHi1U5MGUlL8rYtAQKNF0k1e//EQrqLCWZII2gNuBHFQiI5KpMzbGSg9KyVR99q+e6cU1p1nZcGpwgfOtXIoAclCV8OiBdDw7ywlPmOwL15T2TZI1Q13wUfbj8KvDcRd6mcMheOu3WZVcmgKUSd2zG4TsU3RTmBMvXcSmGqQzJjUCbwio/HFmS30LuGa6BNgiO6fMF4gOxwSRIiKoeydsognWMbhIe5U0ZT6XH4CTyfQ3jTPIIvvjGc00xYewhxkYTcnUWpETb4nLYa7vVLVpTfajJoTTIOEONu42s0BNNJyOWpUBGEA41YZICYlJJHEF5YhYUF4TNBGADtPUF/wKZeY5D7YDn4qga+lU5A42p7RyJTg8g3swNNJc3gb9QO5/AC1bXZqwur0nktu98Pbj1VMqPn7/6+dBryqZa3LSIcW0yiR3GnStrUdwjvWkxvWe8oWWcAhHjR7XVdQSbZq9QXO1DcaylZNWFhtihoG917INYHNjg6xDjELe1SMCvti68cV0KFmfAp3SvMMnn54xnwIoOPkpGXCSeLZbZHeLBbbP8VGdl3EttcsDlAcGcIT6FwXTtII+eyVxZ1O9HtIX4rHreE6UA3mJtJGamwM4/bpfgOeQDiXffY2n32yLebhaCDblUikIc7veSTpxeKdbPDAdwjyOwSMyHpA== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR08MB5325.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(39830400003)(366004)(346002)(376002)(55016002)(6916009)(186003)(8676002)(86362001)(33656002)(36756003)(44832011)(2616005)(956004)(26005)(16526019)(1076003)(5660300002)(235185007)(4743002)(66556008)(66476007)(66616009)(34490700003)(2906002)(44144004)(38350700002)(7696005)(33964004)(52116002)(4326008)(38100700002)(508600001)(66946007)(8886007)(8936002)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?q?96B++zDyArMGhjYAvoGk7Lf+2ZHDDN?= =?utf-8?q?jnu9vDzRAo5wRn6pjys/cyh4GPjkzq/h7prb+LqRs8Kq1wEgPmO4D0WvwEWCF+qIw?= =?utf-8?q?6qQZwYPZqEq6JQ5uO8i81xU56Id7LXmrZeu9T6WgDcR0NdzSMAuLB4qd4AVZ7lHQU?= =?utf-8?q?dcfJJm1l2zGf8zSohBsGm3Gi13suY8WoY++1pudJaz97Iz8rK9Nl8/UpOj9f7E6Dk?= =?utf-8?q?9p4P+axhIIbREU02U3ib50yBFim+NBB00QyGVrbQIj/ctosAYrDZ64LQxVWIEAi93?= =?utf-8?q?bAhdPoI6fhFX6fgopw3iaCht7gjYFAJocaepnvfJBVCrZX3UwWfBWnqSjv88gOWEb?= =?utf-8?q?EasBkonjggNYy3DiibqwFp0zFgR5Le34btxAEOTt7x0HgVhXbGRdjYMbgG6SBICST?= =?utf-8?q?7WJn/ROjjNJUv8dUhVcF4eobcVGzYnP3l2chmYufdDq/9rP3UKF2eVAJu9TIoI/xm?= =?utf-8?q?qxVUk44F8Gxv5tOPHxcjDgCkItmuSvLpMwuXhbHxMdwcjeQgSYL/peSi3ZjRc9Nxt?= =?utf-8?q?RgZz14rz3CDW0DfcUeV9V2FTt1u0rDFmuDmR6IDF2hkSZm4/EJDRdWSvwr1y7WWI2?= =?utf-8?q?SiX3pYHFsuVp4DhSAk/E9jtzqT+6mB70DiNbYJPPNZj+lo8yo1KSVVsFwgSy3GIYX?= =?utf-8?q?5eU3phfA8JguZEI+I5RCSwjtRsNpAiZfqsxWF04XLkARgcf8ug4IsuvXzT6NsUv4v?= =?utf-8?q?Jj7+2Z+dM8eJIi+yG6rjrwGvjk5IWokwV8UCoIl+RXQGWsKUyfnJ9ItPzQeIgH8Rd?= =?utf-8?q?mx0FXg8mOCSrksCxp4CugFxG99IZUPcyFZnwLw/X/3B++/aMHZsbfp8QoKLuGoSXn?= =?utf-8?q?ivvhzhz1/jh8GANSzcoc5AUKtdHgMgYe2UFy6ryaui/FTFhjiuGJ72C6kG9hWx9Xj?= =?utf-8?q?edszgjcrwZbLGGECVJAup5WWzv+3iHEkIpctv0FF+VAlFyUmnx1gn74VHAtQWc7QY?= =?utf-8?q?FYQABe0gQtz41JjVrh4+FhFbvaGXQfxk67Z7kzCnVfgyT05drh0te1D7RL2iLEZd4?= =?utf-8?q?O3WsQkiJefqP53lLWK7/5lt+zJiLVrDGV4ASLDmMkNQxvpFb2WvimNMs0XVpsbADB?= =?utf-8?q?o6F8watCk2vVgiFVeUFjVQHhxTctwNLXPuUFM9RVMsm85C3gaOTo5GtST5nMHWNKF?= =?utf-8?q?NaPgApDWQcHzuVeiz02rr8vzwWvy8Ck7IyzgACgami8fciF6J1uevqGnOlqs4D7Gm?= =?utf-8?q?+cbGAce4musHSo1ZY3GSEFRbEMCmBU+pDefJUoiOUQQotwq0d2aJVByifjnq2fD55?= =?utf-8?q?anPyisAqULjl0o?= X-MS-Exchange-Transport-Forked: True X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1680 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT035.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 1cb18ed0-424d-4726-ffec-08d90fecbb18 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2riPa+pYp0pT7uDCoqHO1grYm4ecvUihFAx2pAzkNGP5nia6JIFicy8oG4hlHqMzxhIj9d/6am5T0XDsNPci23pnNxW3s0EOEnv4ZzGeNrIixoTRiWwuHXJKR07MJKckTDS7HU6h3XTB1wGXx5bIvt0ULUAs55g1kGUqOJ1mPgG2QZzAxv4BNeIea0e4UqQAMNxWBMwESeQ71nIa6Q+vx2UY6UMTJ9Mo3pil3j1gORSb2Rvs0CaitP5FCEYLH59rFLjSPM/qGeGLw2BhBA2CzIPgPveFm8rBtEB7KpOEXXUQNA7MldOPfE4hHkc7mi49CHURO+aerBrg2z+F5aNpDx0VkACiIcnBKS+rpW9y2GIrrqxEtt377K3r2kVhF7qDw8mqDJS0HCaORe82JuLpB+BVvSJXc9dqSASrJPapyY5GF8q6zIxcFxErACxuAsZOcAWSsN1CgHc2n40J2OdqQI1kG7pUFkgKx7UrWg+FDMRzhdIhu+f+KmJcuIH4ogvQwl/B2NeI9HnWJrFVcAT0IR5OWDDJ3j7F/Bwgithi5w3QCbXSzxwexXa7OY15EQ2btYQoPj2yVDdE9rd5ZjKq+77ktfV27Te+I1nBdK+LdVioRY6Y0A7fb6p1ad/TeWSggvYBYqgWbhrux5ILR6a2lEqf/5244ThrEHExYvrFW3fhgAP5jnj1GfXmmP2LCH6X 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:(4636009)(376002)(39830400003)(396003)(346002)(36840700001)(46966006)(47076005)(235185007)(8936002)(33656002)(356005)(508600001)(5660300002)(336012)(81166007)(4326008)(7696005)(44144004)(4743002)(66616009)(86362001)(70586007)(70206006)(16526019)(2616005)(6916009)(55016002)(44832011)(8676002)(8886007)(186003)(1076003)(33964004)(36756003)(26005)(82310400003)(2906002)(956004)(36860700001)(2700100001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2021 17:39:38.6162 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b5289552-2d48-4248-e86d-08d90fecc1cd 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: VE1EUR03FT035.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1827 X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_LOTSOFHASH, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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-Patchwork-Original-From: Tamar Christina via Gcc-patches From: Tamar Christina Reply-To: Tamar Christina Cc: nd@arm.com Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" Hi All, This adds optabs implementing usdot_prod. The following testcase: #define N 480 #define SIGNEDNESS_1 unsigned #define SIGNEDNESS_2 signed #define SIGNEDNESS_3 signed #define SIGNEDNESS_4 unsigned SIGNEDNESS_1 int __attribute__ ((noipa)) f (SIGNEDNESS_1 int res, SIGNEDNESS_3 char *restrict a, SIGNEDNESS_4 char *restrict b) { for (__INTPTR_TYPE__ i = 0; i < N; ++i) { int av = a[i]; int bv = b[i]; SIGNEDNESS_2 short mult = av * bv; res += mult; } return res; } Generates f: vmov.i32 q8, #0 @ v4si add r3, r2, #480 .L2: vld1.8 {q10}, [r2]! vld1.8 {q9}, [r1]! vusdot.s8 q8, q9, q10 cmp r3, r2 bne .L2 vadd.i32 d16, d16, d17 vpadd.i32 d16, d16, d16 vmov.32 r3, d16[0] add r0, r0, r3 bx lr instead of f: vmov.i32 q8, #0 @ v4si add r3, r2, #480 .L2: vld1.8 {q9}, [r2]! vld1.8 {q11}, [r1]! cmp r3, r2 vmull.s8 q10, d18, d22 vmull.s8 q9, d19, d23 vaddw.s16 q8, q8, d20 vaddw.s16 q8, q8, d21 vaddw.s16 q8, q8, d18 vaddw.s16 q8, q8, d19 bne .L2 vadd.i32 d16, d16, d17 vpadd.i32 d16, d16, d16 vmov.32 r3, d16[0] add r0, r0, r3 bx lr For NEON. I couldn't figure out if the MVE instruction vmlaldav.s16 could be used to emulate this. Because it would require additional widening to work I left MVE out of this patch set but perhaps someone should take a look. Bootstrapped Regtested on aarch64-none-linux-gnu and no issues. Ok for master? Thanks, Tamar gcc/ChangeLog: * config/arm/neon.md (usdot_prod): New. gcc/testsuite/ChangeLog: * gcc.target/arm/simd/vusdot-autovec.c: New test. --- inline copy of patch -- diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index fec2cc91d24b6eff7b6fc8fdd54f39b3d646c468..23ad411178db77c5d19bee7452bc1070331c1aa0 100644 diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index fec2cc91d24b6eff7b6fc8fdd54f39b3d646c468..23ad411178db77c5d19bee7452bc1070331c1aa0 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -3075,6 +3075,24 @@ (define_expand "dot_prod" DONE; }) +;; Auto-vectorizer pattern for usdot +(define_expand "usdot_prod" + [(set (match_operand:VCVTI 0 "register_operand") + (plus:VCVTI (unspec:VCVTI [(match_operand: 1 + "register_operand") + (match_operand: 2 + "register_operand")] + UNSPEC_DOT_US) + (match_operand:VCVTI 3 "register_operand")))] + "TARGET_I8MM" +{ + emit_insn ( + gen_neon_usdot (operands[3], operands[3], operands[1], + operands[2])); + emit_insn (gen_rtx_SET (operands[0], operands[3])); + DONE; +}) + (define_expand "neon_copysignf" [(match_operand:VCVTF 0 "register_operand") (match_operand:VCVTF 1 "register_operand") diff --git a/gcc/testsuite/gcc.target/arm/simd/vusdot-autovec.c b/gcc/testsuite/gcc.target/arm/simd/vusdot-autovec.c new file mode 100644 index 0000000000000000000000000000000000000000..7cc56f68817d77d6950df0ab372d6fbaad6b3813 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/simd/vusdot-autovec.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -march=armv8.2-a+i8mm" } */ + +#define N 480 +#define SIGNEDNESS_1 unsigned +#define SIGNEDNESS_2 signed +#define SIGNEDNESS_3 signed +#define SIGNEDNESS_4 unsigned + +SIGNEDNESS_1 int __attribute__ ((noipa)) +f (SIGNEDNESS_1 int res, SIGNEDNESS_3 char *restrict a, + SIGNEDNESS_4 char *restrict b) +{ + for (__INTPTR_TYPE__ i = 0; i < N; ++i) + { + int av = a[i]; + int bv = b[i]; + SIGNEDNESS_2 short mult = av * bv; + res += mult; + } + return res; +} + +SIGNEDNESS_1 int __attribute__ ((noipa)) +g (SIGNEDNESS_1 int res, SIGNEDNESS_3 char *restrict b, + SIGNEDNESS_4 char *restrict a) +{ + for (__INTPTR_TYPE__ i = 0; i < N; ++i) + { + int av = a[i]; + int bv = b[i]; + SIGNEDNESS_2 short mult = av * bv; + res += mult; + } + return res; +} + +/* { dg-final { scan-assembler-times {vusdot.s8} 2 { target { arm-*-*-gnueabihf } } } } */