From patchwork Wed Jul 10 14:05:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Victor Do Nascimento X-Patchwork-Id: 93653 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 692073871020 for ; Wed, 10 Jul 2024 14:10:17 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03on20601.outbound.protection.outlook.com [IPv6:2a01:111:f403:260d::601]) by sourceware.org (Postfix) with ESMTPS id 7FFFD384A4B6 for ; Wed, 10 Jul 2024 14:07:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7FFFD384A4B6 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7FFFD384A4B6 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:260d::601 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1720620463; cv=pass; b=isHT4czWNLl1rurQhbxmQ8y3lzS96O3/bGtIxOK2/4PiCYhX6xLNaL6H0Rc3qDzAyj/e/jzvZJi/VkacpHm0mzA0ZvLBJQrvpQTxj4CZXuS/N6eQrXOHZDHg8xTe8my+/ZpvlimbpK8Bk+d/PBmcZGF1If9FD+XE3/MwEhRiiHw= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1720620463; c=relaxed/simple; bh=pj4yLwxw/BW9A4dsg8lP/lKz1aBr1EY+3VIsIVOkmm8=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=S03aTxXnGhD11eC/h6yHDI+QYgPCA9PFtQS/aWavG3HuR3BBcmWY9yntRVuxTB2j4grD02k7DGfahIYhhHnOwFDrvKlzlNDbqgXnucLe29TogjyvCX27zkyfdR91DtBrN/HPIcAw2d+D9FvZFHsQ8GWhplfE3RPtJXflHxIr9DU= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=czke2XEu3EApboVJBH2Utnl0I0OCHNY52zHHyyieIi9vl1qS6zWq5CcsPzlvQxBruA4wP+MTCWY/IjiNL3eX/7S5+RIV9vCxJbi1VwTzVhNFlnvuKLIdmTKtbCv7z35TjENudLMjWt+5YT8mHiOdBuCYjlB028aiBKln6IZCt+tZefVnQscHWBbcZS6KuvKC3jmBkwrZY+3slQwe/pYV1cguSNO75L3TZUSQE1MDbpgSYVkiRbCK9KieNPdVIefcht92mT9uqpSEZuugVcmkN3ifFipeNNlWBIpX32lHFmyLYiLh7fP7oCBujY8sZOwiS3+976DB9LgM0cmQToZAuw== ARC-Message-Signature: i=2; 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=auVaF6tCKi06Sn02o1+bVqU6x+WfIqt9UAKoFWNJLVo=; b=AO8l9nFuyNtOPdQv2ZPBUf8MOyoTi8Zlec9TVy1CAcaojL/kAPqHvwmMSOnw0fltv6lt7YqaTPSXVEnB9fDejLkFO8HSbE59pp+ET1DNI8njAVHx44J2/uDgcKb2jmFjG3cm0hYif95a93JIIUQoaJ0JR83V/4S4s+c72buvu8ljDoR3QTpXXxZp2qBo5vvWtowBkHoEL2GYyzfAdm/cnyJ4/K5AIeHkKL5veTrta5/8WjGDRxbv851IDP3LgHFInyawN15FXEi1jkXwU0Z/DURIC6B6tDL2CpFm43+fp8+VCB7c3QdA4zvOihkmoQwEWEeB3AY6ASfOvYrzEMZ3mw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=auVaF6tCKi06Sn02o1+bVqU6x+WfIqt9UAKoFWNJLVo=; b=jqr7aoUoGIv4D6SfvkoG0BB53svenE8SeKI4VKVqs9uQ6XMAtfNiYDkO0cuJqkXLpaRA7ldLKEF+ubMBuCYpfX/GWRzGDnhJCuvKdvQW0SoxhhGzhTIyXZo6IPNpgji2HD6W8fgRIpHEsqcV7l3WfxVdYFKYTlPa/3TjZauh+9k= Received: from DU6P191CA0070.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:53e::18) by AM8PR08MB5652.eurprd08.prod.outlook.com (2603:10a6:20b:1d8::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.19; Wed, 10 Jul 2024 14:07:37 +0000 Received: from DU2PEPF00028D06.eurprd03.prod.outlook.com (2603:10a6:10:53e:cafe::ec) by DU6P191CA0070.outlook.office365.com (2603:10a6:10:53e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.20 via Frontend Transport; Wed, 10 Jul 2024 14:07:37 +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=arm.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 DU2PEPF00028D06.mail.protection.outlook.com (10.167.242.166) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7762.17 via Frontend Transport; Wed, 10 Jul 2024 14:07:36 +0000 Received: ("Tessian outbound 7c3e8814239e:v359"); Wed, 10 Jul 2024 14:07:36 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 832f60552f139612 X-CR-MTA-TID: 64aa7808 Received: from 3b280edbe621.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 117363D6-CF42-4EC3-8330-E48C74BFD755.1; Wed, 10 Jul 2024 14:07:30 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 3b280edbe621.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 10 Jul 2024 14:07:30 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NsPO/aw8g501gtl4+tqfxqxuDyAkflhqlB0LvVxkvYb/whcfZlwY9Q+hZNieT3wPZDf3DvU6iXoP5wHyYDSnLEvezL1pg8xkgo+rwYPP//Xq0yIpFiBcV3gwyAU9UqOaTMypHv00ut1czcup7GGa4u9NTbG9sBpECsawIo8pqN4Bi9I7bEPOhpo9EMv39hLpi4BJWm2MlbRvcJAelkVHUjYOGTuFvjuyenb3IrEgAW642gvJ+ZmL0RZF92BrBzbEF0WKoA6xRhCpS58eMZpOUjYN822a+APIodTAufzfrNH1HwtiaW1IFO7Wh+j/6qzDpvA/9E9B7QKuGr8SK2/fXw== 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=auVaF6tCKi06Sn02o1+bVqU6x+WfIqt9UAKoFWNJLVo=; b=kbp/qwK8vnzy4zlaWfphbbBmOtAlmtqtgtujdUhmKKjvfsJVGPUC2DgXrfBfL3/BAm+sqdfsQo05y7yZAg9Rgl5gHBSStHb2/DBhJn4XRMwZ/UcNmQkkcZrf91tLqiVB26KW5D9s07aQnZBT/30km70e4nNU6WENst6Hq3pxPcrGRnts+DREAeSz3uDKyewqTnMufRsAr5VEEyBz8fDA6zzreEvmlCdfafR2ZFEVnf/4anqfk1DQ9/1D//ov0CW2Bl2j5jRokTqobqjQOwd5+o4TU9R+6maNiAH2sTzT5IHD4g9OkT9noAEAIvsWP3fesdMRWmpfuDwtrM4DljLgeQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 40.67.248.234) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=auVaF6tCKi06Sn02o1+bVqU6x+WfIqt9UAKoFWNJLVo=; b=jqr7aoUoGIv4D6SfvkoG0BB53svenE8SeKI4VKVqs9uQ6XMAtfNiYDkO0cuJqkXLpaRA7ldLKEF+ubMBuCYpfX/GWRzGDnhJCuvKdvQW0SoxhhGzhTIyXZo6IPNpgji2HD6W8fgRIpHEsqcV7l3WfxVdYFKYTlPa/3TjZauh+9k= Received: from AM5PR1001CA0048.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:206:15::25) by VI0PR08MB10448.eurprd08.prod.outlook.com (2603:10a6:800:210::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.20; Wed, 10 Jul 2024 14:07:26 +0000 Received: from AMS0EPF0000019A.eurprd05.prod.outlook.com (2603:10a6:206:15:cafe::ad) by AM5PR1001CA0048.outlook.office365.com (2603:10a6:206:15::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7741.36 via Frontend Transport; Wed, 10 Jul 2024 14:07:26 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 40.67.248.234) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 40.67.248.234 as permitted sender) receiver=protection.outlook.com; client-ip=40.67.248.234; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (40.67.248.234) by AMS0EPF0000019A.mail.protection.outlook.com (10.167.16.246) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7762.17 via Frontend Transport; Wed, 10 Jul 2024 14:07:25 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX03.Arm.com (10.251.24.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 10 Jul 2024 14:07:23 +0000 Received: from e133397.arm.com (10.57.7.170) by mail.arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.35 via Frontend Transport; Wed, 10 Jul 2024 14:07:23 +0000 From: Victor Do Nascimento To: CC: , , "Victor Do Nascimento" Subject: [PATCH 02/10] autovectorizer: Add basic support for convert optabs Date: Wed, 10 Jul 2024 15:05:55 +0100 Message-ID: <20240710140602.1707875-3-victor.donascimento@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240710140602.1707875-1-victor.donascimento@arm.com> References: <20240710140602.1707875-1-victor.donascimento@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AMS0EPF0000019A:EE_|VI0PR08MB10448:EE_|DU2PEPF00028D06:EE_|AM8PR08MB5652:EE_ X-MS-Office365-Filtering-Correlation-Id: ef08fb4a-2b06-4dcb-fd6a-08dca0e9a6ef x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info-Original: O0P6DnxCnHOdJxFU71RqrHvUTxYXtspGbR79+iZjRgqIfKFb0RrgTpH6sQP0XMBCTUxmk4Qt2+vkbRbDzwrqq+/7GRGM2CLnCpbhk4MFap++iCWmuh/zPdv8zN4WD8iifty+f3bLJd34mHm2+bTyZ70zyM89k+6WisZcomwfWtMVaYbaUnJXkjfyixcFqJHyH4xC3hQGm0AKZMVKPjNY3vpv9h+jn8OALsUEiViP13NB9XCULBrrUG2UWjC23MFUjBSJsMk2MSoHvobpN5qOnMhmLmnG3uPYB2QSHrn70bhQ63ef5dCU2s/mSzHF12rCev+ZmrpD3M72LEL5RlPFbpG8oHcs7bGtnk7oeCMVSnBPBVdqK1wCzNk7HABa3/rfKozyD8q9v97IsTYqjSva282iGnkkYj0HwcYFqgcAVOMdn/QKB/YmvJgyOBiBGEqysYrY6gD14gFOw82GhaXWSXADkk4WE/RnZk7xqLmqZGqd3kBjFQqge4Rx8cZRxcmBBHgqVKO8ISmoIKG8avjiChMwxvAeLINbF0buoKiZy42Bjzlx2PYAHKz+Cvf0iQO/eGiWK29qxaUr39DE7H5oRwqdzff3tedJDH8ARRLv524OhTyAewyiFnRwX+//K73/JLXWE8piCbpVuiRkltszwk8X4Gm7i4gQVs9g4PhPKGOvCWQcFNpllJ4zWuWsX89E7VhKrYtRE5Mv8ntHz+bxHdj1a6VG/12CjgOMOEpA0dRG/6eB39h1o0wlJ34oJo4XevZjuTN16oHaetHGEzcNYJhA5R9x2rgKRt3dE+o5U+Gw417em/tCx+oYLcV6GBzZmvNkKdu6VeOCvJz+YOewUCKsxFDdWZKPg0Z32urLD/AUn75oH2ZOhW17fqxlNcIf7bJcD5S8MxoW9plkyM9+ChByTyWcjqZHkyye4+wvN7utnd0Kyf5zWN/HksNNFZnVK3KU09KlAYR3cPLmWEJWiEGaZ2+IxuHR6DYe7jc22d7g6D0lEwa3gFcepH6xKvFxXgjjWpZY5fmWxYSRuejSPw/wvKiDrj4AvsGpxhULZnNDKehPxdkBUmVWt9VM5+oJHWNU1IoImJKHQdgcQ4aZXXf78On+HJxB3i15JMk/vhH3AhnFkWdpjf5SIRDW6oW7YjnSI81B7DyhPPJVWiPghTiIYTJ+DJbuj5YWi/2ALjgXSN8QDbkGzvB1y80l0bjVGRAmPMPXMpQsr3pmmqRm0dIPZDKfKhf9VDpD/v95sjU9u+pmBC0TXl5Z3dY4iu7Uxnhi3gnp9QAY4LBdrUWxG42FU9ndRErBykaTkHZ/Hpqr9QvptsVWtdoTTEWySHjxKo/QE7tedHziCYavZoGfc1zTPYWcPYybhcmUxjgr4LpxaNtZPaTJJezfbKfMy6pO7J+pJwhDHux69YGi44U3WUQoIAY6E2tm/CX50dEH7+CdYizZr8vRUNTM35iLoYqG X-Forefront-Antispam-Report-Untrusted: CIP:40.67.248.234; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI0PR08MB10448 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DU2PEPF00028D06.eurprd03.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 098f3a41-0632-492c-ee5d-08dca0e9a07a X-Microsoft-Antispam: BCL:0; ARA:13230040|82310400026|35042699022|36860700013|376014|1800799024; X-Microsoft-Antispam-Message-Info: 2wdkBfLZIbMLt6NHGujWNH2c3RaL/1FlbIo1TaYM/7O9DVwIso4p2aLm3aLBZPbmXLdeVSx0R+C5uSj0ZJxN2vlueyysCDwO/VC3qtJc6dReoF9U5xaf+1nu2UwKJtqVTHKjZHZRmnBMWdI8yowrKz+/5HhJYKb98bCv4XuyP11sbGxB9/kYZs+3OtUC4vJWjoVuPIPL8Fs4jInLB3i2wZCc7u2ChrcygO+yjSbb3GEQbID4bFt5YRcQuCHpM1ffaBYcdArVg1XcwWDEvqW03VF8wDgIJmIbzWwhMasHwZzoF8Xq8aLRxN6AXAEZ+P7Caqid72DD6ELV9OW4kMMZ+WuOKtgcmp6Vk4xNj6s2mY3YSIvN/+zH0IEN6sbqGs6WSGxMrn7SNiguaoa4JgtHRestGx21QbrX9cUKHN4SilKIDt0VIfg3A0O3soxvh5EsMKo/+3LnN4Z+znxyMiMdqe2nB1JXlKP5tm8ZZDjASAN1X4+uGQKr0rh1ocn9/aNPXKO3TxmSwq9Br+d1ZxZTDw+aQ1vbsCtWupPqPxt2I58EaSmU49GUSHeNx8oHVKWnS76mfG5VTiXru5pBgeIeNQvaztpvOqGzBCYIri4Tj/hMVHf54CAeV81mXXwejdiPmB9GD0ETa/bXrvaaAAFGiCNLS3Z8FWKQwhxyYK/eAWCRupqF5yRkar13pKmh7xPqm2WOCp8CYw7yzFjWkq4TuAtMXpfMEhfQapfFne7Go1Br8JlM/bzsecHfKP/+T5k0DvMHSour4sfNTiAKmx/bQL1qumy3LW+AuxSZ+ixthONavy+TwJqAv5mqy2e92RjgePPIaN9INVS4vZiV6ooRTi0pkaI7f08wkgSkjHlb+FIEaE7Stlda7xoKFSgzzrV6LgJshKm2WYQUlJiFE9Eloo1e05btI/4565AhR+Eisqng8BfrJinIu2bzotzOuUCeXbs+tWKn66gU/H+Sz/s/lRyXCOtY9phNRJ5+wsBGyDQdc/dhChy5AqTGfU2s4eHajBY3wm9VJWT7Fkesv2v0HX8Y+WygBVXDLwnajA+g5UY9hiRNRuYRX/cQnrO70B3ELplsCoxZYdbjmNNRZasEcqgAHtiDh+a9hmcDeGNrXRx61ktZAkM4RDM0bmtuPK5AZWqhfCp3EBjW8tNAT0ZFvEIpQWUGFlG7gKIw8MgJKH73BgmDiBAGpr2svgO/yx0w6SLStfBmzW3RIby707a64iak8UxfUQ/k+FOAcQS//qnDGj6c+scRjqiaRr4M1n9hvl9AJBpksJcUjt/rHIlnQALK+XgWlkv/mCVNo1210jsEKggq0N96nGQOvgRRxsi8R88RrONqre5V3QA+oREFpXJ1tapWESX3l6XvMVSVNhxRPa1JCEeKsRQcuta75dNOuOcdQz+OOx2cyw0nXI3ySFbzn1ICwwiTVK/m0tsmvz+y3TveuFrN6vwtteHorxZZ 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:(13230040)(82310400026)(35042699022)(36860700013)(376014)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2024 14:07:36.8181 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ef08fb4a-2b06-4dcb-fd6a-08dca0e9a6ef 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: DU2PEPF00028D06.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5652 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_NONE, SPF_NONE, TXREP, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Given the shift from modeling dot products as direct optabs to treating them as conversion optabs, we make necessary changes to the autovectorizer code to ensure that given the relevant tree code, together with the input and output data modes, we can retrieve the relevant optab and subsequently the insn_code for it. gcc/ChangeLog: * gimple-match-exports.cc (directly_supported_p): Add overload for conversion-type optabs. * gimple-match.h (directly_supported_p): Add new function prototype. * optabs.cc (expand_widen_pattern_expr): Make the DOT_PROD_EXPR tree code use `find_widening_optab_handler' to retrieve icode. * tree-vect-loop.cc (vect_is_emulated_mixed_dot_prod): make it call conversion-type overloaded `directly_supported_p'. * tree-vect-patterns.cc (vect_supportable_conv_optab_p): New. (vect_recog_dot_prod_pattern): s/direct/conv/ in call to `vect_supportable_direct_optab_p'. --- gcc/gimple-match-exports.cc | 18 ++++++++++++++++ gcc/gimple-match.h | 2 ++ gcc/optabs.cc | 3 ++- gcc/tree-vect-loop.cc | 1 + gcc/tree-vect-patterns.cc | 43 +++++++++++++++++++++++++++++++++++-- 5 files changed, 64 insertions(+), 3 deletions(-) diff --git a/gcc/gimple-match-exports.cc b/gcc/gimple-match-exports.cc index aacf3ff0414..c079fa1fb19 100644 --- a/gcc/gimple-match-exports.cc +++ b/gcc/gimple-match-exports.cc @@ -1381,6 +1381,24 @@ directly_supported_p (code_helper code, tree type, optab_subtype query_type) && direct_internal_fn_supported_p (ifn, type, OPTIMIZE_FOR_SPEED)); } +/* As above, overloading the function for conversion-type optabs. */ +bool +directly_supported_p (code_helper code, tree type_out, tree type_in, + optab_subtype query_type) +{ + + if (code.is_tree_code ()) + { + convert_optab optab = optab_for_tree_code (tree_code (code), type_in, + query_type); + return (optab != unknown_optab + && convert_optab_handler (optab, TYPE_MODE (type_out), + TYPE_MODE (type_in)) != CODE_FOR_nothing); + } + gcc_unreachable (); +} + + /* A wrapper around the internal-fn.cc versions of get_conditional_internal_fn for a code_helper CODE operating on type TYPE. */ diff --git a/gcc/gimple-match.h b/gcc/gimple-match.h index d710fcbace2..0333a5db00a 100644 --- a/gcc/gimple-match.h +++ b/gcc/gimple-match.h @@ -419,6 +419,8 @@ code_helper canonicalize_code (code_helper, tree); #ifdef GCC_OPTABS_TREE_H bool directly_supported_p (code_helper, tree, optab_subtype = optab_default); +bool directly_supported_p (code_helper, tree, tree, + optab_subtype = optab_default); #endif internal_fn get_conditional_internal_fn (code_helper, tree); diff --git a/gcc/optabs.cc b/gcc/optabs.cc index 185c5b1a705..32737fb80e8 100644 --- a/gcc/optabs.cc +++ b/gcc/optabs.cc @@ -317,7 +317,8 @@ expand_widen_pattern_expr (const_sepops ops, rtx op0, rtx op1, rtx wide_op, widen_pattern_optab = optab_for_tree_code (ops->code, TREE_TYPE (oprnd0), optab_default); if (ops->code == WIDEN_MULT_PLUS_EXPR - || ops->code == WIDEN_MULT_MINUS_EXPR) + || ops->code == WIDEN_MULT_MINUS_EXPR + || ops->code == DOT_PROD_EXPR) icode = find_widening_optab_handler (widen_pattern_optab, TYPE_MODE (TREE_TYPE (ops->op2)), tmode0); diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index a64b5082bd1..7e4c1e0f52e 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -5289,6 +5289,7 @@ vect_is_emulated_mixed_dot_prod (stmt_vec_info stmt_info) gcc_assert (STMT_VINFO_REDUC_VECTYPE_IN (stmt_info)); return !directly_supported_p (DOT_PROD_EXPR, + STMT_VINFO_VECTYPE (stmt_info), STMT_VINFO_REDUC_VECTYPE_IN (stmt_info), optab_vector_mixed_sign); } diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc index 86e893a1c43..c4dd627aa90 100644 --- a/gcc/tree-vect-patterns.cc +++ b/gcc/tree-vect-patterns.cc @@ -248,6 +248,45 @@ vect_supportable_direct_optab_p (vec_info *vinfo, tree otype, tree_code code, return true; } +/* Return true if the target supports a vector version of CODE, + where CODE is known to map to a conversion optab with the given SUBTYPE. + ITYPE specifies the type of (some of) the scalar inputs and OTYPE + specifies the type of the scalar result. + + When returning true, set *VECOTYPE_OUT to the vector version of OTYPE. + Also set *VECITYPE_OUT to the vector version of ITYPE if VECITYPE_OUT + is nonnull. */ + +static bool +vect_supportable_conv_optab_p (vec_info *vinfo, tree otype, tree_code code, + tree itype, tree *vecotype_out, + tree *vecitype_out = NULL, + enum optab_subtype subtype = optab_default) +{ + tree vecitype = get_vectype_for_scalar_type (vinfo, itype); + tree vecotype = get_vectype_for_scalar_type (vinfo, otype); + if (!vecitype || !vecotype) + return false; + + optab optab = optab_for_tree_code (code, vecitype, subtype); + if (!optab) + return false; + + insn_code icode = convert_optab_handler (optab, TYPE_MODE (vecotype), + TYPE_MODE (vecitype)); + + if (icode == CODE_FOR_nothing + || insn_data[icode].operand[0].mode != TYPE_MODE (vecotype) + || insn_data[icode].operand[1].mode != TYPE_MODE (vecitype)) + return false; + + *vecotype_out = vecotype; + if (vecitype_out) + *vecitype_out = vecitype; + return true; +} + + /* Round bit precision PRECISION up to a full element. */ static unsigned int @@ -1266,13 +1305,13 @@ vect_recog_dot_prod_pattern (vec_info *vinfo, half_type = signed_type_for (half_type); tree half_vectype; - if (!vect_supportable_direct_optab_p (vinfo, type, DOT_PROD_EXPR, half_type, + if (!vect_supportable_conv_optab_p (vinfo, type, DOT_PROD_EXPR, half_type, type_out, &half_vectype, subtype)) { /* We can emulate a mixed-sign dot-product using a sequence of signed dot-products; see vect_emulate_mixed_dot_prod for details. */ if (subtype != optab_vector_mixed_sign - || !vect_supportable_direct_optab_p (vinfo, signed_type_for (type), + || !vect_supportable_conv_optab_p (vinfo, signed_type_for (type), DOT_PROD_EXPR, half_type, type_out, &half_vectype, optab_vector))