Message ID | 20231017113500.1160997-1-lehua.ding@rivai.ai |
---|---|
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2908:b0:403:3b70:6f57 with SMTP id ib8csp4068212vqb; Tue, 17 Oct 2023 04:35:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFBBAECFIYKPUhs2t80YZhxq1SVH525GPhOHoiFuOEHve0/8VolS8dtQ1Gv2lj//fNisEeq X-Received: by 2002:a05:622a:1354:b0:419:65f8:1cb8 with SMTP id w20-20020a05622a135400b0041965f81cb8mr1966937qtk.10.1697542538160; Tue, 17 Oct 2023 04:35:38 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1697542538; cv=pass; d=google.com; s=arc-20160816; b=KTUvORznDcQiv+BAN+J334mEnPkxi7bnWS7mJk4DuH9nMpza6d8e6Dp7Yf1Z9uLXhV uWEUz3gyUlyWB4+IW3BWD+uIHk88jv+g+O6ZpGYorjoZ84VGREzxofZJWhbViIYzt9RM DS2Gtj+JPYpU8quByG/uiFKZ/gVKUdYfgR1JaVw5nPPJG/yPWxPiDALWTDreQ2Vwqs8j HH2c2g5PlKTHQZKm+dZ0CuI8mnP1x1WKHoRq9tARcVtEchxbOqYKCCVZQyu0ud8z+8rx 7R/5hwJIqhonX0Y1QYSs9V3K8t7UmLfdl6n39O6DiujTxM+kZ+qcHn1MwS1koI62VqcC IlgQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=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:arc-filter:dmarc-filter:delivered-to; bh=o7i+wnrpB1XLVXoj0X6YFmDFngF9cVVCA0VYxvBINSc=; fh=x/Q0OlwHuvCZ3FpkiZPiUSvevOYVxUAi4aNnf76mUPQ=; b=p56WbRH6bys/L9LXSXfHl2vOWWGHF5fnKADSSdHLT/KTgjnK214jk/7j3Siac8YW01 2FtEzmIZ147uHw1ZVKbHUp5fQ+aN2AAlc0zAOHZ7odOYL3K/TRPbW15H5dSH98SiunDe CRRKMf0nxtR6Z/rCYgiH6OdOagtYOoDZK8URkm+9AIn6CN5JN9UpaXKAQT6O13ZjPog1 hjhlAFUQmalJWRe/Sr4qJfU3xM7GINZaTDNq4VjFva1ALAwIXF8xV8vWwIMgoFJ72poO HH79efzuza/y2EUq4u7irauLDJjxhkc8wFCN8Fo1MZdUESLklSNEkSMYvik0AeE3Bjpp zb4A== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); 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 y12-20020a05622a120c00b004197f495da8si966537qtx.774.2023.10.17.04.35.38 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 04:35: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; arc=pass (i=1); 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 9D126385841A for <ouuuleilei@gmail.com>; Tue, 17 Oct 2023 11:35:37 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by sourceware.org (Postfix) with ESMTPS id AC35B3858C2A for <gcc-patches@gcc.gnu.org>; Tue, 17 Oct 2023 11:35:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AC35B3858C2A 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 AC35B3858C2A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.206.16.166 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697542513; cv=none; b=ofyY9PjtiqNbtbIOyRLiKmhdYMRMqPCDNKsT2536JLC+IW59P4W9pLsoLQ0PBJoS69prs/7R4WRQDE61VNYSmwfhs+qhXSD9gdMOh1w2AwEaLMWSO+cSe1oF5TOatxG3uMAG6NrzkdMh75mS1xsZk0NwdLticyr6SaUZHr1Fkzg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1697542513; c=relaxed/simple; bh=EnztZ3IlMi2T1oe1bE8TMEQGi0MwoVbaEKuEgcPTuyg=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=oqaVAh+FACku+89U+ZksB3FUjbVJIrNvEatxoG/yUlYM929+LWV9eSeIyMSVJ71SvCLYT6UTkJTmMPyfZ3zzVr//sofjgsZNn+fQvXH2PyybyPJULbGsDDrOQMSzEpvLerBZyJn9vCpcAgLH0GUvqCl0/3bUkEcMsMtCPBS9Pk8= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp62t1697542503tdyg1n9i Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 17 Oct 2023 19:35:01 +0800 (CST) X-QQ-SSF: 01400000000000C0F000000A0000000 X-QQ-FEAT: Bt6VvACH2lxVdqlkXfcTfihKpG6XFSzaikANGByEcE/+4w2Ji/JxEmMzY5AIl bu1YKywo12ZVFZKiHl4GJQn4wP7MmR4akYqqp0js2QfEA2EA2MKOP/TmMYIBdmrOwEhWkOd RwwL5mQUawnGOHy7nxgCB9OkLCqk2W/B7p80TassZ34a21Y4kQ5IcGNgez08uf/8ZqiOzMP 7KVhseyhxubRlnev4PDYn5GCC9B8Pq34ncNFVuEeCZECuHZvdqf28hpBr19du+JoT1UZ4PS OmAWrvKyL+JysbHyynRRGK5iIZfOiQx3vbw0mhuWuq9UzJdmPMX5dGATvRRsKUdCXf/PRES GQJGCevkyHrI1c06H7806UbvHNVZe2Y4SYEufqsykLdd2QWN4MzAbAsPQSySg== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 17918958192501749964 From: Lehua Ding <lehua.ding@rivai.ai> To: gcc-patches@gcc.gnu.org Cc: juzhe.zhong@rivai.ai, kito.cheng@gmail.com, rdapp.gcc@gmail.com, palmer@rivosinc.com, jeffreyalaw@gmail.com, lehua.ding@rivai.ai Subject: [PATCH V2 00/14] Refactor and cleanup vsetvl pass Date: Tue, 17 Oct 2023 19:34:46 +0800 Message-Id: <20231017113500.1160997-1-lehua.ding@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz6a-0 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, 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 <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780002364335869479 X-GMAIL-MSGID: 1780002364335869479 |
Series |
Refactor and cleanup vsetvl pass
|
|
Message
Lehua Ding
Oct. 17, 2023, 11:34 a.m. UTC
This patch refactors and cleanups the vsetvl pass in order to make the code easier to modify and understand. This patch does several things: 1. Introducing a virtual CFG for vsetvl infos and Phase 1, 2 and 3 only maintain and modify this virtual CFG. Phase 4 performs insertion, modification and deletion of vsetvl insns based on the virtual CFG. The Basic block in the virtual CFG is called vsetvl_block_info and the vsetvl information inside is called vsetvl_info. 2. Combine Phase 1 and 2 into a single Phase 1 and unified the demand system, this Phase only fuse local vsetvl info in forward direction. 3. Refactor Phase 3, change the logic for determining whether to uplift vsetvl info to a pred basic block to a more unified method that there is a vsetvl info in the vsetvl defintion reaching in compatible with it. 4. Place all modification operations to the RTL in Phase 4 and Phase 5. Phase 4 is responsible for inserting, modifying and deleting vsetvl instructions based on fully optimized vsetvl infos. Phase 5 removes the avl operand from the RVV instruction and removes the unused dest operand register from the vsetvl insns. These modifications resulted in some testcases needing to be updated. The reasons for updating are summarized below: 1. more optimized vlmax_back_prop-25.c/vlmax_back_prop-26.c/vlmax_conflict-3.c/ vlmax_conflict-12.c/vsetvl-13.c/vsetvl-23.c/ avl_single-23.c/avl_single-89.c/avl_single-95.c/pr109773-1.c 2. less unnecessary fusion avl_single-46.c/imm_bb_prop-1.c/pr109743-2.c/vsetvl-18.c 3. local fuse direction (backward -> forward) scalar_move-1.c/ 4. add some bugfix testcases. pr111037-3.c/pr111037-4.c avl_single-89.c PR target/111037 PR target/111234 PR target/111725 Lehua Ding (14): RISC-V: P1: Refactor avl_info/vl_vtype_info/vector_insn_info RISC-V: P2: Refactor and cleanup demand system RISC-V: P3: Refactor class vector_infos_manager to pre_vsetvl RISC-V: P4: move method from class pass_vsetvl to pre_vsetvl RISC-V: P5: combine phase 1 and 2 into a single pahse RISC-V: P6: Add compute reaching definition data flow RISC-V: P7: Move earliest fuse and lcm code to pre_vsetvl class RISC-V: P8: Unified insert and delete of vsetvl insn into Phase 4 RISC-V: P9: Cleanup post optimize phase RISC-V: P10: Cleanup helper functions RISC-V: P11: Refactor vector_block_info to vsetvl_block_info class RISC-V: P12: Delete riscv-vsetvl.h RISC-V: P13: Reorganize functions used to modify RTL RISC-V: P14: Adjust and add testcases gcc/config/riscv/riscv-vsetvl.cc | 6530 +++++++---------- gcc/config/riscv/riscv-vsetvl.def | 634 +- gcc/config/riscv/riscv-vsetvl.h | 488 -- gcc/config/riscv/t-riscv | 2 +- .../gcc.target/riscv/rvv/base/pr111037-2.c | 8 - .../gcc.target/riscv/rvv/base/scalar_move-1.c | 2 +- .../riscv/rvv/vsetvl/avl_single-104.c | 35 + .../riscv/rvv/vsetvl/avl_single-105.c | 23 + .../riscv/rvv/vsetvl/avl_single-23.c | 7 +- .../riscv/rvv/vsetvl/avl_single-46.c | 3 +- .../riscv/rvv/vsetvl/avl_single-89.c | 8 +- .../riscv/rvv/vsetvl/avl_single-95.c | 2 +- .../riscv/rvv/vsetvl/imm_bb_prop-1.c | 7 +- .../gcc.target/riscv/rvv/vsetvl/pr109743-2.c | 2 +- .../gcc.target/riscv/rvv/vsetvl/pr109773-1.c | 2 +- .../gcc.target/riscv/rvv/vsetvl/pr111037-3.c | 16 + .../pr111037-1.c => vsetvl/pr111037-4.c} | 5 +- .../riscv/rvv/vsetvl/vlmax_back_prop-25.c | 10 +- .../riscv/rvv/vsetvl/vlmax_back_prop-26.c | 10 +- .../riscv/rvv/vsetvl/vlmax_conflict-12.c | 1 - .../riscv/rvv/vsetvl/vlmax_conflict-3.c | 2 +- .../gcc.target/riscv/rvv/vsetvl/vsetvl-13.c | 4 +- .../gcc.target/riscv/rvv/vsetvl/vsetvl-18.c | 4 +- .../gcc.target/riscv/rvv/vsetvl/vsetvl-23.c | 2 +- 24 files changed, 3084 insertions(+), 4723 deletions(-) delete mode 100644 gcc/config/riscv/riscv-vsetvl.h delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr111037-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-104.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-105.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c rename gcc/testsuite/gcc.target/riscv/rvv/{base/pr111037-1.c => vsetvl/pr111037-4.c} (74%) -- 2.36.3
Comments
Hi Lehua! I ran the gcc testsuite on qemu before/after applying your patches to 305034e3 rv32/64gcv [1]. Baseline ========= Summary of gcc testsuite ========= | # of unexpected case / # of unique unexpected case | gcc | g++ | gfortran | rv32gcv/ ilp32d/ medlow | 208 / 78 | 29 / 17 | 71 / 24 | rv64gcv/ lp64d/ medlow | 101 / 54 | 13 / 4 | 33 / 13 | After applying patch series: ========= Summary of gcc testsuite ========= | # of unexpected case / # of unique unexpected case | gcc | g++ | gfortran | rv32gcv/ ilp32d/ medlow | 256 / 96 | 29 / 17 | 69 / 23 | rv64gcv/ lp64d/ medlow | 152 / 74 | 13 / 4 | 31 / 12 | I'm seeing: 20 new unique gcc failures on rv64gcv [2] 18 new unique gcc failures on rv32gcv [3] Thanks, Patrick [1] Build commands: git clone https://github.com/patrick-rivos/riscv-gnu-toolchain.git cd riscv-gnu-toolchain git submodule update --init gcc cd gcc git checkout 305034e3 cd .. mkdir build cd build ../configure --prefix=$(pwd) --with-multilib-generator="rv64gcv-lp64d--;rv32gcv-ilp32d--" make report-linux -j32 Note: If you'd prefer to use upstream riscv-gnu-toolchain, I'm pretty sure you can do mkdir build-64 cd build-64 ../configure --prefix=$(pwd) --with-arch=rv64gcv --with-abi=lp64d cd .. mkdir build-32 cd build-32 ../configure --prefix=$(pwd) --with-arch=rv32gcv --with-abi=lp32d This'll make 2 folders, so run make report-linux in each of them. [2] rv64gcv New failures: FAIL: gcc.dg/vect/slp-7.c -flto -ffat-lto-objects execution test FAIL: gcc.dg/vect/slp-7.c execution test FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not \\mvsetvli FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g scan-assembler-times vsetvli 15 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g scan-assembler-times vsetvli 9 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g scan-assembler-times vsetvli 9 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g scan-assembler-times vsetvli 15 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g scan-assembler-times vsetvli 15 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g scan-assembler-times vsetvli 15 [3] rv32gcv New failures: FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not \\mvsetvli FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os scan-assembler-times vsetvli 2 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not vsetvli FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g scan-assembler-times vsetvli 15 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g scan-assembler-times vsetvli 9 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g scan-assembler-times vsetvli 9 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g scan-assembler-times vsetvli 1 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g scan-assembler-times vsetvli 4 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g scan-assembler-times vsetvli 15 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g scan-assembler-times vsetvli 3 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g scan-assembler-times vsetvli 15 FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g scan-assembler-times vsetvli 15 On 10/17/23 04:34, Lehua Ding wrote: > This patch refactors and cleanups the vsetvl pass in order to make the code > easier to modify and understand. This patch does several things: > > 1. Introducing a virtual CFG for vsetvl infos and Phase 1, 2 and 3 only maintain > and modify this virtual CFG. Phase 4 performs insertion, modification and > deletion of vsetvl insns based on the virtual CFG. The Basic block in the > virtual CFG is called vsetvl_block_info and the vsetvl information inside > is called vsetvl_info. > 2. Combine Phase 1 and 2 into a single Phase 1 and unified the demand system, > this Phase only fuse local vsetvl info in forward direction. > 3. Refactor Phase 3, change the logic for determining whether to uplift vsetvl > info to a pred basic block to a more unified method that there is a vsetvl > info in the vsetvl defintion reaching in compatible with it. > 4. Place all modification operations to the RTL in Phase 4 and Phase 5. > Phase 4 is responsible for inserting, modifying and deleting vsetvl > instructions based on fully optimized vsetvl infos. Phase 5 removes the avl > operand from the RVV instruction and removes the unused dest operand > register from the vsetvl insns. > > These modifications resulted in some testcases needing to be updated. The reasons > for updating are summarized below: > > 1. more optimized > vlmax_back_prop-25.c/vlmax_back_prop-26.c/vlmax_conflict-3.c/ > vlmax_conflict-12.c/vsetvl-13.c/vsetvl-23.c/ > avl_single-23.c/avl_single-89.c/avl_single-95.c/pr109773-1.c > 2. less unnecessary fusion > avl_single-46.c/imm_bb_prop-1.c/pr109743-2.c/vsetvl-18.c > 3. local fuse direction (backward -> forward) > scalar_move-1.c/ > 4. add some bugfix testcases. > pr111037-3.c/pr111037-4.c > avl_single-89.c > > PR target/111037 > PR target/111234 > PR target/111725 > > > Lehua Ding (14): > RISC-V: P1: Refactor avl_info/vl_vtype_info/vector_insn_info > RISC-V: P2: Refactor and cleanup demand system > RISC-V: P3: Refactor class vector_infos_manager to pre_vsetvl > RISC-V: P4: move method from class pass_vsetvl to pre_vsetvl > RISC-V: P5: combine phase 1 and 2 into a single pahse > RISC-V: P6: Add compute reaching definition data flow > RISC-V: P7: Move earliest fuse and lcm code to pre_vsetvl class > RISC-V: P8: Unified insert and delete of vsetvl insn into Phase 4 > RISC-V: P9: Cleanup post optimize phase > RISC-V: P10: Cleanup helper functions > RISC-V: P11: Refactor vector_block_info to vsetvl_block_info class > RISC-V: P12: Delete riscv-vsetvl.h > RISC-V: P13: Reorganize functions used to modify RTL > RISC-V: P14: Adjust and add testcases > > gcc/config/riscv/riscv-vsetvl.cc | 6530 +++++++---------- > gcc/config/riscv/riscv-vsetvl.def | 634 +- > gcc/config/riscv/riscv-vsetvl.h | 488 -- > gcc/config/riscv/t-riscv | 2 +- > .../gcc.target/riscv/rvv/base/pr111037-2.c | 8 - > .../gcc.target/riscv/rvv/base/scalar_move-1.c | 2 +- > .../riscv/rvv/vsetvl/avl_single-104.c | 35 + > .../riscv/rvv/vsetvl/avl_single-105.c | 23 + > .../riscv/rvv/vsetvl/avl_single-23.c | 7 +- > .../riscv/rvv/vsetvl/avl_single-46.c | 3 +- > .../riscv/rvv/vsetvl/avl_single-89.c | 8 +- > .../riscv/rvv/vsetvl/avl_single-95.c | 2 +- > .../riscv/rvv/vsetvl/imm_bb_prop-1.c | 7 +- > .../gcc.target/riscv/rvv/vsetvl/pr109743-2.c | 2 +- > .../gcc.target/riscv/rvv/vsetvl/pr109773-1.c | 2 +- > .../gcc.target/riscv/rvv/vsetvl/pr111037-3.c | 16 + > .../pr111037-1.c => vsetvl/pr111037-4.c} | 5 +- > .../riscv/rvv/vsetvl/vlmax_back_prop-25.c | 10 +- > .../riscv/rvv/vsetvl/vlmax_back_prop-26.c | 10 +- > .../riscv/rvv/vsetvl/vlmax_conflict-12.c | 1 - > .../riscv/rvv/vsetvl/vlmax_conflict-3.c | 2 +- > .../gcc.target/riscv/rvv/vsetvl/vsetvl-13.c | 4 +- > .../gcc.target/riscv/rvv/vsetvl/vsetvl-18.c | 4 +- > .../gcc.target/riscv/rvv/vsetvl/vsetvl-23.c | 2 +- > 24 files changed, 3084 insertions(+), 4723 deletions(-) > delete mode 100644 gcc/config/riscv/riscv-vsetvl.h > delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr111037-2.c > create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-104.c > create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-105.c > create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c > rename gcc/testsuite/gcc.target/riscv/rvv/{base/pr111037-1.c => vsetvl/pr111037-4.c} (74%) > > -- > 2.36.3 >
Hi Patrick, Thanks a lot for reporting these failes, very important. I'll locate the causes since my previous run was with these parameters: -march=gcv_zvfh_zfh + -cmodel=medany + spike did not encounter these fails. On 2023/10/18 4:25, Patrick O'Neill wrote: > Hi Lehua! > > I ran the gcc testsuite on qemu before/after applying your patches to > 305034e3 rv32/64gcv [1]. > > Baseline > ========= Summary of gcc testsuite ========= > | # of unexpected case / # of unique > unexpected case > | gcc | g++ | gfortran | > rv32gcv/ ilp32d/ medlow | 208 / 78 | 29 / 17 | 71 / 24 | > rv64gcv/ lp64d/ medlow | 101 / 54 | 13 / 4 | 33 / 13 | > > After applying patch series: > ========= Summary of gcc testsuite ========= > | # of unexpected case / # of unique > unexpected case > | gcc | g++ | gfortran | > rv32gcv/ ilp32d/ medlow | 256 / 96 | 29 / 17 | 69 / 23 | > rv64gcv/ lp64d/ medlow | 152 / 74 | 13 / 4 | 31 / 12 | > > I'm seeing: > 20 new unique gcc failures on rv64gcv [2] > 18 new unique gcc failures on rv32gcv [3] > > Thanks, > Patrick > > [1] Build commands: > git clone https://github.com/patrick-rivos/riscv-gnu-toolchain.git > cd riscv-gnu-toolchain > git submodule update --init gcc > cd gcc > git checkout 305034e3 > cd .. > mkdir build > cd build > ../configure --prefix=$(pwd) > --with-multilib-generator="rv64gcv-lp64d--;rv32gcv-ilp32d--" > make report-linux -j32 > > Note: If you'd prefer to use upstream riscv-gnu-toolchain, I'm pretty > sure you can do > mkdir build-64 > cd build-64 > ../configure --prefix=$(pwd) --with-arch=rv64gcv --with-abi=lp64d > cd .. > mkdir build-32 > cd build-32 > ../configure --prefix=$(pwd) --with-arch=rv32gcv --with-abi=lp32d > This'll make 2 folders, so run make report-linux in each of them. > > [2] rv64gcv New failures: > FAIL: gcc.dg/vect/slp-7.c -flto -ffat-lto-objects execution test > FAIL: gcc.dg/vect/slp-7.c execution test > FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not > \\mvsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g > scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g > scan-assembler-times vsetvli 15 > > [3] rv32gcv New failures: > FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not > \\mvsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g > scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g > scan-assembler-times vsetvli 15 > > On 10/17/23 04:34, Lehua Ding wrote: >> This patch refactors and cleanups the vsetvl pass in order to make the >> code >> easier to modify and understand. This patch does several things: >> >> 1. Introducing a virtual CFG for vsetvl infos and Phase 1, 2 and 3 >> only maintain >> and modify this virtual CFG. Phase 4 performs insertion, >> modification and >> deletion of vsetvl insns based on the virtual CFG. The Basic block >> in the >> virtual CFG is called vsetvl_block_info and the vsetvl information >> inside >> is called vsetvl_info. >> 2. Combine Phase 1 and 2 into a single Phase 1 and unified the demand >> system, >> this Phase only fuse local vsetvl info in forward direction. >> 3. Refactor Phase 3, change the logic for determining whether to >> uplift vsetvl >> info to a pred basic block to a more unified method that there is >> a vsetvl >> info in the vsetvl defintion reaching in compatible with it. >> 4. Place all modification operations to the RTL in Phase 4 and Phase 5. >> Phase 4 is responsible for inserting, modifying and deleting vsetvl >> instructions based on fully optimized vsetvl infos. Phase 5 >> removes the avl >> operand from the RVV instruction and removes the unused dest operand >> register from the vsetvl insns. >> >> These modifications resulted in some testcases needing to be updated. >> The reasons >> for updating are summarized below: >> >> 1. more optimized >> vlmax_back_prop-25.c/vlmax_back_prop-26.c/vlmax_conflict-3.c/ >> vlmax_conflict-12.c/vsetvl-13.c/vsetvl-23.c/ >> avl_single-23.c/avl_single-89.c/avl_single-95.c/pr109773-1.c >> 2. less unnecessary fusion >> avl_single-46.c/imm_bb_prop-1.c/pr109743-2.c/vsetvl-18.c >> 3. local fuse direction (backward -> forward) >> scalar_move-1.c/ >> 4. add some bugfix testcases. >> pr111037-3.c/pr111037-4.c >> avl_single-89.c >> >> PR target/111037 >> PR target/111234 >> PR target/111725 >> >> >> Lehua Ding (14): >> RISC-V: P1: Refactor avl_info/vl_vtype_info/vector_insn_info >> RISC-V: P2: Refactor and cleanup demand system >> RISC-V: P3: Refactor class vector_infos_manager to pre_vsetvl >> RISC-V: P4: move method from class pass_vsetvl to pre_vsetvl >> RISC-V: P5: combine phase 1 and 2 into a single pahse >> RISC-V: P6: Add compute reaching definition data flow >> RISC-V: P7: Move earliest fuse and lcm code to pre_vsetvl class >> RISC-V: P8: Unified insert and delete of vsetvl insn into Phase 4 >> RISC-V: P9: Cleanup post optimize phase >> RISC-V: P10: Cleanup helper functions >> RISC-V: P11: Refactor vector_block_info to vsetvl_block_info class >> RISC-V: P12: Delete riscv-vsetvl.h >> RISC-V: P13: Reorganize functions used to modify RTL >> RISC-V: P14: Adjust and add testcases >> >> gcc/config/riscv/riscv-vsetvl.cc | 6530 +++++++---------- >> gcc/config/riscv/riscv-vsetvl.def | 634 +- >> gcc/config/riscv/riscv-vsetvl.h | 488 -- >> gcc/config/riscv/t-riscv | 2 +- >> .../gcc.target/riscv/rvv/base/pr111037-2.c | 8 - >> .../gcc.target/riscv/rvv/base/scalar_move-1.c | 2 +- >> .../riscv/rvv/vsetvl/avl_single-104.c | 35 + >> .../riscv/rvv/vsetvl/avl_single-105.c | 23 + >> .../riscv/rvv/vsetvl/avl_single-23.c | 7 +- >> .../riscv/rvv/vsetvl/avl_single-46.c | 3 +- >> .../riscv/rvv/vsetvl/avl_single-89.c | 8 +- >> .../riscv/rvv/vsetvl/avl_single-95.c | 2 +- >> .../riscv/rvv/vsetvl/imm_bb_prop-1.c | 7 +- >> .../gcc.target/riscv/rvv/vsetvl/pr109743-2.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/pr109773-1.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/pr111037-3.c | 16 + >> .../pr111037-1.c => vsetvl/pr111037-4.c} | 5 +- >> .../riscv/rvv/vsetvl/vlmax_back_prop-25.c | 10 +- >> .../riscv/rvv/vsetvl/vlmax_back_prop-26.c | 10 +- >> .../riscv/rvv/vsetvl/vlmax_conflict-12.c | 1 - >> .../riscv/rvv/vsetvl/vlmax_conflict-3.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-13.c | 4 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-18.c | 4 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-23.c | 2 +- >> 24 files changed, 3084 insertions(+), 4723 deletions(-) >> delete mode 100644 gcc/config/riscv/riscv-vsetvl.h >> delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr111037-2.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-104.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-105.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c >> rename gcc/testsuite/gcc.target/riscv/rvv/{base/pr111037-1.c => >> vsetvl/pr111037-4.c} (74%) >> >> -- >> 2.36.3 >> >
Hi Patrick, I can locally reproduce the failure of the testcase slp-7.c (the reason is because I missed a small part of the code while splitting the patch). But I can't reproduce the testcases of the assembly check locally, can you help me to see how the compiler options of a failed case in your build-gcc-dir/gcc/testsuite/gcc/gcc.log file which is look like bellow (Maybe you can just copy this similar paragraph below for me and I'll try again locally with the same compiler options, thanks a lot.): Executing on host: /work/home/lding/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/xgcc -B/work/home/ldi ng/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/ /work/home/lding/open-source/riscv-gnu-toolchain-pus h/gcc/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c -march=rv64gcv_zvfh_zfh -mabi=lp64d -mcmodel=medany -fdiagnostics-plain-output -ftree-vecto rize -O3 --param riscv-autovec-lmul=m4 --param=riscv-autovec-preference=scalable -fno-vect-cost-model -lm -o ./cond_convert_float2int_run-1.exe (timeout = 600) spawn -ignore SIGHUP /work/home/lding/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/xgcc -B/work/home/l ding/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/ /work/home/lding/open-source/riscv-gnu-toolchain-pu sh/gcc/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c -march=rv64gcv_zvfh_zfh -mabi=lp64d -mcmodel=medany -fdiagnostics-plain-output -ftree-vectorize -O3 --param riscv-autovec-lmul=m4 --param=riscv-autovec-preference=scalable -fno-vect-cost-model -lm -o ./cond_convert_float2int_run-1.exe PASS: gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c (test for excess errors) spawn riscv64-unknown-elf-run ./cond_convert_float2int_run-1.exe bbl loader On 2023/10/18 4:25, Patrick O'Neill wrote: > Hi Lehua! > > I ran the gcc testsuite on qemu before/after applying your patches to > 305034e3 rv32/64gcv [1]. > > Baseline > ========= Summary of gcc testsuite ========= > | # of unexpected case / # of unique > unexpected case > | gcc | g++ | gfortran | > rv32gcv/ ilp32d/ medlow | 208 / 78 | 29 / 17 | 71 / 24 | > rv64gcv/ lp64d/ medlow | 101 / 54 | 13 / 4 | 33 / 13 | > > After applying patch series: > ========= Summary of gcc testsuite ========= > | # of unexpected case / # of unique > unexpected case > | gcc | g++ | gfortran | > rv32gcv/ ilp32d/ medlow | 256 / 96 | 29 / 17 | 69 / 23 | > rv64gcv/ lp64d/ medlow | 152 / 74 | 13 / 4 | 31 / 12 | > > I'm seeing: > 20 new unique gcc failures on rv64gcv [2] > 18 new unique gcc failures on rv32gcv [3] > > Thanks, > Patrick > > [1] Build commands: > git clone https://github.com/patrick-rivos/riscv-gnu-toolchain.git > cd riscv-gnu-toolchain > git submodule update --init gcc > cd gcc > git checkout 305034e3 > cd .. > mkdir build > cd build > ../configure --prefix=$(pwd) > --with-multilib-generator="rv64gcv-lp64d--;rv32gcv-ilp32d--" > make report-linux -j32 > > Note: If you'd prefer to use upstream riscv-gnu-toolchain, I'm pretty > sure you can do > mkdir build-64 > cd build-64 > ../configure --prefix=$(pwd) --with-arch=rv64gcv --with-abi=lp64d > cd .. > mkdir build-32 > cd build-32 > ../configure --prefix=$(pwd) --with-arch=rv32gcv --with-abi=lp32d > This'll make 2 folders, so run make report-linux in each of them. > > [2] rv64gcv New failures: > FAIL: gcc.dg/vect/slp-7.c -flto -ffat-lto-objects execution test > FAIL: gcc.dg/vect/slp-7.c execution test > FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not > \\mvsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g > scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g > scan-assembler-times vsetvli 15 > > [3] rv32gcv New failures: > FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not > \\mvsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g > scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g > scan-assembler-times vsetvli 15 > > On 10/17/23 04:34, Lehua Ding wrote: >> This patch refactors and cleanups the vsetvl pass in order to make the >> code >> easier to modify and understand. This patch does several things: >> >> 1. Introducing a virtual CFG for vsetvl infos and Phase 1, 2 and 3 >> only maintain >> and modify this virtual CFG. Phase 4 performs insertion, >> modification and >> deletion of vsetvl insns based on the virtual CFG. The Basic block >> in the >> virtual CFG is called vsetvl_block_info and the vsetvl information >> inside >> is called vsetvl_info. >> 2. Combine Phase 1 and 2 into a single Phase 1 and unified the demand >> system, >> this Phase only fuse local vsetvl info in forward direction. >> 3. Refactor Phase 3, change the logic for determining whether to >> uplift vsetvl >> info to a pred basic block to a more unified method that there is >> a vsetvl >> info in the vsetvl defintion reaching in compatible with it. >> 4. Place all modification operations to the RTL in Phase 4 and Phase 5. >> Phase 4 is responsible for inserting, modifying and deleting vsetvl >> instructions based on fully optimized vsetvl infos. Phase 5 >> removes the avl >> operand from the RVV instruction and removes the unused dest operand >> register from the vsetvl insns. >> >> These modifications resulted in some testcases needing to be updated. >> The reasons >> for updating are summarized below: >> >> 1. more optimized >> vlmax_back_prop-25.c/vlmax_back_prop-26.c/vlmax_conflict-3.c/ >> vlmax_conflict-12.c/vsetvl-13.c/vsetvl-23.c/ >> avl_single-23.c/avl_single-89.c/avl_single-95.c/pr109773-1.c >> 2. less unnecessary fusion >> avl_single-46.c/imm_bb_prop-1.c/pr109743-2.c/vsetvl-18.c >> 3. local fuse direction (backward -> forward) >> scalar_move-1.c/ >> 4. add some bugfix testcases. >> pr111037-3.c/pr111037-4.c >> avl_single-89.c >> >> PR target/111037 >> PR target/111234 >> PR target/111725 >> >> >> Lehua Ding (14): >> RISC-V: P1: Refactor avl_info/vl_vtype_info/vector_insn_info >> RISC-V: P2: Refactor and cleanup demand system >> RISC-V: P3: Refactor class vector_infos_manager to pre_vsetvl >> RISC-V: P4: move method from class pass_vsetvl to pre_vsetvl >> RISC-V: P5: combine phase 1 and 2 into a single pahse >> RISC-V: P6: Add compute reaching definition data flow >> RISC-V: P7: Move earliest fuse and lcm code to pre_vsetvl class >> RISC-V: P8: Unified insert and delete of vsetvl insn into Phase 4 >> RISC-V: P9: Cleanup post optimize phase >> RISC-V: P10: Cleanup helper functions >> RISC-V: P11: Refactor vector_block_info to vsetvl_block_info class >> RISC-V: P12: Delete riscv-vsetvl.h >> RISC-V: P13: Reorganize functions used to modify RTL >> RISC-V: P14: Adjust and add testcases >> >> gcc/config/riscv/riscv-vsetvl.cc | 6530 +++++++---------- >> gcc/config/riscv/riscv-vsetvl.def | 634 +- >> gcc/config/riscv/riscv-vsetvl.h | 488 -- >> gcc/config/riscv/t-riscv | 2 +- >> .../gcc.target/riscv/rvv/base/pr111037-2.c | 8 - >> .../gcc.target/riscv/rvv/base/scalar_move-1.c | 2 +- >> .../riscv/rvv/vsetvl/avl_single-104.c | 35 + >> .../riscv/rvv/vsetvl/avl_single-105.c | 23 + >> .../riscv/rvv/vsetvl/avl_single-23.c | 7 +- >> .../riscv/rvv/vsetvl/avl_single-46.c | 3 +- >> .../riscv/rvv/vsetvl/avl_single-89.c | 8 +- >> .../riscv/rvv/vsetvl/avl_single-95.c | 2 +- >> .../riscv/rvv/vsetvl/imm_bb_prop-1.c | 7 +- >> .../gcc.target/riscv/rvv/vsetvl/pr109743-2.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/pr109773-1.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/pr111037-3.c | 16 + >> .../pr111037-1.c => vsetvl/pr111037-4.c} | 5 +- >> .../riscv/rvv/vsetvl/vlmax_back_prop-25.c | 10 +- >> .../riscv/rvv/vsetvl/vlmax_back_prop-26.c | 10 +- >> .../riscv/rvv/vsetvl/vlmax_conflict-12.c | 1 - >> .../riscv/rvv/vsetvl/vlmax_conflict-3.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-13.c | 4 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-18.c | 4 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-23.c | 2 +- >> 24 files changed, 3084 insertions(+), 4723 deletions(-) >> delete mode 100644 gcc/config/riscv/riscv-vsetvl.h >> delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr111037-2.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-104.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-105.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c >> rename gcc/testsuite/gcc.target/riscv/rvv/{base/pr111037-1.c => >> vsetvl/pr111037-4.c} (74%) >> >> -- >> 2.36.3 >> >
Hi Luhua, Here's the excerpts from the debug log. I think the full log files are too large to send over email. rv32_gcv avl_single-32.c: Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O0 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O0 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O0 (test for excess errors) Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O1 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O1 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O3 -g -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O3 -g -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O3 -g (test for excess errors) Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -Os -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -Os -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fno-use-linker-plugin -flto-partition=none -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fno-use-linker-plugin -flto-partition=none -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 rv32_gcv pr111037-2.c: Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O0 -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O0 -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-times vsetivli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O1 -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O1 -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-times vsetivli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-times vsetivli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O3 -g -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O3 -g -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g scan-assembler-times vsetivli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -Os -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -Os -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-times vsetivli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fno-use-linker-plugin -flto-partition=none -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fno-use-linker-plugin -flto-partition=none -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetivli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-2.c -march=rv32gcv -mabi=ilp32d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -march=rv32gc_zve64d_zvfh -mabi=ilp32d -O3 -ffat-lto-objects -fno-ident -S -o pr111037-2.s PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetivli\\s+zero,\\s*1,\\s*e64,\\s*m1,\\s*t[au],\\s*m[au] 1 FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli PASS: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetivli 1 rv64_gcv avl_single-34.c: Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O0 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O0 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O0 (test for excess errors) Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O1 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O1 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O2 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O2 -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O3 -g -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O3 -g -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O3 -g (test for excess errors) Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -Os -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -Os -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fno-use-linker-plugin -flto-partition=none -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fno-use-linker-plugin -flto-partition=none -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fno-use-linker-plugin -flto-partition=none scan-assembler-times vsetvli 1 Executing on host: /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s (timeout = 600) spawn -ignore SIGHUP /scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/xgcc -B/scratch/tc-testing/tc-oct-17-vsetvli-refactor/build/build-gcc-linux-stage2/gcc/ /scratch/tc-testing/tc-oct-17-vsetvli-refactor/gcc/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c -march=rv64gcv -mabi=lp64d -mcmodel=medlow -fdiagnostics-plain-output -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects -march=rv32gcv -mabi=ilp32 -fno-schedule-insns -fno-schedule-insns2 -fno-tree-vectorize -ffat-lto-objects -fno-ident -S -o avl_single-34.s PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects (test for excess errors) PASS: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli\\s+zero,\\s*[a-x0-9]+,\\s*e8,\\s*mf8,\\s*tu,\\s*m[au] 1 gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects : vsetvli found 2 times FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 Please let me know if I can help in any other ways. Thanks, Patrick On 10/18/23 02:14, Lehua Ding wrote: > Hi Patrick, > > I can locally reproduce the failure of the testcase slp-7.c (the > reason is because I missed a small part of the code while splitting > the patch). But I can't reproduce the testcases of the assembly check > locally, can you help me to see how the compiler options of a failed > case in your build-gcc-dir/gcc/testsuite/gcc/gcc.log file which is > look like bellow (Maybe you can just copy this similar paragraph below > for me and I'll try again locally with the same compiler options, > thanks a lot.): > > Executing on host: > /work/home/lding/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/xgcc > -B/work/home/ldi > ng/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/ > /work/home/lding/open-source/riscv-gnu-toolchain-pus > h/gcc/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c > -march=rv64gcv_zvfh_zfh -mabi=lp64d -mcmodel=medany > -fdiagnostics-plain-output -ftree-vecto > rize -O3 --param riscv-autovec-lmul=m4 > --param=riscv-autovec-preference=scalable -fno-vect-cost-model > -lm -o ./cond_convert_float2int_run-1.exe (timeout = 600) > spawn -ignore SIGHUP > /work/home/lding/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/xgcc > -B/work/home/l > ding/open-source/riscv-gnu-toolchain-push/build/dev-rv64gcv_zvfh_zfh-lp64d-medany-newlib-spike-debug/build-gcc-newlib-stage2/gcc/ > /work/home/lding/open-source/riscv-gnu-toolchain-pu > sh/gcc/gcc/testsuite/gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c > -march=rv64gcv_zvfh_zfh -mabi=lp64d -mcmodel=medany > -fdiagnostics-plain-output -ftree-vectorize > -O3 --param riscv-autovec-lmul=m4 > --param=riscv-autovec-preference=scalable -fno-vect-cost-model -lm -o > ./cond_convert_float2int_run-1.exe > PASS: gcc.target/riscv/rvv/autovec/cond/cond_convert_float2int_run-1.c > (test for excess errors) > spawn riscv64-unknown-elf-run ./cond_convert_float2int_run-1.exe > bbl loader > > > On 2023/10/18 4:25, Patrick O'Neill wrote: >> Hi Lehua! >> >> I ran the gcc testsuite on qemu before/after applying your patches to >> 305034e3 rv32/64gcv [1]. >> >> Baseline >> ========= Summary of gcc testsuite ========= >> | # of unexpected case / # of unique >> unexpected case >> | gcc | g++ | gfortran | >> rv32gcv/ ilp32d/ medlow | 208 / 78 | 29 / 17 | 71 / >> 24 | >> rv64gcv/ lp64d/ medlow | 101 / 54 | 13 / 4 | 33 / >> 13 | >> >> After applying patch series: >> ========= Summary of gcc testsuite ========= >> | # of unexpected case / # of unique >> unexpected case >> | gcc | g++ | gfortran | >> rv32gcv/ ilp32d/ medlow | 256 / 96 | 29 / 17 | 69 / >> 23 | >> rv64gcv/ lp64d/ medlow | 152 / 74 | 13 / 4 | 31 / >> 12 | >> >> I'm seeing: >> 20 new unique gcc failures on rv64gcv [2] >> 18 new unique gcc failures on rv32gcv [3] >> >> Thanks, >> Patrick >> >> [1] Build commands: >> git clone https://github.com/patrick-rivos/riscv-gnu-toolchain.git >> cd riscv-gnu-toolchain >> git submodule update --init gcc >> cd gcc >> git checkout 305034e3 >> cd .. >> mkdir build >> cd build >> ../configure --prefix=$(pwd) >> --with-multilib-generator="rv64gcv-lp64d--;rv32gcv-ilp32d--" >> make report-linux -j32 >> >> Note: If you'd prefer to use upstream riscv-gnu-toolchain, I'm pretty >> sure you can do >> mkdir build-64 >> cd build-64 >> ../configure --prefix=$(pwd) --with-arch=rv64gcv --with-abi=lp64d >> cd .. >> mkdir build-32 >> cd build-32 >> ../configure --prefix=$(pwd) --with-arch=rv32gcv --with-abi=lp32d >> This'll make 2 folders, so run make report-linux in each of them. >> >> [2] rv64gcv New failures: >> FAIL: gcc.dg/vect/slp-7.c -flto -ffat-lto-objects execution test >> FAIL: gcc.dg/vect/slp-7.c execution test >> FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g >> scan-assembler-not \\mvsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 >> scan-assembler-times vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 >> scan-assembler-times vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g >> scan-assembler-times vsetvli 15 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g >> scan-assembler-times vsetvli 9 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g >> scan-assembler-times vsetvli 9 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g >> scan-assembler-times vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g >> scan-assembler-times vsetvli 15 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g >> scan-assembler-times vsetvli 15 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g >> scan-assembler-times vsetvli 15 >> >> [3] rv32gcv New failures: >> FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g >> scan-assembler-not \\mvsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 >> scan-assembler-times vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 >> scan-assembler-times vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os >> scan-assembler-times vsetvli 2 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times >> vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto >> -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto >> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os >> scan-assembler-not vsetvli >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g >> scan-assembler-times vsetvli 15 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g >> scan-assembler-times vsetvli 9 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g >> scan-assembler-times vsetvli 9 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g >> scan-assembler-times vsetvli 1 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g >> scan-assembler-times vsetvli 4 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g >> scan-assembler-times vsetvli 15 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g >> scan-assembler-times vsetvli 3 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g >> scan-assembler-times vsetvli 15 >> FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g >> scan-assembler-times vsetvli 15 >> >> On 10/17/23 04:34, Lehua Ding wrote: >>> This patch refactors and cleanups the vsetvl pass in order to make >>> the code >>> easier to modify and understand. This patch does several things: >>> >>> 1. Introducing a virtual CFG for vsetvl infos and Phase 1, 2 and 3 >>> only maintain >>> and modify this virtual CFG. Phase 4 performs insertion, >>> modification and >>> deletion of vsetvl insns based on the virtual CFG. The Basic >>> block in the >>> virtual CFG is called vsetvl_block_info and the vsetvl >>> information inside >>> is called vsetvl_info. >>> 2. Combine Phase 1 and 2 into a single Phase 1 and unified the >>> demand system, >>> this Phase only fuse local vsetvl info in forward direction. >>> 3. Refactor Phase 3, change the logic for determining whether to >>> uplift vsetvl >>> info to a pred basic block to a more unified method that there >>> is a vsetvl >>> info in the vsetvl defintion reaching in compatible with it. >>> 4. Place all modification operations to the RTL in Phase 4 and Phase 5. >>> Phase 4 is responsible for inserting, modifying and deleting vsetvl >>> instructions based on fully optimized vsetvl infos. Phase 5 >>> removes the avl >>> operand from the RVV instruction and removes the unused dest >>> operand >>> register from the vsetvl insns. >>> >>> These modifications resulted in some testcases needing to be >>> updated. The reasons >>> for updating are summarized below: >>> >>> 1. more optimized >>> vlmax_back_prop-25.c/vlmax_back_prop-26.c/vlmax_conflict-3.c/ >>> vlmax_conflict-12.c/vsetvl-13.c/vsetvl-23.c/ >>> avl_single-23.c/avl_single-89.c/avl_single-95.c/pr109773-1.c >>> 2. less unnecessary fusion >>> avl_single-46.c/imm_bb_prop-1.c/pr109743-2.c/vsetvl-18.c >>> 3. local fuse direction (backward -> forward) >>> scalar_move-1.c/ >>> 4. add some bugfix testcases. >>> pr111037-3.c/pr111037-4.c >>> avl_single-89.c >>> >>> PR target/111037 >>> PR target/111234 >>> PR target/111725 >>> >>> >>> Lehua Ding (14): >>> RISC-V: P1: Refactor avl_info/vl_vtype_info/vector_insn_info >>> RISC-V: P2: Refactor and cleanup demand system >>> RISC-V: P3: Refactor class vector_infos_manager to pre_vsetvl >>> RISC-V: P4: move method from class pass_vsetvl to pre_vsetvl >>> RISC-V: P5: combine phase 1 and 2 into a single pahse >>> RISC-V: P6: Add compute reaching definition data flow >>> RISC-V: P7: Move earliest fuse and lcm code to pre_vsetvl class >>> RISC-V: P8: Unified insert and delete of vsetvl insn into Phase 4 >>> RISC-V: P9: Cleanup post optimize phase >>> RISC-V: P10: Cleanup helper functions >>> RISC-V: P11: Refactor vector_block_info to vsetvl_block_info class >>> RISC-V: P12: Delete riscv-vsetvl.h >>> RISC-V: P13: Reorganize functions used to modify RTL >>> RISC-V: P14: Adjust and add testcases >>> >>> gcc/config/riscv/riscv-vsetvl.cc | 6530 >>> +++++++---------- >>> gcc/config/riscv/riscv-vsetvl.def | 634 +- >>> gcc/config/riscv/riscv-vsetvl.h | 488 -- >>> gcc/config/riscv/t-riscv | 2 +- >>> .../gcc.target/riscv/rvv/base/pr111037-2.c | 8 - >>> .../gcc.target/riscv/rvv/base/scalar_move-1.c | 2 +- >>> .../riscv/rvv/vsetvl/avl_single-104.c | 35 + >>> .../riscv/rvv/vsetvl/avl_single-105.c | 23 + >>> .../riscv/rvv/vsetvl/avl_single-23.c | 7 +- >>> .../riscv/rvv/vsetvl/avl_single-46.c | 3 +- >>> .../riscv/rvv/vsetvl/avl_single-89.c | 8 +- >>> .../riscv/rvv/vsetvl/avl_single-95.c | 2 +- >>> .../riscv/rvv/vsetvl/imm_bb_prop-1.c | 7 +- >>> .../gcc.target/riscv/rvv/vsetvl/pr109743-2.c | 2 +- >>> .../gcc.target/riscv/rvv/vsetvl/pr109773-1.c | 2 +- >>> .../gcc.target/riscv/rvv/vsetvl/pr111037-3.c | 16 + >>> .../pr111037-1.c => vsetvl/pr111037-4.c} | 5 +- >>> .../riscv/rvv/vsetvl/vlmax_back_prop-25.c | 10 +- >>> .../riscv/rvv/vsetvl/vlmax_back_prop-26.c | 10 +- >>> .../riscv/rvv/vsetvl/vlmax_conflict-12.c | 1 - >>> .../riscv/rvv/vsetvl/vlmax_conflict-3.c | 2 +- >>> .../gcc.target/riscv/rvv/vsetvl/vsetvl-13.c | 4 +- >>> .../gcc.target/riscv/rvv/vsetvl/vsetvl-18.c | 4 +- >>> .../gcc.target/riscv/rvv/vsetvl/vsetvl-23.c | 2 +- >>> 24 files changed, 3084 insertions(+), 4723 deletions(-) >>> delete mode 100644 gcc/config/riscv/riscv-vsetvl.h >>> delete mode 100644 >>> gcc/testsuite/gcc.target/riscv/rvv/base/pr111037-2.c >>> create mode 100644 >>> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-104.c >>> create mode 100644 >>> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-105.c >>> create mode 100644 >>> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c >>> rename gcc/testsuite/gcc.target/riscv/rvv/{base/pr111037-1.c => >>> vsetvl/pr111037-4.c} (74%) >>> >>> -- >>> 2.36.3 >>> >> >
Hi Partick, Thank you so much for the details. I have send a V3 patchs here: https://gcc.gnu.org/pipermail/gcc-patches/2023-October/633529.html Can you use the new patchs to run the gcc testsuite again? I have fix some fails and fix the last patch of v2([PATCH V2 14/14]) which cannot apply normal since my editor automatically trim the ending space in the diff content and so it can't apply properly. Could you please see if it all works when applying these V3 patch, thank you very much. I am applying based on the commit id (0308461d9d44ca9db45fb72ca080c14e6fc68739) of trunk and no new fails. On 2023/10/18 4:25, Patrick O'Neill wrote: > Hi Lehua! > > I ran the gcc testsuite on qemu before/after applying your patches to > 305034e3 rv32/64gcv [1]. > > Baseline > ========= Summary of gcc testsuite ========= > | # of unexpected case / # of unique > unexpected case > | gcc | g++ | gfortran | > rv32gcv/ ilp32d/ medlow | 208 / 78 | 29 / 17 | 71 / 24 | > rv64gcv/ lp64d/ medlow | 101 / 54 | 13 / 4 | 33 / 13 | > > After applying patch series: > ========= Summary of gcc testsuite ========= > | # of unexpected case / # of unique > unexpected case > | gcc | g++ | gfortran | > rv32gcv/ ilp32d/ medlow | 256 / 96 | 29 / 17 | 69 / 23 | > rv64gcv/ lp64d/ medlow | 152 / 74 | 13 / 4 | 31 / 12 | > > I'm seeing: > 20 new unique gcc failures on rv64gcv [2] > 18 new unique gcc failures on rv32gcv [3] > > Thanks, > Patrick > > [1] Build commands: > git clone https://github.com/patrick-rivos/riscv-gnu-toolchain.git > cd riscv-gnu-toolchain > git submodule update --init gcc > cd gcc > git checkout 305034e3 > cd .. > mkdir build > cd build > ../configure --prefix=$(pwd) > --with-multilib-generator="rv64gcv-lp64d--;rv32gcv-ilp32d--" > make report-linux -j32 > > Note: If you'd prefer to use upstream riscv-gnu-toolchain, I'm pretty > sure you can do > mkdir build-64 > cd build-64 > ../configure --prefix=$(pwd) --with-arch=rv64gcv --with-abi=lp64d > cd .. > mkdir build-32 > cd build-32 > ../configure --prefix=$(pwd) --with-arch=rv32gcv --with-abi=lp32d > This'll make 2 folders, so run make report-linux in each of them. > > [2] rv64gcv New failures: > FAIL: gcc.dg/vect/slp-7.c -flto -ffat-lto-objects execution test > FAIL: gcc.dg/vect/slp-7.c execution test > FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not > \\mvsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g > scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g > scan-assembler-times vsetvli 15 > > [3] rv32gcv New failures: > FAIL: gcc.target/riscv/zero-scratch-regs-2.c -O3 -g scan-assembler-not > \\mvsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O1 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-34.c -Os > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O1 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-37.c -Os > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O1 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-38.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-47.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-48.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O1 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-49.c -Os > scan-assembler-times vsetvli 2 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-times > vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/avl_single-65.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O0 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O1 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fno-use-linker-plugin -flto-partition=none scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O2 -flto > -fuse-linker-plugin -fno-fat-lto-objects scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -O3 -g > scan-assembler-not vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/pr111037-2.c -Os scan-assembler-not > vsetvli > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c -O3 -g > scan-assembler-times vsetvli 9 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c -O3 -g > scan-assembler-times vsetvli 1 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c -O3 -g > scan-assembler-times vsetvli 4 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c -O3 -g > scan-assembler-times vsetvli 3 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c -O3 -g > scan-assembler-times vsetvli 15 > FAIL: gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c -O3 -g > scan-assembler-times vsetvli 15 > > On 10/17/23 04:34, Lehua Ding wrote: >> This patch refactors and cleanups the vsetvl pass in order to make the >> code >> easier to modify and understand. This patch does several things: >> >> 1. Introducing a virtual CFG for vsetvl infos and Phase 1, 2 and 3 >> only maintain >> and modify this virtual CFG. Phase 4 performs insertion, >> modification and >> deletion of vsetvl insns based on the virtual CFG. The Basic block >> in the >> virtual CFG is called vsetvl_block_info and the vsetvl information >> inside >> is called vsetvl_info. >> 2. Combine Phase 1 and 2 into a single Phase 1 and unified the demand >> system, >> this Phase only fuse local vsetvl info in forward direction. >> 3. Refactor Phase 3, change the logic for determining whether to >> uplift vsetvl >> info to a pred basic block to a more unified method that there is >> a vsetvl >> info in the vsetvl defintion reaching in compatible with it. >> 4. Place all modification operations to the RTL in Phase 4 and Phase 5. >> Phase 4 is responsible for inserting, modifying and deleting vsetvl >> instructions based on fully optimized vsetvl infos. Phase 5 >> removes the avl >> operand from the RVV instruction and removes the unused dest operand >> register from the vsetvl insns. >> >> These modifications resulted in some testcases needing to be updated. >> The reasons >> for updating are summarized below: >> >> 1. more optimized >> vlmax_back_prop-25.c/vlmax_back_prop-26.c/vlmax_conflict-3.c/ >> vlmax_conflict-12.c/vsetvl-13.c/vsetvl-23.c/ >> avl_single-23.c/avl_single-89.c/avl_single-95.c/pr109773-1.c >> 2. less unnecessary fusion >> avl_single-46.c/imm_bb_prop-1.c/pr109743-2.c/vsetvl-18.c >> 3. local fuse direction (backward -> forward) >> scalar_move-1.c/ >> 4. add some bugfix testcases. >> pr111037-3.c/pr111037-4.c >> avl_single-89.c >> >> PR target/111037 >> PR target/111234 >> PR target/111725 >> >> >> Lehua Ding (14): >> RISC-V: P1: Refactor avl_info/vl_vtype_info/vector_insn_info >> RISC-V: P2: Refactor and cleanup demand system >> RISC-V: P3: Refactor class vector_infos_manager to pre_vsetvl >> RISC-V: P4: move method from class pass_vsetvl to pre_vsetvl >> RISC-V: P5: combine phase 1 and 2 into a single pahse >> RISC-V: P6: Add compute reaching definition data flow >> RISC-V: P7: Move earliest fuse and lcm code to pre_vsetvl class >> RISC-V: P8: Unified insert and delete of vsetvl insn into Phase 4 >> RISC-V: P9: Cleanup post optimize phase >> RISC-V: P10: Cleanup helper functions >> RISC-V: P11: Refactor vector_block_info to vsetvl_block_info class >> RISC-V: P12: Delete riscv-vsetvl.h >> RISC-V: P13: Reorganize functions used to modify RTL >> RISC-V: P14: Adjust and add testcases >> >> gcc/config/riscv/riscv-vsetvl.cc | 6530 +++++++---------- >> gcc/config/riscv/riscv-vsetvl.def | 634 +- >> gcc/config/riscv/riscv-vsetvl.h | 488 -- >> gcc/config/riscv/t-riscv | 2 +- >> .../gcc.target/riscv/rvv/base/pr111037-2.c | 8 - >> .../gcc.target/riscv/rvv/base/scalar_move-1.c | 2 +- >> .../riscv/rvv/vsetvl/avl_single-104.c | 35 + >> .../riscv/rvv/vsetvl/avl_single-105.c | 23 + >> .../riscv/rvv/vsetvl/avl_single-23.c | 7 +- >> .../riscv/rvv/vsetvl/avl_single-46.c | 3 +- >> .../riscv/rvv/vsetvl/avl_single-89.c | 8 +- >> .../riscv/rvv/vsetvl/avl_single-95.c | 2 +- >> .../riscv/rvv/vsetvl/imm_bb_prop-1.c | 7 +- >> .../gcc.target/riscv/rvv/vsetvl/pr109743-2.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/pr109773-1.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/pr111037-3.c | 16 + >> .../pr111037-1.c => vsetvl/pr111037-4.c} | 5 +- >> .../riscv/rvv/vsetvl/vlmax_back_prop-25.c | 10 +- >> .../riscv/rvv/vsetvl/vlmax_back_prop-26.c | 10 +- >> .../riscv/rvv/vsetvl/vlmax_conflict-12.c | 1 - >> .../riscv/rvv/vsetvl/vlmax_conflict-3.c | 2 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-13.c | 4 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-18.c | 4 +- >> .../gcc.target/riscv/rvv/vsetvl/vsetvl-23.c | 2 +- >> 24 files changed, 3084 insertions(+), 4723 deletions(-) >> delete mode 100644 gcc/config/riscv/riscv-vsetvl.h >> delete mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/pr111037-2.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-104.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-105.c >> create mode 100644 >> gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr111037-3.c >> rename gcc/testsuite/gcc.target/riscv/rvv/{base/pr111037-1.c => >> vsetvl/pr111037-4.c} (74%) >> >> -- >> 2.36.3 >> >