From patchwork Wed May 22 08:42:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kong, Lingling" X-Patchwork-Id: 1937715 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=QPF0EULS; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VklFB2cysz1ynR for ; Wed, 22 May 2024 18:43:10 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 917C33858C62 for ; Wed, 22 May 2024 08:43:08 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.13]) by sourceware.org (Postfix) with ESMTPS id 78D8938654A4 for ; Wed, 22 May 2024 08:42:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 78D8938654A4 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 78D8938654A4 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.198.163.13 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716367360; cv=pass; b=AqU0X/Rr5mpOdDz+TjsYmYngIj70U3mnRDB7J/ZdnAIu/tgQBpweEUBE7Yg0HluAX4q65KxKKCyuYr0hqjT/SILpIbJBF4oTrmTRk61hytazEWEOu5tyxSreqsVV/QLHm+qi7Jc7rjPWgTO2Ev40N4QPZ2YIxHO3uNV8MbtTe4E= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716367360; c=relaxed/simple; bh=9nRlfyOzzvKnn9ntSeVJ/4GdY5o4Owym30tFOppC9Vk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=TMJ4wXUy4gI1F70bivB+1zw9roNnXvrqCYkJzTNwXCQS+UhTkNK4dzUa0tBEsRdzQu9o3c65sezyVxmlPL+HjPdiKfqmOnHbs76nqciGrnb8/WAueQY2YjrpM8uE28TBSOS3uF6a+aPaM5a/OFNA64M1zGE+yg2Sg7tWENzlI6I= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1716367359; x=1747903359; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=9nRlfyOzzvKnn9ntSeVJ/4GdY5o4Owym30tFOppC9Vk=; b=QPF0EULSx9FAsKIKfLIlc76AalxhIYZ7bNXBlz/j1+Qmzzc1SzvMcPoj kFgc4XqZl8BxnPovLEd8S/wqUi5frK42aXcNcwDDX3KpgsZlf2ZULjmaX NVmW7SnpyOJT5AGuNMxEy1f+jU+Kl3wZVHR5IZV7rXfTDNZTJ4OVpzbDj WgPfe6L92lzAlzkonnjJ/r+ZrGO7hm7mxhhpUeTOGncFDqceGUc6eshg5 rpgoox0XjsgmJQXddeAXUegS6h8t8gKIEPRWioGryQQYnyxcd51h1TyUz Z19yjIdQbtov/UCysK1jvE0Pb53fL+219BD/MQ+wMHmM2aR2QTPk4gw40 w==; X-CSE-ConnectionGUID: +5PmWfEqSxOA9D5ITeqScA== X-CSE-MsgGUID: /8/MVo/aSHyvAR+U7aYbZg== X-IronPort-AV: E=McAfee;i="6600,9927,11079"; a="15553198" X-IronPort-AV: E=Sophos;i="6.08,179,1712646000"; d="scan'208";a="15553198" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by fmvoesa107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2024 01:42:38 -0700 X-CSE-ConnectionGUID: KcsvySbTSUy2r+rnlrPgPg== X-CSE-MsgGUID: ZdPn41KRSMazMOoadU4Ccg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,179,1712646000"; d="scan'208";a="37604529" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmviesa005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 22 May 2024 01:42:37 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 22 May 2024 01:42:37 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 22 May 2024 01:42:36 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Wed, 22 May 2024 01:42:36 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.168) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Wed, 22 May 2024 01:42:36 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mXckVsjjqveGKrnBnBVzwpAa502mAtRjdd1GX8DMJdIV5Z8f4a2WKhBjCqapNA7IejZTd1JNeWJ/LDTROVdwRT0mj9H7FUw6LfMcg263KR6QFmnK/U7qyeMAkmSJxmfK7D9zlIxvUU6AdKIelzw/FLipOt5bP0NzbYoIYhcrAJ3d+ekcqD3+0k9ediB/h0MciYLBaFF1flS/hyyBoU286azcQsYwJgKCxW3Wow1Xkb+DQBn89Bt8OkP9iHLIzIZVaYFqnTLyJPs3KwQY0ZnlUjjN3V0T/I6oMK0TwAu0ZNwq4LbtjTwpHGZ28ru4VQ3AyveEkn+15ckjLJCZw+lRvw== 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=hvwHwmcDFaMqTAtz3BHO8fiL1HwPG0zSVHn1/XlcV+c=; b=f44fooyNU+W4Xhpv7LfzD/NUENe9yTTuI3+gIPGXjmvY+r/i7BtwGo10l30fL9uI/zKvx4Xom6zkvK2eLrBDBPUYxLPOA33lDPHhR29pbZkQ7adiOBdsPRd7keheABeEFnFwmlbUStXkKafKlU4PUbHepC2+E00mkaInicw5xwUyFT+D6M8LkbTX1uenuV8ogd8Hs/fpYZVbzyTV5jiWTMoXVcv2jsiRbTDTHxL25bKwd3nP0HAnV7Wg5hHBAGGvLdZVz/gDmCImsjxg+bF7H7HWFRkHSfjrxoVOIV6nXYIRZ4wkX08iFy4vkaz+IF93u9nS7YUiBZqXpaTs2XOKJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by PH0PR11MB5144.namprd11.prod.outlook.com (2603:10b6:510:3e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7587.36; Wed, 22 May 2024 08:42:34 +0000 Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::3baa:3852:4315:38f7]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::3baa:3852:4315:38f7%7]) with mapi id 15.20.7611.016; Wed, 22 May 2024 08:42:34 +0000 From: "Kong, Lingling" To: "gcc-patches@gcc.gnu.org" CC: "Liu, Hongtao" , "Kong, Lingling" , Uros Bizjak Subject: [PATCH v2 5/8] [APX NF] Support APX NF for rotate insns Thread-Topic: [PATCH v2 5/8] [APX NF] Support APX NF for rotate insns Thread-Index: AQHarBsrPPii3ZXVak+GbJAu5CH6gLGi75sw Date: Wed, 22 May 2024 08:42:34 +0000 Message-ID: References: <20240522073710.2039035-1-lingling.kong@intel.com> <20240522073710.2039035-5-lingling.kong@intel.com> In-Reply-To: <20240522073710.2039035-5-lingling.kong@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5483:EE_|PH0PR11MB5144:EE_ x-ms-office365-filtering-correlation-id: b2c3f5f0-9ce0-4267-88f9-08dc7a3b2052 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|376005|1800799015|366007|38070700009; x-microsoft-antispam-message-info: g1gRT8lEjFf7camr5sN1E+oNcma+BKg7AE7wdk0QUqQQLW5rLwxttKD35m+iS9td+HgKfLRQyE+lCD3BerGkseXvzq3t3CPdwUlOstZhFxClgEv8OIluEt2L0UlZ8pLW58ObOg+U2z8S0aPNEApDkqAmgwEc1r0yeRr/AbMbj0fFP+JCu7IRloMoeFfrQ4/X5jkkyTS+7w+Ua98WjWC8b82decQQFyZ/tSuR0utR0RBSzW8DlxlAynJdIcjucIewGoXeZGKHoJSYDb2DvSlUpoQkJ4xlFURzqQum53YNB4LoaUoyGyOrT+OFRPd13wM6ipO24BfBXjlOc8IMP59WmgBQMuzwN5grCbc4oRaTuWAbufkcYyXA0fx0ykuWO+6hv0TrPu3H0uGAtod+u18fUQToIvePr3UJP0pp9MWfDGsXr64eY8fSwQbtqdhs7toRMnLwUj891Z8jZogsfPbCyMhCwv5pkuPoBTcMWguFcul8pKyLBWJf1PJBubFV3/yqU1VbGxt1y5BB9oXVx9dvdEwiVJkRsd+PF+GGslcwZjPGcTxf8fJmO31dVB121+x/paNWqVxKISZKb1QtMgsUClNWEgfl/eD4u4OjG21pB29+OHXip48R3078B+ziJCJOrrGR5Mx5NGBpi/dZhtj9L1obAXTjaHDYCWn5KvOfd9cqQA8jypWqoUeJE8W0w2tbzKYHcPG/6DWJ1awfJdkfRETq2aDfotv8sOKqrvsLja6E4ajVkNA7FupqOruc/I3Fd52pb4WQ/Hf2fFA7NeZgIBHiDE/2goVlElai4N28cyksSEsoQWWMhDsI1sgJbpbz2TJ9M/Z0IG8IPduhzGq4LEH7wrkYT0I08OqP7CbxJzoLjke646TdFSiX6oOZupKCs7PeMGKAO4vhXCLyBWZ+OXewe7n9VgN9ORl2a3giscO9FODuHzAtpBzjaztENHi5BwVvzpZOdvbq0vhccgK/NvzYNQVBDRnix5x6GyRy5xNxidOoWm2mFWOquJlJysdL0KrkKnS0LJpVzVZEOUawK++RUelOlWR6HZmvjHFGFMqhkcqjz1FmGO12vM+nJ63ZY4fni3DHPgM8bkbQ3FeAh78icf4xWzO5YC42XJ7GErQi5hNTSnyw9YrLNJgM2NBNXFU4SYatIoedl8VrGscFjbTTq0IBJmrF830h3heaNZAIm0GIF1ZPESLxjXNslyp400eSKjeSjotg3ih+c3NEdZN6ZsWqtV4jLr8+IROqMcLvb7Hg1RoGJrxwA8ORfz3Tq6I+fndqHdOk0ScBefSEfQ== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5483.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: 9fxk094lmenlv2CQIQBaAc6wDH/FygFEFrYU1Jlmhrk6AnlP1qXSvxd5FWjoiYSEvIyREpGnofLr7Yyp3ZLT+vS2oB24hNBr+9B1MWuMfaCxzpBphUBvlzOJOO1bbm1usCNUhPpnzVCoCVOSz0i9TXAC8AcGn228zTZ8nh8ZrBno/zTeGrvzaMNnFwk/jVNcjFvWi9G5Orz466RrXnkiJU9BT3dXyPd00v/hzm/0FVEZz8Mh49XAyDsq8gJ7aHeNQVKl0fthXRX75cZj0YsC0GlvW7c5QLi/HeSqW8Ymri909kJbh8awQlvLO2z4QLXUq/n3fQ4fHPK/dLFheJxrWaYnGTBFF/guq3g/Q6yF/EWZ9mIuP/SIWK8Oo1uCFNFXCgD/k3FvDkMim0fBvH17aaDGOoHhuE1mRH5Vui/5t4PIYdymWpdaBmQXouozY0pMW30txDSVNnbc/dcaF8E5JJMuAqs4oKWr9Ffp1K8HNzhNe0F8o8z5iINw5k7BYgwVMnptKd4XVJrHElCkBrc7jjyXC4umZf0hVUP7QcZcOeSAaLlEWyEPhOc/NE6zNebNeVUoGG3SqSJ10L4HtjYVfpLXlM9Y7HS6jC1iTqPNxOEhilKPEO1p+e1EFqyqrZ22fmwunMgCyQN7T30gKFXfXREf9UuL0l56VlUdPj30CqMR4ztkQefR++a3Uq/DC5BPp1Y0W1/JflAOO37xyc/kt618ineqisvEnYn5yQDWX+IpON9LNZdPZGKD40p/PMK3zZpopVZGmBYtx+SGJLBPtTB/4SmIaD8hANZ2jVAiMpwdUmpofjmF7uebluy0MVwBEx6NZb16tY48jJzv1euUQADsVxVUBA1Jcph/f5n+3npv04RZ7Y1AXekrhpC8HArews9mPZuGhzMRo4rCCcdlzPv8B3aMQ6qBd/BS3sYHnsed43jrjoYlNcs/i7EnRWMTUypjYGLhLBxJebiZjn0Cil9Ik68Gz2kMRJksfl23/DK7CTcRKYV/Sowwsey8IiLaEM2+d8bgcjwMIbB5Ciz3YrrkfZ+7UV2/Os3/MrKKRvewtNtrI7RK/dQl0vRdwos5K97dkxSOIgeUZYUOm3i6Psl5u4TCsSKk3jy3Wy+Q4/crzAP3NOWBavXHJJUAiMslI/8ci3YOcrup0ytnzGOQacUTdN7vRLmBRtsrW1ucI5yxR2Wvx4iXWt/K87lHwmqTpiyeT2F1Lj29PUC2yeTBnwJOY0lz36fiXrCGGGCXoG6MSi2+SUZtvletvs5zouJOyTsc7ncR5D7EPyAm/FXLKlViVZNg9dIasNcS1fVSgUTiOYI4EcBlQOG9pFbW2jBY8//sdHzZe2dqrw5r5BfgJ8bMBuZgaghzVMM9fM9PT7S6ELZ2IkkF/DeAzGa2SYzHWXLJPsqs255QIX/gtkKBFKWiwKV72EMGR4Kc4T1yrO5f80/gxbwjY70oI+DwKNFGlg8C4t6ZQUau0YB79FXr1Ue+QHCNlKUQm2wUm1EQedV4/GaRtNBW8pIsjZDEqina95uqltGY3CkP0fl/EHlr2yBRQgkwlNk3VupkDB2YsKV7YevnshGZ6rWTBvM3SfAq MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b2c3f5f0-9ce0-4267-88f9-08dc7a3b2052 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2024 08:42:34.3129 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ufyzHIKQmXGO7PFHDOtRRPw5mCOzr9iMwy/FqSnIaiQiVZ26NXZZ4DHASx43GouiTB9rbrQhaypRoRUEM3RM4Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5144 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, SPF_HELO_NONE, SPF_NONE, TXREP 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+incoming=patchwork.ozlabs.org@gcc.gnu.org gcc/ChangeLog: * config/i386/i386.md (ashr3_cvt_nf): New define_insn. (*3_1_nf): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/apx-nf.c: Add NF test for rotate insns. --- gcc/config/i386/i386.md | 53 ++++++++++++++++---------- gcc/testsuite/gcc.target/i386/apx-nf.c | 5 +++ 2 files changed, 38 insertions(+), 20 deletions(-) -- 2.31.1 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 7f191749342..731eb12d13a 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -16230,19 +16230,19 @@ (define_mode_attr cvt_mnemonic [(SI "{cltd|cdq}") (DI "{cqto|cqo}")]) -(define_insn "ashr3_cvt" +(define_insn "ashr3_cvt" [(set (match_operand:SWI48 0 "nonimmediate_operand" "=*d,rm,r") (ashiftrt:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "*a,0,rm") - (match_operand:QI 2 "const_int_operand"))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 2 "const_int_operand")))] "INTVAL (operands[2]) == GET_MODE_BITSIZE (mode)-1 && (TARGET_USE_CLTD || optimize_function_for_size_p (cfun)) - && ix86_binary_operator_ok (ASHIFTRT, mode, operands, TARGET_APX_NDD)" + && ix86_binary_operator_ok (ASHIFTRT, mode, operands, TARGET_APX_NDD) + && " "@ - sar{}\t{%2, %0|%0, %2} - sar{}\t{%2, %1, %0|%0, %1, %2}" + sar{}\t{%2, %0|%0, %2} + sar{}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "isa" "*,*,apx_ndd") (set_attr "type" "imovx,ishift,ishift") (set_attr "prefix_0f" "0,*,*") @@ -17094,13 +17094,13 @@ [(set_attr "type" "rotatex") (set_attr "mode" "")]) -(define_insn "*3_1" +(define_insn "*3_1" [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r") (any_rotate:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "0,rm,rm") - (match_operand:QI 2 "nonmemory_operand" "c,,c"))) - (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (, mode, operands, TARGET_APX_NDD)" + (match_operand:QI 2 "nonmemory_operand" "c,,c")))] + "ix86_binary_operator_ok (, mode, operands, TARGET_APX_NDD) + && " { bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD; switch (get_attr_type (insn)) @@ -17111,11 +17111,11 @@ default: if (operands[2] == const1_rtx && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)) - && !use_ndd) + && !use_ndd && !) return "{}\t%0"; else - return use_ndd ? "{}\t{%2, %1, %0|%0, %1, %2}" - : "{}\t{%2, %0|%0, %2}"; + return use_ndd ? "{}\t{%2, %1, %0|%0, %1, %2}" + : "{}\t{%2, %0|%0, %2}"; } } [(set_attr "isa" "*,bmi2,apx_ndd") @@ -17135,6 +17135,19 @@ (set_attr "mode" "")]) ;; Convert rotate to the rotatex pattern to avoid flags dependency. +(define_split + [(set (match_operand:SWI48 0 "register_operand") + (rotate:SWI48 (match_operand:SWI48 1 "nonimmediate_operand") + (match_operand:QI 2 "const_int_operand")))] + "TARGET_BMI2 && reload_completed && !optimize_function_for_size_p (cfun)" + [(set (match_dup 0) + (rotatert:SWI48 (match_dup 1) (match_dup 2)))] { + int bitsize = GET_MODE_BITSIZE (mode); + + operands[2] = GEN_INT ((bitsize - INTVAL (operands[2])) % bitsize); +}) + (define_split [(set (match_operand:SWI48 0 "register_operand") (rotate:SWI48 (match_operand:SWI48 1 "nonimmediate_operand") @@ -17236,22 +17249,22 @@ [(set (match_dup 0) (zero_extend:DI (rotatert:SI (match_dup 1) (match_dup 2))))]) -(define_insn "*3_1" +(define_insn "*3_1" [(set (match_operand:SWI12 0 "nonimmediate_operand" "=m,r") (any_rotate:SWI12 (match_operand:SWI12 1 "nonimmediate_operand" "0,rm") - (match_operand:QI 2 "nonmemory_operand" "c,c"))) - (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (, mode, operands, TARGET_APX_NDD)" + (match_operand:QI 2 "nonmemory_operand" "c,c")))] + "ix86_binary_operator_ok (, mode, operands, TARGET_APX_NDD) + && " { bool use_ndd = get_attr_isa (insn) == ISA_APX_NDD; if (operands[2] == const1_rtx && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)) - && !use_ndd) + && !use_ndd && !) return "{}\t%0"; else return use_ndd - ? "{}\t{%2, %1, %0|%0, %1, %2}" - : "{}\t{%2, %0|%0, %2}"; + ? "{}\t{%2, %1, %0|%0, %1, %2}" + : "{}\t{%2, %0|%0, %2}"; } [(set_attr "isa" "*,apx_ndd") (set_attr "type" "rotate") diff --git a/gcc/testsuite/gcc.target/i386/apx-nf.c b/gcc/testsuite/gcc.target/i386/apx-nf.c index 608dbf8f5f7..6e59803be64 100644 --- a/gcc/testsuite/gcc.target/i386/apx-nf.c +++ b/gcc/testsuite/gcc.target/i386/apx-nf.c @@ -3,6 +3,7 @@ /* { dg-final { scan-assembler-times "\{nf\} add" 4 } } */ /* { dg-final { scan-assembler-times "\{nf\} and" 1 } } */ /* { dg-final { scan-assembler-times "\{nf\} or" 1 } } */ +/* { dg-final { scan-assembler-times "\{nf\} rol" 4 } } */ #include "apx-ndd.c" @@ -13,3 +14,7 @@ foo (struct B *b) { b->bit0 = b->bit0 | b->bit1; } +long int f1 (int x) { return ~(1ULL << (x & 0x3f)); } long int f2 (int +x) { return ~(1ULL << x); } long int f3 (unsigned char *x) { return +~(1ULL << (x[0] & 0x3f)); } long int f4 (unsigned char *x) { return +~(1ULL << x[0]); }