From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22b.google.com (mail-oi1-x22b.google.com [IPv6:2607:f8b0:4864:20::22b]) by sourceware.org (Postfix) with ESMTPS id 348F4385840D for ; Wed, 24 Apr 2024 10:10:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 348F4385840D Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=sifive.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=sifive.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 348F4385840D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::22b ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713953420; cv=none; b=h5qB/XWjAU4FBByIadVr8tnxvrUfa25TiWykN0M1oM4CiNKyxuCdVZu2gNwzQjf3WHf7UCWzj/Fbn+gehrsyrrfEG0VVTtz/eLb26cY9dUBFuJF88rfJK2/zlrIAX+S2avRLhvAncopvnX5VvWOD89NIrnhFs6ipj2u05yA8B6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1713953420; c=relaxed/simple; bh=suoIOR+IvFEQXEjXzo5Pz3iNi+YKwlrTSfeS9EvuGsQ=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=lWUS7fg/WYm4bx6bqWtS2No90Xy2bcZYpNG/Gc/zS2EmfwC2ZJS52VsUb2GwItnTNNuEvpv5L4yoUh5KkkqFmnQgkFkc6v0LxSYv6cFR0J7S0fYHVD1nMfz8LaguIJSw92WqqFXMBvwgfiDkfFv0CS5zlrmcjI3dfKJ3acAlsr4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oi1-x22b.google.com with SMTP id 5614622812f47-3c70999ff96so4160465b6e.2 for ; Wed, 24 Apr 2024 03:10:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1713953414; x=1714558214; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=s+x9O5oaRFZi7CRBULUNjxrF/EX6SMnDkabdQDQixY0=; b=PYsAz6WGD/N3Ju61++tdEMugApTbVIA11cx2YXycd8zJuTrwGPfRgK9LeXUCMDBnAX eKbaMmdehwdCv2Gxtl74UGU/hnMLRf/oQrYGCLVZf0S0OHK8/hADf+UCkayZrsUFYTnc ZMuKnc3YGApksx83D8bQpRLmD+1WuqPCWvVN+qRePUVgERm+RB1wX85JGPo/ah9xxyqr +X5ModydCEZTP31ObvQE11Rm3a7njomnhUJ3ntAX/TgbAvXnoLR5ZWdqWZOOn5Zo2Zvq nDeE/kMQEsvKRxevQsjBHqhz4PMqXXSIdCXmB5wwsQ1aD6LjDJ/9BdToerx9Ol/ISd7O Yvhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713953414; x=1714558214; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=s+x9O5oaRFZi7CRBULUNjxrF/EX6SMnDkabdQDQixY0=; b=ThAIRsWRJD7Kwp/G5uvEKksH1I8peioWCSnhUPc4D51ZbkWs02qqIADjrfHFHii+P1 kyQ64EdccDa9KeR02UryuU+dfiGf6YqRp/rztNalb2Iz6flwozHCPkZASsK6D+zG0pgI LPr5Ev6khHpfBBeygFaOViX1yGS/xa9qvgfcJTzGLvtLtpT3SQgO4eJ/Jr2CMOsIP/j/ 7ryLJm0Lo65GRKD1mktyg1fQwRURX3HWrTDCm39ftjmTtbPvm+d73U2LWiJ4cs9N8ZJi gZ7pPCiOTRCaa7E5nrSnqARS7vz8lDADSRhlarRPVfhKi8DSYtueMGnmeHRFuC2Pc0vs wXRQ== X-Gm-Message-State: AOJu0YyoKgkU7CVlT71cMghLJa0uH+1mcyRqObU/7oR+UiQleH8v3FzX RIRtkKPDyNDxRubOPgjZva7bF1gjObFZkQS9RI9zqw/Z6Xwg1cq4GdQfyv+yUM+0iFzhj0AiwEm 9jXXYSEeCXoWS1s7cAFh3bdYVMEiAuTpZJn8H56r0GyRwEzRJIlYcmReoE2gOmXTig1+EtGIRb4 Fv5Py/8yBST5dLjfFBnN2Ni+bqXcZoGy0Ok2kO5JQk X-Google-Smtp-Source: AGHT+IF4zMxGzBGg7DDxX4qWDK38/zDFCOE5ya+9a8FEBb1+m9QFxBgxgv53Zgs4BU4fk2nmmgja8g== X-Received: by 2002:a05:6808:1718:b0:3c7:35ce:67a4 with SMTP id bc24-20020a056808171800b003c735ce67a4mr2080113oib.10.1713953414006; Wed, 24 Apr 2024 03:10:14 -0700 (PDT) Received: from hsinchu18.internal.sifive.com (59-124-168-89.hinet-ip.hinet.net. [59.124.168.89]) by smtp.gmail.com with ESMTPSA id i13-20020a63e44d000000b005d8b89bbf20sm10737229pgk.63.2024.04.24.03.10.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Apr 2024 03:10:13 -0700 (PDT) From: Kito Cheng To: gcc-patches@gcc.gnu.org, kito.cheng@gmail.com, rdapp@ventanamicro.com, juzhe.zhong@rivai.ai Cc: Kito Cheng Subject: [PATCH][GCC 13] RISC-V: Fix recursive vsetvli checking [PR114172] Date: Wed, 24 Apr 2024 18:09:47 +0800 Message-Id: <20240424100946.1892969-1-kito.cheng@sifive.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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 List-Id: extract_single_source will recursive checking the sources to make sure if it's single source, however it may cause infinite recursive when the source is come from itself, so it should just skip first source to prevent that. NOTE: This logic has existing on trunk/GCC 14, but it included in a big vsetvli improvement patch, which is not backport to GCC 13. ``` void saxpy_rvv_m8(float *y, long vl) { for (;;) { vl = __riscv_vsetvl_e32m8(vl); //ICE vfloat32m8_t y_vec; __riscv_vse32_v_f32m8(y, y_vec, vl); } } ``` gcc/ChangeLog: PR target/114172 * gcc/config/riscv/riscv-vsetvl.cc (extract_single_source): Skip first set. gcc/testsuite/ChangeLog: PR target/114172 * gcc.target/riscv/rvv/vsetvl/pr114172.c: New. --- gcc/config/riscv/riscv-vsetvl.cc | 4 ++++ .../gcc.target/riscv/rvv/vsetvl/pr114172.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr114172.c diff --git a/gcc/config/riscv/riscv-vsetvl.cc b/gcc/config/riscv/riscv-vsetvl.cc index 9dca2ce709d..36d2e6e6f20 100644 --- a/gcc/config/riscv/riscv-vsetvl.cc +++ b/gcc/config/riscv/riscv-vsetvl.cc @@ -1196,6 +1196,10 @@ extract_single_source (set_info *set) return nullptr; for (const set_info *set : sets) { + /* Skip first set, this can prevent us run into infinite recursive + checking if first set is come from itself. */ + if (set == *sets.begin ()) + continue; /* If there is a head or end insn, we conservative return NULL so that VSETVL PASS will insert vsetvl directly. */ if (set->insn ()->is_artificial ()) diff --git a/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr114172.c b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr114172.c new file mode 100644 index 00000000000..ed1494666d6 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr114172.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv -mabi=lp64 -fno-tree-vectorize" } */ + +#include "riscv_vector.h" + +void e(long, vfloat32m4_t); + +void b(long c) { + for (;;) { + c = __riscv_vsetvl_e32m4(c); + vfloat32m4_t d; + e(c, d); + } +} -- 2.34.1