From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by sourceware.org (Postfix) with ESMTPS id 4B30D384F4BC for ; Wed, 22 May 2024 08:43:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B30D384F4BC 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 4B30D384F4BC Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.198.163.14 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716367412; cv=pass; b=VQwBgLaTERnAzK8xYLfZYR3yyLH6y9WHpL2t1V3qadlwQyqZsHZOAc/RRA8hMuUOB8n3G9CEHWoQQ/v7nmod6MEczEen+BYZlWoRMpr9fS9rFgElyF53H0nUYpG3QpmuIR5lhijbTkcTT0W/IcaBWOjU/5CkeSfVu9Jpcpn+02Q= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716367412; c=relaxed/simple; bh=AlOhkHQHVnAmbi2ItMdM6fJJe6q1xHQ3/7pp/qNUCJY=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=iViqz2S248/CufeUwRvsgKA5aujmyyh8ebLm55cnJpvyC5NnvEPxzSncoKQovuhkjA7lYna78QWujXl8XYKhlnd27TzXiWc3lh4dSSs69jPQHf+OzSIZouWOCibO463xuCawPh69zs2d0MnYVBX/nkcF20iDk/HoeSV/joiznWg= 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=1716367408; x=1747903408; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=AlOhkHQHVnAmbi2ItMdM6fJJe6q1xHQ3/7pp/qNUCJY=; b=F8zHutdMmISXzDTT9DlO10WI0ChZDm6Kx63jnbpEhCRtcbR3rUhP87nu XVjG761WIo1nq9RqoaGxHAM68tU0M5csi2msrpIjM5uTqn3O1KadhdQEW 85ngpP/tiufU+qAJfT0kXs6IHCRquRkdDHkoOx/goNUqm2PaTwiuASlz5 LX0EHbJySRo9d4VuVps3qL/7aNN4FJxSsUjohlduvDBKzjNoG6lELvy4G UM8F9XsDh7dG/6OQgh71iaUu2p/gC7+vO3orKDgVAd73G8MUbrpivd+QH yNOmY+b1nTMHdoG4BVjRNJzvO/nzd6glSiRjM3q/BLXOJBvByWR3tjoW9 w==; X-CSE-ConnectionGUID: 21TzcidlR6Cu0RCZCkvcRg== X-CSE-MsgGUID: ga5MKcKaS4SpYRWyJVpljg== X-IronPort-AV: E=McAfee;i="6600,9927,11079"; a="12832457" X-IronPort-AV: E=Sophos;i="6.08,179,1712646000"; d="scan'208";a="12832457" Received: from fmviesa003.fm.intel.com ([10.60.135.143]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2024 01:43:27 -0700 X-CSE-ConnectionGUID: FpeBTOhtQXK4MVUKcYigag== X-CSE-MsgGUID: rkwFJl2NS7iDrQTXVkaMOg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,179,1712646000"; d="scan'208";a="37694844" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmviesa003.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 22 May 2024 01:43:27 -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.39; Wed, 22 May 2024 01:43:26 -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, 22 May 2024 01:43:26 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) 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.39; Wed, 22 May 2024 01:43:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BpPgQpCIpAcSIooDQSyBqW0p5P+IZ4fLrIC/rayLiH6N6J6jqD2MQp+KIZCHF575ImxJ2WvE5VHjMBvX7qNV4GaoD0yCk30E3WXyDY8QGFhOmuaJqIaCWUdT3Cn0pz+MC3UsATGDaVGRYmL2IK9f7Mx7DYmojDZsCRF3T1Caip4LiBOGBeLVYq+p+d0NRHeSY5E0yvK7GPQel7CbygwPXi9h0Cuqz+kLg2ZHQK9ONYAgjXTxQ17xXg653oB9uqYB58gZOC5Z1WckSuHeF5Vxa3W6nHgSiqIY/76suiiktupOENbMOd+yv1I5l/yKlOrkK4JXuQoEBK7MJHfyD/2ERQ== 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=m8l4vSlRLAq//WYl2rEHJ/cznA2HEv+DPPpKhiC9HVQ=; b=hl74SEAG5fLJfZvz97xic15XoRZQbY+Y152AVIjgw+TeD3rD4aP0fiJGMxc1ywsUOoza7g3y5aWFZ9f1jYAEga1FTMhof65dW5IMkjwBGgCHp4QqZLV0GfYW/ojyZrTcnIbehcK3Z0AGSp0bk7CxzYDHkwQN0GP5VgoP+Y2jd+8FotBxbm4/fWfGjm/DuxHyQRyJdEqKF34cIu05wKGtbRSTFU4wMN9VFgahv8Av5B9qZBBnw8G87j/M7YULz+abBusJGKs4DWffcsuYv8FF5vz8TEaUkMnyOCvymFHv4a/f8wRXD3gE8yfzMD3YWk9QM8y77iwsc8u84qCOq9SrVg== 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:43:24 +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:43:23 +0000 From: "Kong, Lingling" To: "gcc-patches@gcc.gnu.org" CC: "Liu, Hongtao" , "Kong, Lingling" , Uros Bizjak Subject: [PATCH v2 6/8] [APX NF] Support APX NF for shld/shrd Thread-Topic: [PATCH v2 6/8] [APX NF] Support APX NF for shld/shrd Thread-Index: AQHarBsxoEqPzpstJEajt7Re0C6LsbGi78iw Date: Wed, 22 May 2024 08:43:23 +0000 Message-ID: References: <20240522073710.2039035-1-lingling.kong@intel.com> <20240522073710.2039035-6-lingling.kong@intel.com> In-Reply-To: <20240522073710.2039035-6-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: 67bc064c-7c18-4190-8476-08dc7a3b3dc3 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: =?us-ascii?Q?iWh52CkzAFgvqQH1Nij/voXXIpCxGL46GOA/wVqUV1vuDBxJO4QRjPuNZ/Xg?= =?us-ascii?Q?CX2Z2HOB4lS8k+Jqu28ekixK5RUuSToTPs73Sug6/lR1v7Owez8zZeAlwUjB?= =?us-ascii?Q?fgUNVVp2pD1a9mZRKgKicjyiUOAeWHEP8iidb7WP42Kc6xK/50YRuFhefpRv?= =?us-ascii?Q?lwDRK/PBf8GHhhtSbWgTZFHQvJlAX3Vfrei5GpvlWsnZmI61l+noWQxyzf3C?= =?us-ascii?Q?Y2vSb8hR+o8v3G0JB1eZVuuhGkR/2cP98PR8tLC2R7hTOOZhWpW9IfqqFmVm?= =?us-ascii?Q?09wm/OxU1UxAWDDgaCju4LdHY1htkfaSC0xyv/35XjVjuiB77yiWZckw3IUL?= =?us-ascii?Q?SfRx1spHrk271q5xHsgzK7Ay47qsSGaslLiNAm3C60QKZ8KTE7Enx5ChuLf4?= =?us-ascii?Q?WpKgfogtcF1xwvJPl59tAfwo6QHWHRcS/qukl/ccrjw0X2hxOQ+v+rAKX5+l?= =?us-ascii?Q?7KqmxGzGuVFMoKFzBYZlUKJzo6HCxPnb5s0wxTknRONIZ/fuatV7VLBybHy5?= =?us-ascii?Q?lEJoCeiRU7irVHwDNcuOmulwT6EmQPPA2iJQHlkDuKbp61sjgqQ0GvH5SMwn?= =?us-ascii?Q?yKNJ7+1cCN8jlI/AKIu4N+bemFoB800+JhVlQMy/0ruSbclOWfbo/8Yd877F?= =?us-ascii?Q?qmE8aAKQ9gD4Zr0j+8ZDnBdXUimdS/XVlt2Dx7/zAZgs3NS1KzjAPQkMQCmM?= =?us-ascii?Q?qZhgXC08E+c/SCaBtCWnP7KcmAv93s8mnvRyTJkeO7rBajh6n8aA7gxM7Cea?= =?us-ascii?Q?y1ImvjwdUDIBUaEoyN0pckcvMvupsdLaLNQ9hpKxhXz2OOHjDsDXgQ1MIuuE?= =?us-ascii?Q?oc5iNsuqUNckNPeRCHRJTXOrwdv8QNqG1yRtCU+U3MtlkKLHBc9qRA4c1FOQ?= =?us-ascii?Q?eFe0osEkUkFLGsGuL5MRpsOMD6UQ5GiirRYJ4YdEvxDMlX8YGuqNGATJOevG?= =?us-ascii?Q?65MWphXamGDygziSmtfxBWoNul7RRnexVeSMpHZkwANzwP9adwKrZkatOIyg?= =?us-ascii?Q?IMwoCK3wb/6Imo+kwOrCeW9vt3CRPAvsQDLed3LMK1vFSc4ucVSTQTjcW9KR?= =?us-ascii?Q?S3kQwS3Nwv5Lik2fn/dZ1XsPg155ksDd7qh022FJ1UCnAPbHk6Eh3b4aoUZI?= =?us-ascii?Q?GE9W439LYUvxJindH9iDZKl4SqGHFHxLgY8eeYIfUo4tWbOrAc1P9t36ckQz?= =?us-ascii?Q?AXk0xVKW6PxqBiDTu6gfwFqNFLaA6igAcV4O4D9NeTrzBU7kM5fD+vhlSneI?= =?us-ascii?Q?LUSd8ancWb+f9txF8EHiC/p7QzBjvS1/CXBP6LA1ltT5+3DujnbYVfialfAh?= =?us-ascii?Q?w+nlFjvFcO+HLQ7nkU+WLdWGvWD1Xa1INDxpx6Sff1Z15Q=3D=3D?= 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: =?us-ascii?Q?36PQ9B/+IvXPJ6F08WSsT9wFsooNY0m2CtKvRPE/sbspTeqzqCpstXweqnsm?= =?us-ascii?Q?NQgRAOy8OQoEDFZIHF6NYlGDAKdOMnEKI30cHWVlZlS+AwFVC8l0kFXlRJFJ?= =?us-ascii?Q?drEPqB8Qna4Y9hybWk3rwz687s76cuCLnaqnSdc8xut3wZKoakFOxN6OxYPK?= =?us-ascii?Q?VIMnp6EX9fzu95jL4pYXxsCWaERLliReBWf2hoXgNmEulQSVe3pqRH4CLYTo?= =?us-ascii?Q?ciwoKhLvYqa8gRIlXtExEQaxIZapa5Gx7hmyEtDAqxFaPZLWvrdNfFi/llxo?= =?us-ascii?Q?ABAGT6don8mbnWuGIpzLEK1lDTPXraQIX+vAqtUd13pf1e4IX4X6OQjCTJKU?= =?us-ascii?Q?XdgeERtSw5j6AgS0bhdz54HHamw62VxsfNkR20IcE3NHooyrMPwJcDFgxMKm?= =?us-ascii?Q?V+2qlSZbJhv8dBUVeiypWB2/QKBfUtjwoUiOmbHgIoKoaI3y2GLlirmA/nVi?= =?us-ascii?Q?SeqSTVwX5YvD/XUbpR+r9aT6K5sha09UTu7SKt75QNRuQb+y4IQmrYmdaPS3?= =?us-ascii?Q?vX1t4wqZmxpeCENEDDV+PmUkItGuzqbvvdZkOp0jeL0ohzELmY7i5km8CymE?= =?us-ascii?Q?3rsG4XQnsh34kEUy1w21OjRTPuyI6JiSPsskPKk4kB+qvBbHaUKT5LWG/O9E?= =?us-ascii?Q?tNAajGEe9nPXnnqoLIfDKLQ4U/lT/+SiyAARZmu/9KfU8oCDoFSE43vEOepY?= =?us-ascii?Q?oekiJu+9q8AnY2IRACNxP9/ZcRtlGmVuBgCrPOc0PktncONpYJ47zLxetNeq?= =?us-ascii?Q?Oel6BAgNK1WFVwh35h5q/3s+5yn8+Tb4sDA5FS0gqfKMLnKaqYFzgwILCZCh?= =?us-ascii?Q?t9mb073pLCkGjejjxb1IgFEDueCUBHXboKtMmcoBogPWOfwc6ebrNOJPgv9I?= =?us-ascii?Q?3a7RzdntxXMR4SVhRwjUzS1w5F08HKA1Y6phTqFQ6D7zdBDQlLlna8FISyui?= =?us-ascii?Q?EjWx2U+w8lhWgH7vkUovGitT1wzgilPZB0hHj+15NO04GG6wKoWBiFh1gJd3?= =?us-ascii?Q?/DYEts3t+q+1wNDHmeBXzqCpvWhX/IAWTbSATqtcNvfMa9Dou31JCrT/6Se2?= =?us-ascii?Q?8uGnZnRRjEPco2fGW4HrE/KPv2oLqXN9kJa2bIaFbuBap0zVFJJXb8YmOpT0?= =?us-ascii?Q?PKIeYDL+P+d1VWL+2Wm4AF9iPirlYYcFBK1VsqMJnANlnGuh4IIxuEYVtQPF?= =?us-ascii?Q?p7VU4nwZ2X+hecLqYN4jZ5shVO+dYxHLhqMHtQs7WdAdW3XHbQ1cg2OdyISo?= =?us-ascii?Q?UTqm0ch/qsePZfrS2zIiuFGmelqr0mmWtJpXUcPPjpSQO+dfKX/rU1MlsGMB?= =?us-ascii?Q?M0zj4gdMgJSYTeTdQ4br3FWuE2UGvLDnlP59kg8B5FdE+bTB+EtOwVzJfo+w?= =?us-ascii?Q?pvncWgfY3HvP8gJ0wxEvMbRO5PnJuN0mnYp5pAOUFDwSTLysA/QowKxODews?= =?us-ascii?Q?Wn8qBEYrnm/J9Ffxh0sBh1NDLNX9DjpOEg9dbFfPiCJZh6eW19NSvou7hsM+?= =?us-ascii?Q?bl7z2Ug5SwoZMKNnLF9xv5wvp2YEzoL6a9mAgcaVeGrb6OIosjFOVj4bRbEK?= =?us-ascii?Q?Q/6dbDfbnjqRHcquU0cmVvuZcDfHq9TS9TqhiNHL?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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: 67bc064c-7c18-4190-8476-08dc7a3b3dc3 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2024 08:43:23.7325 (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: YzjldI57zYRzFVIaHrajfIn0mlpGwTjawoYRAkegpanKVnvrhOa+5DRaNVNj2TnXeXRKLdxH4Nkx2HKzmPIXNw== 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,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 List-Id: gcc/ChangeLog: * config/i386/i386.md (x86_64_shld_nf): New define_insn. (x86_64_shld_ndd_nf): Ditto. (x86_64_shld_1_nf): Ditto. (x86_64_shld_ndd_1_nf): Ditto. (*x86_64_shld_shrd_1_nozext_nf): Ditto. (x86_shld_nf): Ditto. (x86_shld_ndd_nf): Ditto. (x86_shld_1_nf): Ditto. (x86_shld_ndd_1_nf): Ditto. (*x86_shld_shrd_1_nozext_nf): Ditto. (3_doubleword_lowpart_nf): Ditto. (x86_64_shrd_nf): Ditto. (x86_64_shrd_ndd_nf): Ditto. (x86_64_shrd_1_nf): Ditto. (x86_64_shrd_ndd_1_nf): Ditto. (*x86_64_shrd_shld_1_nozext_nf): Ditto. (x86_shrd_nf): Ditto. (x86_shrd_ndd_nf): Ditto. (x86_shrd_1_nf): Ditto. (x86_shrd_ndd_1_nf): Ditto. (*x86_shrd_shld_1_nozext_nf): Ditto. --- gcc/config/i386/i386.md | 377 +++++++++++++++++++++++++++++++--------- 1 file changed, 296 insertions(+), 81 deletions(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 731eb1= 2d13a..4d684e8d919 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -14552,7 +14552,7 @@ DONE; }) =20 -(define_insn "x86_64_shld" +(define_insn "x86_64_shld" [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m") (ior:DI (ashift:DI (match_dup 0) (and:QI (match_operand:QI 2 "nonmemory_operand" "Jc") @@ -14562,10 +14= 562,9 @@ (zero_extend:TI (match_operand:DI 1 "register_operand" "r")) (minus:QI (const_int 64) - (and:QI (match_dup 2) (const_int 63)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "TARGET_64BIT" - "shld{q}\t{%2, %1, %0|%0, %1, %2}" + (and:QI (match_dup 2) (const_int 63)))) 0)))] + "TARGET_64BIT && " + "shld{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "DI") @@ -14573,7 +14572,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_64_shld_ndd" +(define_insn "x86_64_shld_ndd" [(set (match_operand:DI 0 "register_operand" "=3Dr") (ior:DI (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "rm"= ) (and:QI (match_operand:QI 3 "nonmemory_operand" "Jc") @@ -14583,14 +14= 582,13 @@ (zero_extend:TI (match_operand:DI 2 "register_operand" "r")) (minus:QI (const_int 64) - (and:QI (match_dup 3) (const_int 63)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "TARGET_APX_NDD" - "shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + (and:QI (match_dup 3) (const_int 63)))) 0)))] + "TARGET_APX_NDD && " + "shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "DI")]) =20 -(define_insn "x86_64_shld_1" +(define_insn "x86_64_shld_1" [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m") (ior:DI (ashift:DI (match_dup 0) (match_operand:QI 2 "const_0_to_63_operand")) @@ -14598,11 +14596,11= @@ (lshiftrt:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r")) - (match_operand:QI 3 "const_0_to_255_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 3 "const_0_to_255_operand")) 0)))] "TARGET_64BIT - && INTVAL (operands[3]) =3D=3D 64 - INTVAL (operands[2])" - "shld{q}\t{%2, %1, %0|%0, %1, %2}" + && INTVAL (operands[3]) =3D=3D 64 - INTVAL (operands[2]) + && " + "shld{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "DI") @@ -14611,7 +14609,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_64_shld_ndd_1" +(define_insn "x86_64_shld_ndd_1" [(set (match_operand:DI 0 "register_operand" "=3Dr") (ior:DI (ashift:DI (match_operand:DI 1 "nonimmediate_operand" "rm"= ) (match_operand:QI 3 "const_0_to_63_operand")) @@ -14619,15 +14617,66= @@ (lshiftrt:TI (zero_extend:TI (match_operand:DI 2 "register_operand" "r")) - (match_operand:QI 4 "const_0_to_255_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 4 "const_0_to_255_operand")) 0)))] "TARGET_APX_NDD - && INTVAL (operands[4]) =3D=3D 64 - INTVAL (operands[3])" - "shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + && INTVAL (operands[4]) =3D=3D 64 - INTVAL (operands[3]) + && " + "shld{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "DI") (set_attr "length_immediate" "1")]) =20 +(define_insn_and_split "*x86_64_shld_shrd_1_nozext_nf" + [(set (match_operand:DI 0 "nonimmediate_operand") + (ior:DI (ashift:DI (match_operand:DI 4 "nonimmediate_operand") + (match_operand:QI 2 "const_0_to_63_operand")) + (lshiftrt:DI + (match_operand:DI 1 "nonimmediate_operand") + (match_operand:QI 3 "const_0_to_63_operand"))))] + "TARGET_64BIT && TARGET_APX_NF + && INTVAL (operands[3]) =3D=3D 64 - INTVAL (operands[2]) + && ix86_pre_reload_split ()" + "#" + "&& 1" + [(const_int 0)] +{ + if (rtx_equal_p (operands[4], operands[0])) + { + operands[1] =3D force_reg (DImode, operands[1]); + emit_insn (gen_x86_64_shld_1_nf (operands[0], operands[1], operands[= 2], operands[3])); + } + else if (rtx_equal_p (operands[1], operands[0])) + { + operands[4] =3D force_reg (DImode, operands[4]); + emit_insn (gen_x86_64_shrd_1_nf (operands[0], operands[4], operands[= 3], operands[2])); + } + else if (TARGET_APX_NDD) + { + rtx tmp =3D gen_reg_rtx (DImode); + if (MEM_P (operands[4])) + { + operands[1] =3D force_reg (DImode, operands[1]); + emit_insn (gen_x86_64_shld_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + } + else if (MEM_P (operands[1])) + emit_insn (gen_x86_64_shrd_ndd_1_nf (tmp, operands[1], operands[4], + operands[3], operands[2])); + else + emit_insn (gen_x86_64_shld_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + emit_move_insn (operands[0], tmp); + } + else + { + operands[1] =3D force_reg (DImode, operands[1]); + rtx tmp =3D gen_reg_rtx (DImode); + emit_move_insn (tmp, operands[4]); + emit_insn (gen_x86_64_shld_1_nf (tmp, operands[1], operands[2], opera= nds[3])); + emit_move_insn (operands[0], tmp); + } + DONE; +}) =20 (define_insn_and_split "*x86_64_shld_shrd_1_nozext" [(set (match_operand:DI 0 "nonimmediate_operand") @@ -14730,7 +14779,7 @= @ emit_move_insn (operands[4], operands[0]); }) =20 -(define_insn "x86_shld" +(define_insn "x86_shld" [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m") (ior:SI (ashift:SI (match_dup 0) (and:QI (match_operand:QI 2 "nonmemory_operand" "Ic") @@ -14740,10 +14= 789,9 @@ (zero_extend:DI (match_operand:SI 1 "register_operand" "r")) (minus:QI (const_int 32) - (and:QI (match_dup 2) (const_int 31)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "" - "shld{l}\t{%2, %1, %0|%0, %1, %2}" + (and:QI (match_dup 2) (const_int 31)))) 0)))] + "" + "shld{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "SI") @@ -14752,7 +14800,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_shld_ndd" +(define_insn "x86_shld_ndd" [(set (match_operand:SI 0 "nonimmediate_operand" "=3Dr") (ior:SI (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "rm"= ) (and:QI (match_operand:QI 3 "nonmemory_operand" "Ic") @@ -14762,15 +14= 810,14 @@ (zero_extend:DI (match_operand:SI 2 "register_operand" "r")) (minus:QI (const_int 32) - (and:QI (match_dup 3) (const_int 31)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "TARGET_APX_NDD" - "shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + (and:QI (match_dup 3) (const_int 31)))) 0)))] + "TARGET_APX_NDD && " + "shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "SI")]) =20 =20 -(define_insn "x86_shld_1" +(define_insn "x86_shld_1" [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m") (ior:SI (ashift:SI (match_dup 0) (match_operand:QI 2 "const_0_to_31_operand")) @@ -14778,10 +14825,10= @@ (lshiftrt:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r")) - (match_operand:QI 3 "const_0_to_63_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] - "INTVAL (operands[3]) =3D=3D 32 - INTVAL (operands[2])" - "shld{l}\t{%2, %1, %0|%0, %1, %2}" + (match_operand:QI 3 "const_0_to_63_operand")) 0)))] + "INTVAL (operands[3]) =3D=3D 32 - INTVAL (operands[2]) + && " + "shld{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "length_immediate" "1") @@ -14791,7 +14838,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_shld_ndd_1" +(define_insn "x86_shld_ndd_1" [(set (match_operand:SI 0 "register_operand" "=3Dr") (ior:SI (ashift:SI (match_operand:SI 1 "nonimmediate_operand" "rm"= ) (match_operand:QI 3 "const_0_to_31_operand")) @@ -14799,15 +14846,66= @@ (lshiftrt:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "r")) - (match_operand:QI 4 "const_0_to_63_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 4 "const_0_to_63_operand")) 0)))] "TARGET_APX_NDD=20 - && INTVAL (operands[4]) =3D=3D 32 - INTVAL (operands[3])" - "shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + && INTVAL (operands[4]) =3D=3D 32 - INTVAL (operands[3]) + && " + "shld{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "length_immediate" "1") (set_attr "mode" "SI")]) =20 +(define_insn_and_split "*x86_shld_shrd_1_nozext_nf" + [(set (match_operand:SI 0 "nonimmediate_operand") + (ior:SI (ashift:SI (match_operand:SI 4 "nonimmediate_operand") + (match_operand:QI 2 "const_0_to_31_operand")) + (lshiftrt:SI + (match_operand:SI 1 "nonimmediate_operand") + (match_operand:QI 3 "const_0_to_31_operand"))))] + "TARGET_APX_NF && + INTVAL (operands[3]) =3D=3D 32 - INTVAL (operands[2]) + && ix86_pre_reload_split ()" + "#" + "&& 1" + [(const_int 0)] +{ + if (rtx_equal_p (operands[4], operands[0])) + { + operands[1] =3D force_reg (SImode, operands[1]); + emit_insn (gen_x86_shld_1_nf (operands[0], operands[1], operands[2],= operands[3])); + } + else if (rtx_equal_p (operands[1], operands[0])) + { + operands[4] =3D force_reg (SImode, operands[4]); + emit_insn (gen_x86_shrd_1_nf (operands[0], operands[4], operands[3],= operands[2])); + } + else if (TARGET_APX_NDD) + { + rtx tmp =3D gen_reg_rtx (SImode); + if (MEM_P (operands[4])) + { + operands[1] =3D force_reg (SImode, operands[1]); + emit_insn (gen_x86_shld_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + } + else if (MEM_P (operands[1])) + emit_insn (gen_x86_shrd_ndd_1_nf (tmp, operands[1], operands[4], + operands[3], operands[2])); + else + emit_insn (gen_x86_shld_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + emit_move_insn (operands[0], tmp); + } + else + { + operands[1] =3D force_reg (SImode, operands[1]); + rtx tmp =3D gen_reg_rtx (SImode); + emit_move_insn (tmp, operands[4]); + emit_insn (gen_x86_shld_1_nf (tmp, operands[1], operands[2], operands= [3])); + emit_move_insn (operands[0], tmp); + } + DONE; +}) =20 (define_insn_and_split "*x86_shld_shrd_1_nozext" [(set (match_operand:SI 0 "nonimmediate_operand") @@ -15846,6 +15944,26 = @@ }) =20 ;; Split truncations of double word right shifts into x86_shrd_1. +(define_insn_and_split "3_doubleword_lowpart_nf" + [(set (match_operand:DWIH 0 "register_operand" "=3D&r") + (subreg:DWIH + (any_shiftrt: (match_operand: 1 "register_operand" "r") + (match_operand:QI 2 "const_int_operand")) 0))] + "TARGET_APX_NF && UINTVAL (operands[2]) < * BITS_PER_UNIT" + "#" + "&& reload_completed" + [(set (match_dup 0) + (ior:DWIH (lshiftrt:DWIH (match_dup 0) (match_dup 2)) + (subreg:DWIH + (ashift: (zero_extend: (match_dup 3)) + (match_dup 4)) 0)))] +{ + split_double_mode (mode, &operands[1], 1, &operands[1],=20 +&operands[3]); + operands[4] =3D GEN_INT (( * BITS_PER_UNIT) - INTVAL=20 +(operands[2])); + if (!rtx_equal_p (operands[0], operands[1])) + emit_move_insn (operands[0], operands[1]); +}) + (define_insn_and_split "3_doubleword_lowpart" [(set (match_operand:DWIH 0 "register_operand" "=3D&r") (subreg:DWIH @@ -15869,7 +15987,7 @@ emit_move_insn (operands[0], operands[1]); }) =20 -(define_insn "x86_64_shrd" +(define_insn "x86_64_shrd" [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m") (ior:DI (lshiftrt:DI (match_dup 0) (and:QI (match_operand:QI 2 "nonmemory_operand" "Jc") @@ -15879,10 +15= 997,9 @@ (zero_extend:TI (match_operand:DI 1 "register_operand" "r")) (minus:QI (const_int 64) - (and:QI (match_dup 2) (const_int 63)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "TARGET_64BIT" - "shrd{q}\t{%2, %1, %0|%0, %1, %2}" + (and:QI (match_dup 2) (const_int 63)))) 0)))] + "TARGET_64BIT && " + "shrd{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "DI") @@ -15890,7 +16007,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_64_shrd_ndd" +(define_insn "x86_64_shrd_ndd" [(set (match_operand:DI 0 "register_operand" "=3Dr") (ior:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "r= m") (and:QI (match_operand:QI 3 "nonmemory_operand" "Jc") @@ -15900,15 +16= 017,13 @@ (zero_extend:TI (match_operand:DI 2 "register_operand" "r")) (minus:QI (const_int 64) - (and:QI (match_dup 3) (const_int 63)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "TARGET_APX_NDD" - "shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + (and:QI (match_dup 3) (const_int 63)))) 0)))] + "TARGET_APX_NDD && " + "shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "DI")]) =20 - -(define_insn "x86_64_shrd_1" +(define_insn "x86_64_shrd_1" [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m") (ior:DI (lshiftrt:DI (match_dup 0) (match_operand:QI 2 "const_0_to_63_operand")) @@ -15916,11 +16031,= 11 @@ (ashift:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r")) - (match_operand:QI 3 "const_0_to_255_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 3 "const_0_to_255_operand")) 0)))] "TARGET_64BIT - && INTVAL (operands[3]) =3D=3D 64 - INTVAL (operands[2])" - "shrd{q}\t{%2, %1, %0|%0, %1, %2}" + && INTVAL (operands[3]) =3D=3D 64 - INTVAL (operands[2]) + && " + "shrd{q}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "length_immediate" "1") @@ -15929,7 +16044,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_64_shrd_ndd_1" +(define_insn "x86_64_shrd_ndd_1" [(set (match_operand:DI 0 "register_operand" "=3Dr") (ior:DI (lshiftrt:DI (match_operand:DI 1 "nonimmediate_operand" "r= m") (match_operand:QI 3 "const_0_to_63_operand")) @@ -15937,15 +16052,= 66 @@ (ashift:TI (zero_extend:TI (match_operand:DI 2 "register_operand" "r")) - (match_operand:QI 4 "const_0_to_255_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 4 "const_0_to_255_operand")) 0)))] "TARGET_APX_NDD - && INTVAL (operands[4]) =3D=3D 64 - INTVAL (operands[3])" - "shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + && INTVAL (operands[4]) =3D=3D 64 - INTVAL (operands[3]) + && " + "shrd{q}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "length_immediate" "1") (set_attr "mode" "DI")]) =20 +(define_insn_and_split "*x86_64_shrd_shld_1_nozext_nf" + [(set (match_operand:DI 0 "nonimmediate_operand") + (ior:DI (lshiftrt:DI (match_operand:DI 4 "nonimmediate_operand") + (match_operand:QI 2 "const_0_to_63_operand")) + (ashift:DI + (match_operand:DI 1 "nonimmediate_operand") + (match_operand:QI 3 "const_0_to_63_operand"))))] + "TARGET_64BIT && TARGET_APX_NF + && INTVAL (operands[3]) =3D=3D 64 - INTVAL (operands[2]) + && ix86_pre_reload_split ()" + "#" + "&& 1" + [(const_int 0)] +{ + if (rtx_equal_p (operands[4], operands[0])) + { + operands[1] =3D force_reg (DImode, operands[1]); + emit_insn (gen_x86_64_shrd_1_nf (operands[0], operands[1], operands[= 2], operands[3])); + } + else if (rtx_equal_p (operands[1], operands[0])) + { + operands[4] =3D force_reg (DImode, operands[4]); + emit_insn (gen_x86_64_shld_1_nf (operands[0], operands[4], operands[= 3], operands[2])); + } + else if (TARGET_APX_NDD) + { + rtx tmp =3D gen_reg_rtx (DImode); + if (MEM_P (operands[4])) + { + operands[1] =3D force_reg (DImode, operands[1]); + emit_insn (gen_x86_64_shrd_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + } + else if (MEM_P (operands[1])) + emit_insn (gen_x86_64_shld_ndd_1_nf (tmp, operands[1], operands[4= ], + operands[3], operands[2])); + else + emit_insn (gen_x86_64_shrd_ndd_1_nf (tmp, operands[4], operands[1= ], + operands[2], operands[3])); + emit_move_insn (operands[0], tmp); + } + else + { + operands[1] =3D force_reg (DImode, operands[1]); + rtx tmp =3D gen_reg_rtx (DImode); + emit_move_insn (tmp, operands[4]); + emit_insn (gen_x86_64_shrd_1_nf (tmp, operands[1], operands[2], opera= nds[3])); + emit_move_insn (operands[0], tmp); + } + DONE; +}) =20 (define_insn_and_split "*x86_64_shrd_shld_1_nozext" [(set (match_operand:DI 0 "nonimmediate_operand") @@ -16048,7 +16214,7 @= @ emit_move_insn (operands[4], operands[0]); }) =20 -(define_insn "x86_shrd" +(define_insn "x86_shrd" [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m") (ior:SI (lshiftrt:SI (match_dup 0) (and:QI (match_operand:QI 2 "nonmemory_operand" "Ic") @@ -16058,10 +16= 224,9 @@ (zero_extend:DI (match_operand:SI 1 "register_operand" "r")) (minus:QI (const_int 32) - (and:QI (match_dup 2) (const_int 31)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "" - "shrd{l}\t{%2, %1, %0|%0, %1, %2}" + (and:QI (match_dup 2) (const_int 31)))) 0)))] + "" + "shrd{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "mode" "SI") @@ -16070,7 +16235,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_shrd_ndd" +(define_insn "x86_shrd_ndd" [(set (match_operand:SI 0 "register_operand" "=3Dr") (ior:SI (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "r= m") (and:QI (match_operand:QI 3 "nonmemory_operand" "Ic") @@ -16080,14 +16= 245,13 @@ (zero_extend:DI (match_operand:SI 2 "register_operand" "r")) (minus:QI (const_int 32) - (and:QI (match_dup 3) (const_int 31)))) 0))) - (clobber (reg:CC FLAGS_REG))] - "TARGET_APX_NDD" - "shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + (and:QI (match_dup 3) (const_int 31)))) 0)))] + "TARGET_APX_NDD && " + "shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "mode" "SI")]) =20 -(define_insn "x86_shrd_1" +(define_insn "x86_shrd_1" [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m") (ior:SI (lshiftrt:SI (match_dup 0) (match_operand:QI 2 "const_0_to_31_operand")) @@ -16095,10 +16259,= 10 @@ (ashift:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r")) - (match_operand:QI 3 "const_0_to_63_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] - "INTVAL (operands[3]) =3D=3D 32 - INTVAL (operands[2])" - "shrd{l}\t{%2, %1, %0|%0, %1, %2}" + (match_operand:QI 3 "const_0_to_63_operand")) 0)))] + "INTVAL (operands[3]) =3D=3D 32 - INTVAL (operands[2]) + && " + "shrd{l}\t{%2, %1, %0|%0, %1, %2}" [(set_attr "type" "ishift") (set_attr "prefix_0f" "1") (set_attr "length_immediate" "1") @@ -16108,7 +16272,7 @@ (set_attr "amdfam10_decode" "vector") (set_attr "bdver1_decode" "vector")]) =20 -(define_insn "x86_shrd_ndd_1" +(define_insn "x86_shrd_ndd_1" [(set (match_operand:SI 0 "register_operand" "=3Dr") (ior:SI (lshiftrt:SI (match_operand:SI 1 "nonimmediate_operand" "r= m") (match_operand:QI 3 "const_0_to_31_operand")) @@ -16116,15 +16280,= 66 @@ (ashift:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "r")) - (match_operand:QI 4 "const_0_to_63_operand")) 0))) - (clobber (reg:CC FLAGS_REG))] + (match_operand:QI 4 "const_0_to_63_operand")) 0)))] "TARGET_APX_NDD - && (INTVAL (operands[4]) =3D=3D 32 - INTVAL (operands[3]))" - "shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" + && (INTVAL (operands[4]) =3D=3D 32 - INTVAL (operands[3])) + && " + "shrd{l}\t{%3, %2, %1, %0|%0, %1, %2, %3}" [(set_attr "type" "ishift") (set_attr "length_immediate" "1") (set_attr "mode" "SI")]) =20 +(define_insn_and_split "*x86_shrd_shld_1_nozext_nf" + [(set (match_operand:SI 0 "nonimmediate_operand") + (ior:SI (lshiftrt:SI (match_operand:SI 4 "nonimmediate_operand") + (match_operand:QI 2 "const_0_to_31_operand")) + (ashift:SI + (match_operand:SI 1 "nonimmediate_operand") + (match_operand:QI 3 "const_0_to_31_operand"))))] + "TARGET_APX_NF && + INTVAL (operands[3]) =3D=3D 32 - INTVAL (operands[2]) + && ix86_pre_reload_split ()" + "#" + "&& 1" + [(const_int 0)] +{ + if (rtx_equal_p (operands[4], operands[0])) + { + operands[1] =3D force_reg (SImode, operands[1]); + emit_insn (gen_x86_shrd_1_nf (operands[0], operands[1], operands[2],= operands[3])); + } + else if (rtx_equal_p (operands[1], operands[0])) + { + operands[4] =3D force_reg (SImode, operands[4]); + emit_insn (gen_x86_shld_1_nf (operands[0], operands[4], operands[3],= operands[2])); + } + else if (TARGET_APX_NDD) + { + rtx tmp =3D gen_reg_rtx (SImode); + if (MEM_P (operands[4])) + { + operands[1] =3D force_reg (SImode, operands[1]); + emit_insn (gen_x86_shrd_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + } + else if (MEM_P (operands[1])) + emit_insn (gen_x86_shld_ndd_1_nf (tmp, operands[1], operands[4], + operands[3], operands[2])); + else + emit_insn (gen_x86_shrd_ndd_1_nf (tmp, operands[4], operands[1], + operands[2], operands[3])); + emit_move_insn (operands[0], tmp); + } + else + { + operands[1] =3D force_reg (SImode, operands[1]); + rtx tmp =3D gen_reg_rtx (SImode); + emit_move_insn (tmp, operands[4]); + emit_insn (gen_x86_shrd_1_nf (tmp, operands[1], operands[2], operands= [3])); + emit_move_insn (operands[0], tmp); + } + DONE; +}) =20 (define_insn_and_split "*x86_shrd_shld_1_nozext" [(set (match_operand:SI 0 "nonimmediate_operand") -- 2.31.1