From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by sourceware.org (Postfix) with ESMTPS id C2A983858D26 for ; Wed, 22 May 2024 08:41:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C2A983858D26 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 C2A983858D26 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.198.163.10 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716367269; cv=pass; b=Zahw4tGz9/591wXU8VZ862Qn7/pQ3khXP6M8dbRV22jJE6aF3Xv7KtZvOvV0Z8CdwL8c5BExiGdmwpTYWGG7NZRmMEY51F80PPtH51CAGvwJF3Sznvp79mx4BsAXoYN7piiVb3vGA49wpWPk6CtZ26xISb+zMUlbVUibWxaPCNY= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1716367269; c=relaxed/simple; bh=pMUS7YGsbWenF7XvJnvet3g1zNq9176jhQyCE4wb/Yg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=QVrJ7zENKtE8Zkcfvi5N+C8BVhcGEjIJTmukBX95yZRQfotnT/4tXyMcf264jCUWd+ct81QvFZju3LqUOSEe0ardJ+lbeeF8rVJOIHoT5eWS6ZT+yiHAyiBQeQawqXxSEudjBmBoa8ipfug47FbbQOlCbYugpinvG1KYtdAMuP8= 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=1716367266; x=1747903266; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=pMUS7YGsbWenF7XvJnvet3g1zNq9176jhQyCE4wb/Yg=; b=d+GDBp5faQ5AHryYrm3qk62/6pMDqk2R/sDVc5LI8mSsmJUht+J8W7+b hg6fcHasJjR22/FrAv/hzmzVH7yUY3KJXfigyDNBt/nf/bXCNCQApor8D f2WzUpejrhMMPwmoZYEXHOtT4WCxciPxkGOTLK2bnMOytTSuqcx0EUTwu YyBQUQmN6uiMIraEXCjXjC71y74xO4HIzNEi1h16oY2xbXdKYVxYhD2zP yasbHFCfob05HY3/ZHoXLrexW4BF0l9CE6F5va4fBCYNxnFzYBGOl5LR0 0ZyFJQtGpYXpKW2LBNg0YYasWToxj+N4GIYfMaEmL2zL0lf314F8MLrTZ w==; X-CSE-ConnectionGUID: u7Tr9vuISyy9bwEUnG60sg== X-CSE-MsgGUID: 0MTTiWEdQBe0MXmQtiSHeA== X-IronPort-AV: E=McAfee;i="6600,9927,11079"; a="24016532" X-IronPort-AV: E=Sophos;i="6.08,179,1712646000"; d="scan'208";a="24016532" Received: from orviesa007.jf.intel.com ([10.64.159.147]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 May 2024 01:41:05 -0700 X-CSE-ConnectionGUID: L/rG0s2+Riys+nR/cl9Cjg== X-CSE-MsgGUID: GGGgKE8VSpqCy+co8qYT0A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,179,1712646000"; d="scan'208";a="33807420" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orviesa007.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 22 May 2024 01:41:05 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) 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:41:04 -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:41:04 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.169) 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:41:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rd2ryQe/TtCw+UGNpqjoMIHA36Ub2hvR2g13xgK6zQ2fJxHkmYt0oWHw5EGGobXx9vTfhS7vfUDUxDoAE3y6RZZIq+gvn2Q049jNrzHvu7W1xhydrx4Fv6pdDAVlw/BKS2qxJRJdhP/alh6txN5QOD9rvF/oAVBMI9c2Nug12lfjwKrC0WQwILeKZKoifNskcQotgFWMzZK4sMCb1bJeOKnG0pOhjjt9Lha4009AD45dziuNSC6tJ5tjzhHKOlc7dMr2Ym96VcLG6XOyjP/lQ6xzBEc8EHtKSuk+CoFIf9Sc/rcl2R85yZYcja7rNJ4HjT3PBoIr2xisN0H3NXvsbg== 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=0FvbGKIk+gorcLyTMBJrq/PxzszA1A3cxAuRWnT5q5Q=; b=cV+yAw9xKqr/EsLVvm7cI9/QseY4bTS1RseylgewoCg+qIqGTHoJfwjMT+NF1I3j7dUPl1vdPgD7/a4nCfUT1Ndf8KKFNHdw0Tnq6EhVSgr6QJn7nbIxZDuhTf/lSgT2zr7CW8YwPXzIXyWQmYUiTnFN4IaHQWn0gCwCaqQAG9xpJzBssZYNqi8eVLw8woD9YXkvIY7+lPH7P2bYq4k7mEzSnWwlyVcObNKprg2cbaFZJ0Xm3GOhJwstfylTXC5yAgr7O20x5NMgKE99H8s8F9iJWibBebe7GTWQxfXC53hYS9xSpF87eRlNudklVdy70wCIu7uRpA2nOLPdZ3DXAQ== 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:41:01 +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:41:01 +0000 From: "Kong, Lingling" To: "gcc-patches@gcc.gnu.org" CC: "Liu, Hongtao" , "Kong, Lingling" , Uros Bizjak Subject: [PATCH v2 3/8] [APX NF] Support APX NF for left shift insns Thread-Topic: [PATCH v2 3/8] [APX NF] Support APX NF for left shift insns Thread-Index: AQHarBsqY+vKAx2140GrVxkTDRAvjrGi7npQ Date: Wed, 22 May 2024 08:41:01 +0000 Message-ID: References: <20240522073710.2039035-1-lingling.kong@intel.com> <20240522073710.2039035-3-lingling.kong@intel.com> In-Reply-To: <20240522073710.2039035-3-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: f38d2a5e-82cf-4b88-61d8-08dc7a3ae91e 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?raWaz28VqAkSGrIQyrl49uDbfqpkB01ZfkNGzRWFUCvIwzu2lI0qtLtHj5Pn?= =?us-ascii?Q?SNUgX2GaDk9nuC+VxyV2aMl+il0p+lSpvcENJuGfnDhlnvbahctbWx4meA8x?= =?us-ascii?Q?ok3Na44ihSd6tU2kQ7ShOCcla2+G4D0FlMcKti1deTul4b+b8Av5FYT85Mm+?= =?us-ascii?Q?tTKQTcVIjtmJzct4z50Nd/sSJJVNey7U/ElPU8Bboq8m0x7c6/kBpXsGpPHW?= =?us-ascii?Q?eel8Yms3P4zpq7wkHvveR4jXUqBEwrGDjaeub1bNxBSRVJRCZiRHTerKiJQs?= =?us-ascii?Q?TTKK2xD86Bp79pS/bytkpzUdD33oTPH/yes9j10imVLxd4PKO2CFj7xMSLJ2?= =?us-ascii?Q?zw6FqPNsMSQu/0/NllvyemgAS/1g4gzX4oVytf1VLIg5EGQaFvYP/4rFc/zC?= =?us-ascii?Q?PlMDJdt9z9YA/n/qB2+nr0Ocq1L5E9qJ27/usVD/WkpNShrUUfoQChbP+FS2?= =?us-ascii?Q?ByR+csehAXshlgSg+KTm1U38zHgqIINgR67omXuhmZp1bhOuVxi0WZA/S9SJ?= =?us-ascii?Q?35WWTAr+r05FP/N7RiVkk41IwXay4pDV+zr+e3C/mc3Y0dYQerO02pVr3DvU?= =?us-ascii?Q?UEQ1eqezsxghiDFKhb1Hdlffjv5YTgbZUstyw2GiRdA/2MA9ZY7DX+Ie9ut8?= =?us-ascii?Q?isbnqE8R1dQmxh9aUG7pYXsFwQTGkkGM3EK8CoUzYAPmHJ/xqbNSxCF1M7cF?= =?us-ascii?Q?rg5PvJubEjNR4nbC3xv/f30ddNrO9zvgJNi2w/vz/Xf/yKrA596XOKmi+g5u?= =?us-ascii?Q?C4adErE5jowwjj8OvkU2YN0PqjDcWadCTjnqpLu6tQmmK98+5aL3fRuylErx?= =?us-ascii?Q?6ARSV9IScHbtj428JwxRLzaERyTYe2zpQbwYRQ5ZTtjutJZENFna4Eg+ZWFC?= =?us-ascii?Q?8O/hf7hxOBsZJ9kiquu5Cq120SjuQxfIBBk4lbYAPmn7qVpkaEJPg2fwhDkb?= =?us-ascii?Q?YeRvs/M01gP3UoGiVQV1sT9y2veWV8u7OajPdlXLOkmRqmfcmfaPyVY+pwXd?= =?us-ascii?Q?mFo45/WGsLBXtJkZZFxDNiCNkoRsx0JVgvIvfk1NraqIT/SVnVWgdctZHFi+?= =?us-ascii?Q?0pQVIlkWs3ZL+ggKqUBNfG+Mhz0tQf7SmsOwjb/FMEuNocnwmUgrXXLd3aQa?= =?us-ascii?Q?39oMFgttvaWecbs5V6kSGodSdsdvoiMPjV9bp8jl0tNwH2R3RxZMdmHijh7d?= =?us-ascii?Q?HZZWtck+1Dl2JPJczr62KGd2YGSpqR0o39EAgImByKIrUUUP3yyP3nD4OVuO?= =?us-ascii?Q?XBb+W2Qy41MRAtzg0Ch+U2i3Vgkbih56naFE89ltfteLa8wTGahSGDFZKzDB?= =?us-ascii?Q?Haul/jFQKdFbdjSeuFlVCNo9ALaJx4oYEzMhlodF9V4mPQ=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?qa9E9/fb9JGDdfKEvwm0DwCzNz3veBoWmoR19ZsNSDOn6i0Ij1uqo5h9s88m?= =?us-ascii?Q?JMQOTi9FyTUB9Nh7GMzQljcgV/dnSabEA/lN/wKB76gLTCg3XY5ISfoMduPH?= =?us-ascii?Q?/AgOfmKbJ7EePscjcjtTiJwyKQOQzhFDxfR5/MtxvNh1Gm1YRACDGoICbDvH?= =?us-ascii?Q?jrLqviNP1wt0P5PvS1vUjasplEU3wRK14mkGqEOkQhu/irw9Gkg+IJD2aYCx?= =?us-ascii?Q?N9IWgFtYSqPGhFJ3b6h7wmIXAXrp1XkAl0lYh36GbeJn1aQA0rBFNP1nGwT+?= =?us-ascii?Q?ilQr5DDHBJT6rBdc57sFTqWA8Gx8NkD3+cY08PiEK+ZFXKATTwkSn/fl2aGN?= =?us-ascii?Q?pOZZnBV9ewHb12PifDE4BMoFC/RSYQLQdSi9ulWLzlvlPmaO+cdqtEX1Sjmy?= =?us-ascii?Q?p6N8zH9J86brpWNKZ7VT6vxH0xGO9o0UlQ/ohKmIURGVaPGl4dsIw4nS+SCO?= =?us-ascii?Q?AbRQ5SsGDh4mhI+5sEeUEZxRjF1q1iIN7D2TQ97v7Ce2HWx7lIPKskdQW8Tt?= =?us-ascii?Q?gwIVmvH+s3qpQv+fSL35t1mzZHzs8vQCVK1HPQjsRpk5SFkNGEIP8WWfI8w3?= =?us-ascii?Q?K0Hy6lJkayd859Os6k4bIZ9S2ti7JF+zQS25kHAOXKGrCB46VP4DMCuc1m6M?= =?us-ascii?Q?eqQ3APG4sKH3Er5sMjnaBVar1ChPvAEUHUCo/Wm2Mc/2xFkSSQOwfNo+AmWB?= =?us-ascii?Q?kE3c/x2VfqGE8Z9fFuObU7lYk9Cg7nplB6NzUuLTWrMSdSacCj3d0c1ORbAU?= =?us-ascii?Q?WBeK8LYWQHudCzMua5+FQJyhFoEpeRcQyxDxjDWw3HKzI9wrhV/V/+5fCkvF?= =?us-ascii?Q?fWwKncAheMqTTxdeEuYpWlpZrVOaTkvY/4G5t3yct+Tffaq/wPAojozKCvb+?= =?us-ascii?Q?XuTMEQTOSLo2hNdgWZ+ngT5ki2Q7dmxOZBowJs+D/ATngRhWVAM3fEC0V9dy?= =?us-ascii?Q?TVvkjpxsOhC2MIPNm2eRza1CM2prpX0oYO1sO8Sfb0k61S1l/UPR6IgxNH4i?= =?us-ascii?Q?NhnkhOR2uEwVgAGF37T+RJuLBWLvx0pkzH2CtXmU5Ua6uixpwOpBWmLfWIrh?= =?us-ascii?Q?X0dagYvIB/AI7/gy1MQpuM0aWdazefY4F2D6lf0zcW5d3OqjV83K8BVPmPWy?= =?us-ascii?Q?77CauykcIagDwB+Wt9JeCLSXR5pGWkBd/kuEAOUcbgT7fdT9t/74Prnav8wL?= =?us-ascii?Q?vFKHqsTwT20dWfiSH8S9iaQYDOoIfGd+rreaCqJwsUY3qMZqf40xpFVQ1Z0b?= =?us-ascii?Q?GlVyvt4pqw1awTNYVxIE93UcJSWs2kyq/jaJxsGOsHWImq8/UcuVFsgQqD8/?= =?us-ascii?Q?15jMyt2pOOdzdAjKmRVFojcO/rpjle3c/ZAEd6Cd1K98OB1YCNI68u17nTgr?= =?us-ascii?Q?av4vA6C/db0b40LjHtdY3XsKT4EVws9Vx1dRsIX+0HiP/QSbWS3ALjFXy1jZ?= =?us-ascii?Q?dQ9QmwPawQqFTQh5RK4zoIsZRPFjR1u3MsTdPsT+nkYns+/qd88S/MxlhUu9?= =?us-ascii?Q?W296Jqr7OQM3ygJAEz7GsjxXFO1Cul+glZ9X+Is19mk09MaSS1bKdMfBhEKw?= =?us-ascii?Q?G/tEuPNxvPOqDt2ws5n4N7nTvzUF5bv7xd8VGHH5?= 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: f38d2a5e-82cf-4b88-61d8-08dc7a3ae91e X-MS-Exchange-CrossTenant-originalarrivaltime: 22 May 2024 08:41:01.6990 (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: qor29GX1pBVxn0alWQNPd8Q/PC+k6w3/s1t4cATsv0KAFfeTcfrg4td+klJ3GEtcD4yjfNLiJZbAY7bARdRWTA== 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 (*ashl3_1_nf): New. (*ashlhi3_1_nf): Ditto. (*ashlqi3_1_nf): Ditto. * config/i386/sse.md: New define_split. --- gcc/config/i386/i386.md | 80 +++++++++++++++++++++++++++-------------- gcc/config/i386/sse.md | 13 +++++++ 2 files changed, 67 insertions(+), 26 deletions(-) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 099d7f= 35c8f..271d449d7c4 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -15012,12 +15012,12 @@ [(set_attr "type" "ishiftx") (set_attr "mode" "")]) =20 -(define_insn "*ashl3_1" +(define_insn "*ashl3_1" [(set (match_operand:SWI48 0 "nonimmediate_operand" "=3Drm,r,r,?k,r") (ashift:SWI48 (match_operand:SWI48 1 "nonimmediate_operand" "0,l,rm,k,rm"= ) - (match_operand:QI 2 "nonmemory_operand" "c,M,r,,c"))) - (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (ASHIFT, mode, operands, TARGET_APX_NDD)" + (match_operand:QI 2 "nonmemory_operand" "c,M,r,,c")))] + "ix86_binary_operator_ok (ASHIFT, mode, operands, TARGET_APX_NDD) + && " { bool use_ndd =3D get_attr_isa (insn) =3D=3D ISA_APX_NDD; switch (get_attr_type (insn)) @@ -15030,7 +15030,7 @@ case TYPE_ALU: gcc_assert (operands[2] =3D=3D const1_rtx); gcc_assert (rtx_equal_p (operands[0], operands[1])); - return "add{}\t%0, %0"; + return "add{}\t%0, %0"; =20 default: if (operands[2] =3D=3D const1_rtx @@ -15038,11 +15038,11 @@ /* For NDD form instructions related to TARGET_SHIFT1, the $1 immediate do not need to be omitted as assembler will map it to use shorter encoding. */ - && !use_ndd) + && !use_ndd && !) return "sal{}\t%0"; else - return use_ndd ? "sal{}\t{%2, %1, %0|%0, %1, %2}" - : "sal{}\t{%2, %0|%0, %2}"; + return use_ndd ? "sal{}\t{%2, %1, %0|%0, %1, %2}" + : "sal{}\t{%2, %0|%0, %2}"; } } [(set_attr "isa" "*,*,bmi2,avx512bw,apx_ndd") @@ -15073,6 +15073,17 @@ (set_attr "mode" "")]) =20 ;; Convert shift to the shiftx pattern to avoid flags dependency. +;; For NF/NDD doesn't support shift count as r, it just support c,=20 +;; but it has no flag. +(define_split + [(set (match_operand:SWI48 0 "register_operand") + (ashift:SWI48 (match_operand:SWI48 1 "nonimmediate_operand") + (match_operand:QI 2 "register_operand")))] + "TARGET_BMI2 && reload_completed" + [(set (match_dup 0) + (ashift:SWI48 (match_dup 1) (match_dup 2)))] + "operands[2] =3D gen_lowpart (mode, operands[2]);") + (define_split [(set (match_operand:SWI48 0 "register_operand") (ashift:SWI48 (match_operand:SWI48 1 "nonimmediate_operand") @@ -15159,12= +15170,12 @@ (zero_extend:DI (ashift:SI (match_dup 1) (match_dup 2))))] "operands[2] =3D gen_lowpart (SImode, operands[2]);") =20 -(define_insn "*ashlhi3_1" +(define_insn "*ashlhi3_1" [(set (match_operand:HI 0 "nonimmediate_operand" "=3Drm,Yp,?k,r") (ashift:HI (match_operand:HI 1 "nonimmediate_operand" "0,l,k,rm") - (match_operand:QI 2 "nonmemory_operand" "cI,M,Ww,cI"))) - (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (ASHIFT, HImode, operands, TARGET_APX_NDD)" + (match_operand:QI 2 "nonmemory_operand" "cI,M,Ww,cI")))] + "ix86_binary_operator_ok (ASHIFT, HImode, operands, TARGET_APX_NDD) + && " { bool use_ndd =3D get_attr_isa (insn) =3D=3D ISA_APX_NDD; switch (get_attr_type (insn)) @@ -15175,16 +15186,16 @@ =20 case TYPE_ALU: gcc_assert (operands[2] =3D=3D const1_rtx); - return "add{w}\t%0, %0"; + return "add{w}\t%0, %0"; =20 default: if (operands[2] =3D=3D const1_rtx && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)) - && !use_ndd) + && !use_ndd && !) return "sal{w}\t%0"; else - return use_ndd ? "sal{w}\t{%2, %1, %0|%0, %1, %2}" - : "sal{w}\t{%2, %0|%0, %2}"; + return use_ndd ? "sal{w}\t{%2, %1, %0|%0, %1, %2}" + : "sal{w}\t{%2, %0|%0, %2}"; } } [(set_attr "isa" "*,*,avx512f,apx_ndd") @@ -15212,12 +15223,12 @@ (const_string "*"))) (set_attr "mode" "HI,SI,HI,HI")]) =20 -(define_insn "*ashlqi3_1" +(define_insn "*ashlqi3_1" [(set (match_operand:QI 0 "nonimmediate_operand" "=3Dqm,r,Yp,?k,r") (ashift:QI (match_operand:QI 1 "nonimmediate_operand" "0,0,l,k,rm") - (match_operand:QI 2 "nonmemory_operand" "cI,cI,M,Wb,cI"))) - (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (ASHIFT, QImode, operands, TARGET_APX_NDD)" + (match_operand:QI 2 "nonmemory_operand" "cI,cI,M,Wb,cI")))] + "ix86_binary_operator_ok (ASHIFT, QImode, operands, TARGET_APX_NDD) + && " { bool use_ndd =3D get_attr_isa (insn) =3D=3D ISA_APX_NDD; switch (get_attr_type (insn)) @@ -15229,14 +15240,14 @@ case TYPE_ALU: gcc_assert (operands[2] =3D=3D const1_rtx); if (REG_P (operands[1]) && !ANY_QI_REGNO_P (REGNO (operands[1]))) - return "add{l}\t%k0, %k0"; + return "add{l}\t%k0, %k0"; else - return "add{b}\t%0, %0"; + return "add{b}\t%0, %0"; =20 default: if (operands[2] =3D=3D const1_rtx && (TARGET_SHIFT1 || optimize_function_for_size_p (cfun)) - && !use_ndd) + && !use_ndd && !) { if (get_attr_mode (insn) =3D=3D MODE_SI) return "sal{l}\t%k0"; @@ -15246,10 +15257,10 @@ else { if (get_attr_mode (insn) =3D=3D MODE_SI) - return "sal{l}\t{%2, %k0|%k0, %2}"; + return "sal{l}\t{%2, %k0|%k0, %2}"; else - return use_ndd ? "sal{b}\t{%2, %1, %0|%0, %1, %2}" - : "sal{b}\t{%2, %0|%0, %2}"; + return use_ndd ? "sal{b}\t{%2, %1, %0|%0, %1, %2}" + : "sal{b}\t{%2, %0|%0, %2}"; } } } @@ -15334,6 +15345,23 @@ (set_attr "mode" "")]) =20 ;; Convert ashift to the lea pattern to avoid flags dependency. +(define_split + [(set (match_operand:SWI 0 "general_reg_operand") + (ashift:SWI (match_operand:SWI 1 "index_reg_operand") + (match_operand 2 "const_0_to_3_operand")))] + "reload_completed + && REGNO (operands[0]) !=3D REGNO (operands[1])" + [(set (match_dup 0) + (mult: (match_dup 1) (match_dup 2)))] { + if (mode !=3D mode) + { + operands[0] =3D gen_lowpart (mode, operands[0]); + operands[1] =3D gen_lowpart (mode, operands[1]); + } + operands[2] =3D GEN_INT (1 << INTVAL (operands[2])); +}) + (define_split [(set (match_operand:SWI 0 "general_reg_operand") (ashift:SWI (match_operand:SWI 1 "index_reg_operand") diff --git a/gcc/co= nfig/i386/sse.md b/gcc/config/i386/sse.md index 72d4556f47d..498ca5e4d1b 10= 0644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -2169,6 +2169,19 @@ (set_attr "prefix" "vex") (set_attr "mode" "")]) =20 +(define_split + [(set (match_operand:SWI1248_AVX512BW 0 "mask_reg_operand") + (any_lshift:SWI1248_AVX512BW + (match_operand:SWI1248_AVX512BW 1 "mask_reg_operand") + (match_operand 2 "const_int_operand")))] + "TARGET_AVX512F && reload_completed" + [(parallel + [(set (match_dup 0) + (any_lshift: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_lshift:SWI1248_AVX512BW -- 2.31.1