From patchwork Mon Sep 2 13:52:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jovan Vukic X-Patchwork-Id: 1979672 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=rt-rk.com header.i=@rt-rk.com header.a=rsa-sha256 header.s=s2021 header.b=alK4abLe; 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 4Wy9Dm55Rxz1yg9 for ; Mon, 2 Sep 2024 23:52:40 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8EE843858431 for ; Mon, 2 Sep 2024 13:52:38 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx08-0061a602.pphosted.com (mx08-0061a602.pphosted.com [205.220.185.213]) by sourceware.org (Postfix) with ESMTPS id 4B4DE3858D37; Mon, 2 Sep 2024 13:52:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B4DE3858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=rt-rk.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rt-rk.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4B4DE3858D37 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.185.213 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1725285136; cv=pass; b=XLVjotOak3fBG+hmNyhs/Sdi2obK3p5ZBm/cdqHWRiX+AfgbohsxdIjRV7dUmSNeEZ68p/YovzyjRkZD4etqe+nner8Uj/WC5/jH7yCj/UHESXpo95LvJVw5lzpwgX7xXBPuw/greSHnnDahQc0m9jsYlahmH5iHMRw9j5HeiSg= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1725285136; c=relaxed/simple; bh=3ZaKPdJqh8Vvc+zKM+UjouHFjkynVCAur3EETamlsXg=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=FLT7crdv+WEMORkN7MhYJWf6bTXSQEgGrwlfLc/56PSvheRWYmUw096Ja3DVNBjrrv6GFSJLF6RsB19VJ8NxBV4srHUvovIhVohol3jIlh76xD0bfnTLJ4rwlJCNBAqj6gI1ioysyOH6cmGeiHNu8XTLwMjhRe1jQnslM3ehEVQ= ARC-Authentication-Results: i=2; server2.sourceware.org Received: from pps.filterd (m0278994.ppops.net [127.0.0.1]) by mx07-0061a602.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 482DTMvg011470; Mon, 2 Sep 2024 13:52:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rt-rk.com; h=cc :content-type:date:from:message-id:mime-version:subject:to; s= s2021; bh=3ZaKPdJqh8Vvc+zKM+UjouHFjkynVCAur3EETamlsXg=; b=alK4ab LeOnVEEaUWczGySdebw7Icg5Mfv+e2SnyiyTTJu3dJq0mVKiaUGhALxlC6NaG92Z fHvAv//9+zAStsqbn0gaHaQ/QpuiP7hNandAQLmHZrG+reYjbihVM0TA0glx0ZOo 8RukfQQ9qifcQJm5srCtQeGwssdPr+p63Vocph/xO0wji30f0vQYltisNcUblC+i ETOscvEGzbgQNBn9jRz5NwvQgiZT1SRCwZBx/1o0Hg5BRgn/krd8cCKMKQuDSAay MydQuKPAa05jjYEZbV/wvLxBwFjZlOfLmS3gVzd1AVah2G2xCSo5BbM1BmuABlqf hluWm7pkHOh8e14w== Received: from eur05-am6-obe.outbound.protection.outlook.com (mail-am6eur05lp2104.outbound.protection.outlook.com [104.47.18.104]) by mx07-0061a602.pphosted.com (PPS) with ESMTPS id 41brd02457-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 02 Sep 2024 13:52:11 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kxXf+EbuG5aVOuQcs1sErXA6rJTSsH5g107aXjEiORKcKplwsgh83ZAois5ZLManqDkkq6bDnbczfZVnpVn0MEfzMdCifxS/PR7j/BbSVIZ3hrdoDa/Wn/JslLteceVEBQc9hvTCOuoIjfW+572O2ivNuKb1J04sHFpviaNMrGePsr7aAKGDaAgzNv+ZwTymWKk3UEiNCLWLrr+DKkDLVfQxlRwZRFVLeTdOpdoQw37tnqg8vKVIvrSc8jc9jX+Ja58Z0sNluOWpaCmfUsLFZbnC0XRIUUv0ATTTrQPRNDqvu6oxD61iBsJ+wu/iTYAzHSyS0rWm/e6Ha0wMEpdSOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=3ZaKPdJqh8Vvc+zKM+UjouHFjkynVCAur3EETamlsXg=; b=bBHZhboEKjNXluQIVTooRlTZwBJBJx5ssGdDIc6MV9KJ3GV1F1jgGkqE+UZ1vRJeJdVqTR9i1XUJToW+md+Lrc27Ezu/aaKnsMhVMiIh+JEQVkFfOEzhlKfLhzrGjx4t5u6mhBDUGodXQ9t6y/gZpf6oYgVLCQuL0pVBCUeBP/QBSawHklTJlh11onNCY4JJKk+UKYxKEzdWFazIQjbgoYwELMJq8twce8KtlSERZKfU3922uil8uIWl5Sx7+RZeh6z2H/WDdp0+jvF2MU3tLcwD0UpybIcgLphLOMcAKL/kkzkgWg7wBGMU3XivglFMyMELEcQ44Iho6yMfRx0HDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=rt-rk.com; dmarc=pass action=none header.from=rt-rk.com; dkim=pass header.d=rt-rk.com; arc=none Received: from DB9PR08MB6634.eurprd08.prod.outlook.com (2603:10a6:10:23f::5) by PA6PR08MB10596.eurprd08.prod.outlook.com (2603:10a6:102:3d2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.23; Mon, 2 Sep 2024 13:52:08 +0000 Received: from DB9PR08MB6634.eurprd08.prod.outlook.com ([fe80::3b98:f8f6:2fc8:a5a]) by DB9PR08MB6634.eurprd08.prod.outlook.com ([fe80::3b98:f8f6:2fc8:a5a%4]) with mapi id 15.20.7918.020; Mon, 2 Sep 2024 13:52:08 +0000 From: Jovan Vukic To: "gcc-patches@gcc.gnu.org" CC: Dusan Stojkovic , Mile Davidovic , "law@gcc.gnu.org" , "rdapp@gcc.gnu.org" Subject: [PATCH] RISC-V: Optimize branches with shifted immediate operands Thread-Topic: [PATCH] RISC-V: Optimize branches with shifted immediate operands Thread-Index: AQHa/Trdvzym+g/Z5ECDL7YGaJrF+w== Date: Mon, 2 Sep 2024 13:52:07 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DB9PR08MB6634:EE_|PA6PR08MB10596:EE_ x-ms-office365-filtering-correlation-id: 7f0eb7e1-4e09-4765-7b03-08dccb566f9a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?q?z/lt7GSpfkzJGxl1gT92GwIp3u5u+kB?= =?utf-8?q?d8sUdVMDwvr+60tOBfSoe45aIJmjkweAi0WVnWvHjMEdT1AZdQMA/7/t4y7pbLfWT?= =?utf-8?q?wteQLwNJYpAgWFGv1XD992g63WHFdmle81qo3CHAYzYLC7brZJRR8B1U2t+kA/T0F?= =?utf-8?q?vY5TBmemUAD7XDEmrQJK8beB1f2Gpi8ZVrfu9zwO7vPF3X3hXTyZy8PJQZ9pOu+ef?= =?utf-8?q?NToM0JYFqb3zIXT4Sl8B58gi5IkV8GGob5UtcVCloRLWYnsrz2naMpFAm0a+H7vfv?= =?utf-8?q?9ILDrbF7HmTeFz1icQy54eojq34cPJNZOrSXZpCLK6jZOYH6eITSKoFszZjvojZXf?= =?utf-8?q?K/80FKb7P4GjPdxB3wgroVSQ+anIsV3VolWRn9z3bsLqXIe5+0agNaiqOYznatQZO?= =?utf-8?q?zoaYJhsFI4V0qtm3JoOH+Ml6qAeG54cgkmURuwgTdWVF4FsmR/SIZF1LfbGJUYiWy?= =?utf-8?q?pkYqE6NnEbj14Ng+xOwEUfO7gnlcZccqAiXheoWUrGHm3Rgy4ylEbf2Uj7EJPpDpM?= =?utf-8?q?fILfRC8IlyLjY5+v8hA/XqkPvDwqcXPNBYeUOsQsVJZOgc51ajsD7aVepVpWVnGh/?= =?utf-8?q?YdzIbsK2zDzMslhdCIgQJEAT//RliNZVTFyEio4tG1rwN8Q1ev+NczdCsAJdG6Yfr?= =?utf-8?q?hFI9y9+vzVYgwj/9Q4wAx1XmoQVuOza9JKS6G1H+D+/XoGHq4nQXevR/Y+0HMblNW?= =?utf-8?q?WksseMdlC0Vb7/EDh1aUOBnkk9inFxQWwGM2UEatUvzHpVXuXBVVUVFav9o708kux?= =?utf-8?q?3MtsAjwMusKuLl+kyICJzUSweuTASTzmztN4h+gkg01MrCV30RG6t2jzZDXtT4FAp?= =?utf-8?q?HerA8DV4nXujHlIAP3TBO1v/jKAgSrvpfKbtV5Ehq9lVrvnOyLb05w3OiwnEcG1QY?= =?utf-8?q?Jd2ZbA3DqUT+jOTn73hYN+MGr1EukCJiI0n2bUFHciJ7cuTurJFZxPh7sQYAOsy3j?= =?utf-8?q?rmip18CiRXNnNkJsBgqDacaEONYiuOykdO6cIodvzm/2A0aHejG2NiUQc/gR+XFN+?= =?utf-8?q?o64RQPjxZfsoAtLQEPY9bumkY9YZQaXTWx5NthZ7Gg85Dyj3P3pJJOTx+WFNxPagM?= =?utf-8?q?T+ds8iYouMiwJmLk3kdJ5+Krh76jtVU4GAfmFOmJdJ8HpbSlXlvwqOTSnt5OUVay6?= =?utf-8?q?NrejmExdLrGVC2dCBdWTDacN5PDG4Zicmlb/gcmefhHLGc/xQX1X0pZuEoAS5FdMx?= =?utf-8?q?GSaQbPFN8IT5I7z6WJm6Rw7Ua9SN/EcvWKbu5OfEPRdtKuUrQEs1i1D2hiHW1cXnO?= =?utf-8?q?YBi0k1wiO0GmR2QGMx0Z8zFR3hFF/dnlSISvmK+96X4kzfZqhJVA7m30=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB6634.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?ZoHlD+mNPTKbKI2htmYzd51F1Ukn?= =?utf-8?q?485XfGTPlXrbVAX7h8yQs/kOUfCvnAsi7dTXzNmt9tJeoDp4tewojmyU0/I4jUfiw?= =?utf-8?q?7AQmxoPGDBqBk47ZB4jQrnTkYQKR2lL64Ym612fexvl2P5p8CbgO2CqzZDtuQe59u?= =?utf-8?q?Sn3wOroHMK0ZMMJMFh4aLD+0d+t4l8YfgComPPG2/vBTejcD0zOsv+VCFnheMAiMj?= =?utf-8?q?OLGrID1OuxuCE6oH87xH6jusIDWElVWxKb6Uj6dW57tf2C2yArLYFyCO53KmA7DqR?= =?utf-8?q?8uXIjqupPPudWLkPeYHk5HKrtnL44chb3bpzrh/Zj/zmQh7uyXOGdk51hgTCuQB62?= =?utf-8?q?8U3M0wajMR7rKLze8OYv3dn8aD2YPcr0iH4i+f+ayeuIwKEDtlO1RJAiLTG/BPSVD?= =?utf-8?q?evOZzC3qLcY0oEn2V9OtY56IzVnWjQnfJ0CD5rOngBtETsGHhJoM9jMWXvIepsbBZ?= =?utf-8?q?uSDo84M5ktwEWLWNPHM8GinTsjcqv0H41T6yhDMHCNblrZNts2S1hpsLOwzsPnAx7?= =?utf-8?q?kY/5ev4Gi0pHqiNABHQbexh7cjrd2hZEoG845uFkrRgO3BuycaEzS9SGoNt/SKaVR?= =?utf-8?q?myjkirCwcaHIvFF7xjFBfuDW1LsJ0QjjeHYXVjrCdw36iKwefQ57q5iuMhxNZGfl4?= =?utf-8?q?Xwk6VC4ffVJs7HRnH9C6VQFNafq6ppSS3n3BVPc3zl3HyI0DTAVY1hC6c+16jISv5?= =?utf-8?q?xbgyLvio6g1rQGdePkMtYKQQtn/ziL1FvXkZyP1jhlKYDBkpsawKpQ31tVynclTQw?= =?utf-8?q?uuyjYc1gObmB60Sy+pgtyV5SDIbyO6RHPdxPFGCeXDNjJ3dahLSoaUnSg6kgWEiLh?= =?utf-8?q?idlLILIgj6wq0QEyYHqWg/NxZ8K6th5s4uS0MEvx9kHPptur8S3yv/L2Fr67m1oUD?= =?utf-8?q?JlKOh6MWeWBJHptEe1XecZij46jMbNjhM+wGe0f7OvgnhgmKSXcc86yasLvhdJWLq?= =?utf-8?q?iwVHywZnTHNzr95s7sZRKs9KYM8B9ZIeMRaOVz8g6zHxeK7vBEMRyhSOBlib5SrJ6?= =?utf-8?q?uxYnst1GTLOr88i47j7HqczbwlmNjqPcVaUU6UPuvIFfs03KqGdQ/8J4kd2jjKMaR?= =?utf-8?q?HcZiqm2qcVw+9E5SD2q35hwGdsXk2fZDoCbf2KbQe22gCtZFnLm9q/QGIEoyRSRzi?= =?utf-8?q?uKKZhGHKVGzuJMoeHuzlpH+2wLj+TQ/ojBvYfHn+pVLVawV6mgzrZRcgMA5wnG+f6?= =?utf-8?q?CtCQgMi3QlYfza3pVIgK9WafwzmOF2JDK2GJum9tJ5ekwIpntuXskWuVvkmy18363?= =?utf-8?q?2a4bcyY5yvRtfmMFIwVtAOFqxBAIPkeT5sHz0qTywR8DYLW3MqALulwUBDrKmj94A?= =?utf-8?q?UbXOODbDFlo3Qh01jHQpoT4wEFnv9E9kTxWLY56M0Qn3NL9VZt/efYEPsUPvb2AGi?= =?utf-8?q?4fysar4yQccLiX0YOLBnRDQSk9NvxbfTlqDVe9DIHTkvruYVcg/o2GpxDvnj4pQkS?= =?utf-8?q?itstNPwPZyJBa1NfWC7f0cdcgZkHSU2kKNMvc6RbozYK8XbDL3EccumFEmOdpXuaS?= =?utf-8?q?f952ijwS0JQ8?= MIME-Version: 1.0 X-OriginatorOrg: rt-rk.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB9PR08MB6634.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7f0eb7e1-4e09-4765-7b03-08dccb566f9a X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Sep 2024 13:52:07.9608 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9bc3ed46-a3ca-43f0-b84e-9a557209a7df X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: MiUqp6dtsqhvghZQS0sr1i5t3ZmZtk+3VGZIaOo3rPEq3pbAGrTnKUPXuK/XIM2B9LA9q2tZMwJZbb1/3neaAQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10596 X-Authority-Analysis: v=2.4 cv=C4i7yhP+ c=1 sm=1 tr=0 ts=66d5c30b cx=c_pps a=ujVtL2Xc6AYuIgh9KuiIGw==:117 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=EaEq8P2WXUwA:10 a=bp5mhLeJ-vUA:10 a=wT45_P3iAAAA:8 a=PmXrPwe4xKMF9scP2sIA:9 a=QEXdDO2ut3YA:10 a=FXjw9yTyye59ppCH-fwA:9 a=WI1icwrAAA6_8rzb:21 a=frz4AuCg-hUA:10 a=_W_S_7VecoQA:10 a=RJRP_u8kRGsxlTjV8B5_:22 X-Proofpoint-ORIG-GUID: W8VqWYK7jsCJhcdzQkAJBph7waJxLbyZ X-Proofpoint-GUID: W8VqWYK7jsCJhcdzQkAJBph7waJxLbyZ X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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 The patch adds a new instruction pattern to handle conditional branches with equality checks between shifted arithmetic operands. This pattern optimizes the use of shifted constants (with trailing zeros), making it more efficient. For the C code: void f5(long long a) { if ((a & 0x2120000) == 0x2000000) g(); } before the patch, the assembly code was: f5:       li    a5,34734080       and   a0,a0,a5       li    a5,33554432       beq   a0,a5,.L21       ret and after the patch the assembly is: f5:       srli  a5,a0,17       andi  a5,a5,265       li    a4,256       beq   a5,a4,.L21       ret Tested on both RV32 and RV64 with no regressions. 2024-09-02 Jovan Vukic gcc/ChangeLog:       PR target/113248       * config/riscv/riscv.md (*branch_shiftedarith_equals_shifted): New pattern. gcc/testsuite/ChangeLog:       PR target/113248       * gcc.target/riscv/branch-1.c: Additional tests. --- gcc/config/riscv/riscv.md | 32 +++++++++++++++++++++++ gcc/testsuite/gcc.target/riscv/branch-1.c | 16 +++++++++--- 2 files changed, 45 insertions(+), 3 deletions(-) -- 2.43.0 CONFIDENTIALITY: The contents of this e-mail are confidential and intended only for the above addressee(s). If you are not the intended recipient, or the person responsible for delivering it to the intended recipient, copying or delivering it to anyone else or using it in any unauthorized manner is prohibited and may be unlawful. If you receive this e-mail by mistake, please notify the sender and the systems administrator at straymail@rt-rk.com immediately. diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index 3289ed2155a..c98a66dbc7c 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -3126,6 +3126,38 @@ } [(set_attr "type" "branch")]) +(define_insn_and_split "*branch_shiftedarith_equals_shifted" + [(set (pc) +     (if_then_else (match_operator 1 "equality_operator" +            [(and:ANYI (match_operand:ANYI 2 "register_operand" "r") +                        (match_operand 3 "shifted_const_arith_operand" "i")) +                 (match_operand 4 "shifted_const_arith_operand" "i")]) +      (label_ref (match_operand 0 "" "")) +      (pc))) + (clobber (match_scratch:X 5 "=&r")) + (clobber (match_scratch:X 6 "=&r"))] + "!SMALL_OPERAND (INTVAL (operands[3])) + && !SMALL_OPERAND (INTVAL (operands[4]))" + "#" + "&& reload_completed" + [(set (match_dup 5) (lshiftrt:X (subreg:X (match_dup 2) 0) (match_dup 8))) + (set (match_dup 5) (and:X (match_dup 5) (match_dup 9))) + (set (match_dup 6) (match_dup 10)) + (set (pc) (if_then_else (match_op_dup 1 [(match_dup 5) (match_dup 6)]) +                  (label_ref (match_dup 0)) (pc)))] +{ + HOST_WIDE_INT mask1 = INTVAL (operands[3]); + HOST_WIDE_INT mask2 = INTVAL (operands[4]); + int trailing = (ctz_hwi (mask1) > ctz_hwi (mask2)) +      ? ctz_hwi (mask2) +      : ctz_hwi (mask1); + + operands[8] = GEN_INT (trailing); + operands[9] = GEN_INT (mask1 >> trailing); + operands[10] = GEN_INT (mask2 >> trailing); +} +[(set_attr "type" "branch")]) + (define_insn_and_split "*branch_shiftedmask_equals_zero" [(set (pc)      (if_then_else (match_operator 1 "equality_operator" diff --git a/gcc/testsuite/gcc.target/riscv/branch-1.c b/gcc/testsuite/gcc.target/riscv/branch-1.c index b4a3a946379..e09328fe705 100644 --- a/gcc/testsuite/gcc.target/riscv/branch-1.c +++ b/gcc/testsuite/gcc.target/riscv/branch-1.c @@ -28,10 +28,20 @@ void f4(long long a) g(); } +void f5(long long a) { + if ((a & 0x2120000) == 0x2000000) + g(); +} + +void f6(long long a) { + if ((a & 0x70000000) == 0x30000000) + g(); +} + /* { dg-final { scan-assembler-times "slli\t" 2 } } */ -/* { dg-final { scan-assembler-times "srli\t" 3 } } */ -/* { dg-final { scan-assembler-times "andi\t" 1 } } */ -/* { dg-final { scan-assembler-times "\tli\t" 1 } } */ +/* { dg-final { scan-assembler-times "srli\t" 5 } } */ +/* { dg-final { scan-assembler-times "andi\t" 3 } } */ +/* { dg-final { scan-assembler-times "\tli\t" 3 } } */ /* { dg-final { scan-assembler-not "addi\t" } } */ /* { dg-final { scan-assembler-not "and\t" } } */