From patchwork Fri Aug 11 11:49:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 134435 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp1029515vqi; Fri, 11 Aug 2023 04:52:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH/ZVtGa1AymGRyMxVLYvfqm2+W2JrvnrA33oN0zADZL90W1pVJXOdvD5/qV6YPidqWiPlb X-Received: by 2002:a17:906:cc4e:b0:99c:e38d:e484 with SMTP id mm14-20020a170906cc4e00b0099ce38de484mr1646560ejb.6.1691754758727; Fri, 11 Aug 2023 04:52:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691754758; cv=none; d=google.com; s=arc-20160816; b=T6JGZP0bkTYSNeUokioKwQOeXig1EDxJqsxD3P3vxQYzqt8lV7SwYwo37UrjyhVcBO 9c/68CqDc9eJtAy4XOFqjuaP77Fej8g0SeY8LtczVffKHrU2ayj9NKf/sk1A2395IDoN MpJkHavNCFDUsBvzZP7kJzW6dc2J3+E88B1yfGsduF2ytp9f6ev7ztPVbn0myTQHm6QE 9kLlccEX6rOPj/7X2c0SQ5I/e+w3J4mcBT0HyiQHriap/my6CB/iwk1g0qXde0VrirbI k+14Zr8anFtsip7pKp0G/zOVqtrzKPqG9yOk4sDpdr0hpDluAqC1mYTOcQJEvotzNVgq SjFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dmarc-filter:delivered-to; bh=WN+aWV+JNhy3tCjwI7Yf7htzH013FBLRRKByVku2MuI=; fh=bFGt8bvBdss4RDVNwtoG4vql1cbNszblsxOGwrQqCdA=; b=O9sS5NlFIsbsNZUzFuFi58JIKdljZ4b7wTmdckUrWi+5SYVzPM/thpLGZRTWk5ZcKI YdroqvNKEt9J1QH+H4ULaAqEbwsQUs6C+SYO4FCvnp2k0sW6YjLFMjl6ku6Yj6gKZExo 5sSI6sAOrblTm2e5g1BwIA8VDUEff7b0gbT2Rmmw/WFdZif+BKcSDw27kW4xKxBVJ/Xs ibj/6SWFAtheJlQHq59oxhFzG9VVloi49PQ2wErv+rlrnJ6xIuWRK0bkAeV+A+eeuuLq BqsOQj25z11OZznAWszLI/EctxmsULTZaPsUtbXt31AGqZzTE5d/dk6KNZPzkhrPj1D/ 8bCA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id j21-20020a170906411500b0099cbc524430si3439243ejk.804.2023.08.11.04.52.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Aug 2023 04:52:38 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 949253857012 for ; Fri, 11 Aug 2023 11:52:27 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by sourceware.org (Postfix) with ESMTPS id 87DA23858C5E for ; Fri, 11 Aug 2023 11:52:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 87DA23858C5E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp86t1691754561tfilsnzg Received: from rios-cad5.localdomain ( [58.60.1.11]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 11 Aug 2023 19:49:20 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: CR3LFp2JE4npdFIzHX6Qut3pDwgvHMv2p7ICvwGhgQ7eTr7DJkwF53OMJ8uyY SHbK4wuTA6B40LMqPzxxcmtJu6iHRV9YHDNcABPm+GpqiA2/g0ONiY73JRspiKT5FSI4KUT EugWQp7jqNK7kb5MlIcERfWY3YndgFr4tDbaWmnLvGwcNjAU0wEkACD/4kQ/wgdt2mQ4oD9 MEEIzZS3D/J06FuYIFByZW9mEFb0QA/Wo/3GoKJePYw8LSr2la6GeRuW16Q8xPjPK7vf9Kp p7m8FYCS7Mx4QV39o3mIIDvujIbKGL+X1IbYm9ayAff0IWbheviM4BU082ZaOD1K1JkEJbc KiKSl22ADOUnZoE61e/Gxmr1EH3RVInOlEin4fyCXF58P9+QNx5jGoKtglAAK6NPJZ7yTnH l6litZCcsYMtnVUKt2rpQA== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 15508113948021303926 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: richard.sandiford@arm.com, rguenther@suse.de, Juzhe-Zhong Subject: [PATCH] VECT: Fix ICE on MASK_LEN_{LOAD, STORE} when no LEN recorded[PR110989] Date: Fri, 11 Aug 2023 19:49:19 +0800 Message-Id: <20230811114919.2556172-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1773933438273452611 X-GMAIL-MSGID: 1773933438273452611 This patch fixes bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110989 This ICE is caused because of this situation: mask__49.21_99 = vect__17.19_96 == { 0.0, ... }; ... vect__6.24_107 = .MASK_LEN_LOAD (vectp.22_105, 32B, mask__49.21_99, POLY_INT_CST [2, 2], 0); The MASK_LEN_LOAD is using real MASK which is produced by the EQ comparison wheras the LEN is the dummy LEN which is the vectorization factor. In this situation, we didn't enter 'vect_record_loop_len' since there is no LEN loop control. Then 'LOOP_VINFO_RGROUP_IV_TYPE' is not suitable type for 'build_int_cst' used for producing LEN argument for 'MASK_LEN_LOAD', so use sizetype instead which is perfectly matching RVV length requirement. PR middle-end/110989 gcc/ChangeLog: * tree-vect-stmts.cc (vectorizable_store): Replace iv_type with sizetype. (vectorizable_load): Ditto. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/pr110989.c: New test. --- gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c | 11 +++++++++++ gcc/tree-vect-stmts.cc | 7 ++----- 2 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c new file mode 100644 index 00000000000..cf3b247e604 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr110989.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64d --param=riscv-autovec-preference=scalable -Ofast" } */ + +int a, b, c; +double *d; +void e() { + double f; + for (; c; c++, d--) + f = *d ?: *(&a + c); + b = f; +} diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 398fbe945e5..e0e2083d022 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -9126,9 +9126,8 @@ vectorizable_store (vec_info *vinfo, { /* Pass VF value to 'len' argument of MASK_LEN_STORE if LOOP_LENS is invalid. */ - tree iv_type = LOOP_VINFO_RGROUP_IV_TYPE (loop_vinfo); final_len - = build_int_cst (iv_type, + = build_int_cst (sizetype, TYPE_VECTOR_SUBPARTS (vectype)); } if (!final_mask) @@ -10713,10 +10712,8 @@ vectorizable_load (vec_info *vinfo, { /* Pass VF value to 'len' argument of MASK_LEN_LOAD if LOOP_LENS is invalid. */ - tree iv_type - = LOOP_VINFO_RGROUP_IV_TYPE (loop_vinfo); final_len - = build_int_cst (iv_type, + = build_int_cst (sizetype, TYPE_VECTOR_SUBPARTS (vectype)); } if (!final_mask)