From patchwork Fri Mar 1 06:27:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "demin.han" X-Patchwork-Id: 86627 X-Patchwork-Delegate: rdapp.gcc@gmail.com Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id DF3073858410 for ; Fri, 1 Mar 2024 06:28:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from CHN02-SH0-obe.outbound.protection.partner.outlook.cn (mail-sh0chn02on2102.outbound.protection.partner.outlook.cn [139.219.146.102]) by sourceware.org (Postfix) with ESMTPS id AE1363858C74 for ; Fri, 1 Mar 2024 06:27:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE1363858C74 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=starfivetech.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=starfivetech.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AE1363858C74 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=139.219.146.102 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709274481; cv=pass; b=mREn51i785DXxVjARbuWg8PHeq19m+KhrygRUW2o2TX8pELwdJUmEJuu/XRs0S4NEYvE8f19+iTec1GjKJAzyeOeViVXEMERsr06cL/gLncsmzC9DrInQ9Ru9G25WGIGtxlgQXTcqDXcD3GHoWEvPNS3QkChJVcLOdCb/baw7i0= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1709274481; c=relaxed/simple; bh=6xY2YZxfc+vzzMhWCEnkGKMjtnQ6PbOR+dtU2v+x2To=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Td6yZ6Y30FJ1bOogELYUukcRL/0h8AjmQWcYYuDbIqPBAUS2OaGfd7WKTlcjVSmc8wIRV5TGuRIwz/VAJ8xsL9QFPWe2EEgbF1A+FXrIbtREzJfQkxL3qGHZgBDdeRfg1dNAxmyYcD5+4aSRVWVz5JTRLRdsULseMfTEjoG/BtE= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iUfjIqqMi02QvO7MX5sA/DS9I2BZrmdilPuO3pvdSkK1+WHgcRhCM4jEX3bEWWepaUJag+wlL4plNY0WOnXOUX7YVMddKSldz5MGyd0d3AE0hT6iVeVVYUGxl3DvT5mysrd3c8qu1f+hWQg4fd0zHREnmoA0xVcEgu6o6oh9LnBey7/uYcAuqoxwHB6EOTTRMaBpRYsTaKLa1i0wBEjkKZU2c7F14y2sKRvSNzeQ1aRrUaVf9fqnzZAiGrKHO+xsGYaPicEuhtRV7gkuqXgZdUEhIwneW5NilOym95L+m92EKGLj0D0306uhL6N1j/WyDVRcEqVBy1M6CG1tw8LZEw== 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=thuhOZ3bRCGJXqmgDxUFvm+8lpFcNF0SbLPw+E0cFYU=; b=GJac8z1jJLLjSNv9fANLmM+tkZhra2HdznG0jhthndBfsI9yQi39Rtd//ZXeJAT/s83GnkUQ2R9oueV38PQDtd389Z2oId6nXvM2VJdlew6FIs/tGrvQBcUpVqfri+AhtGv8Ws+5MvaQXW/fwiY3HtkT/ogzAwAC9cce0nC3PCUpy1VBhGSf0K2UxpPZHNyh5kO4LIN6TvQYrj6wKcdQSl/h9LNlwSah77yKZdpUKKExLYHCMAcvmXNV2JpB6DQdTKvsjto4Vnkmz5yq2SSU2V8WPp5WSKj+PubZ9SGEjaI5HUnvXCiN0DYkxueTc2Vtork2yKQPEvXWcJZf4Je7AQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=starfivetech.com; dmarc=pass action=none header.from=starfivetech.com; dkim=pass header.d=starfivetech.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=starfivetech.com; Received: from ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:d::13) by ZQ0PR01MB1080.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.47; Fri, 1 Mar 2024 06:27:49 +0000 Received: from ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn ([fe80::21d1:48e1:7ca0:1d76]) by ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn ([fe80::21d1:48e1:7ca0:1d76%4]) with mapi id 15.20.7270.047; Fri, 1 Mar 2024 06:27:49 +0000 From: "demin.han" To: gcc-patches@gcc.gnu.org Cc: juzhe.zhong@rivai.ai, kito.cheng@gmail.com, pan2.li@intel.com, jeffreyalaw@gmail.com Subject: [PATCH 1/5] RISC-V: Remove float vector eqne pattern Date: Fri, 1 Mar 2024 14:27:07 +0800 Message-ID: <20240301062711.207137-2-demin.han@starfivetech.com> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240301062711.207137-1-demin.han@starfivetech.com> References: <20240301062711.207137-1-demin.han@starfivetech.com> X-ClientProxiedBy: BJSPR01CA0023.CHNPR01.prod.partner.outlook.cn (2406:e500:c211:c::35) To ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn (2406:e500:c550:d::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZQ0PR01MB1063:EE_|ZQ0PR01MB1080:EE_ X-MS-Office365-Filtering-Correlation-Id: ef1e59d8-8f3c-41a7-4630-08dc39b8b760 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2vRWhm0YrajNbd7yUT3bi8y01l4NWbqqVGEMxmA/rJSLhHZi0KJSPc6cy1khCMWWybGSYpc0SCUsg2Gvesw0Ff778x3//Olr45vjhaiMJ+W0t2U0wvmfvJ7TbHPx1REBOjxAt8R2iOS3QpxVv+DJdFyVgXo3xZuRHNMHy+fjW/PherK1tBTqDXHskT4l5A5L790ngRYwz2hYa6efppImiLAF5w6cCpgvPxmfxFsnoIUdI3yELrlsFnCHGAi3dYuraeetMtECbrdsLI6KGMUJ0D7U6f8J4uQkQmStRq2DZqXprfa1839/NLw7pW8a1bAbfSSjQUO1cLMqGy6kKM3HouOtdXvCQU/JEjLuhrNuWml4VsAR4IroJGOzUZR9oSaZnTvIqiDSOyZB8FiC3BbTB5DS4S6FB5iTd8Dq+8sjSDiHOToph5sxusMN6cNL2HVfu14/D53NOpciwHMhIS+dLeF9Yj9yCTFVjA/N2aUlEEszqirdtn0zycKtmgP5RbtJwsbvYJ3uQUXytQL+TU8+ipIzfKFJdl4Gwx+Ahvx+/UOQRtep6rJYjnDjYQ7PgqrMXXX58wupaO22Psq68qKJoFRLCu5F8zZRYJOSkmKc10/V81bgNvI3sxrsLXNbid2q X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn; PTR:; CAT:NONE; SFS:(13230031)(41320700004)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NCfP7ghBVABO2pGibrLzS89F+tsy5hFzURyvrzkHEu9tqnlOM5jWLMjRwO2DHrWtoex6L2jSyNVrHBxnnk6HDtwsEzWYB37my4b9uNeMFwWIuvSAOD3XnvpQKtEa8575LBmsjCE0K6ACzOy9416rId01ekq8eybVG8ldU+lLZVd8JVBOLClpG076WCwI+ZdxOkTKp12oNqxPBp2kJmYGv6CwlanOQAcytsHoGr2QNBY3MyE6lHX+nHZTAgiduCG47sbAT8J6mbarNC4VB8oT9R8whZQywlEK16sHjwkjUllrosPM6mIO0Ngi4zjp9lPmrvg5BZs19yrGAsnQEaXRIh/1JPbnbPmF7k+QP/pMnWAxQPByYq2QHjlrdoFcQMNzUsvC/9L2fGAdrz813tZZhUaLTo+o2LPBF9qvRO4j7GM0nRoh/7VQoG7JkcfwKQYij7XOQmwz/jn1znImYY6XTWZmiZ7LEiUOE0zGsVLxJUG6a9S2BySKOr7xIqkMHPmt2iut6gpRnJfNYTUUfA+QJJv/8iVNErLCQC4tbtRKTDUnhLP+g/gNXWMGPQpPWeXmOPN8v8/Doz1XBdjK836sbp7Bc1e2k91voDO/2RAgi4ePxrZij2QdTdvZF3wR9nGTe2hw7T4NaVdziZVxnfvajvMH6h5tosJTzILGYl6whnR5ZLXCY1wp/bzqaKchE/uP4vxGlg0t73hteEH4ovMvISPwpi/qjuaPuuJvG0bvB3Pq2SA4jyy2CohOG21Xv6oDhoQAzkp1sbUGOxGvw+/L5Us2jPUsMuzlDnrD3B3J6eNj6RTCmhac4nR8LJFF00F1gxD0mUrIwXuKDY+1ZOy90haLhxILNO3srH+UO2rSUvoK+sJpehTd88R9OICjcP+s1knAwlIBChUVVmQvEWEptcXBC/FC1byDd/uhwizz42WGHBeT9gpVYzro07fPxB1YOWnjBI8RKm1q8YPV6UgytKPLbNIMH2BVfeBrVI36vXZy9u0AiMUF73o1+fYVCagoYvsfVFKmABVmZ0ECEe23U4AjcWGR7IAz09bE4PJrfrqdb3LGtIxBprJVwWG5HTSVLwwSXpa5EZRKbQ+zW+4CFxVrxbA+KzCaeDGBygkvZkzdDtF/WdWZT3YhH6p63I24KfaUq9ixkFmQTzz+1c0CskepCB4vyTSUCsbqLU/ZDLukz0M6fluoJZn/ut6Wy5vuZyPkp12C50lbLMk29ziKZJriO1NDBjK+yMnMWcPtZH2bXlkZn63NsaYLqNVFbfof3K2PlCTMm2IbR6TDbUGdGoJYgj6nYRWHs6DIHqOSr3hB3Iz6KZvtqY+tRs83jfRIAp7yngO5NCzEacZ0XB3jlThS9Tc7uFbocOFACBXRAHvmMJPUBAQIkHBzXTkOG0zwKyB2gP/B1Zi10lLMBgIbQ9ASOUK8oeBOfFmaTNR1lFZLCZAxPC0REcNrw4m5FxO/8Gw3lmiGWhll+DCnlJSjT66lfsCWgDiXs1JfarFPWGZvLB12C0hqXuS7WIUqxy+fW0nC3sXhOqpqZD7TiL8eOnG2EplbOKWNKNGyIoaW0BIkjyQ2Sj6UDgYol740i9kQVkV5eogOFacrwHbR1zHa5g== X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef1e59d8-8f3c-41a7-4630-08dc39b8b760 X-MS-Exchange-CrossTenant-AuthSource: ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2024 06:27:49.5863 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 06fe3fa3-1221-43d3-861b-5a4ee687a85c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +plvSy1JbwPLxH6u6VjOIOvIaK87moKOA9qWMh5JWw/gv0bTeqtfJBYnIOvzgg8pFDCVYlM39sEPqIO9esz8OBsUIob5YDzFpBpPmHvjEbo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ0PR01MB1080 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, SPF_HELO_PASS, 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+patchwork=sourceware.org@gcc.gnu.org We can unify eqne and other comparison operations. Tested on RV32 and RV64 gcc/ChangeLog: * config/riscv/riscv-vector-builtins-bases.cc: Remove eqne cond * config/riscv/vector.md (@pred_eqne_scalar): Remove patterns (*pred_eqne_scalar_merge_tie_mask): Ditto (*pred_eqne_scalar): Ditto (*pred_eqne_scalar_narrow): Ditto Signed-off-by: demin.han Signed-off-by: demin.han > --- .../riscv/riscv-vector-builtins-bases.cc | 4 - gcc/config/riscv/vector.md | 86 ------------------- 2 files changed, 90 deletions(-) diff --git a/gcc/config/riscv/riscv-vector-builtins-bases.cc b/gcc/config/riscv/riscv-vector-builtins-bases.cc index b6f6e4ff37e..d414721ede8 100644 --- a/gcc/config/riscv/riscv-vector-builtins-bases.cc +++ b/gcc/config/riscv/riscv-vector-builtins-bases.cc @@ -1420,10 +1420,6 @@ public: switch (e.op_info->op) { case OP_TYPE_vf: { - if (CODE == EQ || CODE == NE) - return e.use_compare_insn (CODE, code_for_pred_eqne_scalar ( - e.vector_mode ())); - else return e.use_compare_insn (CODE, code_for_pred_cmp_scalar ( e.vector_mode ())); } diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index ab6e099852d..9210d7c28ad 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -7520,92 +7520,6 @@ (define_insn "*pred_cmp_scalar_narrow" (set_attr "mode" "") (set_attr "spec_restriction" "none,thv,thv,none,none")]) -(define_expand "@pred_eqne_scalar" - [(set (match_operand: 0 "register_operand") - (if_then_else: - (unspec: - [(match_operand: 1 "vector_mask_operand") - (match_operand 6 "vector_length_operand") - (match_operand 7 "const_int_operand") - (match_operand 8 "const_int_operand") - (reg:SI VL_REGNUM) - (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) - (match_operator: 3 "equality_operator" - [(vec_duplicate:V_VLSF - (match_operand: 5 "register_operand")) - (match_operand:V_VLSF 4 "register_operand")]) - (match_operand: 2 "vector_merge_operand")))] - "TARGET_VECTOR" - {}) - -(define_insn "*pred_eqne_scalar_merge_tie_mask" - [(set (match_operand: 0 "register_operand" "=vm") - (if_then_else: - (unspec: - [(match_operand: 1 "register_operand" " 0") - (match_operand 5 "vector_length_operand" " rK") - (match_operand 6 "const_int_operand" " i") - (match_operand 7 "const_int_operand" " i") - (reg:SI VL_REGNUM) - (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) - (match_operator: 2 "equality_operator" - [(vec_duplicate:V_VLSF - (match_operand: 4 "register_operand" " f")) - (match_operand:V_VLSF 3 "register_operand" " vr")]) - (match_dup 1)))] - "TARGET_VECTOR" - "vmf%B2.vf\t%0,%3,%4,v0.t" - [(set_attr "type" "vfcmp") - (set_attr "mode" "") - (set_attr "merge_op_idx" "1") - (set_attr "vl_op_idx" "5") - (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[6])")) - (set (attr "avl_type_idx") (const_int 7))]) - -;; We don't use early-clobber for LMUL <= 1 to get better codegen. -(define_insn "*pred_eqne_scalar" - [(set (match_operand: 0 "register_operand" "=vr, vr, &vr, &vr") - (if_then_else: - (unspec: - [(match_operand: 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1") - (match_operand 6 "vector_length_operand" " rK, rK, rK, rK") - (match_operand 7 "const_int_operand" " i, i, i, i") - (match_operand 8 "const_int_operand" " i, i, i, i") - (reg:SI VL_REGNUM) - (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) - (match_operator: 3 "equality_operator" - [(vec_duplicate:V_VLSF - (match_operand: 5 "register_operand" " f, f, f, f")) - (match_operand:V_VLSF 4 "register_operand" " vr, vr, vr, vr")]) - (match_operand: 2 "vector_merge_operand" " vu, 0, vu, 0")))] - "TARGET_VECTOR && riscv_vector::cmp_lmul_le_one (mode)" - "vmf%B3.vf\t%0,%4,%5%p1" - [(set_attr "type" "vfcmp") - (set_attr "mode" "") - (set_attr "spec_restriction" "thv,thv,rvv,rvv")]) - -;; We use early-clobber for source LMUL > dest LMUL. -(define_insn "*pred_eqne_scalar_narrow" - [(set (match_operand: 0 "register_operand" "=vm, vr, vr, &vr, &vr") - (if_then_else: - (unspec: - [(match_operand: 1 "vector_mask_operand" " 0,vmWc1,vmWc1,vmWc1,vmWc1") - (match_operand 6 "vector_length_operand" " rK, rK, rK, rK, rK") - (match_operand 7 "const_int_operand" " i, i, i, i, i") - (match_operand 8 "const_int_operand" " i, i, i, i, i") - (reg:SI VL_REGNUM) - (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) - (match_operator: 3 "equality_operator" - [(vec_duplicate:V_VLSF - (match_operand: 5 "register_operand" " f, f, f, f, f")) - (match_operand:V_VLSF 4 "register_operand" " vr, 0, 0, vr, vr")]) - (match_operand: 2 "vector_merge_operand" " vu, vu, 0, vu, 0")))] - "TARGET_VECTOR && riscv_vector::cmp_lmul_gt_one (mode)" - "vmf%B3.vf\t%0,%4,%5%p1" - [(set_attr "type" "vfcmp") - (set_attr "mode" "") - (set_attr "spec_restriction" "none,thv,thv,none,none")]) - ;; ------------------------------------------------------------------------------- ;; ---- Predicated floating-point merge ;; -------------------------------------------------------------------------------