From patchwork Wed May 15 07:44:16 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kong, Lingling" X-Patchwork-Id: 1935318 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=LD3KeN8u; 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 4VfQH348plz1ymw for ; Wed, 15 May 2024 17:44:47 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D2F733884506 for ; Wed, 15 May 2024 07:44:45 +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.11]) by sourceware.org (Postfix) with ESMTPS id 5C4FA388451F for ; Wed, 15 May 2024 07:44:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5C4FA388451F 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 5C4FA388451F Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.198.163.11 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1715759063; cv=pass; b=cqdoNH22D48BvaRrtLyA1HGyx1I1gM92IPZnWwIJx2ouz4YGRGz0HxAjvWCRNyjamAxDPslumUzR/PdkU+oaNmyn4lUJ9//cGcFxyDutSbPe0Y+dEmWCJKwvUcY23s1mRdVnryCTnaMYF/96V6z1q7ly9lerLFRXqL3209Hh/Fk= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1715759063; c=relaxed/simple; bh=LmngZ6tUw6ttddS/PCxs88fKqGAVCaGgt2VzdAxlBm8=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ERugkjN4daPTbMq0CgD4lzoXyvfefBhFr8jCbu2sng283JPJFRPXwDHWfHuoHfbVOxrC4nqVwODHf2FNODHJOzR0HJ8JZsk7lCkqH09seF13ofnWw6mYtSIirfj2QCYTFos5NMvAgaKg97tzRX77stJ3eoxqcYm3Z3InDiZCsdI= 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=1715759062; x=1747295062; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=LmngZ6tUw6ttddS/PCxs88fKqGAVCaGgt2VzdAxlBm8=; b=LD3KeN8uroJ2FmO5ysNmxKgY0cMLjMQdaLmmamnmfsgPOBXnwkY6HOgq cUZ8Ph+p3YhR/oASP2PIP4bk6at0PYhBJ/uBgg5/aBP0DXMmkKXWMBQr+ QOLxSOCdhx8V+PkJq1eZY4uWzUGxNFOONqdCpy1zdg8ubDdHeb45YDk1i yzaPv4xe7pJ5DluJ3YunoS8GImQ/Gfgs4Yi0K4Vmw+JCxdqDcV5u9ARu7 aELbkt04cdXK8rtxZcZKuCtX5IYQMx3FynMfwRMhLob5OjAkdmJtWINlZ e/2nwYeMiDTovlry9W1VfVYq3Zbz2YXwAECDkZRJ8xqg+UXTFpP3cdi3C g==; X-CSE-ConnectionGUID: UI5Slsx9SbqyYdLsdoId7w== X-CSE-MsgGUID: qLK2OFQATLunsj8T47QEtA== X-IronPort-AV: E=McAfee;i="6600,9927,11073"; a="22393321" X-IronPort-AV: E=Sophos;i="6.08,161,1712646000"; d="scan'208";a="22393321" Received: from orviesa009.jf.intel.com ([10.64.159.149]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2024 00:44:19 -0700 X-CSE-ConnectionGUID: kuzbxR4ESwWqQCL3Ngg43g== X-CSE-MsgGUID: sqp97EJCTyiYyg4DllsnoA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,161,1712646000"; d="scan'208";a="31076603" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orviesa009.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 15 May 2024 00:44:19 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 15 May 2024 00:44:18 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) 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, 15 May 2024 00:44:18 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Wed, 15 May 2024 00:44:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dLeW9648uvFLqkXizMxTsokVphQCmjxFy2IEY3xymPCR6g3n988qq5KMHlvLnJLAkUNzOVEp3Kyje2LQ6xFx9osH8N595rgs9FUsZtVcqTs+M2o8rmYUj+DqPimGj0uE7d9Ap4E9U2dDk1M2x9PpDIkOvM+cQTEmdR7g1JNT0FQ3Hpvb8h4pHRA/7lZRCoe8VNEVzMscp7ytgRBf97xwMgDwtNWJvPtJCSEQi70uxkt3SIbMIObOSrRB53d0ef+wLdKBlKwr4MjPoa8mDZ+X/e9Dav4/6R5cTcbi5FYe5SWLE7bwe9daq/U7dedjVubZSszfVGTbAsTJgRHPGhLmXA== 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=iRT+C2T+Zxum/PGev0fCNZpeYxPhK934qSqk+A2AD9Y=; b=iVem36iBjpsHxo1En/tu4qUYL9duMMn0qHKcx1K3JowBWxPyByO0yIBdWX/xzpzr3fPmeDts0pPksfawX5EVM72W9hVXIlwSlnhaU4LfF+n3k0YtdhoQ0sJYjKOBju67fLefYJ4fF7lMVsVVVqmPGPqoBRqLoBwyHdv+xnH4bMznsoK7t4HEbhEsiBahsTaOkY0wY6pZHnf86d60kT6g7DHXa89S/v5j/Ye8UvWKMotyTAXNAwztoR4oxMkwFplMfcwxlrSQm7/e3YfRgwfVIhBm1/Xss123/ojZDbzBA2ojxPtU31bRrG4KiO46mofWoZEatamusKEe6FD8FzWAug== 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 DM4PR11MB5487.namprd11.prod.outlook.com (2603:10b6:5:39f::22) by IA1PR11MB7944.namprd11.prod.outlook.com (2603:10b6:208:3d8::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Wed, 15 May 2024 07:44:16 +0000 Received: from DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6150:d792:f331:4e3f]) by DM4PR11MB5487.namprd11.prod.outlook.com ([fe80::6150:d792:f331:4e3f%5]) with mapi id 15.20.7587.026; Wed, 15 May 2024 07:44:16 +0000 From: "Kong, Lingling" To: "gcc-patches@gcc.gnu.org" CC: "Liu, Hongtao" , "Kong, Lingling" , Uros Bizjak Subject: [PATCH 2/8] [APX NF] Support APX NF for {sub/and/or/xor/neg} Thread-Topic: [PATCH 2/8] [APX NF] Support APX NF for {sub/and/or/xor/neg} Thread-Index: AQHappYp7ZPoY5lBdEi+dA21Mj4ttbGX6gJw Date: Wed, 15 May 2024 07:44:16 +0000 Message-ID: References: <20240515070226.3760873-1-lingling.kong@intel.com> <20240515070226.3760873-2-lingling.kong@intel.com> In-Reply-To: <20240515070226.3760873-2-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: DM4PR11MB5487:EE_|IA1PR11MB7944:EE_ x-ms-office365-filtering-correlation-id: fb63099d-bae7-4e29-27e4-08dc74b2d245 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230031|366007|1800799015|376005|38070700009; x-microsoft-antispam-message-info: FcDlPje3cGvvl/FXvSqjLlSajezkF3wrmOyMo24HFSkhbJG6YZ5e/uBUP2a3ucgTLQ5Sjn86CfBs94l2/GFsQV0M3ECCWzF9zUwbus92tpp8b9lMZccpFZ78T9Jzhb4kE8Pq7mBhv2VurhkHh82mv4zQrTFl6WRE1guOyyRBZDNmjMWJv6rPm4033TJV3OVWUgrmoADsExjFmufYULZNeY0uTOIx8EKUQGVruM+5RdVC/j6yqridrs8QnutadfZ6bYQj7VoyuAdxLdl9K5VcLi6ItxJtrrv+6ZYAJ8PA41W4urlGLsAg6ANrJwdAc0NJLWxEGIGtIjARMRlgggGYcluQQ93Um5PO6xSqYjNqQ1DeNF86qz/EK18r+U1dhydimWRl2ga5OcC8ZiiQnQEdjVeCZregz3+gO3tQ7AvP0mXLc5xuldP5si4CEe+j0geKYwPAa9l3a5A3Y7B2qTdpUAHNsQMRl1AcDIp+r44Alh6fDoWkU/fB77if0nsseby2NZO9Ig+NMYN04NidZyDotNOMf8CJ2yI9DjlqbK/rwuExuJn0E60S6XpV3SnasmhtmgKYkWKvQQTyAMbU1kNSYOy1fXfa4ST6EmlePJpxjt9yup8YEmBaD6t1ubHFEHj2lngxhG1aVSbU+PNVdjN1jimL48o0o89lmuA9lH/FgP08a/ddDiozPsEnHwFfqNT2M3U1YPbhjfpQ9L4kWKTvP+j3hti8xJr0EAd98pJKiBybh44YG4QUATEcsU72kZf7LMKEoFqAiLB65v6Bd6dlg0s5iKGz/GqYbD0N4c2JnJ/HndM4R9j4Y0ZRNQFfwmiXp7CXNz1SIL8MgdWMc5MIjInQ8WrxZilXHB5Mlj4wUv1J9a5lr2IwdP0ZDBGT7oYuD/tUvM9sbXbtm2SN8qhAYgzuQn5tih2mWxdNyi2MD0oePjsvc8WRECn7+z2oqdGH/kSxS6V+Vs9WlXQYeEQYjVCWYstPSCDVPqY8Qk/sQursHvbk9vSTTSUJQfCppx7mRymVWX6shwgbKGOgkT7s5vKyM1CpdcG7jNHtmHUR4Y3QUuHwtYuy/tPMsveLJ+ziq/bjW6TmiQHGuDWPvQx+lerWKUS9d/BJCAJR6FzQn2kxjRnetL2KfqUDXKO490/tyZsq9Y2bZ6tLdugSA/wFXyoRsJl99SHrPTu6myvlZ+ICi7qcOuN6QqdTFQKAoJgotGF+squTd5jzWK6prbZNLNKyU8WsNoowhY1GqeaB8kOQUFeW1g1WmVl9z2vbS3WYyZf93Kkol0bq2BwQ2IqAMw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR11MB5487.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366007)(1800799015)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: /XQulRXGEXzDL2q06m9fpZ12fBQCfGahpQGiHq8GmYQyPCD9G5+0UJ+usQ8y24IaIRDT2QRyo44IbKlnb/OpQvU8XiST6gebEg6r1LhuGEY2g38UDzfkvV8ZiZvTojD1xY/qAl3FRZM6hoHF1oCha4q8Vp41vlxAXi7L8L6PaDTYli3gTmr8f1hxxb58YlR+ujvSA4E5wkHR+IQe+9ovFP4RbTxjlHMR8dw0ZJM30Mle6sMT6JoovN3oxHtr0w+cFSp/Wvefgwe0Y5HmdmkZWmdJS+g5MtcCh5dnTx5gEGxvHX2lhrBDmzLK6qYaWWM7WZykf8XvouA+Aq2fgmLGGD55Nbb3l3iwVyys5sL5sCJ6OABLZtb0cRsaaZUyxOYb+roDoIBhNSdmklP9oSMy7RXsPNpTpOtIaIkOBa2v7VMakDBYHcetLXpXFN+GuwNylbdLGGAutUxVod2caJmWopbhuZ7or+ovOHDpBsuupiM3QCwW5O+XRuEtPo8qacX0W9kkC9PCqyE7G7yzMzl/iIo9qG5YpZtCC2QWeekT8tSE9qBiF51s4jg/rza0mq5uQZzM+y0Mn2lj6HMUKshJXKdyN8eXiZtNMS551/Kc4gv8XrDYoaJ3zgoRMCygh8CGVpO5z4+s/3dDjGwA8MSfE9eOXylR/HNRpB+CRCaqRBpScN0JaAdhamH/w+GKKDt1EzPINQnNUZiQJvDUtgZ+Gf+BLcRMjSYq/CeETKhj+6SNIuvxenwrAPGfadDPary7dVfOAmvoWj/tYhDHjX28bHrZd2s36kzLyMjD2ywV+DUHXdMxiHWWtE7WX3qzqH8pcVAl8YN3MZ5PKbaaNW8FYi16trABbvEDcujnHb8TQJ8xCoDJMFBWMZI+yyc/LMlXVMr7MmZliuygFCbq4w3VXpTC0ZIj0bIWAZ7a/HY1oCNZ3z0JUZEgAIXkzWXtd5apgofzKUVXtmqstW+sIGZQuYxC8OBMGFz0xB+YayuwBjLu0Tqe9C2BbxqQFheknbOjbGd/xqezPxDaMUQyMsfCBTMl5jXIiOgCpczTEscbKe/tosPx70An42rQZDxp9+qIG4302IoT0XJ/SEuGviTbXVmO7rT5CHEpMGPl+AoVur9z1fJBvDX4ig1/lfq8LNXZS75upoaW0lc/e3V0JtxqfdGlyDqYH/Xe0U9ZLAElimUANJ2jV5KnJUsWtzM6AMK7+QxXprM+VZQPXXIdQWR9oCvcfZ/pYyWM0brap5G6t3Ey5STDlsppWPaH5T4arEGyW1+7Ty9Tej3JWXVTWx3jPvdwzSMRJz21sXq6ALe0e70JLimrt11xem0q2ymbMcblHGhv3z65ePTzH53pGGEzGfgcnyL9UYZFm/Sc7kXONsIkXmG+PZDZPbQbn3boQJqR72/edrkrHeu7d8V7nXEt9jDCk+OE3yCcJMvPJdVdT2KsA+3w+aDkXkof7QdyyWGrVXJW51ObadBmodXwCHPHkOX8uCG0ydOiE71zjS3xNt3URHX7Vh3kT8Dx0FcQk/0y0cOGJG1Ucw2q3GoKKEmHuB63onXIa3oizuZ0BHBxRU2SPLB5B6ZDWlZBFPyRAKEH MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5487.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb63099d-bae7-4e29-27e4-08dc74b2d245 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 May 2024 07:44:16.0471 (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: 4KG43ToLQurxwAtYoB1GpjfoCRViNUmECQx/Hr5GLbfWz7qFX59ETOBImFdtni1o3TbhOhI6gApEuTUc4wNPww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB7944 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-13.6 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 (*sub_1_nf): New define_insn. (*anddi_1_nf): Ditto. (*and_1_nf): Ditto. (*qi_1_nf): Ditto. (*_1_nf): Ditto. (*neg_1_nf): Ditto. * config/i386/sse.md : New define_split. gcc/testsuite/ChangeLog: * gcc.target/i386/apx-nf.c: Add test. --- gcc/config/i386/i386.md | 129 +++++++++++++++++++++++++ gcc/config/i386/sse.md | 11 +++ gcc/testsuite/gcc.target/i386/apx-nf.c | 9 ++ 3 files changed, 149 insertions(+) -- 2.31.1 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 4a9e35c4990..66dc5e1035f 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -7888,6 +7888,24 @@ "split_double_mode (mode, &operands[0], 2, &operands[0], &operands[3]);" [(set_attr "isa" "*,*,apx_ndd,apx_ndd")]) +(define_insn "*sub_1_nf" + [(set (match_operand:SWI 0 "nonimmediate_operand" "=m,rjM,,r,r,r") + (minus:SWI + (match_operand:SWI 1 "nonimmediate_operand" "0,0,0,rm,rjM,r") + (match_operand:SWI 2 "" ",,,r,,")))] + "TARGET_APX_NF && + ix86_binary_operator_ok (MINUS, mode, operands, TARGET_APX_NDD)" + "@ + %{nf%} sub{}\t{%2, %0|%0, %2} + %{nf%} sub{}\t{%2, %0|%0, %2} + %{nf%} sub{}\t{%2, %0|%0, %2} + %{nf%} sub{}\t{%2, %1, %0|%0, %1, %2} + %{nf%} sub{}\t{%2, %1, %0|%0, %1, %2} + %{nf%} sub{}\t{%2, %1, %0|%0, %1, %2}" + [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd") + (set_attr "type" "alu") + (set_attr "mode" "")]) + (define_insn "*sub_1" [(set (match_operand:SWI 0 "nonimmediate_operand" "=m,,r,r,r") (minus:SWI @@ -11790,6 +11808,27 @@ } [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")]) +(define_insn "*anddi_1_nf" + [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm,rjM,r,r,r,r,?k") + (and:DI + (match_operand:DI 1 "nonimmediate_operand" "%0,r,0,0,0,rm,rjM,r,k") + (match_operand:DI 2 "x86_64_szext_general_operand" +"Z,Z,r,e,m,r,e,m,k")))] + "TARGET_APX_NF + && ix86_binary_operator_ok (AND, DImode, operands, TARGET_APX_NDD)" + "@ + %{nf%} and{l}\t{%k2, %k0|%k0, %k2} + %{nf%} and{l}\t{%k2, %k1, %k0|%k0, %k1, %k2} + %{nf%} and{q}\t{%2, %0|%0, %2} + %{nf%} and{q}\t{%2, %0|%0, %2} + %{nf%} and{q}\t{%2, %0|%0, %2} + %{nf%} and{q}\t{%2, %1, %0|%0, %1, %2} + %{nf%} and{q}\t{%2, %1, %0|%0, %1, %2} + %{nf%} and{q}\t{%2, %1, %0|%0, %1, %2} + #" + [(set_attr "isa" "*,apx_ndd,*,*,*,apx_ndd,apx_ndd,apx_ndd,avx512bw") + (set_attr "type" "alu,alu,alu,alu,alu,alu,alu,alu,msklog") + (set_attr "mode" "SI,SI,DI,DI,DI,DI,DI,DI,DI")]) + (define_insn "*anddi_1" [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,rm,r,r,r,r,r,?k") (and:DI @@ -11889,6 +11928,33 @@ (set_attr "isa" "*,apx_ndd,apx_ndd,apx_ndd") (set_attr "mode" "SI")]) +(define_insn "*and_1_nf" + [(set (match_operand:SWI24 0 "nonimmediate_operand" "=rm,rjM,r,r,r,r,?k") + (and:SWI24 (match_operand:SWI24 1 "nonimmediate_operand" "%0,0,0,rm,rjM,r,k") + (match_operand:SWI24 2 "" +"r,,,r,,,k")))] + "TARGET_APX_NF && + ix86_binary_operator_ok (AND, mode, operands, TARGET_APX_NDD)" + "@ + %{nf%} and{}\t{%2, %0|%0, %2} + %{nf%} and{}\t{%2, %0|%0, %2} + %{nf%} and{}\t{%2, %0|%0, %2} + %{nf%} and{}\t{%2, %1, %0|%0, %1, %2} + %{nf%} and{}\t{%2, %1, %0|%0, %1, %2} + %{nf%} and{}\t{%2, %1, %0|%0, %1, %2} + #" + [(set (attr "isa") + (cond [(eq_attr "alternative" "3,4,5") + (const_string "apx_ndd") + (eq_attr "alternative" "6") + (if_then_else (eq_attr "mode" "SI") + (const_string "avx512bw") + (const_string "avx512f")) + ] + (const_string "*"))) + (set_attr "type" "alu,alu,alu,alu,alu,alu,msklog") + (set_attr "type" "alu") + (set_attr "mode" "")]) + (define_insn "*and_1" [(set (match_operand:SWI24 0 "nonimmediate_operand" "=rm,r,r,r,r,Ya,?k") (and:SWI24 (match_operand:SWI24 1 "nonimmediate_operand" "%0,0,rm,rjM,r,qm,k") @@ -11923,6 +11989,37 @@ (const_string "*"))) (set_attr "mode" ",,,,,SI,")]) +;; NF for and,or,xor + +(define_insn "*qi_1_nf" + [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,?k") + (any_logic:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,rm,r,k") + (match_operand:QI 2 "general_operand" "qn,m,rn,rn,m,k")))] + "TARGET_APX_NF && + ix86_binary_operator_ok (, QImode, operands, TARGET_APX_NDD)" + "@ + %{nf%} {b}\t{%2, %0|%0, %2} + %{nf%} {b}\t{%2, %0|%0, %2} + %{nf%} {l}\t{%k2, %k0|%k0, %k2} + %{nf%} {b}\t{%2, %1, %0|%0, %1, %2} + %{nf%} {b}\t{%2, %1, %0|%0, %1, %2} + #" + [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,avx512f") + (set_attr "type" "alu,alu,alu,alu,alu,msklog") + (set (attr "mode") + (cond [(eq_attr "alternative" "2") + (const_string "SI") + (and (eq_attr "alternative" "5") + (match_test "!TARGET_AVX512DQ")) + (const_string "HI") + ] + (const_string "QI"))) + ;; Potential partial reg stall on alternative 2. + (set (attr "preferred_for_speed") + (cond [(eq_attr "alternative" "2") + (symbol_ref "!TARGET_PARTIAL_REG_STALL")] + (symbol_ref "true")))]) + (define_insn "*andqi_1" [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,r,r,?k") (and:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,rm,r,k") @@ -12797,6 +12894,26 @@ } [(set_attr "isa" "*,*,apx_ndd,apx_ndd,apx_ndd,apx_ndd_64,apx_ndd")]) +;; or xor +(define_insn "*_1_nf" + [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,rjM,r,r,r,r,?k") + (any_or:SWI248 + (match_operand:SWI248 1 "nonimmediate_operand" "0,0,0,rm,rjM,r,k") + (match_operand:SWI248 2 "" +"r,,,r,,,k")))] + "TARGET_APX_NF && + ix86_binary_operator_ok (, mode, operands, TARGET_APX_NDD)" + "@ + %{nf%} {}\t{%2, %0|%0, %2} + %{nf%} {}\t{%2, %0|%0, %2} + %{nf%} {}\t{%2, %0|%0, %2} + %{nf%} {}\t{%2, %1, %0|%0, %1, %2} + %{nf%} {}\t{%2, %1, %0|%0, %1, %2} + %{nf%} {}\t{%2, %1, %0|%0, %1, %2} + #" + [(set_attr "isa" "*,*,*,apx_ndd,apx_ndd,apx_ndd,") + (set_attr "type" "alu,alu, alu, alu, alu, alu, msklog") + (set_attr "mode" "")]) + (define_insn "*_1" [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,r,r,r,?k") (any_or:SWI248 @@ -13529,6 +13646,18 @@ (const_int 0))) (clobber (reg:CC FLAGS_REG))])]) +(define_insn "*neg_1_nf" + [(set (match_operand:SWI 0 "nonimmediate_operand" "=rm,r") + (neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm")))] + "TARGET_APX_NF && + ix86_unary_operator_ok (NEG, mode, operands, TARGET_APX_NDD)" + "@ + %{nf%} neg{}\t%0 + %{nf%} neg{}\t{%1, %0|%0, %1}" + [(set_attr "type" "negnot") + (set_attr "isa" "*,apx_ndd") + (set_attr "mode" "")]) + (define_insn "*neg_1" [(set (match_operand:SWI 0 "nonimmediate_operand" "=m,r") (neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0,rm"))) diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index f57f36ae380..72d4556f47d 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2005,6 +2005,17 @@ ] (const_string "")))]) +(define_split + [(set (match_operand:SWI1248_AVX512BW 0 "mask_reg_operand") + (any_logic:SWI1248_AVX512BW + (match_operand:SWI1248_AVX512BW 1 "mask_reg_operand") + (match_operand:SWI1248_AVX512BW 2 "mask_reg_operand")))] + "TARGET_AVX512F && reload_completed" + [(parallel + [(set (match_dup 0) + (any_logic:SWI1248_AVX512BW (match_dup 1) (match_dup 2))) + (unspec [(const_int 0)] UNSPEC_MASKOP)])]) + (define_split [(set (match_operand:SWI1248_AVX512BW 0 "mask_reg_operand") (any_logic:SWI1248_AVX512BW diff --git a/gcc/testsuite/gcc.target/i386/apx-nf.c b/gcc/testsuite/gcc.target/i386/apx-nf.c index 3adc7a27902..608dbf8f5f7 100644 --- a/gcc/testsuite/gcc.target/i386/apx-nf.c +++ b/gcc/testsuite/gcc.target/i386/apx-nf.c @@ -1,6 +1,15 @@ /* { dg-do compile { target { ! ia32 } } } */ /* { dg-options "-mapx-features=egpr,push2pop2,ndd,ppx,nf -march=x86-64 -O2" } */ /* { dg-final { scan-assembler-times "\{nf\} add" 4 } } */ +/* { dg-final { scan-assembler-times "\{nf\} and" 1 } } */ +/* { dg-final { scan-assembler-times "\{nf\} or" 1 } } */ #include "apx-ndd.c" +struct B { unsigned bit0 : 1; unsigned bit1 : 1; }; + +void +foo (struct B *b) +{ + b->bit0 = b->bit0 | b->bit1; +}