From patchwork Mon Feb 26 06:56:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?6ZKf5bGF5ZOy?= X-Patchwork-Id: 86365 X-Patchwork-Delegate: jlaw@ventanamicro.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 822A3385842C for ; Mon, 26 Feb 2024 06:57:03 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by sourceware.org (Postfix) with ESMTPS id 53C753858D3C for ; Mon, 26 Feb 2024 06:56:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 53C753858D3C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 53C753858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.206.34.216 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708930596; cv=none; b=AX2B5QZa/7DqyQHFym3lFg1h79zLXp6Iy8VJlrGpHQ1NyXhez6Ccdu+OWfB/X06EYEEXrWEZ09XJ5xCk6gRhK2kftjoVDV+tTEaZRQl/eiLWDsqPjXyw8TM0lGpZsn43ElRCBHU5Us7bAB+ZbGPLDFNoJFT/NS2M3wmQhWxx9iw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708930596; c=relaxed/simple; bh=ad6zR2UikJEQUl/7Eyk4hQw34OTxacCaBgdsE+g+rAA=; h=Date:From:To:Subject:Mime-Version:Message-ID; b=EQe1f84hBdlj/1gzdvcHE4lymrTYOXZHhQ96+SBf7f6hXOvW+amTzS8FyFCbUpgbzNnATqxwBhsVGzTjclGSwMu7i2xln41/XN31lQvCVk1yFtXVz8GnfMEXTGNWZD+8x9VvvBQsBMAG3PDxT6FUhuxsRMDuU//w+3tNYrMB6lY= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp65t1708930582tw7p1hr0 X-QQ-Originating-IP: +akE92RqkHUNmGuW8BmAgPAPXdh/OBexHKIlkGKN73Y= Received: from LAPTOP-EPITNQBU ( [113.104.210.141]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 26 Feb 2024 14:56:21 +0800 (CST) X-QQ-SSF: 00400000000000G0V000000A0000000 X-QQ-FEAT: UJd4nZbM1CeELpNv1gZtjAflUKDpGr5R/4a6SZPhG/+CZ1XWzk+qYj52pnPTn fLgQSP0knqo80c4FUDRUmg5sTu6DoU+0DfCayxZG/rtPz0r5HpVVwMgHRBzhANpHODmwzM9 dndYDOTRHO3qQyjCzAdFAWpVXXZ6tgd1tIAEdp240CFyETfQFDWQBgBP15dL32q2Py+oB+B Vru9cqVLopVTVnWQvbDV2j16jCjo6Pc6CkoWumq+qq00pHcwpA8GAOTgxDEr8DV58N1itU+ VUybkDlKjnpn5VIqRGIFIgKDQVzLJCcRZKqv+Bw5uxOO0aa5AwDK/7P6t/44OhI0v9nAMRL vIT7bKq4StCQXXYcbWzL6E860AVQX6G9jfs8DbHtYc65hk8c/IooseHqgLDkKfJkYMrHdAD X-QQ-GoodBg: 2 X-BIZMAIL-ID: 368499645127065598 Date: Mon, 26 Feb 2024 14:56:22 +0800 From: "juzhe.zhong@rivai.ai" To: gcc-patches Cc: "Robin Dapp" , richard.sandiford , "Richard Biener" , kito.cheng Subject: [PATCH] RISC-V: add option -m(no-)autovec-segment X-Priority: 3 X-GUID: 52520B6E-B6C4-43B5-98F4-C2A45D99F343 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <66C3107A4A476C91+202402261456221099863@rivai.ai> X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, MIME_CHARSET_FARAWAY, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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 with this recognition like aarch64: /* Return true if an access of kind KIND for STMT_INFO represents one vector of an LD[234] or ST[234] operation. Return the total number of vectors (2, 3 or 4) if so, otherwise return a value outside that range. */ static int aarch64_ld234_st234_vectors (vect_cost_for_stmt kind, stmt_vec_info stmt_info) { if ((kind == vector_load || kind == unaligned_load || kind == vector_store || kind == unaligned_store) && STMT_VINFO_DATA_REF (stmt_info)) { stmt_info = DR_GROUP_FIRST_ELEMENT (stmt_info); if (stmt_info && STMT_VINFO_MEMORY_ACCESS_TYPE (stmt_info) == VMAT_LOAD_STORE_LANES) return DR_GROUP_SIZE (stmt_info); } return 0; } juzhe.zhong@rivai.ai diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 1dbe1115da4..6303d82d959 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -11521,7 +11521,8 @@ vectorizable_load (vec_info *vinfo, - (vec_num * j + i) * nunits); /* remain should now be > 0 and < nunits. */ unsigned num; - if (constant_multiple_p (nunits, remain, &num)) + if (known_gt (remain, 0) + && constant_multiple_p (nunits, remain, &num)) Why do you change loop vectorize code here ? Ideally, we should add cost model for segment load/store instead of disable segment load/store autovectorization with compile option.