Message ID | 20230406144222.316395-1-juzhe.zhong@rivai.ai |
---|---|
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1079721vqo; Thu, 6 Apr 2023 07:43:55 -0700 (PDT) X-Google-Smtp-Source: AKy350aF9YTz2UG8Y71uSWgN9UtGXQbLVFVcSSb+0cvGL7D+HMTXDGjX7QD91HqXDcmQUCTj+cH2 X-Received: by 2002:aa7:dbd8:0:b0:4fc:709f:7abd with SMTP id v24-20020aa7dbd8000000b004fc709f7abdmr5847088edt.2.1680792235472; Thu, 06 Apr 2023 07:43:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680792235; cv=none; d=google.com; s=arc-20160816; b=MMiDPpgLu6q6zJCkVusKasT3LV4z+NEWH1UjYE8LyPIvrcMGm9HswiuHkfeyozItBg 9fX4zffrnFRdFZtradPYjXpTO/sIA3SqIrK2uO3PUVc00bmVyJXyD5eBs9E3XztvaY7f nsAEhk6bRpDQZFo2to8ln+I6vyrVyihS0pn2pb9SUvBI3QAHRobMPYFa+tpHTXmhbKaq xygFjXtzpT0MhpYHV/3zA6MA0mqN4Bdf2EdzdSFdpo15uUfp2m8I0Vx0aMED3VXYJ7xA Q0xX1cl/UHmciZ8t9o+/hVjMsGY6PX94ET/M5cUl0rQP/Ifv6X0foBpuaEjElA4m+33w OFyQ== 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=MeRxpxcA+ZE3hgsbB9JVpPmx0er3G/AF8QaV/V0lLoY=; b=0pCkep2shIVEhStbljQEcdd91CAMWri0JzQKKF3GtkUbOkNr5YQ9upR4F3T5lHu5QG 3jDGeOwrRQzhGXnLXhCdvhVd0viopg+NyVDwhnpQWUbEyluoE5Xx38DUEe0uIqTAfk4X rpr44i8Ees6CHaKpdJzPZwd7DdN4bivtQbMIh1RYRTglx3DX53ZlJ5CbHsUQSnHnC7vc nNCmiKlGoo9fzLGmXvAQ26Ak/Wv9zrU9iU2QS7LUmLHGW7tyv3rY9DjrljuDswnHOmD2 xijx3t7GCYmgOXj3Y8gLnXsvdppILfSi/lK7ulLCNawHcldq8fLDVC4MkFtJ4EoC6uD/ Oq9Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id l1-20020a056402124100b004abcb9e6563si1401195edw.80.2023.04.06.07.43.55 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Apr 2023 07:43:55 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A9F883854177 for <ouuuleilei@gmail.com>; Thu, 6 Apr 2023 14:43:09 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by sourceware.org (Postfix) with ESMTPS id ABCF03858D32 for <gcc-patches@gcc.gnu.org>; Thu, 6 Apr 2023 14:42:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org ABCF03858D32 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: bizesmtp74t1680792145t4r3x6ej Received: from rios-cad5.localdomain ( [58.60.1.11]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 06 Apr 2023 22:42:23 +0800 (CST) X-QQ-SSF: 01400000000000F0O000000A0000000 X-QQ-FEAT: fs34Pe/+C2QCziRyZT1ICX5kdMbPT8uEuLguP4NhXOnjyNKo2VHBml+7g2wZU 15D4ALNpBVkoSNQPqfvHF+B/acFrX63VBFPqwx5Co5nAU1j25Herc+q7twrKI4zLluUeK6q Wy0kJxKZJ2BTMKHKyLOUz+w7HuBNCA+qmGEgoreEpdm5VhD3wN6/7NhBIlEiLXAv6WC5l4S zuaK+tuzcQzOvA5aUtjklfV5yPkttGSRJMjNKP+amqyHj7gx7aupA7Jh01GSV1ytSOwieUH ttm77dDfT+F3XT+e27Ix4YxfifFcfzqZD3GHAQ6RzKeNM7fHUIByWrYTy1T8Vbm7qbqJArq qmOkgCtP4Gtjsh+6hhQVX8+mlikNwaB5p9x+5R+0iRf54ui2Bb8vGvy2L9pUlSQSLUaHBhB jlayodNWi7MI4qTFXNiVUQ== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 1347835705417184827 From: juzhe.zhong@rivai.ai To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, palmer@dabbelt.com, richard.sandiford@arm.com, rguenther@suse.de, jeffreyalaw@gmail.com, Juzhe-Zhong <juzhe.zhong@rivai.ai> Subject: [PATCH 0/3] RISC-V:Enable basic auto-vectorization for RVV Date: Thu, 6 Apr 2023 22:42:19 +0800 Message-Id: <20230406144222.316395-1-juzhe.zhong@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:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-6.8 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.29 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 Sender: "Gcc-patches" <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762438398716313785?= X-GMAIL-MSGID: =?utf-8?q?1762438398716313785?= |
Series |
RISC-V:Enable basic auto-vectorization for RVV
|
|
Message
juzhe.zhong@rivai.ai
April 6, 2023, 2:42 p.m. UTC
From: Juzhe-Zhong <juzhe.zhong@rivai.ai>
PATCH 1: Add WHILE_LEN pattern in Loop Vectorizer to support decrement IV for RVV.
PATCH 2: Enable basic auto-vectorization for RVV in RISC-V port.
PATCH 3: Add testcases for basic RVV auto-vectorization of WHILE_LEN pattern
includeing single rgroup test and multiple rgroup test of SLP.
*** BLURB HERE ***
Juzhe-Zhong (3):
VECT: Add WHILE_LEN pattern to support decrement IV manipulation for
loop vectorizer.
RISC-V: Enable basic RVV auto-vectorization and support
WHILE_LEN/LEN_LOAD/LEN_STORE pattern
RISC-V: Add testcase for basic RVV auto-vectorization
gcc/config/riscv/autovec.md | 63 ++
gcc/config/riscv/riscv-opts.h | 16 +
gcc/config/riscv/riscv-protos.h | 3 +-
gcc/config/riscv/riscv-v.cc | 61 +-
gcc/config/riscv/riscv-vector-switch.def | 47 +-
gcc/config/riscv/riscv-vsetvl.cc | 210 ++++-
gcc/config/riscv/riscv-vsetvl.h | 1 +
gcc/config/riscv/riscv.cc | 34 +-
gcc/config/riscv/riscv.opt | 40 +
gcc/config/riscv/vector.md | 6 +-
gcc/doc/md.texi | 14 +
gcc/internal-fn.cc | 29 +
gcc/internal-fn.def | 1 +
gcc/optabs.def | 1 +
gcc/testsuite/gcc.target/riscv/rvv/api/vadc.c | 361 ++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vadd.c | 713 ++++++++++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vand.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vcpop.c | 65 ++
gcc/testsuite/gcc.target/riscv/rvv/api/vdiv.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vdivu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vfirst.c | 65 ++
gcc/testsuite/gcc.target/riscv/rvv/api/vid.c | 185 +++++
.../gcc.target/riscv/rvv/api/viota.c | 185 +++++
.../gcc.target/riscv/rvv/api/vle16.c | 105 +++
.../gcc.target/riscv/rvv/api/vle32.c | 129 +++
.../gcc.target/riscv/rvv/api/vle64.c | 73 ++
gcc/testsuite/gcc.target/riscv/rvv/api/vle8.c | 121 +++
gcc/testsuite/gcc.target/riscv/rvv/api/vlm.c | 37 +
.../gcc.target/riscv/rvv/api/vloxei16.c | 385 +++++++++
.../gcc.target/riscv/rvv/api/vloxei32.c | 353 ++++++++
.../gcc.target/riscv/rvv/api/vloxei64.c | 297 +++++++
.../gcc.target/riscv/rvv/api/vloxei8.c | 401 +++++++++
.../gcc.target/riscv/rvv/api/vlse16.c | 105 +++
.../gcc.target/riscv/rvv/api/vlse32.c | 129 +++
.../gcc.target/riscv/rvv/api/vlse64.c | 73 ++
.../gcc.target/riscv/rvv/api/vlse8.c | 121 +++
.../gcc.target/riscv/rvv/api/vluxei16.c | 385 +++++++++
.../gcc.target/riscv/rvv/api/vluxei32.c | 353 ++++++++
.../gcc.target/riscv/rvv/api/vluxei64.c | 297 +++++++
.../gcc.target/riscv/rvv/api/vluxei8.c | 401 +++++++++
.../gcc.target/riscv/rvv/api/vmacc.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmadc.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmadd.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmand.c | 37 +
.../gcc.target/riscv/rvv/api/vmandn.c | 37 +
gcc/testsuite/gcc.target/riscv/rvv/api/vmax.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmaxu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmclr.c | 37 +
.../gcc.target/riscv/rvv/api/vmerge.c | 361 ++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vmin.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vminu.c | 361 ++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vmmv.c | 37 +
.../gcc.target/riscv/rvv/api/vmnand.c | 37 +
.../gcc.target/riscv/rvv/api/vmnor.c | 37 +
.../gcc.target/riscv/rvv/api/vmnot.c | 37 +
gcc/testsuite/gcc.target/riscv/rvv/api/vmor.c | 37 +
.../gcc.target/riscv/rvv/api/vmorn.c | 37 +
.../gcc.target/riscv/rvv/api/vmsbc.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmsbf.c | 65 ++
.../gcc.target/riscv/rvv/api/vmseq.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmset.c | 37 +
.../gcc.target/riscv/rvv/api/vmsge.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsgeu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsgt.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsgtu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsif.c | 65 ++
.../gcc.target/riscv/rvv/api/vmsle.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsleu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmslt.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsltu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmsne.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmsof.c | 65 ++
gcc/testsuite/gcc.target/riscv/rvv/api/vmul.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vmulh.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmulhsu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmulhu.c | 361 ++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vmv.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vmxnor.c | 37 +
.../gcc.target/riscv/rvv/api/vmxor.c | 37 +
gcc/testsuite/gcc.target/riscv/rvv/api/vneg.c | 185 +++++
.../gcc.target/riscv/rvv/api/vnmsac.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vnmsub.c | 713 ++++++++++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vnot.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vnsra.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vnsrl.c | 249 ++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vor.c | 713 ++++++++++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vrem.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vremu.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vrsub.c | 361 ++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vsbc.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vse16.c | 105 +++
.../gcc.target/riscv/rvv/api/vse32.c | 129 +++
.../gcc.target/riscv/rvv/api/vse64.c | 73 ++
gcc/testsuite/gcc.target/riscv/rvv/api/vse8.c | 121 +++
.../gcc.target/riscv/rvv/api/vsetvl.c | 97 +++
.../gcc.target/riscv/rvv/api/vsetvlmax.c | 97 +++
.../gcc.target/riscv/rvv/api/vsext_vf2.c | 129 +++
.../gcc.target/riscv/rvv/api/vsext_vf4.c | 81 ++
.../gcc.target/riscv/rvv/api/vsext_vf8.c | 41 +
gcc/testsuite/gcc.target/riscv/rvv/api/vsll.c | 713 ++++++++++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vsm.c | 37 +
.../gcc.target/riscv/rvv/api/vsoxei16.c | 385 +++++++++
.../gcc.target/riscv/rvv/api/vsoxei32.c | 353 ++++++++
.../gcc.target/riscv/rvv/api/vsoxei64.c | 297 +++++++
.../gcc.target/riscv/rvv/api/vsoxei8.c | 401 +++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vsra.c | 361 ++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vsrl.c | 361 ++++++++
.../gcc.target/riscv/rvv/api/vsse16.c | 105 +++
.../gcc.target/riscv/rvv/api/vsse32.c | 129 +++
.../gcc.target/riscv/rvv/api/vsse64.c | 73 ++
.../gcc.target/riscv/rvv/api/vsse8.c | 121 +++
gcc/testsuite/gcc.target/riscv/rvv/api/vsub.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vsuxei16.c | 385 +++++++++
.../gcc.target/riscv/rvv/api/vsuxei32.c | 353 ++++++++
.../gcc.target/riscv/rvv/api/vsuxei64.c | 297 +++++++
.../gcc.target/riscv/rvv/api/vsuxei8.c | 401 +++++++++
.../gcc.target/riscv/rvv/api/vwadd.c | 489 +++++++++++
.../gcc.target/riscv/rvv/api/vwaddu.c | 489 +++++++++++
.../gcc.target/riscv/rvv/api/vwmacc.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vwmaccsu.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vwmaccu.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vwmaccus.c | 129 +++
.../gcc.target/riscv/rvv/api/vwmul.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vwmulsu.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vwmulu.c | 249 ++++++
.../gcc.target/riscv/rvv/api/vwsub.c | 489 +++++++++++
.../gcc.target/riscv/rvv/api/vwsubu.c | 489 +++++++++++
gcc/testsuite/gcc.target/riscv/rvv/api/vxor.c | 713 ++++++++++++++++
.../gcc.target/riscv/rvv/api/vzext_vf2.c | 129 +++
.../gcc.target/riscv/rvv/api/vzext_vf4.c | 81 ++
.../gcc.target/riscv/rvv/api/vzext_vf8.c | 41 +
.../rvv/autovec/partial/multiple_rgroup-1.c | 6 +
.../rvv/autovec/partial/multiple_rgroup-1.h | 304 +++++++
.../rvv/autovec/partial/multiple_rgroup-2.c | 6 +
.../rvv/autovec/partial/multiple_rgroup-2.h | 546 ++++++++++++
.../rvv/autovec/partial/multiple_rgroup-2.s | 774 ++++++++++++++++++
.../autovec/partial/multiple_rgroup_run-1.c | 19 +
.../autovec/partial/multiple_rgroup_run-2.c | 19 +
.../rvv/autovec/partial/single_rgroup-1.c | 8 +
.../rvv/autovec/partial/single_rgroup-1.h | 106 +++
.../rvv/autovec/partial/single_rgroup_run-1.c | 19 +
.../gcc.target/riscv/rvv/autovec/template-1.h | 68 ++
.../gcc.target/riscv/rvv/autovec/v-1.c | 4 +
.../gcc.target/riscv/rvv/autovec/v-2.c | 6 +
.../gcc.target/riscv/rvv/autovec/zve32f-1.c | 4 +
.../gcc.target/riscv/rvv/autovec/zve32f-2.c | 5 +
.../riscv/rvv/autovec/zve32f_zvl128b-1.c | 4 +
.../riscv/rvv/autovec/zve32f_zvl128b-2.c | 6 +
.../gcc.target/riscv/rvv/autovec/zve32x-1.c | 4 +
.../gcc.target/riscv/rvv/autovec/zve32x-2.c | 6 +
.../riscv/rvv/autovec/zve32x_zvl128b-1.c | 5 +
.../riscv/rvv/autovec/zve32x_zvl128b-2.c | 6 +
.../gcc.target/riscv/rvv/autovec/zve64d-1.c | 4 +
.../gcc.target/riscv/rvv/autovec/zve64d-2.c | 4 +
.../riscv/rvv/autovec/zve64d_zvl128b-1.c | 4 +
.../riscv/rvv/autovec/zve64d_zvl128b-2.c | 6 +
.../gcc.target/riscv/rvv/autovec/zve64f-1.c | 4 +
.../gcc.target/riscv/rvv/autovec/zve64f-2.c | 4 +
.../riscv/rvv/autovec/zve64f_zvl128b-1.c | 4 +
.../riscv/rvv/autovec/zve64f_zvl128b-2.c | 6 +
.../gcc.target/riscv/rvv/autovec/zve64x-1.c | 4 +
.../gcc.target/riscv/rvv/autovec/zve64x-2.c | 4 +
.../riscv/rvv/autovec/zve64x_zvl128b-1.c | 4 +
.../riscv/rvv/autovec/zve64x_zvl128b-2.c | 6 +
gcc/testsuite/gcc.target/riscv/rvv/rvv.exp | 16 +
.../gcc.target/riscv/rvv/vsetvl/vsetvl-17.c | 2 +-
gcc/tree-ssa-loop-manip.cc | 4 +-
gcc/tree-ssa-loop-manip.h | 2 +-
gcc/tree-vect-loop-manip.cc | 186 ++++-
gcc/tree-vect-loop.cc | 35 +-
gcc/tree-vect-stmts.cc | 9 +-
gcc/tree-vectorizer.h | 4 +-
172 files changed, 36786 insertions(+), 46 deletions(-)
create mode 100644 gcc/config/riscv/autovec.md
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vadc.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vadd.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vand.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vcpop.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vdiv.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vdivu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vfirst.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vid.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/viota.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vle16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vle32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vle64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vle8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vlm.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vloxei16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vloxei32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vloxei64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vloxei8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vlse16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vlse32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vlse64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vlse8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vluxei16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vluxei32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vluxei64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vluxei8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmacc.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmadc.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmadd.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmand.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmandn.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmax.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmaxu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmclr.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmerge.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmin.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vminu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmmv.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmnand.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmnor.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmnot.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmor.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmorn.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsbc.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsbf.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmseq.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmset.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsge.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsgeu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsgt.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsgtu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsif.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsle.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsleu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmslt.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsltu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsne.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmsof.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmul.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmulh.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmulhsu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmulhu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmv.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmxnor.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vmxor.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vneg.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vnmsac.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vnmsub.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vnot.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vnsra.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vnsrl.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vor.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vrem.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vremu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vrsub.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsbc.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vse16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vse32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vse64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vse8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsetvl.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsetvlmax.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsext_vf2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsext_vf4.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsext_vf8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsll.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsm.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsoxei16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsoxei32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsoxei64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsoxei8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsra.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsrl.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsse16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsse32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsse64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsse8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsub.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsuxei16.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsuxei32.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsuxei64.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vsuxei8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwadd.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwaddu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmacc.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmaccsu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmaccu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmaccus.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmul.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmulsu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwmulu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwsub.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vwsubu.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vxor.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vzext_vf2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vzext_vf4.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/api/vzext_vf8.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-1.h
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-2.h
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup-2.s
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_run-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/multiple_rgroup_run-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/single_rgroup-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/single_rgroup-1.h
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/partial/single_rgroup_run-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/template-1.h
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/v-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/v-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32f_zvl128b-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve32x_zvl128b-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d_zvl128b-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64d_zvl128b-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64f-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64f-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64f_zvl128b-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64f_zvl128b-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64x-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64x-2.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64x_zvl128b-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/zve64x_zvl128b-2.c