From patchwork Mon Nov 13 03:37:06 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: 164345 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b909:0:b0:403:3b70:6f57 with SMTP id t9csp980930vqg; Sun, 12 Nov 2023 19:37:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IFyem9tPvvSPssUeAGYnU3vJdrYqr0/VD3vg2sK41YWHS2zim3GfnJxPgob42/Q4G4wwhi7 X-Received: by 2002:a05:622a:1c0b:b0:41e:2c87:e84 with SMTP id bq11-20020a05622a1c0b00b0041e2c870e84mr5752381qtb.30.1699846665858; Sun, 12 Nov 2023 19:37:45 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1699846665; cv=pass; d=google.com; s=arc-20160816; b=LU61esmg0pIWgqGtOBGM+kVJ9wUGtirHzc1+cmzaihTipjerSb5g5NNnPW/4/hxKgT iJdBRN3mUBsNLdkjeqDdzUjtvhi8I4OtJrbKuFrtrbmvf8MOUMUcmyCXvK6S4tUdASeY SzxfG7yXEr7cQl081tAvvYyo52gkf1firr7eIvOgnx45QOdEUXa1scY/j7IQ/pcG51XN oc8zbhuWZoN4y6GvZUOnvWmbCn2zLQ+zJ+fh23mk0Qsl6nsBxfE7W17rmDhIJuUhjQGa pqGbY8KndL5QiSi18J7vVL5o4fu5Sg4etkZrOi4NirM+1yqu+mG/6+qo3MyVSaWJc+QQ fvlA== 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=808bvScVdOOS1VKiMtCtGHrRMAJpDFPxa3A1RCmastQ=; fh=12MRPJmZ1mgDpHqWoogMKqnaGRGM2b7lcuJroqfjJiw=; b=TDbXtZxDuNwx15Pbg/IJZA7cMEAX0shCLX/v1+2eBCPpDk9r1BitH0HW6HuQSki9pz M6S0U+UXgZuSuediph4E5F3i9Vtjvq8i0ySfWYbtdIb2pWuRPB7dCkzPhkmxqcm2Xq9w CdhM9peRZwJJ2IZ9pyn010WtnoG94KSQ4zckDIo5SJQx+gaDqyfA5wuOMogcwHRIG/MP HAMTAay47lQWo1Vnf0yWM8D9KutPKY8AmUHTFYT1KZVDnusLm4GEcpSzC0+QoS/ToNQ2 FiUSuK8EV5uj9rNB4E3nQQ+EAyC3i2N3xS4oL9XgtXkv1svQRROxdVRaKVfItfjYmoW3 bXvA== 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 j2-20020ac85f82000000b00421a25f7ae6si3714076qta.230.2023.11.12.19.37.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Nov 2023 19:37:45 -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 977043858408 for ; Mon, 13 Nov 2023 03:37:45 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id 745AA3858D20 for ; Mon, 13 Nov 2023 03:37:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 745AA3858D20 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 745AA3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=54.243.244.52 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699846641; cv=none; b=SOJQpIzgEaNTanNsOIomv1rH8xg0LPqCEAJsx/tm4xT+AexPkICEfm8Sn53wcij/WlcvEzJTRL+D6enKijZr3+6HNKctnUq6nkZSnkrf9DzGtmyY3Uo0bJe47lA3wQ0QSxDw8HXMlmkhyMk+ylUpNHB7Ha21RDJO22KESF7sGhw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699846641; c=relaxed/simple; bh=zWWtDZy+lnsS/nIruxgUs0MtzGMIC6FnoZI5PevqU1M=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=HXBFcoIS5HedeMskcX19hiyBvuCd6sntKUlmwYVTeMqOiRO1gEqbfICMmwqCKejtjiYzw2Vj+pJBw9HomWZf04sXjcU2xttRotyHbSK88xRa/IZuSy32BjVceHeCOyocIpz3EWLERbnVT09Bj6saM2JhJ9iwr6InK+r1JHkQ/fM= ARC-Authentication-Results: i=1; server2.sourceware.org X-QQ-mid: bizesmtp76t1699846628tumh0dqb Received: from rios-cad121.hadoop.rioslab.org ( [58.60.1.9]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 13 Nov 2023 11:37:07 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: wF64VgvUy+UNtuJfOEEHiU+NsFwO4wq9R1Srwoi8Kk1VYPj+74xzTJ5X72WI4 kXEbBM0cmvNnmHi6Pr3+L0u6exFKAdeOIa51DHG1Wq6TUG8PE8E/ptsdNT8gthrGkfSrBBo 8BUJ9YJ4/bl44X0eMkDMu/8LC36T1XwN7W/+rkQIQz3N6BTDwIJXlKwbB8yhlwsxJY6SBs/ 0RrCWOjKRMsccJJU5zTEthEW9w/vixT5jrHyZ53B4GEJhRpkDEV3aImpqAmUXo9Ii1hNJyi 0U6lHdp7S5ca8z6sKfgn3eOB1gUzVAm9jBk0Q6CuqzhxqFQhkLWffdumF/e9Iew5Kbm0Xxx qJX1LA+Xl+hBB3D/Zsk03j70bUj2z7UKl27PlSkUWwK2SVlqIAXp3Nf5fMhoee11yIyzQXb 6M+DENobLP0= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12179375821857135891 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: kito.cheng@gmail.com, kito.cheng@sifive.com, jeffreyalaw@gmail.com, rdapp.gcc@gmail.com, Juzhe-Zhong Subject: [PATCH] RISC-V: Optimize combine sequence by merge approach Date: Mon, 13 Nov 2023 11:37:06 +0800 Message-Id: <20231113033706.175135-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=-10.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, 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: 1782418417542243610 This patch optimization of combine 2 duplicate vectors when their elements are not equal. typedef char v16qi __attribute__ ((vector_size (16))); void foo (char a, char b, char *out) { v16qi v = {a, a, a, a, a, b, b, b, b, b, b, b, b, b, b, b}; *(v16qi *) out = v; } Before this patch: vsetivli zero,16,e8,m1,ta,ma vmv.v.x v1,a0 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vslide1down.vx v1,v1,a1 vse8.v v1,0(a2) ret After this patch: vsetivli zero,16,e8,m1,ta,ma vmv.v.x v1,a0 vid.v v0 vmsgtu.vi v0,v0,4 vmerge.vxm v1,v1,a1,v0 vse8.v v1,0(a2) ret 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): Add 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..292ce9be120 --- /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.23423; + int64_t b = -8916156.45644; + + 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..12e7fcb7f70 --- /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, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, 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, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, + var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, var1, 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 } } */