From patchwork Tue Apr 2 08:30:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Demin Han X-Patchwork-Id: 1918690 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org 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 4V81Q764MQz1yYw for ; Tue, 2 Apr 2024 19:34:22 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B9635385E833 for ; Tue, 2 Apr 2024 08:34:20 +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-sh0chn02on2090.outbound.protection.partner.outlook.cn [139.219.146.90]) by sourceware.org (Postfix) with ESMTPS id 29FE53858287 for ; Tue, 2 Apr 2024 08:31:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 29FE53858287 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 29FE53858287 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=139.219.146.90 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1712046833; cv=pass; b=wKb0egPcJPShXe9gGkxWCqqf7lsNbdNgL+9KBV9vy79vIZP0coEkrgyjQASBh1Qz0QCxLj9dP8r0tRCWTQZIvzULI3vYRrTjRbvH7NBUL25Zodl6hJgldW/IAu6ZdNkdPkc2F23UPBeJzOHnJPfTb/j3SdGqA+7Dt3Y6jkZ7jUo= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1712046833; c=relaxed/simple; bh=uKo/x2pT7Pha4T2SeIzg2DvyYzu5GCLfaxYXCeIR4mQ=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Slgjgdc+NJGt2254JSNuAsDRaI0DfA7nYMy8Aj0GLQ+zjwMuymFPyI7kDwH3Nd0emFeoQ36zxy+oBmlJtnGHH1Je9Xn6XjsNi97r4bCG0bQhTZTZXwoZyi2pX143h9moTV0Kr06OObOIRvzhHAbMKSgSRXeuLSovknUR8yFdE5M= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iSEg57uGe8tIDGnjkpunWCgWV/kYoh137WsmuIs/zcsD9/pJUAhHim+cwgSs+TQsR6pzWoQoqivwIQr18Yuyzka/OGSZV1G4Z+ddueuMt4p53A2uX76IvWi1s6IniU2ZWtSMGVPZnLX/sWg8vO+LW/8X31JRCMTIGnh8JiZNnhon1Ja1hASJG9aNiLCpP/D7xLxYEk1EQwI7C86M8oxAWJPF5ZpznrNXO15HXftcAbVbwElr5e91yiIfOdezqao5Kzkp9F6jDO1NolwTwgI+JFgnyrmZowyhPloJbpsjNaCUHEBiMEy1AfGs+gRa/L0CcT7DZGWeueIjMwYOK6mdag== 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=q9UnJ3fQFU3Mm54RbDEQs4v6Z5dy7TMvB+WfBlHORFE=; b=lGhfQckKdTYTJu5Ag4D3NEbgotVEQ37H5szorZX7X6ukWwzqZAGDdB+tx3iezcOVBGu0uoKRrdjv8/h0l0McsPMXsJpE9tOOTeq9D5GrfrHhmy+HW9Ly9qogknsZBjTshWGyYYWEMxtUHirfnlYsm5aG5LC81tzrl3ip5BBOVZCJ7TC0Hzx4KvDZVt4VLr3yuq2adowhV/tav9jC/auKld8aQll90IZOfcMYT75qdzwNjxHVDBspIPwf+Lh3/RtQIw62xrSNjO7ggN4q0LtK9JNvabeG8X9wN2dPI1Ij3+YbgLjL8lY2ndNdSKs3r61qZz7/UDoJVyoG4F/QQuP7og== 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 ZQ0PR01MB0981.CHNPR01.prod.partner.outlook.cn (2406:e500:c550::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.13; Tue, 2 Apr 2024 08:31:06 +0000 Received: from ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn ([fe80::4d0e:1ae2:c855:6645]) by ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn ([fe80::4d0e:1ae2:c855:6645%6]) with mapi id 15.20.7409.028; Tue, 2 Apr 2024 08:31:05 +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, rdapp.gcc@gmail.com Subject: [PATCH v2] RISC-V: Refine the condition for add additional vars in RVV cost model Date: Tue, 2 Apr 2024 16:30:27 +0800 Message-ID: <20240402083027.474752-1-demin.han@starfivetech.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240328103138.297823-1-demin.han@starfivetech.com> References: <20240328103138.297823-1-demin.han@starfivetech.com> X-ClientProxiedBy: BJSPR01CA0002.CHNPR01.prod.partner.outlook.cn (2406:e500:c211:c::14) 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_|ZQ0PR01MB0981:EE_ X-MS-Office365-Filtering-Correlation-Id: 56855ba6-aada-4ebb-7e23-08dc52ef3cf1 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uCuxMOQrnPIumuM6KzL55nNlnEuS2ioxAnHyLWHrF5dweiSD2ISRtvc0p1r7aVcU5yqkF+xUPFlGqXymg6amhNUmwwF77nuCx7c/oAZAJ4uxCatc2GC+nfDl9w2crtgkegPid5SE7kKIchPenh+ySdtJr2Bu2FEmLEEUASc+oCYL9IjGcZ8bpftm+iMtf3uwh0wvtWCxTGf5dwb4gqcCJmQSI2lWARkkr6Uj5vwwUiTuSdblwg3p+L38lr/O+gdRMUzXim/DwHPNiwncL6mUCgzS4pzPqwygZWZ1YDwc6PdrWLZfqJzxrynwz6btlwDNZ6muZ0BjIJAq6D0rgc/ESUemV5xfG6YxxnVN8AxKTsw7In7keK9wfgiYmQ6lC6VV1A7hrEps1KnGQnbztamx2+RvBkRqzPGYFE3OwXiwrHNuTnAJPDZ6Pe5ZROIFSorpaR142+g6RLis6S069nd166tBcDNCnebKxOnE1yRLAyXPkeGyXQXFg6XmS5SMKesYs3cS/vCydTxTX4JDJSF8eDa8Nt2Vk96lu845cpMF60Q4AQxgCtM3ZxC7eAsm7guvOYwtbLzDCqpRoiv5OdGh4rXWiW+Y0nKDpykcDaMqfpKaOxWRzLkZMQ/N3eRe49WZ 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)(366007)(41320700004)(52116005)(1800799015)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: NMeJrGvKcK8t2J21IhukhucthFXOKEUVWvAAbejJoRP2AtyiUvZkCgPSIxtk9HisvLpZ863xx5WaJvhpi6a78qNnHlEkQQm3vlLPW+O7D07+N1C6AxumwyZVheLa5NJKuk0znWxXIyPqLqplSDvkUrrbhapWi9kKsUNKO8jfZpxbsyhy1ss5sslfKrMgRzSLJVydYXy10X3WnRv1YBM2SAAcWgMUTecZ2iWuBz376Dvfnh6ISPDHY87TlZikoZ1rgkAPAR3LPNcfO7E+vqDImL9qLXDsnVvxHbD40iP9aSSnqxMqP3LoxnDb/AP19/O9vy3oT6kNllZ3zdBfEfGmqI2/GPW6kkp9/rLCo0Y2Vda91LGkcQ1i9idTa8c3m44vVI2b8kh418WsGEosFm2KRF5nMHcHRUVUE02xHXLz6rQvmdcm4KpmuPtOMDQaXIp2hkUeW9HEA+uodwgQFRQcyEwJszm3HMseH1hea2WMks07jtx9f6LEUegNsBEfwp1L0L0QxF4KUCGuEqb9IeBFOL7odOVSqWbu4IcTSoTgQCCHS6p0rOrF1ZYreGEPiBqxoHo4NxiEQkzMD6SLGUnh06cHYq5wq1vsA5nRmo1R9QKnY1SIQXDR37sue1RYFPc5utIQahURYreOEFDWRO3mmVQkHdIA+EljcVSVmGNm8o8Mc7v2EWfxueUm4zAzm+IvzFvO8vH1/Gv3MLdC0CK6b4O+1FJzygxuCof6Q52+4ZQD19LvAhh6jMlvUCU2JJ3WiQk/ZqyzGwehKjLnsKy+roPmwuII/fVcK1Dr6TtTjW3ZTIIGjnk6gnx2lHVRmuv0rSCKffo1Z9pQXJ+axCp2qd/1BMlfgYTiK1sqLTglQ6KqPOqEmzrw/8ODt/UgFsP8Iv6FTqXmPGw33/QDlMTmgQD4Lk/xKxQHaMLMMXuglqGIDP26uLG6Qz70sDEulMX6/vDnukuRBPuOSIewVHqVdblctZzzVXTRuBLTRdxgA3LCIagjBYTzJLNGS6lvcqpCePSPtUAzROSJcYbTkK6mb3piu+xKqi1I0uCeFnK7glHrqfYgyh+PVHYsRtGfQBb4VePEvMl0FvZ/4Ti0eRAZVokdH3bq8RwUi8FtcRRH6UqFiSruN0p6X7owwTvI5f8QI5WouMFuSKfI7Lj1fVoZ+3XC5ir6BZQTmh7SqR4AEtciPuZGtU1kaMP+EgcroBZ9643JW12QQDzfTR5qZxyanVSIN245YK83Fxp3urAXNIAgU5L50I03ERdTPjcBWytADHYz2c4KMyGpz6J6yTdfmpJtP0DBNq6jNVUg2Gu6hVX8pnQsMSt98BMvh8ejxi4bEXwgFDj57p5/AbBJuqsCi1w9m5a7yT1N+pyP8Ny4GOndmIlQ75pz04nnVEnl8F9x/8Quud30mSGw4pdIfJKhLsX7moR5SpRiiFw9eFJVNT5dulLbBzqnqawepXfwA3B1Mo4felnvsewFAEqwfm4rQA9UM95uiIs/fSEii0gu2NbzmLfCKoWZGC754dpG4S4NfYqjDAQFU9tZNb4IgPC7F0MKPBANPA6hEHWUC1wT354Iu7Xbvbb1zFnKy3lu6C993B9xG18Nna8U4Z59b6CYXA== X-OriginatorOrg: starfivetech.com X-MS-Exchange-CrossTenant-Network-Message-Id: 56855ba6-aada-4ebb-7e23-08dc52ef3cf1 X-MS-Exchange-CrossTenant-AuthSource: ZQ0PR01MB1063.CHNPR01.prod.partner.outlook.cn X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2024 08:31:05.9088 (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: cZUoDYbDHaepN/l9Wlx/c0Zjg9Uw353t0vZh3ZMAMHLKHqxqgVUTDTkNeTvMZk9HoWLU86Dgw5BNKRH8xdtqj2n7/GD33BkD7mJhj77E76w= X-MS-Exchange-Transport-CrossTenantHeadersStamped: ZQ0PR01MB0981 X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, 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 The adjacent_dr_p is sufficient and unnecessary condition for contiguous access. So unnecessary live-ranges are added and result in smaller LMUL. This patch uses MEMORY_ACCESS_TYPE as condition and constrains segment load/store. Tested on RV64 and no regression. PR target/114506 gcc/ChangeLog: * config/riscv/riscv-vector-costs.cc (non_contiguous_memory_access_p): Rename (need_additional_vector_vars_p): Rename and refine condition gcc/testsuite/ChangeLog: * gcc.dg/vect/costmodel/riscv/rvv/pr114506.c: New test. Signed-off-by: demin.han Signed-off-by: demin.han Signed-off-by: demin.han --- V2 changes: 1. remove max_point issue 2. minor change in commit message gcc/config/riscv/riscv-vector-costs.cc | 23 ++++++++++++------- .../vect/costmodel/riscv/rvv/pr114506.c | 23 +++++++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/pr114506.c diff --git a/gcc/config/riscv/riscv-vector-costs.cc b/gcc/config/riscv/riscv-vector-costs.cc index f462c272a6e..484196b15b4 100644 --- a/gcc/config/riscv/riscv-vector-costs.cc +++ b/gcc/config/riscv/riscv-vector-costs.cc @@ -563,14 +563,24 @@ get_store_value (gimple *stmt) return gimple_assign_rhs1 (stmt); } -/* Return true if it is non-contiguous load/store. */ +/* Return true if addtional vector vars needed. */ static bool -non_contiguous_memory_access_p (stmt_vec_info stmt_info) +need_additional_vector_vars_p (stmt_vec_info stmt_info) { enum stmt_vec_info_type type = STMT_VINFO_TYPE (vect_stmt_to_vectorize (stmt_info)); - return ((type == load_vec_info_type || type == store_vec_info_type) - && !adjacent_dr_p (STMT_VINFO_DATA_REF (stmt_info))); + if (type == load_vec_info_type || type == store_vec_info_type) + { + if (STMT_VINFO_GATHER_SCATTER_P (stmt_info) + && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_GATHER_SCATTER) + return true; + + machine_mode mode = TYPE_MODE (STMT_VINFO_VECTYPE (stmt_info)); + int lmul = riscv_get_v_regno_alignment (mode); + if (DR_GROUP_SIZE (stmt_info) * lmul > RVV_M8) + return true; + } + return false; } /* Return the LMUL of the current analysis. */ @@ -739,10 +749,7 @@ update_local_live_ranges ( stmt_vec_info stmt_info = vinfo->lookup_stmt (gsi_stmt (si)); enum stmt_vec_info_type type = STMT_VINFO_TYPE (vect_stmt_to_vectorize (stmt_info)); - if (non_contiguous_memory_access_p (stmt_info) - /* LOAD_LANES/STORE_LANES doesn't need a perm indice. */ - && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) - != VMAT_LOAD_STORE_LANES) + if (need_additional_vector_vars_p (stmt_info)) { /* For non-adjacent load/store STMT, we will potentially convert it into: diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/pr114506.c b/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/pr114506.c new file mode 100644 index 00000000000..a88d24b2d2d --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/costmodel/riscv/rvv/pr114506.c @@ -0,0 +1,23 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d -O3 -ftree-vectorize -mrvv-max-lmul=dynamic -fdump-tree-vect-details" } */ + +float a[32000], b[32000], c[32000], d[32000]; +float aa[256][256], bb[256][256], cc[256][256]; + +void +s2275 () +{ + for (int i = 0; i < 256; i++) + { + for (int j = 0; j < 256; j++) + { + aa[j][i] = aa[j][i] + bb[j][i] * cc[j][i]; + } + a[i] = b[i] + c[i] * d[i]; + } +} + +/* { dg-final { scan-assembler-times {e32,m8} 1 } } */ +/* { dg-final { scan-assembler-not {e32,m4} } } */ +/* { dg-final { scan-assembler-not {csrr} } } */ +/* { dg-final { scan-tree-dump-not "Preferring smaller LMUL loop because it has unexpected spills" "vect" } } */