From patchwork Mon Sep 18 11:44:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 141368 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp2590532vqi; Mon, 18 Sep 2023 04:45:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEeht9I9Pb7XQ55IkLCtEJpl356+VTsXGa8k2x905+LObnDfd4iTiVmRTdFDkGUm3Bbjg/h X-Received: by 2002:a2e:9e9a:0:b0:2b9:c046:8617 with SMTP id f26-20020a2e9e9a000000b002b9c0468617mr6276885ljk.5.1695037540092; Mon, 18 Sep 2023 04:45:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695037540; cv=none; d=google.com; s=arc-20160816; b=eUVZvT+/OYS97wzbrSOWHO8dnvJlfjbItRYuuItEp/nzKSQ38WGeJr9TI5o1ufBDg/ 6Ej1ZdxXgXCIcRTPp0m7Xu7sDHwCGrQRhonRHCqmDONPKIZ8oAelp03DM1U5IGyMf7m7 vMe4f1gpzf/6ML1zhhov+bGYxFi9m1y43nmEdnmGfy1lnG5/8TxxV6An9cCWBN+fpZgY 6YngB5XLTXj9KQKED1fOGDXi+JR1ginSucmU7W78qO6+z3veJuoLRBK5oTRtXoepq/N1 TWpFKQMF8rPvXWVou9ZXMObETzjcW9ZVB64qv0NujZmoU1CaqRxrZiFXum4fZAOZkOVG iwxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dmarc-filter:delivered-to; bh=z/uD/zCgH3g7kmMdAd/Z3uI5ZuX2XuhKnUJDxAl98uU=; fh=12MRPJmZ1mgDpHqWoogMKqnaGRGM2b7lcuJroqfjJiw=; b=ocuRzc+s1+IlpV3CIDmF984fQW//jvLJRR/JDYJsNEcOnK9xFAoDm8O5jgWAGPaUSh HVDvoB2X6Z61DY8uh8rtQrSLV2e8ml6EK1thVsr2kBg25OosFK9LdeAHxX3strGuhEr5 ND1zq6jccx41tR807TvtP2SxFnobh4uRZeM0wO2L1/Qt1+O+Uf+ZGNpAhlqhauOe2MZd p8bUkygMSjz5rn29DCvsaEKe7GkJMoNz/Ew69dzNJSwSPPb9ZzcTna5yEggZaCOkBc9E QFu77EziD9V9RmaMqz+GN0ndVHBNC7WWOX9aqE/Uenu2Z6J/Oh0WrPMCOMnhrcQrPwFd FZLA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id o24-20020a17090637d800b00993320628absi8137240ejc.675.2023.09.18.04.45.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Sep 2023 04:45:40 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 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 6E039385CCA8 for ; Mon, 18 Sep 2023 11:44:51 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by sourceware.org (Postfix) with ESMTPS id 1B2993858C78 for ; Mon, 18 Sep 2023 11:44:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1B2993858C78 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp67t1695037458tcioj4vm Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 18 Sep 2023 19:44:17 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: RrZlkntZBfnFLZCOjQt0hhxkcd1DiGwyltwjv0lXzPF6m9Ftp7NonFXjI66Vg wOa50ktnuTpQs5Dkrm1wSTuJFWPYYRIM2PDb/ZbxLxx66u+yInHf8DraUNnNdveUGl2Czjy cGT0e8WO6mgsDTZeKmxM1HFadogFEK50KAtJfwLOqsLigYQxgl6LG6lVxaYceVhRmS7ZnKG Km0pMslsIMFFZ2QSQdjVdtIsn8lm55Peq8UfKhU+3g8Z/yIz53UraGKjUDo1TW5PkOfrC6B B5741ZnYXi+QAolgVZYaJKk1EE37ge4H6YZuva7p3UN2zcOXPHMgxjgTZJUjCFd04mWHtgF 89XMYFf2mUiOJUa4tCq3rQabt5hhpRLzgldiGc6GQZpK2fYROHXXbHE3Z2bEgslvw0KVYX+ AbJ7H3cJQ39jK5SUy6QhSg== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 591921970024659546 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, kito.cheng@sifive.com, jeffreyalaw@gmail.com, rdapp.gcc@gmail.com, Juzhe-Zhong Subject: [Committed] RISC-V: Support VLS reduction Date: Mon, 18 Sep 2023 19:44:14 +0800 Message-Id: <20230918114414.3667280-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777375683751098549 X-GMAIL-MSGID: 1777375683751098549 Notice previous VLS reduction patch is missing some codes which cause multiple ICE: FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/reduc/reduc_run-2.c (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-run.c -std=c99 -O3 -ftree-vectorize --param riscv-autovec-preference=fixed-vlmax (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls-vlmax/vec_extract-runu.c -std=c99 -O3 -ftree-vectorize --param riscv-autovec-preference=fixed-vlmax (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls-vlmax/vec_set-run.c -std=c99 -O3 -ftree-vectorize --param riscv-autovec-preference=fixed-vlmax (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-1.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredsum\\.vs 22 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-10.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmax\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-10.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmaxu\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-10.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmin\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-10.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredminu\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-11.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmax\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-11.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmaxu\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-11.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmin\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-11.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredminu\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-12.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredmax\\.vs 10 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-12.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredmin\\.vs 10 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-13.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredmax\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-13.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredmin\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-14.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredmax\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-14.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredmin\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-15.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredand\\.vs 22 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-15.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredor\\.vs 22 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-15.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredxor\\.vs 22 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-16.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredand\\.vs 20 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-16.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredor\\.vs 20 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-16.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredxor\\.vs 20 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-17.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredand\\.vs 18 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-17.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredor\\.vs 18 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-17.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredxor\\.vs 18 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-18.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredand\\.vs 16 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-18.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredor\\.vs 16 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-18.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredxor\\.vs 16 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-19.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-19.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-2.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredsum\\.vs 20 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-20.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-20.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-21.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable (internal compiler error: in code_for_pred, at ./insn-opinit.h:1560) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-21.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable (test for excess errors) FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-3.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredsum\\.vs 18 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-4.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredsum\\.vs 16 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-5.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredusum\\.vs 10 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-6.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredusum\\.vs 9 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-7.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vfredusum\\.vs 8 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-8.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmax\\.vs 11 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-8.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmaxu\\.vs 11 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-8.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmin\\.vs 11 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-8.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredminu\\.vs 11 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-9.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmax\\.vs 10 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-9.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmaxu\\.vs 10 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-9.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredmin\\.vs 10 FAIL: gcc.target/riscv/rvv/autovec/vls/reduc-9.c -O3 -ftree-vectorize --param riscv-autovec-preference=scalable scan-assembler-times vredminu\\.vs 10 Committed. gcc/ChangeLog: * config/riscv/autovec.md: Add VLS modes. * config/riscv/vector-iterators.md: Ditto. * config/riscv/vector.md: Ditto. --- gcc/config/riscv/autovec.md | 22 ++++---- gcc/config/riscv/vector-iterators.md | 80 ++++++++++++++++++++++++++++ gcc/config/riscv/vector.md | 6 +-- 3 files changed, 94 insertions(+), 14 deletions(-) diff --git a/gcc/config/riscv/autovec.md b/gcc/config/riscv/autovec.md index 1c22f96ec26..493d5745485 100644 --- a/gcc/config/riscv/autovec.md +++ b/gcc/config/riscv/autovec.md @@ -2089,7 +2089,7 @@ (define_insn_and_split "reduc_plus_scal_" [(set (match_operand: 0 "register_operand") (unspec: [ - (match_operand:VI 1 "register_operand") + (match_operand:V_VLSI 1 "register_operand") ] UNSPEC_REDUC_SUM))] "TARGET_VECTOR && can_create_pseudo_p ()" "#" @@ -2104,7 +2104,7 @@ (define_expand "reduc_smax_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { int prec = GET_MODE_PRECISION (mode); @@ -2116,7 +2116,7 @@ (define_expand "reduc_umax_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { riscv_vector::expand_reduction (UNSPEC_REDUC_MAXU, riscv_vector::REDUCE_OP, @@ -2126,7 +2126,7 @@ (define_expand "reduc_smin_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { int prec = GET_MODE_PRECISION (mode); @@ -2138,7 +2138,7 @@ (define_expand "reduc_umin_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { int prec = GET_MODE_PRECISION (mode); @@ -2150,7 +2150,7 @@ (define_expand "reduc_and_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { riscv_vector::expand_reduction (UNSPEC_REDUC_AND, riscv_vector::REDUCE_OP, @@ -2160,7 +2160,7 @@ (define_expand "reduc_ior_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { riscv_vector::expand_reduction (UNSPEC_REDUC_OR, riscv_vector::REDUCE_OP, @@ -2170,7 +2170,7 @@ (define_expand "reduc_xor_scal_" [(match_operand: 0 "register_operand") - (match_operand:VI 1 "register_operand")] + (match_operand:V_VLSI 1 "register_operand")] "TARGET_VECTOR" { riscv_vector::expand_reduction (UNSPEC_REDUC_XOR, riscv_vector::REDUCE_OP, @@ -2190,7 +2190,7 @@ (define_insn_and_split "reduc_plus_scal_" [(set (match_operand: 0 "register_operand") (unspec: [ - (match_operand:VF 1 "register_operand") + (match_operand:V_VLSF 1 "register_operand") ] UNSPEC_REDUC_SUM_UNORDERED))] "TARGET_VECTOR && can_create_pseudo_p ()" "#" @@ -2206,7 +2206,7 @@ (define_expand "reduc_smax_scal_" [(match_operand: 0 "register_operand") - (match_operand:VF 1 "register_operand")] + (match_operand:V_VLSF 1 "register_operand")] "TARGET_VECTOR" { REAL_VALUE_TYPE rv; @@ -2219,7 +2219,7 @@ (define_expand "reduc_smin_scal_" [(match_operand: 0 "register_operand") - (match_operand:VF 1 "register_operand")] + (match_operand:V_VLSF 1 "register_operand")] "TARGET_VECTOR" { REAL_VALUE_TYPE rv; diff --git a/gcc/config/riscv/vector-iterators.md b/gcc/config/riscv/vector-iterators.md index fa9892cebc1..0b395e65228 100644 --- a/gcc/config/riscv/vector-iterators.md +++ b/gcc/config/riscv/vector-iterators.md @@ -1300,6 +1300,86 @@ (RVVM8SF "RVVM1SF") (RVVM4SF "RVVM1SF") (RVVM2SF "RVVM1SF") (RVVM1SF "RVVM1SF") (RVVMF2SF "RVVM1SF") (RVVM8DF "RVVM1DF") (RVVM4DF "RVVM1DF") (RVVM2DF "RVVM1DF") (RVVM1DF "RVVM1DF") + + (V1QI "RVVM1QI") + (V2QI "RVVM1QI") + (V4QI "RVVM1QI") + (V8QI "RVVM1QI") + (V16QI "RVVM1QI") + (V32QI "RVVM1QI") + (V64QI "RVVM1QI") + (V128QI "RVVM1QI") + (V256QI "RVVM1QI") + (V512QI "RVVM1QI") + (V1024QI "RVVM1QI") + (V2048QI "RVVM1QI") + (V4096QI "RVVM1QI") + (V1HI "RVVM1HI") + (V2HI "RVVM1HI") + (V4HI "RVVM1HI") + (V8HI "RVVM1HI") + (V16HI "RVVM1HI") + (V32HI "RVVM1HI") + (V64HI "RVVM1HI") + (V128HI "RVVM1HI") + (V256HI "RVVM1HI") + (V512HI "RVVM1HI") + (V1024HI "RVVM1HI") + (V2048HI "RVVM1HI") + (V1SI "RVVM1SI") + (V2SI "RVVM1SI") + (V4SI "RVVM1SI") + (V8SI "RVVM1SI") + (V16SI "RVVM1SI") + (V32SI "RVVM1SI") + (V64SI "RVVM1SI") + (V128SI "RVVM1SI") + (V256SI "RVVM1SI") + (V512SI "RVVM1SI") + (V1024SI "RVVM1SI") + (V1DI "RVVM1DI") + (V2DI "RVVM1DI") + (V4DI "RVVM1DI") + (V8DI "RVVM1DI") + (V16DI "RVVM1DI") + (V32DI "RVVM1DI") + (V64DI "RVVM1DI") + (V128DI "RVVM1DI") + (V256DI "RVVM1DI") + (V512DI "RVVM1DI") + (V1HF "RVVM1HF") + (V2HF "RVVM1HF") + (V4HF "RVVM1HF") + (V8HF "RVVM1HF") + (V16HF "RVVM1HF") + (V32HF "RVVM1HF") + (V64HF "RVVM1HF") + (V128HF "RVVM1HF") + (V256HF "RVVM1HF") + (V512HF "RVVM1HF") + (V1024HF "RVVM1HF") + (V2048HF "RVVM1HF") + (V1SF "RVVM1SF") + (V2SF "RVVM1SF") + (V4SF "RVVM1SF") + (V8SF "RVVM1SF") + (V16SF "RVVM1SF") + (V32SF "RVVM1SF") + (V64SF "RVVM1SF") + (V128SF "RVVM1SF") + (V256SF "RVVM1SF") + (V512SF "RVVM1SF") + (V1024SF "RVVM1SF") + (V1DF "RVVM1DF") + (V2DF "RVVM1DF") + (V4DF "RVVM1DF") + (V8DF "RVVM1DF") + (V16DF "RVVM1DF") + (V32DF "RVVM1DF") + (V64DF "RVVM1DF") + (V128DF "RVVM1DF") + (V256DF "RVVM1DF") + (V512DF "RVVM1DF") ]) (define_mode_attr V_EXT_LMUL1 [ diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index 44a344796ea..39b550c1bff 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -7906,7 +7906,7 @@ (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) (unspec: [ - (match_operand:VI 3 "register_operand" " vr, vr") + (match_operand:V_VLSI 3 "register_operand" " vr, vr") (match_operand: 4 "register_operand" " vr, vr") ] ANY_REDUC) (match_operand: 2 "vector_merge_operand" " vu, 0")] UNSPEC_REDUC))] @@ -7948,7 +7948,7 @@ (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) (unspec: [ - (match_operand:VF 3 "register_operand" " vr, vr") + (match_operand:V_VLSF 3 "register_operand" " vr, vr") (match_operand: 4 "register_operand" " vr, vr") ] ANY_FREDUC) (match_operand: 2 "vector_merge_operand" " vu, 0")] UNSPEC_REDUC))] @@ -7971,7 +7971,7 @@ (reg:SI VTYPE_REGNUM) (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE) (unspec: [ - (match_operand:VF 3 "register_operand" " vr, vr") + (match_operand:V_VLSF 3 "register_operand" " vr, vr") (match_operand: 4 "register_operand" " vr, vr") ] ANY_FREDUC_SUM) (match_operand: 2 "vector_merge_operand" " vu, 0")] UNSPEC_REDUC))]