From patchwork Mon Nov 13 11:06:36 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: 164407 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp1127065vqg; Mon, 13 Nov 2023 03:07:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IHWDARfbmlHfKIybiTOmvrMv48gWvt2iR9hBJB8e1cb2qx4hBUsgs7vOwSIMOvivjLu8aId X-Received: by 2002:a05:620a:944b:b0:76a:eeb6:dd7b with SMTP id sm11-20020a05620a944b00b0076aeeb6dd7bmr6116649qkn.75.1699873642695; Mon, 13 Nov 2023 03:07:22 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1699873642; cv=pass; d=google.com; s=arc-20160816; b=lXu5B4bVz7wDwou41AuslebOXzDGBxWUbvASEb5mid6jZU5py2CXTsm1X08k+654Nl j37E3Yr6HZEy/TQTY0GEXGR059WpbZilh3RXOynOkE81dXBRiYEVIY8hKTdZJvxv2awI KPOSdxufuNxTH56IZX7yt/doxoi8ZSvbBQSLA+4zWrVJVcy+1f4NOSc94rHPGp9Lcl1r kfElNejAl7yB4EC0TEqkq1xPEKvAtCwTc0EEcuzz2g37x8OObsXs2brpqTSLSZEey9Ar OQFP5Kq0VovmSFkdTYXgN/his7b2jYHrWGm3PnguiDU0WVOolFUv9i6mjYQhfdXn6/rL /cPQ== 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=zSJ3cAuIRKoGtoz3nj+fNr5SwQrJ/7K9cSht/NaMR0k=; fh=idvV5TQ1gmHAoU8u1GUGfjilVySOK+BR5TeZLoSouN8=; b=0tATWZIoBDJRdI5iItk6wftFzfgvePXSJ2iCmzoxlHfeNVxb0B08VzZ24QizT/V4HB Fl/ZxfWjSB8k++M73WpK1hX5IyaK+t6tYrf7HO9UKg2eGM79zauS/tlofkzGSwDid/z2 BHEaYNYixKcXl5jjAn+KcHu3o+fv95btUH0N/oZKbmacmD3Y0xDULIzi479iLe2J0pPV ktlUno03jH/U3GBDO8xQ+MM+LKe6Xm+1paE6+xwTkMZNBtvxMiDsH+HAaLw7GSRB2+B/ lIZ9C9GwOLL439vbtifN1bUXncrPUXWXijtRhbCpMrHkQyipjA3XHUJIz3eFEoliKWvG nVTg== 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 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id bm42-20020a05620a19aa00b0077707515152si4518391qkb.256.2023.11.13.03.07.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Nov 2023 03:07:22 -0800 (PST) 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; arc=pass (i=1); 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 6D2CE384835E for ; Mon, 13 Nov 2023 11:07:22 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgbr1.qq.com (smtpbgbr1.qq.com [54.207.19.206]) by sourceware.org (Postfix) with ESMTPS id 0D8CA3858D32 for ; Mon, 13 Nov 2023 11:06:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0D8CA3858D32 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 0D8CA3858D32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.207.19.206 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699873618; cv=none; b=YU3Jgu0S8Rc8Vc+2rwCOIkHZUadqLYdDj3uU2XBzQ/A11HBZMSQ1BnVPT/+f1veikN5SGzxCw0gJx8xosVNvp4HK3wDqabSv2eUhA4qHTSI3u5ss4BE4WKf21wI8bmEIHK39BVgfwhpg9y8aEequO52iV7m7wXzdoFFbPEbQonE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699873618; c=relaxed/simple; bh=wB1iqJr4+Wu3sM0Dbu3x3XQmXiHV/cQ7YQjmrjXSspA=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=R+vlk2uhMsx1rGaLd/egiC6g0cYeDY3axVjAK+PnIXrhzA8bZE9dL0MCnGM4UnH6GNi9G1FMUnvy1seD0iR2uKutr/rP6FaH1+gas6TwVRMGzfXncRov3siJhZkKXTub8mOYWMRws0do7pUjSdO6GGyWty+nCAd9Y0ARUKdFym0= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp74t1699873598tojjxmhz Received: from rios-cad122.hadoop.rioslab.org ( [58.60.1.26]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 13 Nov 2023 19:06:37 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: RrZlkntZBfkOBDY5Hh0ZsuNogmi+wPEnh2yCGQbEROjYh8k4cj/dvIMg36zk7 3fZDhIFGB3TDD9EQO6oXts3Qpo+bR9jfqIOaY7r5ZC2xApS96Av1itrP0EeT/cSSF2p0FAk 1radEMD23TdG3rkxQyZUUN7XZ3M118+BHHMHPjX5oZnyIBETWp7zUvktxh6A3hbrL8neFC7 J7mG15kCHiSK2hHG8zh5q7yqEJCJ6SJN2H3obMAuYkpYgZzTRducJ/sItHItWVbeW5oIUhi zRZNx9dDNHEwtDKLIDEqOgf9ZcjBAoB2cY6l/J1n8EyxCQ5j0kFNEzeiMvPIOzlgryWpeWp 8gYuW+/jj9yQkQQLbGpqdCkRHZrd/BJXskzo5WJwHyrXQp7LmYiD1P4lnCuiniVYk/8PiI+ GhL3De20PB0ofmISsbegTw== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 7230132058532281647 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: Juzhe-Zhong Subject: [Committed V3] RISC-V: Optimize combine sequence by merge approach Date: Mon, 13 Nov 2023 19:06:36 +0800 Message-Id: <20231113110636.149485-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=-8.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SCC_10_SHORT_WORD_LINES, SCC_20_SHORT_WORD_LINES, SCC_35_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782418417542243610 X-GMAIL-MSGID: 1782446704779108615 gcc/ChangeLog: * config/riscv/riscv-v.cc (rvv_builder::combine_sequence_use_merge_profitable_p): New function. (expand_vector_init_merge_combine_sequence): Ditto. (expand_vec_init): Adapt for new optimization. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c: New test. * gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c: New test. * gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c: New test. --- gcc/config/riscv/riscv-v.cc | 89 ++++- .../rvv/autovec/vls-vlmax/combine-merge-1.c | 18 + .../rvv/autovec/vls-vlmax/combine-merge-2.c | 18 + .../autovec/vls-vlmax/combine-merge_run-1.c | 30 ++ .../autovec/vls-vlmax/combine-merge_run-2.c | 30 ++ .../riscv/rvv/autovec/vls/combine-merge-1.c | 179 ++++++++++ .../riscv/rvv/autovec/vls/combine-merge-10.c | 98 +++++ .../riscv/rvv/autovec/vls/combine-merge-11.c | 98 +++++ .../riscv/rvv/autovec/vls/combine-merge-12.c | 178 +++++++++ .../riscv/rvv/autovec/vls/combine-merge-13.c | 98 +++++ .../riscv/rvv/autovec/vls/combine-merge-14.c | 98 +++++ .../riscv/rvv/autovec/vls/combine-merge-2.c | 97 +++++ .../riscv/rvv/autovec/vls/combine-merge-3.c | 97 +++++ .../riscv/rvv/autovec/vls/combine-merge-4.c | 97 +++++ .../riscv/rvv/autovec/vls/combine-merge-5.c | 98 +++++ .../riscv/rvv/autovec/vls/combine-merge-6.c | 97 +++++ .../riscv/rvv/autovec/vls/combine-merge-7.c | 97 +++++ .../riscv/rvv/autovec/vls/combine-merge-8.c | 337 ++++++++++++++++++ .../riscv/rvv/autovec/vls/combine-merge-9.c | 178 +++++++++ 19 files changed, 2031 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc index b055de9f2d6..265a298f447 100644 --- a/gcc/config/riscv/riscv-v.cc +++ b/gcc/config/riscv/riscv-v.cc @@ -415,6 +415,7 @@ public: bool repeating_sequence_use_merge_profitable_p (); bool combine_sequence_use_slideup_profitable_p (); + bool combine_sequence_use_merge_profitable_p (); rtx get_merge_scalar_mask (unsigned int) const; bool single_step_npatterns_p () const; @@ -528,6 +529,34 @@ rvv_builder::combine_sequence_use_slideup_profitable_p () return leading_ndups == trailing_ndups && trailing_ndups == nelts / 2; } +/* Return true if it's worthwhile to use merge combine vector with a scalar. */ +bool +rvv_builder::combine_sequence_use_merge_profitable_p () +{ + int nelts = full_nelts ().to_constant (); + int leading_ndups = this->count_dups (0, nelts - 1, 1); + int trailing_ndups = this->count_dups (nelts - 1, -1, -1); + int nregs = riscv_get_v_regno_alignment (int_mode ()); + + if (leading_ndups + trailing_ndups != nelts) + return false; + + /* Leading elements num > 255 which exceeds the maximum value + of QImode, we will need to use HImode. */ + machine_mode mode; + if (leading_ndups > 255 || nregs > 2) + { + if (!get_vector_mode (HImode, nelts).exists (&mode)) + return false; + /* We will need one more AVL/VL toggling vsetvl instruction. */ + return leading_ndups > 4 && trailing_ndups > 4; + } + + /* { a, a, a, b, b, ... , b } and { b, b, b, a, a, ... , a } + consume 3 slide instructions. */ + return leading_ndups > 3 && trailing_ndups > 3; +} + /* Merge the repeating sequence into a single element and return the RTX. */ rtx rvv_builder::get_merged_repeating_sequence () @@ -2166,6 +2195,49 @@ expand_vector_init_slideup_combine_sequence (rtx target, emit_vlmax_insn (icode, SLIDEUP_OP_MERGE, ops); } +/* Use merge approach to merge a scalar into a vector. + v = {a, a, a, a, a, a, b, b} + + v1 = {a, a, a, a, a, a, a, a} + scalar = b + mask = {0, 0, 0, 0, 0, 0, 1, 1} +*/ +static void +expand_vector_init_merge_combine_sequence (rtx target, + const rvv_builder &builder) +{ + machine_mode mode = GET_MODE (target); + machine_mode imode = builder.int_mode (); + machine_mode mmode = builder.mask_mode (); + int nelts = builder.full_nelts ().to_constant (); + int leading_ndups = builder.count_dups (0, nelts - 1, 1); + if ((leading_ndups > 255 && GET_MODE_INNER (imode) == QImode) + || riscv_get_v_regno_alignment (imode) > 1) + imode = get_vector_mode (HImode, nelts).require (); + + /* Generate vid = { 0, 1, 2, ..., n }. */ + rtx vid = gen_reg_rtx (imode); + expand_vec_series (vid, const0_rtx, const1_rtx); + + /* Generate mask. */ + rtx mask = gen_reg_rtx (mmode); + insn_code icode = code_for_pred_cmp_scalar (imode); + rtx index = gen_int_mode (leading_ndups - 1, builder.inner_int_mode ()); + rtx dup_rtx = gen_rtx_VEC_DUPLICATE (imode, index); + /* vmsgtu.vi/vmsgtu.vx. */ + rtx cmp = gen_rtx_fmt_ee (GTU, mmode, vid, dup_rtx); + rtx sel = builder.elt (nelts - 1); + rtx mask_ops[] = {mask, cmp, vid, index}; + emit_vlmax_insn (icode, COMPARE_OP, mask_ops); + + /* Duplicate the first elements. */ + rtx dup = expand_vector_broadcast (mode, builder.elt (0)); + /* Merge scalar into vector according to mask. */ + rtx merge_ops[] = {target, dup, sel, mask}; + icode = code_for_pred_merge_scalar (mode); + emit_vlmax_insn (icode, MERGE_OP, merge_ops); +} + /* Initialize register TARGET from the elements in PARALLEL rtx VALS. */ void @@ -2215,7 +2287,22 @@ expand_vec_init (rtx target, rtx vals) return; } - /* TODO: We will support more Initialization of vector in the future. */ + /* Case 4: Optimize combine sequence. + E.g. v = {a, a, a, a, a, a, a, a, a, a, a, b, b, b, b, b}. + + Generate vector: + v = {a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a}. + + Generate mask: + mask = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1}. + + Merge b into v by mask: + v = {a, a, a, a, a, a, a, a, a, a, a, b, b, b, b, b}. */ + if (v.combine_sequence_use_merge_profitable_p ()) + { + expand_vector_init_merge_combine_sequence (target, v); + return; + } } /* Handle common situation by vslide1down. This function can handle any diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c new file mode 100644 index 00000000000..ca2acbf785d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-1.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=rv64gcv -mabi=lp64d" } */ + +#include + +typedef double vnx16df __attribute__ ((vector_size (128))); + +__attribute__ ((noipa)) void +f_vnx16df (double a, double b, double *out) +{ + vnx16df v = {a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b}; + *(vnx16df *) out = v; +} + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 1 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 1 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 1 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c new file mode 100644 index 00000000000..9a59b9cfd8f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge-2.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=rv64gcv -mabi=lp64d" } */ + +#include + +typedef int64_t vnx16di __attribute__ ((vector_size (128))); + +__attribute__ ((noipa)) void +f_vnx16di (int64_t a, int64_t b, int64_t *out) +{ + vnx16di v = {a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b}; + *(vnx16di *) out = v; +} + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 1 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 1 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 1 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 1 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c new file mode 100644 index 00000000000..71ccf54a6d3 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-1.c @@ -0,0 +1,30 @@ +/* { dg-do run { target { riscv_v } } } */ +/* { dg-options "--param riscv-autovec-preference=fixed-vlmax -O3" } */ + +#include "combine-merge-1.c" + +int +main () +{ + double a = -1789089.23423; + double b = -8916156.45644; + + double v_vnx16df[sizeof (vnx16df) / sizeof (double)]; + f_vnx16df (a, b, v_vnx16df); + + for (int i = 0; i < sizeof (vnx16df) / sizeof (double); i++) + { + if (i < 5) + { + if (v_vnx16df[i] != a) + __builtin_abort (); + } + else + { + if (v_vnx16df[i] != b) + __builtin_abort (); + } + } + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c new file mode 100644 index 00000000000..9c19b9efb15 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls-vlmax/combine-merge_run-2.c @@ -0,0 +1,30 @@ +/* { dg-do run { target { riscv_v } } } */ +/* { dg-options "--param riscv-autovec-preference=fixed-vlmax -O3" } */ + +#include "combine-merge-2.c" + +int +main () +{ + int64_t a = -1789089; + int64_t b = 8916156; + + int64_t v_vnx16di[sizeof (vnx16di) / sizeof (int64_t)]; + f_vnx16di (a, b, v_vnx16di); + + for (int i = 0; i < sizeof (vnx16di) / sizeof (int64_t); i++) + { + if (i < 5) + { + if (v_vnx16di[i] != a) + __builtin_abort (); + } + else + { + if (v_vnx16di[i] != b) + __builtin_abort (); + } + } + + return 0; +} diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c new file mode 100644 index 00000000000..4622a5b58ad --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-1.c @@ -0,0 +1,179 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16qi, int8_t, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32qi, int8_t, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64qi, int8_t, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128qi, int8_t, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256qi, int8_t, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512qi, int8_t, 512, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v1024qi, int8_t, 1024, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 7 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 7 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 7 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 7 } } */ + diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c new file mode 100644 index 00000000000..0d4776cac80 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-10.c @@ -0,0 +1,98 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16si, int32_t, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32si, int32_t, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64si, int32_t, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128si, int32_t, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256si, int32_t, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512si, int32_t, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) + + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c new file mode 100644 index 00000000000..4af45cc0783 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-11.c @@ -0,0 +1,98 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16di, int64_t, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32di, int64_t, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64di, int64_t, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128di, int64_t, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256di, int64_t, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512di, int64_t, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) + + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c new file mode 100644 index 00000000000..d2f18521d5a --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-12.c @@ -0,0 +1,178 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16hf, _Float16, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32hf, _Float16, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64hf, _Float16, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128hf, _Float16, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256hf, _Float16, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512hf, _Float16, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v1024hf, _Float16, 1024, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, + var0, var0, var0, var0, var0) + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 7 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 7 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 7 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 7 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c new file mode 100644 index 00000000000..ae6e712b9a5 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-13.c @@ -0,0 +1,98 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16sf, float, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32sf, float, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64sf, float, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128sf, float, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256sf, float, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512sf, float, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) + + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c new file mode 100644 index 00000000000..f8d5e40c577 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-14.c @@ -0,0 +1,98 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16df, double, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32df, double, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64df, double, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128df, double, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256df, double, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512df, double, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) + + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 6 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c new file mode 100644 index 00000000000..3eaf8bb948d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-2.c @@ -0,0 +1,97 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16hi, int16_t, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32hi, int16_t, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64hi, int16_t, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128hi, int16_t, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256hi, int16_t, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512hi, int16_t, 512, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c new file mode 100644 index 00000000000..52fd64deaa8 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-3.c @@ -0,0 +1,97 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16si, int32_t, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32si, int32_t, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64si, int32_t, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128si, int32_t, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256si, int32_t, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512si, int32_t, 512, var0, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c new file mode 100644 index 00000000000..af6aaf369b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-4.c @@ -0,0 +1,97 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16di, int64_t, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32di, int64_t, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64di, int64_t, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128di, int64_t, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256di, int64_t, 256, var0, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512di, int64_t, 512, var0, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c new file mode 100644 index 00000000000..a1dacaca20b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-5.c @@ -0,0 +1,98 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16hf, _Float16, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32hf, _Float16, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64hf, _Float16, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128hf, _Float16, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256hf, _Float16, 256, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512hf, _Float16, 512, var0, var0, var0, var0, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) + + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c new file mode 100644 index 00000000000..99d4019710b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-6.c @@ -0,0 +1,97 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16sf, float, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32sf, float, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64sf, float, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128sf, float, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256sf, float, 256, var0, var0, var0, var0, var0, var0, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512sf, float, 512, var0, var0, var0, var0, var0, var0, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c new file mode 100644 index 00000000000..5165d4743c6 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-7.c @@ -0,0 +1,97 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16df, double, 16, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT (v32df, double, 32, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1) +DEF_REPEAT (v64df, double, 64, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1) +DEF_REPEAT (v128df, double, 128, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v256df, double, 256, var0, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1) +DEF_REPEAT ( + v512df, double, 512, var0, var0, var0, var0, var0, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1) + +/* { dg-final { scan-assembler-times {vfmv\.v\.f} 6 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 6 } } */ +/* { dg-final { scan-assembler-times {vmsgtu\.vi} 6 } } */ +/* { dg-final { scan-assembler-times {vfmerge\.vfm} 6 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c new file mode 100644 index 00000000000..d270dd9eebe --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-8.c @@ -0,0 +1,337 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16qi, int8_t, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32qi, int8_t, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64qi, int8_t, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128qi, int8_t, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256qi, int8_t, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512qi, int8_t, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v1024qi, int8_t, 1024, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, + var0, var0, var0, var0, var0) +DEF_REPEAT ( + v2048qi, int8_t, 2048, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 8 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 8 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 8 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 8 } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c new file mode 100644 index 00000000000..ea77cb0c3f6 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/combine-merge-9.c @@ -0,0 +1,178 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8" } */ + +#include "def.h" + +DEF_REPEAT (v16hi, int16_t, 16, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v32hi, int16_t, 32, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var0, var0, var0, var0, var0, var0) +DEF_REPEAT (v64hi, int16_t, 64, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var0, var0, var0, var0) +DEF_REPEAT (v128hi, int16_t, 128, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v256hi, int16_t, 256, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v512hi, int16_t, 512, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var0, var0, var0, var0, var0, var0) +DEF_REPEAT ( + v1024hi, int16_t, 1024, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var0, + var0, var0, var0, var0, var0) + +/* { dg-final { scan-assembler-times {vmv\.v\.x} 7 } } */ +/* { dg-final { scan-assembler-times {vid\.v} 7 } } */ +/* { dg-final { scan-assembler-times {vmsgtu} 7 } } */ +/* { dg-final { scan-assembler-times {vmerge\.vxm} 7 } } */