From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id C00AA3858423 for ; Mon, 20 Nov 2023 13:15:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C00AA3858423 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org C00AA3858423 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::630 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700486108; cv=none; b=HCXMBXLeuudk2JTJrs31Mz7Nt8AAyVzhl8mrk2iRuNMnKUPcrGGiuf/nm4jaTpJoxYDmtTkZAEB+to+0qd83NhVBmDM2lxCFQR90mwx6gAYoGkzCzvGIMF4v1t5fIKy5a0creyBFNdJgtTxb43qLTIy5x8QGkGUTGsMBlAskv6c= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700486108; c=relaxed/simple; bh=bJiWetMzYJyW136FSP6LapjH9792hzcJgGgQrzjSBhI=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=joxY0sXsRJozpUY62biclyz3YodiqzTLOE+aUZZ/iG4x7dh5G70PKkynCw0t3el2WqOIhuZPbmYM3xrBE/t+Yav5sckRQjsECIpD01PLNlE2BD3ZO06F+9zgpCHkRBRvkX+Peml/Orx5+0yUswDevMS5ocOC69HxtS4gZEIF2KU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-9f26ee4a6e5so593835066b.2 for ; Mon, 20 Nov 2023 05:15:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700486100; x=1701090900; darn=gcc.gnu.org; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=D9+50L8UYzLFD8o7qD20ehjwXe4JQLi9W+kvhXVOr4E=; b=j0kg2aXt/5hqbLym9CI/dRNwNpU1ud4sQaLE8RhsBLurEvTt+RziwskakSNacsdn5a i+Fzm5JbxclC+xuB1xN82bttmfe5fVKqXE0GKO3tv7FjqM628cnrLxhZMlZ8/iqxCFXJ DC4/ZOhw4yuMMP/xtHk32MgNkM7l6PxmF7unW3GvfDC5lSDMcaJ4qPItuDwUnfgF3wc6 VY54c7p+tDeFpARDsjMJGjbvyhIUuZtEcyVmH4Z1nuSj4i70ZovaBX/lYO73mZt2y0US IM/RY1eY6Hgv7D106wDyUWZX8VAl29x+RTNH7svJ9xQ2yRlwKIISloWA/aYpyHDRkxOX fMlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700486100; x=1701090900; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:cc:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=D9+50L8UYzLFD8o7qD20ehjwXe4JQLi9W+kvhXVOr4E=; b=QGceZCYaqIaiO0v3L3yx7eLtUzzAk5xyxaLJImjyrKpoUg5h7+sxIoYRxSC2Esr7hS rIBb59USSLSSsK439x6xX3jPHatqBvYoasQap3VUyH2M/E+zZMoni+oLEoonjidoX9g4 tF6YdnSZcqI6J9CRQSG/jxUajgdenkASCHj6Rn6ip+P3ioDW6/UsksJcTlb82SymQD1J n+oqR6B8Jzf80YCxUq2j5uLrUY4765vC5YvJaci84fdE3wOfODXgv3e2+b+JAIfbryc8 g5GqSgJWkCTbXKkqSkxSN5G3bibpc/K+ZjhOdo/8+UqA+A9BLzaGZSD1kyOWszR/Myb8 Rgxw== X-Gm-Message-State: AOJu0Yx3Yxbaoc54mhTcYWR6RtkNvWEKjTMvLgDA2ogeOi5CE9MuQAaP N13l8LNp924xCPr1yVRK9RU= X-Google-Smtp-Source: AGHT+IGcZ+a5lwAeff94OsQxYfoXQpFzTWOsvaeoIxp5oyBRHfk1sO9ydCy2mtfGQSb6SsUcHscJvw== X-Received: by 2002:a17:907:619d:b0:9e6:59d5:71c1 with SMTP id mt29-20020a170907619d00b009e659d571c1mr4650901ejc.58.1700486099384; Mon, 20 Nov 2023 05:14:59 -0800 (PST) Received: from [192.168.1.23] (ip-046-223-203-173.um13.pools.vodafone-ip.de. [46.223.203.173]) by smtp.gmail.com with ESMTPSA id w17-20020a170906481100b009fc576e26e6sm1877484ejq.80.2023.11.20.05.14.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Nov 2023 05:14:58 -0800 (PST) Message-ID: <52cacc81-d94f-4069-976c-85e81f156528@gmail.com> Date: Mon, 20 Nov 2023 14:14:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Cc: rdapp.gcc@gmail.com Subject: Re: [PATCH] RISC-V: Disallow 64-bit indexed loads and stores for rv32gcv. Content-Language: en-US To: =?UTF-8?B?6ZKf5bGF5ZOy?= , gcc-patches , palmer , "kito.cheng" , Jeff Law References: <7F0E2F8092AA4045+2023111522175715837064@rivai.ai> <9EDA77BF3C40828D+2023111522293523178966@rivai.ai> <90d603a4-21c1-4500-a9e0-e7c6a7f4eb0c@gmail.com> From: Robin Dapp In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,BODY_8BITS,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,FREEMAIL_REPLY,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,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 List-Id: >>> Yeah, just noticed that myself.=C2=A0 Anyway will do some more tests,= >>>=C2=A0maybe my initial VLS analysis was somehow flawed. >=20 > You can check binop_vx_constraint-167.c ~=C2=A0binop_vx_constraint-174.= c >=20 > This patch is pre-approved if you change as my suggestion. > I am gonna sleep so I am not able to review again.=C2=A0 > Feel free to commit it after change as I suggested. >=20 > Thanks. > -----------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= -------------------------------------------------------------------------= ------------------------------------------- > juzhe.zhong@rivai.ai >=20 > =C2=A0 > *From:*=C2=A0Robin Dapp > *Date:*=C2=A02023-11-17=C2=A023:13 > *To:*=C2=A0=E9=92=9F=E5=B1=85=E5=93=B2 ; gcc-patches ; palmer ; kito.cheng ; Jeff Law > *CC:*=C2=A0rdapp.gcc > *Subject:*=C2=A0Re: [PATCH] RISC-V: Disallow 64-bit indexed loads a= nd stores for rv32gcv. > > It must be correct. We already have test (intrinsic codes) for it= =2E > =C2=A0 > Yeah, just noticed that myself.=C2=A0 Anyway will do some more test= s, > maybe my initial VLS analysis was somehow flawed. > > Condition should be put into iterators (Add a new iterator for > > indexed load store). > =C2=A0 > Ah, that's what you meant.=C2=A0 Sure. > =C2=A0 > Regards > Robin > =C2=A0 > Going to commit the attached. Added a TODO comment because we could reuse more iterators with the new composing syntax but I didn't want to change too much for this patch. I saw that Juzhe already removed VDEMOTE which is even better. Note that there will be more gather_load_run-12.c failures on rv32gcv after this patch but as this is an open PR I didn't bother investigating that further. It will be fixed separately. Regards Robin Subject: [PATCH v2] RISC-V: Disallow 64-bit indexed loads and stores for rv32gcv. We currently allow 64-bit indices/offsets for vector indexed loads and stores even on rv32 but we should not. even This patch adjusts the iterators as well as the insn conditions to reflect the RVV spec. It also fixes an oversight in the VLS modes of the demote iterator that was found while testing the patch. gcc/ChangeLog: * config/riscv/riscv-v.cc (gather_scatter_valid_offset_mode_p): Add check for XLEN =3D=3D 32. * config/riscv/vector-iterators.md: Change VLS part of the demote iterator to 2x elements modes * config/riscv/vector.md: Adjust iterators and insn conditions. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-1.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-1.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-10.c: Moved to= =2E.. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-10.c: ...he= re. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-11.c: Moved to= =2E.. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-11.c: ...he= re. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-12.c: Moved to= =2E.. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-12.c: ...he= re. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-2.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-2.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-3.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-3.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-4.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-4.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-5.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-5.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-6.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-6.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-7.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-7.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-8.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-8.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load-9.c: Moved to.= =2E. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_32-9.c: ...her= e. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-1.c: Adjust include. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-10.c: Ditt= o. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-11.c: Ditt= o. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-12.c: Ditt= o. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-2.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-3.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-4.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-5.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-6.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-7.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-8.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_run-9.c: Ditto= =2E * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-1.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-1.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-10.c: Mov= ed to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-10.c: = =2E..here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-11.c: Mov= ed to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-11.c: = =2E..here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-2.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-2.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-3.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-3.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-4.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-4.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-5.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-5.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-6.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-6.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-7.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-7.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-8.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-8.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load-9.c: Move= d to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_32-9.c: .= =2E.here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-1.c: Adjust include. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-10.c:= Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-11.c:= Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-2.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-3.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-4.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-5.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-6.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-7.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-8.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_run-9.c: = Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-1.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-1.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-10.c: M= oved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-10.c= : ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-2.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-2.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-3.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-3.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-4.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-4.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-5.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-5.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-6.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-6.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-7.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-7.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-8.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-8.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store-9.c: Mo= ved to... * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_32-9.c:= ...here. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-1.c= : Adjust include. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-10.= c: Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-2.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-3.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-4.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-5.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-6.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-7.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-8.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_run-9.c= : Ditto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-1.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-1.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-10.c: Moved = to... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-10.c: ...= here. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-3.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-2.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-4.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-4.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-5.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-5.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-6.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-6.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-7.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-7.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-8.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-8.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-9.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_32-9.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store-2.c: Moved t= o... * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-2.c: ...h= ere. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-1.c: Adjust include. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-10.c: Di= tto. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-2.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-3.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-4.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-5.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-6.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-7.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-8.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_run-9.c: Dit= to. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-1.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-10.c: New t= est. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-11.c: New t= est. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-12.c: New t= est. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-2.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-3.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-4.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-5.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-6.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-7.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-8.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/gather_load_64-9.c: New te= st. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-1.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-10.c: = New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-11.c: = New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-2.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-3.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-4.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-5.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-6.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-7.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-8.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_gather_load_64-9.c: N= ew test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-1.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-10.c= : New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-2.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-3.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-4.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-5.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-6.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-7.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-8.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/mask_scatter_store_64-9.c:= New test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-1.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-10.c: New= test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-3.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-4.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-5.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-6.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-7.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-8.c: New = test. * gcc.target/riscv/rvv/autovec/gather-scatter/scatter_store_64-9.c: New = test. --- gcc/config/riscv/riscv-v.cc | 9 +- gcc/config/riscv/vector-iterators.md | 189 +++++++++++++++--- gcc/config/riscv/vector.md | 22 +- .../autovec/gather-scatter/gather_load_32-1.c | 40 ++++ .../gather-scatter/gather_load_32-10.c | 37 ++++ .../gather-scatter/gather_load_32-11.c | 34 ++++ .../{gather_load-12.c =3D> gather_load_32-12.c} | 0 .../autovec/gather-scatter/gather_load_32-2.c | 40 ++++ .../autovec/gather-scatter/gather_load_32-3.c | 37 ++++ .../autovec/gather-scatter/gather_load_32-4.c | 37 ++++ .../autovec/gather-scatter/gather_load_32-5.c | 37 ++++ .../autovec/gather-scatter/gather_load_32-6.c | 37 ++++ .../autovec/gather-scatter/gather_load_32-7.c | 37 ++++ .../autovec/gather-scatter/gather_load_32-8.c | 37 ++++ .../autovec/gather-scatter/gather_load_32-9.c | 37 ++++ .../{gather_load-1.c =3D> gather_load_64-1.c} | 2 +- .../{gather_load-10.c =3D> gather_load_64-10.c} | 2 +- .../{gather_load-11.c =3D> gather_load_64-11.c} | 2 +- .../gather-scatter/gather_load_64-12.c | 110 ++++++++++ .../{gather_load-2.c =3D> gather_load_64-2.c} | 2 +- .../{gather_load-3.c =3D> gather_load_64-3.c} | 2 +- .../{gather_load-4.c =3D> gather_load_64-4.c} | 2 +- .../{gather_load-5.c =3D> gather_load_64-5.c} | 2 +- .../{gather_load-6.c =3D> gather_load_64-6.c} | 2 +- .../{gather_load-7.c =3D> gather_load_64-7.c} | 2 +- .../{gather_load-8.c =3D> gather_load_64-8.c} | 2 +- .../{gather_load-9.c =3D> gather_load_64-9.c} | 2 +- .../gather-scatter/gather_load_run-1.c | 2 +- .../gather-scatter/gather_load_run-10.c | 2 +- .../gather-scatter/gather_load_run-11.c | 2 +- .../gather-scatter/gather_load_run-12.c | 2 +- .../gather-scatter/gather_load_run-2.c | 2 +- .../gather-scatter/gather_load_run-3.c | 2 +- .../gather-scatter/gather_load_run-4.c | 2 +- .../gather-scatter/gather_load_run-5.c | 2 +- .../gather-scatter/gather_load_run-6.c | 2 +- .../gather-scatter/gather_load_run-7.c | 2 +- .../gather-scatter/gather_load_run-8.c | 2 +- .../gather-scatter/gather_load_run-9.c | 2 +- .../gather-scatter/mask_gather_load_32-1.c | 41 ++++ .../gather-scatter/mask_gather_load_32-10.c | 38 ++++ ...her_load-11.c =3D> mask_gather_load_32-11.c} | 2 +- .../gather-scatter/mask_gather_load_32-2.c | 41 ++++ .../gather-scatter/mask_gather_load_32-3.c | 38 ++++ .../gather-scatter/mask_gather_load_32-4.c | 38 ++++ .../gather-scatter/mask_gather_load_32-5.c | 38 ++++ .../gather-scatter/mask_gather_load_32-6.c | 38 ++++ .../gather-scatter/mask_gather_load_32-7.c | 38 ++++ .../gather-scatter/mask_gather_load_32-8.c | 38 ++++ .../gather-scatter/mask_gather_load_32-9.c | 38 ++++ ...ather_load-1.c =3D> mask_gather_load_64-1.c} | 2 +- ...her_load-10.c =3D> mask_gather_load_64-10.c} | 2 +- .../gather-scatter/mask_gather_load_64-11.c | 114 +++++++++++ ...ather_load-2.c =3D> mask_gather_load_64-2.c} | 2 +- ...ather_load-3.c =3D> mask_gather_load_64-3.c} | 2 +- ...ather_load-4.c =3D> mask_gather_load_64-4.c} | 2 +- ...ather_load-5.c =3D> mask_gather_load_64-5.c} | 2 +- ...ather_load-6.c =3D> mask_gather_load_64-6.c} | 2 +- ...ather_load-7.c =3D> mask_gather_load_64-7.c} | 2 +- ...ather_load-8.c =3D> mask_gather_load_64-8.c} | 2 +- ...ather_load-9.c =3D> mask_gather_load_64-9.c} | 2 +- .../gather-scatter/mask_gather_load_run-1.c | 2 +- .../gather-scatter/mask_gather_load_run-10.c | 2 +- .../gather-scatter/mask_gather_load_run-11.c | 2 +- .../gather-scatter/mask_gather_load_run-2.c | 2 +- .../gather-scatter/mask_gather_load_run-3.c | 2 +- .../gather-scatter/mask_gather_load_run-4.c | 2 +- .../gather-scatter/mask_gather_load_run-5.c | 2 +- .../gather-scatter/mask_gather_load_run-6.c | 2 +- .../gather-scatter/mask_gather_load_run-7.c | 2 +- .../gather-scatter/mask_gather_load_run-8.c | 2 +- .../gather-scatter/mask_gather_load_run-9.c | 2 +- .../gather-scatter/mask_scatter_store_32-1.c | 41 ++++ .../gather-scatter/mask_scatter_store_32-10.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-2.c | 41 ++++ .../gather-scatter/mask_scatter_store_32-3.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-4.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-5.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-6.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-7.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-8.c | 38 ++++ .../gather-scatter/mask_scatter_store_32-9.c | 43 ++++ ...er_store-1.c =3D> mask_scatter_store_64-1.c} | 2 +- ..._store-10.c =3D> mask_scatter_store_64-10.c} | 2 +- ...er_store-2.c =3D> mask_scatter_store_64-2.c} | 2 +- ...er_store-3.c =3D> mask_scatter_store_64-3.c} | 2 +- ...er_store-4.c =3D> mask_scatter_store_64-4.c} | 2 +- ...er_store-5.c =3D> mask_scatter_store_64-5.c} | 2 +- ...er_store-6.c =3D> mask_scatter_store_64-6.c} | 2 +- ...er_store-7.c =3D> mask_scatter_store_64-7.c} | 2 +- ...er_store-8.c =3D> mask_scatter_store_64-8.c} | 2 +- ...er_store-9.c =3D> mask_scatter_store_64-9.c} | 2 +- .../gather-scatter/mask_scatter_store_run-1.c | 2 +- .../mask_scatter_store_run-10.c | 2 +- .../gather-scatter/mask_scatter_store_run-2.c | 2 +- .../gather-scatter/mask_scatter_store_run-3.c | 2 +- .../gather-scatter/mask_scatter_store_run-4.c | 2 +- .../gather-scatter/mask_scatter_store_run-5.c | 2 +- .../gather-scatter/mask_scatter_store_run-6.c | 2 +- .../gather-scatter/mask_scatter_store_run-7.c | 2 +- .../gather-scatter/mask_scatter_store_run-8.c | 2 +- .../gather-scatter/mask_scatter_store_run-9.c | 2 +- .../gather-scatter/scatter_store_32-1.c | 40 ++++ .../gather-scatter/scatter_store_32-10.c | 37 ++++ .../gather-scatter/scatter_store_32-2.c | 37 ++++ .../gather-scatter/scatter_store_32-4.c | 37 ++++ .../gather-scatter/scatter_store_32-5.c | 37 ++++ .../gather-scatter/scatter_store_32-6.c | 37 ++++ .../gather-scatter/scatter_store_32-7.c | 37 ++++ .../gather-scatter/scatter_store_32-8.c | 37 ++++ .../gather-scatter/scatter_store_32-9.c | 37 ++++ ...scatter_store-1.c =3D> scatter_store_64-1.c} | 2 +- ...atter_store-10.c =3D> scatter_store_64-10.c} | 2 +- ...scatter_store-2.c =3D> scatter_store_64-2.c} | 2 +- ...scatter_store-3.c =3D> scatter_store_64-3.c} | 2 +- ...scatter_store-4.c =3D> scatter_store_64-4.c} | 2 +- ...scatter_store-5.c =3D> scatter_store_64-5.c} | 2 +- ...scatter_store-6.c =3D> scatter_store_64-6.c} | 2 +- ...scatter_store-7.c =3D> scatter_store_64-7.c} | 2 +- ...scatter_store-8.c =3D> scatter_store_64-8.c} | 2 +- ...scatter_store-9.c =3D> scatter_store_64-9.c} | 2 +- .../gather-scatter/scatter_store_run-1.c | 2 +- .../gather-scatter/scatter_store_run-10.c | 2 +- .../gather-scatter/scatter_store_run-2.c | 2 +- .../gather-scatter/scatter_store_run-3.c | 2 +- .../gather-scatter/scatter_store_run-4.c | 2 +- .../gather-scatter/scatter_store_run-5.c | 2 +- .../gather-scatter/scatter_store_run-6.c | 2 +- .../gather-scatter/scatter_store_run-7.c | 2 +- .../gather-scatter/scatter_store_run-8.c | 2 +- .../gather-scatter/scatter_store_run-9.c | 2 +- 131 files changed, 2008 insertions(+), 129 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-10.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-11.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-12.c =3D> gather_load_32-12.c} (100%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-9.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-1.c =3D> gather_load_64-1.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-10.c =3D> gather_load_64-10.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-11.c =3D> gather_load_64-11.c} (94%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_64-12.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-2.c =3D> gather_load_64-2.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-3.c =3D> gather_load_64-3.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-4.c =3D> gather_load_64-4.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-5.c =3D> gather_load_64-5.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-6.c =3D> gather_load_64-6.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-7.c =3D> gather_load_64-7.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-8.c =3D> gather_load_64-8.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{gather= _load-9.c =3D> gather_load_64-9.c} (95%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-10.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-11.c =3D> mask_gather_load_32-11.c} (99%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_32-9.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-1.c =3D> mask_gather_load_64-1.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-10.c =3D> mask_gather_load_64-10.c} (94%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_gather_load_64-11.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-2.c =3D> mask_gather_load_64-2.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-3.c =3D> mask_gather_load_64-3.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-4.c =3D> mask_gather_load_64-4.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-5.c =3D> mask_gather_load_64-5.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-6.c =3D> mask_gather_load_64-6.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-7.c =3D> mask_gather_load_64-7.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-8.c =3D> mask_gather_load_64-8.c} (94%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_g= ather_load-9.c =3D> mask_gather_load_64-9.c} (94%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-10.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/mask_scatter_store_32-9.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-1.c =3D> mask_scatter_store_64-1.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-10.c =3D> mask_scatter_store_64-10.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-2.c =3D> mask_scatter_store_64-2.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-3.c =3D> mask_scatter_store_64-3.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-4.c =3D> mask_scatter_store_64-4.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-5.c =3D> mask_scatter_store_64-5.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-6.c =3D> mask_scatter_store_64-6.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-7.c =3D> mask_scatter_store_64-7.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-8.c =3D> mask_scatter_store_64-8.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{mask_s= catter_store-9.c =3D> mask_scatter_store_64-9.c} (95%) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-10.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-6.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-7.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-8.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/scatter_store_32-9.c rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-1.c =3D> scatter_store_64-1.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-10.c =3D> scatter_store_64-10.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-2.c =3D> scatter_store_64-2.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-3.c =3D> scatter_store_64-3.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-4.c =3D> scatter_store_64-4.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-5.c =3D> scatter_store_64-5.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-6.c =3D> scatter_store_64-6.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-7.c =3D> scatter_store_64-7.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-8.c =3D> scatter_store_64-8.c} (95%) rename gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/{scatte= r_store-9.c =3D> scatter_store_64-9.c} (95%) diff --git a/gcc/config/riscv/riscv-v.cc b/gcc/config/riscv/riscv-v.cc index f0ddfd99e91..541dffba07b 100644 --- a/gcc/config/riscv/riscv-v.cc +++ b/gcc/config/riscv/riscv-v.cc @@ -4024,7 +4024,14 @@ bool gather_scatter_valid_offset_mode_p (machine_mode mode) { machine_mode new_mode; - return get_vector_mode (Pmode, GET_MODE_NUNITS (mode)).exists (&new_mo= de); + /* RISC-V V Spec 18.3: + The V extension supports all vector load and store instructions (Se= ction + Vector Loads and Stores), except the V extension does not support E= EW=3D64 + for index values when XLEN=3D32. */ + + if (GET_MODE_BITSIZE (GET_MODE_INNER (mode)) <=3D GET_MODE_BITSIZE (Pm= ode)) + return get_vector_mode (Pmode, GET_MODE_NUNITS (mode)).exists (&new_= mode); + return false; } =20 /* We don't have to convert the floating point to integer when the diff --git a/gcc/config/riscv/vector-iterators.md b/gcc/config/riscv/vect= or-iterators.md index 469875ce67c..171145bddce 100644 --- a/gcc/config/riscv/vector-iterators.md +++ b/gcc/config/riscv/vector-iterators.md @@ -319,23 +319,36 @@ (define_mode_iterator VEEWTRUNC2 [ (RVVM1HF "TARGET_VECTOR_ELEN_FP_16") (RVVMF2HF "TARGET_VECTOR_ELEN_FP_= 16") (RVVMF4HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32") =20 - RVVM4SI RVVM2SI RVVM1SI (RVVMF2SI "TARGET_MIN_VLEN > 32") + (RVVM4SI "TARGET_64BIT") + (RVVM2SI "TARGET_64BIT") + (RVVM1SI "TARGET_64BIT") + (RVVMF2SI "TARGET_MIN_VLEN > 32 && TARGET_64BIT") =20 - (RVVM4SF "TARGET_VECTOR_ELEN_FP_32") (RVVM2SF "TARGET_VECTOR_ELEN_FP_3= 2") - (RVVM1SF "TARGET_VECTOR_ELEN_FP_32") (RVVMF2SF "TARGET_VECTOR_ELEN_FP_= 32 && TARGET_MIN_VLEN > 32") + (RVVM4SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_64BIT") + (RVVM2SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_64BIT") + (RVVM1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_64BIT") + (RVVMF2SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32 && TARGET_= 64BIT") ]) =20 (define_mode_iterator VEEWTRUNC4 [ RVVM2QI RVVM1QI RVVMF2QI RVVMF4QI (RVVMF8QI "TARGET_MIN_VLEN > 32") =20 - RVVM2HI RVVM1HI RVVMF2HI (RVVMF4HI "TARGET_MIN_VLEN > 32") + (RVVM2HI "TARGET_64BIT") + (RVVM1HI "TARGET_64BIT") + (RVVMF2HI "TARGET_64BIT") + (RVVMF4HI "TARGET_MIN_VLEN > 32 && TARGET_64BIT") =20 - (RVVM2HF "TARGET_VECTOR_ELEN_FP_16") (RVVM1HF "TARGET_VECTOR_ELEN_FP_1= 6") (RVVMF2HF "TARGET_VECTOR_ELEN_FP_16") - (RVVMF4HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32") + (RVVM2HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_64BIT") + (RVVM1HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_64BIT") + (RVVMF2HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_64BIT") + (RVVMF4HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32 && TARGET_= 64BIT") ]) =20 (define_mode_iterator VEEWTRUNC8 [ - RVVM1QI RVVMF2QI RVVMF4QI (RVVMF8QI "TARGET_MIN_VLEN > 32") + (RVVM1QI "TARGET_64BIT") + (RVVMF2QI "TARGET_64BIT") + (RVVMF4QI "TARGET_64BIT") + (RVVMF8QI "TARGET_MIN_VLEN > 32 && TARGET_64BIT") ]) =20 (define_mode_iterator VEI16 [ @@ -793,28 +806,28 @@ (define_mode_iterator RATIO64I [ (RVVMF8QI "TARGET_MIN_VLEN > 32") (RVVMF4HI "TARGET_MIN_VLEN > 32") (RVVMF2SI "TARGET_MIN_VLEN > 32") - (RVVM1DI "TARGET_VECTOR_ELEN_64") + (RVVM1DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") ]) =20 (define_mode_iterator RATIO32I [ RVVMF4QI RVVMF2HI RVVM1SI - (RVVM2DI "TARGET_VECTOR_ELEN_64") + (RVVM2DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") ]) =20 (define_mode_iterator RATIO16I [ RVVMF2QI RVVM1HI RVVM2SI - (RVVM4DI "TARGET_VECTOR_ELEN_64") + (RVVM4DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") ]) =20 (define_mode_iterator RATIO8I [ RVVM1QI RVVM2HI RVVM4SI - (RVVM8DI "TARGET_VECTOR_ELEN_64") + (RVVM8DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") ]) =20 (define_mode_iterator RATIO4I [ @@ -1421,11 +1434,123 @@ (define_mode_iterator VLSB [ (V1024BI "riscv_vector::vls_mode_valid_p (V1024BImode) && TARGET_MIN_V= LEN >=3D 1024") (V2048BI "riscv_vector::vls_mode_valid_p (V2048BImode) && TARGET_MIN_V= LEN >=3D 2048") (V4096BI "riscv_vector::vls_mode_valid_p (V4096BImode) && TARGET_MIN_V= LEN >=3D 4096")]) - =20 + (define_mode_iterator VB [ (RVVMF64BI "TARGET_MIN_VLEN > 32") RVVMF32BI RVVMF16BI RVVMF8BI RVVMF4= BI RVVMF2BI RVVM1BI ]) =20 +;; Iterator for indexed loads and stores. We must disallow 64-bit indic= es on +;; XLEN=3D32 targets. TODO: Split iterators so more of them can be reu= sed, i.e. +;; VI8, VI16, VI32, VI64 and then use +;; VINDEXED [VI8 VI16 VI32 (VI64 "TARGET_64BIT"). + +(define_mode_iterator VINDEXED [ + RVVM8QI RVVM4QI RVVM2QI RVVM1QI RVVMF2QI RVVMF4QI (RVVMF8QI "TARGET_MI= N_VLEN > 32") + + RVVM8HI RVVM4HI RVVM2HI RVVM1HI RVVMF2HI (RVVMF4HI "TARGET_MIN_VLEN > = 32") + + RVVM8SI RVVM4SI RVVM2SI RVVM1SI (RVVMF2SI "TARGET_MIN_VLEN > 32") + + (RVVM8DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") + (RVVM4DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") + (RVVM2DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") + (RVVM1DI "TARGET_VECTOR_ELEN_64 && TARGET_64BIT") + + (RVVM8HF "TARGET_ZVFH") (RVVM4HF "TARGET_ZVFH") (RVVM2HF "TARGET_ZVFH"= ) + (RVVM1HF "TARGET_ZVFH") (RVVMF2HF "TARGET_ZVFH") + (RVVMF4HF "TARGET_ZVFH && TARGET_MIN_VLEN > 32") + + (RVVM8SF "TARGET_VECTOR_ELEN_FP_32") (RVVM4SF "TARGET_VECTOR_ELEN_FP_3= 2") + (RVVM2SF "TARGET_VECTOR_ELEN_FP_32") (RVVM1SF "TARGET_VECTOR_ELEN_FP_3= 2") + (RVVMF2SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32") + + (RVVM8DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_64BIT") + (RVVM4DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_64BIT") + (RVVM2DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_64BIT") + (RVVM1DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_64BIT") + + (V1QI "riscv_vector::vls_mode_valid_p (V1QImode)") + (V2QI "riscv_vector::vls_mode_valid_p (V2QImode)") + (V4QI "riscv_vector::vls_mode_valid_p (V4QImode)") + (V8QI "riscv_vector::vls_mode_valid_p (V8QImode)") + (V16QI "riscv_vector::vls_mode_valid_p (V16QImode)") + (V32QI "riscv_vector::vls_mode_valid_p (V32QImode)") + (V64QI "riscv_vector::vls_mode_valid_p (V64QImode) && TARGET_MIN_VLEN = >=3D 64") + (V128QI "riscv_vector::vls_mode_valid_p (V128QImode) && TARGET_MIN_VLE= N >=3D 128") + (V256QI "riscv_vector::vls_mode_valid_p (V256QImode) && TARGET_MIN_VLE= N >=3D 256") + (V512QI "riscv_vector::vls_mode_valid_p (V512QImode) && TARGET_MIN_VLE= N >=3D 512") + (V1024QI "riscv_vector::vls_mode_valid_p (V1024QImode) && TARGET_MIN_V= LEN >=3D 1024") + (V2048QI "riscv_vector::vls_mode_valid_p (V2048QImode) && TARGET_MIN_V= LEN >=3D 2048") + (V4096QI "riscv_vector::vls_mode_valid_p (V4096QImode) && TARGET_MIN_V= LEN >=3D 4096") + (V1HI "riscv_vector::vls_mode_valid_p (V1HImode)") + (V2HI "riscv_vector::vls_mode_valid_p (V2HImode)") + (V4HI "riscv_vector::vls_mode_valid_p (V4HImode)") + (V8HI "riscv_vector::vls_mode_valid_p (V8HImode)") + (V16HI "riscv_vector::vls_mode_valid_p (V16HImode)") + (V32HI "riscv_vector::vls_mode_valid_p (V32HImode) && TARGET_MIN_VLEN = >=3D 64") + (V64HI "riscv_vector::vls_mode_valid_p (V64HImode) && TARGET_MIN_VLEN = >=3D 128") + (V128HI "riscv_vector::vls_mode_valid_p (V128HImode) && TARGET_MIN_VLE= N >=3D 256") + (V256HI "riscv_vector::vls_mode_valid_p (V256HImode) && TARGET_MIN_VLE= N >=3D 512") + (V512HI "riscv_vector::vls_mode_valid_p (V512HImode) && TARGET_MIN_VLE= N >=3D 1024") + (V1024HI "riscv_vector::vls_mode_valid_p (V1024HImode) && TARGET_MIN_V= LEN >=3D 2048") + (V2048HI "riscv_vector::vls_mode_valid_p (V2048HImode) && TARGET_MIN_V= LEN >=3D 4096") + (V1SI "riscv_vector::vls_mode_valid_p (V1SImode)") + (V2SI "riscv_vector::vls_mode_valid_p (V2SImode)") + (V4SI "riscv_vector::vls_mode_valid_p (V4SImode)") + (V8SI "riscv_vector::vls_mode_valid_p (V8SImode)") + (V16SI "riscv_vector::vls_mode_valid_p (V16SImode) && TARGET_MIN_VLEN = >=3D 64") + (V32SI "riscv_vector::vls_mode_valid_p (V32SImode) && TARGET_MIN_VLEN = >=3D 128") + (V64SI "riscv_vector::vls_mode_valid_p (V64SImode) && TARGET_MIN_VLEN = >=3D 256") + (V128SI "riscv_vector::vls_mode_valid_p (V128SImode) && TARGET_MIN_VLE= N >=3D 512") + (V256SI "riscv_vector::vls_mode_valid_p (V256SImode) && TARGET_MIN_VLE= N >=3D 1024") + (V512SI "riscv_vector::vls_mode_valid_p (V512SImode) && TARGET_MIN_VLE= N >=3D 2048") + (V1024SI "riscv_vector::vls_mode_valid_p (V1024SImode) && TARGET_MIN_V= LEN >=3D 4096") + (V1DI "riscv_vector::vls_mode_valid_p (V1DImode) && TARGET_VECTOR_ELEN= _64 && TARGET_64BIT") + (V2DI "riscv_vector::vls_mode_valid_p (V2DImode) && TARGET_VECTOR_ELEN= _64 && TARGET_64BIT") + (V4DI "riscv_vector::vls_mode_valid_p (V4DImode) && TARGET_VECTOR_ELEN= _64 && TARGET_64BIT") + (V8DI "riscv_vector::vls_mode_valid_p (V8DImode) && TARGET_VECTOR_ELEN= _64 && TARGET_MIN_VLEN >=3D 64 && TARGET_64BIT") + (V16DI "riscv_vector::vls_mode_valid_p (V16DImode) && TARGET_VECTOR_EL= EN_64 && TARGET_MIN_VLEN >=3D 128 && TARGET_64BIT") + (V32DI "riscv_vector::vls_mode_valid_p (V32DImode) && TARGET_VECTOR_EL= EN_64 && TARGET_MIN_VLEN >=3D 256 && TARGET_64BIT") + (V64DI "riscv_vector::vls_mode_valid_p (V64DImode) && TARGET_VECTOR_EL= EN_64 && TARGET_MIN_VLEN >=3D 512 && TARGET_64BIT") + (V128DI "riscv_vector::vls_mode_valid_p (V128DImode) && TARGET_VECTOR_= ELEN_64 && TARGET_MIN_VLEN >=3D 1024 && TARGET_64BIT") + (V256DI "riscv_vector::vls_mode_valid_p (V256DImode) && TARGET_VECTOR_= ELEN_64 && TARGET_MIN_VLEN >=3D 2048 && TARGET_64BIT") + (V512DI "riscv_vector::vls_mode_valid_p (V512DImode) && TARGET_VECTOR_= ELEN_64 && TARGET_MIN_VLEN >=3D 4096 && TARGET_64BIT") + + (V1HF "riscv_vector::vls_mode_valid_p (V1HFmode) && TARGET_ZVFH") + (V2HF "riscv_vector::vls_mode_valid_p (V2HFmode) && TARGET_ZVFH") + (V4HF "riscv_vector::vls_mode_valid_p (V4HFmode) && TARGET_ZVFH") + (V8HF "riscv_vector::vls_mode_valid_p (V8HFmode) && TARGET_ZVFH") + (V16HF "riscv_vector::vls_mode_valid_p (V16HFmode) && TARGET_ZVFH") + (V32HF "riscv_vector::vls_mode_valid_p (V32HFmode) && TARGET_ZVFH && T= ARGET_MIN_VLEN >=3D 64") + (V64HF "riscv_vector::vls_mode_valid_p (V64HFmode) && TARGET_ZVFH && T= ARGET_MIN_VLEN >=3D 128") + (V128HF "riscv_vector::vls_mode_valid_p (V128HFmode) && TARGET_ZVFH &&= TARGET_MIN_VLEN >=3D 256") + (V256HF "riscv_vector::vls_mode_valid_p (V256HFmode) && TARGET_ZVFH &&= TARGET_MIN_VLEN >=3D 512") + (V512HF "riscv_vector::vls_mode_valid_p (V512HFmode) && TARGET_ZVFH &&= TARGET_MIN_VLEN >=3D 1024") + (V1024HF "riscv_vector::vls_mode_valid_p (V1024HFmode) && TARGET_ZVFH = && TARGET_MIN_VLEN >=3D 2048") + (V2048HF "riscv_vector::vls_mode_valid_p (V2048HFmode) && TARGET_ZVFH = && TARGET_MIN_VLEN >=3D 4096") + (V1SF "riscv_vector::vls_mode_valid_p (V1SFmode) && TARGET_VECTOR_ELEN= _FP_32") + (V2SF "riscv_vector::vls_mode_valid_p (V2SFmode) && TARGET_VECTOR_ELEN= _FP_32") + (V4SF "riscv_vector::vls_mode_valid_p (V4SFmode) && TARGET_VECTOR_ELEN= _FP_32") + (V8SF "riscv_vector::vls_mode_valid_p (V8SFmode) && TARGET_VECTOR_ELEN= _FP_32") + (V16SF "riscv_vector::vls_mode_valid_p (V16SFmode) && TARGET_VECTOR_EL= EN_FP_32 && TARGET_MIN_VLEN >=3D 64") + (V32SF "riscv_vector::vls_mode_valid_p (V32SFmode) && TARGET_VECTOR_EL= EN_FP_32 && TARGET_MIN_VLEN >=3D 128") + (V64SF "riscv_vector::vls_mode_valid_p (V64SFmode) && TARGET_VECTOR_EL= EN_FP_32 && TARGET_MIN_VLEN >=3D 256") + (V128SF "riscv_vector::vls_mode_valid_p (V128SFmode) && TARGET_VECTOR_= ELEN_FP_32 && TARGET_MIN_VLEN >=3D 512") + (V256SF "riscv_vector::vls_mode_valid_p (V256SFmode) && TARGET_VECTOR_= ELEN_FP_32 && TARGET_MIN_VLEN >=3D 1024") + (V512SF "riscv_vector::vls_mode_valid_p (V512SFmode) && TARGET_VECTOR_= ELEN_FP_32 && TARGET_MIN_VLEN >=3D 2048") + (V1024SF "riscv_vector::vls_mode_valid_p (V1024SFmode) && TARGET_VECTO= R_ELEN_FP_32 && TARGET_MIN_VLEN >=3D 4096") + (V1DF "riscv_vector::vls_mode_valid_p (V1DFmode) && TARGET_VECTOR_ELEN= _FP_64 && TARGET_64BIT") + (V2DF "riscv_vector::vls_mode_valid_p (V2DFmode) && TARGET_VECTOR_ELEN= _FP_64 && TARGET_64BIT") + (V4DF "riscv_vector::vls_mode_valid_p (V4DFmode) && TARGET_VECTOR_ELEN= _FP_64 && TARGET_64BIT") + (V8DF "riscv_vector::vls_mode_valid_p (V8DFmode) && TARGET_VECTOR_ELEN= _FP_64 && TARGET_MIN_VLEN >=3D 64 && TARGET_64BIT") + (V16DF "riscv_vector::vls_mode_valid_p (V16DFmode) && TARGET_VECTOR_EL= EN_FP_64 && TARGET_MIN_VLEN >=3D 128 && TARGET_64BIT") + (V32DF "riscv_vector::vls_mode_valid_p (V32DFmode) && TARGET_VECTOR_EL= EN_FP_64 && TARGET_MIN_VLEN >=3D 256 && TARGET_64BIT") + (V64DF "riscv_vector::vls_mode_valid_p (V64DFmode) && TARGET_VECTOR_EL= EN_FP_64 && TARGET_MIN_VLEN >=3D 512 && TARGET_64BIT") + (V128DF "riscv_vector::vls_mode_valid_p (V128DFmode) && TARGET_VECTOR_= ELEN_FP_64 && TARGET_MIN_VLEN >=3D 1024 && TARGET_64BIT") + (V256DF "riscv_vector::vls_mode_valid_p (V256DFmode) && TARGET_VECTOR_= ELEN_FP_64 && TARGET_MIN_VLEN >=3D 2048 && TARGET_64BIT") + (V512DF "riscv_vector::vls_mode_valid_p (V512DFmode) && TARGET_VECTOR_= ELEN_FP_64 && TARGET_MIN_VLEN >=3D 4096 && TARGET_64BIT") +]) + (define_mode_iterator VB_VLS [VB VLSB]) =20 (define_mode_iterator VLS [VLSI VLSF_ZVFHMIN]) @@ -3200,30 +3325,30 @@ (define_mode_iterator V_VLS_F_CONVERT_DI [ =20 (define_mode_attr VDEMOTE [ (RVVM8DI "RVVM8SI") (RVVM4DI "RVVM4SI") (RVVM2DI "RVVM2SI") (RVVM1DI "= RVVM1SI") - (V1DI "V1SI") - (V2DI "V2SI") - (V4DI "V4SI") - (V8DI "V8SI") - (V16DI "V16SI") - (V32DI "V32SI") - (V64DI "V64SI") - (V128DI "V128SI") - (V256DI "V256SI") - (V512DI "V512SI") + (V1DI "V2SI") + (V2DI "V4SI") + (V4DI "V8SI") + (V8DI "V16SI") + (V16DI "V32SI") + (V32DI "V64SI") + (V64DI "V128SI") + (V128DI "V256SI") + (V256DI "V512SI") + (V512DI "V1024SI") ]) =20 (define_mode_attr VMDEMOTE [ (RVVM8DI "RVVMF4BI") (RVVM4DI "RVVMF8BI") (RVVM2DI "RVVMF16BI") (RVVM1= DI "RVVMF32BI") - (V1DI "V1BI") - (V2DI "V2BI") - (V4DI "V4BI") - (V8DI "V8BI") - (V16DI "V16BI") - (V32DI "V32BI") - (V64DI "V64BI") - (V128DI "V128BI") - (V256DI "V256BI") - (V512DI "V512BI") + (V1DI "V2BI") + (V2DI "V4BI") + (V4DI "V8BI") + (V8DI "V16BI") + (V16DI "V32BI") + (V32DI "V64BI") + (V64DI "V128BI") + (V128DI "V256BI") + (V256DI "V512BI") + (V512DI "V1024BI") ]) =20 (define_mode_attr stride_predicate [ diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index d1499d330ff..440c5696343 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -2201,21 +2201,21 @@ (define_insn "@pred_strided_store" =20 ;; DEST eew is same as SOURCE eew, DEST register can overlap SOURCE. (define_insn "@pred_indexed_load_same_eew" - [(set (match_operand:V 0 "register_operand" "=3Dvd, vr,vd,= vr") - (if_then_else:V + [(set (match_operand:VINDEXED 0 "register_operand" "=3Dvd, vr,v= d, vr") + (if_then_else:VINDEXED (unspec: - [(match_operand: 1 "vector_mask_operand" " vm,Wc1,vm,Wc1") - (match_operand 5 "vector_length_operand" " rK, rK,rK, rK") - (match_operand 6 "const_int_operand" " i, i, i, i") - (match_operand 7 "const_int_operand" " i, i, i, i") - (match_operand 8 "const_int_operand" " i, i, i, i") + [(match_operand: 1 "vector_mask_operand" " vm,Wc1,vm,Wc1") + (match_operand 5 "vector_length_operand" " rK, rK,rK, rK") + (match_operand 6 "const_int_operand" " i, i, i, i") + (match_operand 7 "const_int_operand" " i, i, i, i") + (match_operand 8 "const_int_operand" " i, i, i, i") (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) - (unspec:V - [(match_operand 3 "pmode_reg_or_0_operand" " rJ, rJ,rJ, rJ") + (unspec:VINDEXED + [(match_operand 3 "pmode_reg_or_0_operand" " rJ, rJ,rJ, rJ") (mem:BLK (scratch)) - (match_operand: 4 "register_operand" " vr, vr,vr, vr")] OR= DER) - (match_operand:V 2 "vector_merge_operand" " vu, vu, 0, 0")))] + (match_operand: 4 "register_operand" " vr, vr,vr, vr")] = ORDER) + (match_operand:VINDEXED 2 "vector_merge_operand" " vu, vu, 0, 0")))= ] "TARGET_VECTOR" "vlxei.v\t%0,(%z3),%4%p1" [(set_attr "type" "vldx") diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-1.c new file mode 100644 index 00000000000..8ae5106b8a0 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-1.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t +#define INDEX16 uint16_t +#define INDEX32 uint32_t +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-10.c new file mode 100644 index 00000000000..d705c920a2b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-10.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_32-11.c new file mode 100644 index 00000000000..4e183cd9170 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-11.c @@ -0,0 +1,34 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define TEST_LOOP(DATA_TYPE) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict *src) = \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D *src[i]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t) = \ + T (uint8_t) = \ + T (int16_t) = \ + T (uint16_t) = \ + T (_Float16) = \ + T (int32_t) = \ + T (uint32_t) = \ + T (float) = \ + T (int64_t) = \ + T (uint64_t) = \ + T (double) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatte= r/gather_load_32-12.c similarity index 100% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-12.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_32-12.c diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-2.c new file mode 100644 index 00000000000..e4e42fef972 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-2.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 int8_t +#define INDEX16 int16_t +#define INDEX32 int32_t +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-3.c new file mode 100644 index 00000000000..e385fee109d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-3.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-4.c new file mode 100644 index 00000000000..e5cb19de42f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-4.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 int8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-5.c new file mode 100644 index 00000000000..a437e7393ee --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-5.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX16 uint16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-6.c new file mode 100644 index 00000000000..487dca9928b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-6.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX16 int16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-7.c new file mode 100644 index 00000000000..ff91929b8e7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-7.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX32 uint32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-8.c new file mode 100644 index 00000000000..81df57fcbd2 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-8.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX32 int32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_32-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/gather_load_32-9.c new file mode 100644 index 00000000000..238b6bce042 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_32-9.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-1.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-1.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-1.c index 3b26bf1dec2..eabe0124b69 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatte= r/gather_load_64-10.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-10.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-10.c index 63949cbe02b..ba4bc780344 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatte= r/gather_load_64-11.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-11.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-11.c index 8dc1da3f4b4..e75b6948ab5 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-11.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-11.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_64-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_64-12.c new file mode 100644 index 00000000000..d8daf3fa1db --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-12.c @@ -0,0 +1,110 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-ve= ct-cost-model -fdump-tree-vect-details" } */ + +#include + +#define TEST_LOOP(DATA_TYPE, INDEX_TYPE) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE##_##INDEX_TYPE (DATA_TYPE *restrict y, DATA_TYPE *restri= ct x, \ + INDEX_TYPE *restrict index) \ + { = \ + for (int i =3D 0; i < 100; ++i) = \ + { = \ + y[i * 2] =3D x[index[i * 2]] + 1; = \ + y[i * 2 + 1] =3D x[index[i * 2 + 1]] + 2; = \ + } = \ + } + +TEST_LOOP (int8_t, int8_t) +TEST_LOOP (uint8_t, int8_t) +TEST_LOOP (int16_t, int8_t) +TEST_LOOP (uint16_t, int8_t) +TEST_LOOP (int32_t, int8_t) +TEST_LOOP (uint32_t, int8_t) +TEST_LOOP (int64_t, int8_t) +TEST_LOOP (uint64_t, int8_t) +TEST_LOOP (_Float16, int8_t) +TEST_LOOP (float, int8_t) +TEST_LOOP (double, int8_t) +TEST_LOOP (int8_t, int16_t) +TEST_LOOP (uint8_t, int16_t) +TEST_LOOP (int16_t, int16_t) +TEST_LOOP (uint16_t, int16_t) +TEST_LOOP (int32_t, int16_t) +TEST_LOOP (uint32_t, int16_t) +TEST_LOOP (int64_t, int16_t) +TEST_LOOP (uint64_t, int16_t) +TEST_LOOP (_Float16, int16_t) +TEST_LOOP (float, int16_t) +TEST_LOOP (double, int16_t) +TEST_LOOP (int8_t, int32_t) +TEST_LOOP (uint8_t, int32_t) +TEST_LOOP (int16_t, int32_t) +TEST_LOOP (uint16_t, int32_t) +TEST_LOOP (int32_t, int32_t) +TEST_LOOP (uint32_t, int32_t) +TEST_LOOP (int64_t, int32_t) +TEST_LOOP (uint64_t, int32_t) +TEST_LOOP (_Float16, int32_t) +TEST_LOOP (float, int32_t) +TEST_LOOP (double, int32_t) +TEST_LOOP (int8_t, int64_t) +TEST_LOOP (uint8_t, int64_t) +TEST_LOOP (int16_t, int64_t) +TEST_LOOP (uint16_t, int64_t) +TEST_LOOP (int32_t, int64_t) +TEST_LOOP (uint32_t, int64_t) +TEST_LOOP (int64_t, int64_t) +TEST_LOOP (uint64_t, int64_t) +TEST_LOOP (_Float16, int64_t) +TEST_LOOP (float, int64_t) +TEST_LOOP (double, int64_t) +TEST_LOOP (int8_t, uint8_t) +TEST_LOOP (uint8_t, uint8_t) +TEST_LOOP (int16_t, uint8_t) +TEST_LOOP (uint16_t, uint8_t) +TEST_LOOP (int32_t, uint8_t) +TEST_LOOP (uint32_t, uint8_t) +TEST_LOOP (int64_t, uint8_t) +TEST_LOOP (uint64_t, uint8_t) +TEST_LOOP (_Float16, uint8_t) +TEST_LOOP (float, uint8_t) +TEST_LOOP (double, uint8_t) +TEST_LOOP (int8_t, uint16_t) +TEST_LOOP (uint8_t, uint16_t) +TEST_LOOP (int16_t, uint16_t) +TEST_LOOP (uint16_t, uint16_t) +TEST_LOOP (int32_t, uint16_t) +TEST_LOOP (uint32_t, uint16_t) +TEST_LOOP (int64_t, uint16_t) +TEST_LOOP (uint64_t, uint16_t) +TEST_LOOP (_Float16, uint16_t) +TEST_LOOP (float, uint16_t) +TEST_LOOP (double, uint16_t) +TEST_LOOP (int8_t, uint32_t) +TEST_LOOP (uint8_t, uint32_t) +TEST_LOOP (int16_t, uint32_t) +TEST_LOOP (uint16_t, uint32_t) +TEST_LOOP (int32_t, uint32_t) +TEST_LOOP (uint32_t, uint32_t) +TEST_LOOP (int64_t, uint32_t) +TEST_LOOP (uint64_t, uint32_t) +TEST_LOOP (_Float16, uint32_t) +TEST_LOOP (float, uint32_t) +TEST_LOOP (double, uint32_t) +TEST_LOOP (int8_t, uint64_t) +TEST_LOOP (uint8_t, uint64_t) +TEST_LOOP (int16_t, uint64_t) +TEST_LOOP (uint16_t, uint64_t) +TEST_LOOP (int32_t, uint64_t) +TEST_LOOP (uint32_t, uint64_t) +TEST_LOOP (int64_t, uint64_t) +TEST_LOOP (uint64_t, uint64_t) +TEST_LOOP (_Float16, uint64_t) +TEST_LOOP (float, uint64_t) +TEST_LOOP (double, uint64_t) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 88= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-2.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-2.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-2.c index 89e4b40bfd8..3389bc4bb76 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-3.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-3.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-3.c index 02fd37c026d..b23603a76e6 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-4.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-4.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-4.c index af6a76af7f8..024710344f8 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-5.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-5.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-5.c index bd9a449086e..19ff214c062 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-6.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-6.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-6.c index 6d776af4c5c..fd7684b5aab 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-7.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-7.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-7.c index 040300a3e2a..9800b93a04c 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-7.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-8.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-8.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-8.c index 9223bf0057d..4f84fe158b8 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-8.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter= /gather_load_64-9.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gat= her_load-9.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gathe= r_load_64-9.c index 2e06fe6090d..41a7ae578e9 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_64-9.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-1.c index 232873ccd88..3ca1b0c6e08 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-1.c" +#include "gather_load_64-1.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/gather_load_run-10.c index 9696a21e3cf..ef1517a737d 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-10.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-10.c" +#include "gather_load_64-10.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/gather_load_run-11.c index 459a1a8f4d7..c4355842faa 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-11.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-11.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-11.c" +#include "gather_load_64-11.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/gather_load_run-12.c index 1cbf507fad1..d48d5295a06 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-12.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-12.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-12.c" +#include "gather_load_64-12.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-2.c index 93a07e00e96..b1290ec393d 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-2.c" +#include "gather_load_64-2.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-3.c index f318a4373e9..8b8687013ec 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-3.c" +#include "gather_load_64-3.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-4.c index a210cdf53e2..2085474f4ac 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-4.c" +#include "gather_load_64-4.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-5.c index ade9175e85d..ad918131b56 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-5.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-5.c" +#include "gather_load_64-5.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-6.c index f5bdece406d..53b32543bad 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-6.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-6.c" +#include "gather_load_64-6.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-7.c index 47a178362e0..8e135a7022c 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-7.c @@ -5,7 +5,7 @@ compiles properly. */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "gather_load-7.c" +#include "gather_load_64-7.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-8.c index 1ce180404d7..8f13ec67a2a 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-8.c @@ -5,7 +5,7 @@ compiles properly. */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "gather_load-8.c" +#include "gather_load_64-8.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ga= ther_load_run-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sca= tter/gather_load_run-9.c index 3c08c634823..2e17075e548 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/gather_lo= ad_run-9.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "gather_load-9.c" +#include "gather_load_64-9.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-1.c new file mode 100644 index 00000000000..055e392739d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-1.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t +#define INDEX16 uint16_t +#define INDEX32 uint32_t +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_32-10.c new file mode 100644 index 00000000000..5582ca7c0b2 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-10.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/mask_gather_load_32-11.c similarity index 99% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-11.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_32-11.c index e5741812b21..54392f4512f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-11.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-11.c @@ -107,7 +107,7 @@ TEST_LOOP (_Float16, uint64_t) TEST_LOOP (float, uint64_t) TEST_LOOP (double, uint64_t) =20 -/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 88= "vect" } } */ +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 64= "vect" } } */ /* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ /* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ /* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-2.c new file mode 100644 index 00000000000..a2d135854bf --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-2.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX8 int8_t +#define INDEX16 int16_t +#define INDEX32 int32_t +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-3.c new file mode 100644 index 00000000000..66aa5c21bf0 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-3.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-4.c new file mode 100644 index 00000000000..80c43de2f12 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-4.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX8 int8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-5.c new file mode 100644 index 00000000000..972f021dda0 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-5.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX16 uint16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-6.c new file mode 100644 index 00000000000..33114baebc7 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-6.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX16 int16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-7.c new file mode 100644 index 00000000000..729fce09cf9 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-7.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX32 uint32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-8.c new file mode 100644 index 00000000000..c6f6e88fda3 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-8.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX32 int32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_32-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_gather_load_32-9.c new file mode 100644 index 00000000000..3629496e324 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_32-9.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ + +#include + +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[i] +=3D src[indices[i]]; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-1.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-1.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-1.c index abab3b90af9..154c53539e3 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/mask_gather_load_64-10.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-10.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-10.c index 61ab1fb0021..c0fe926287b 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_64-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_64-11.c new file mode 100644 index 00000000000..2a382734442 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-11.c @@ -0,0 +1,114 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ + +#include + +#define TEST_LOOP(DATA_TYPE, INDEX_TYPE) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE##_##INDEX_TYPE (DATA_TYPE *restrict y, DATA_TYPE *restri= ct x, \ + INDEX_TYPE *restrict index, \ + INDEX_TYPE *restrict cond) \ + { = \ + for (int i =3D 0; i < 100; ++i) = \ + { = \ + if (cond[i * 2]) = \ + y[i * 2] =3D x[index[i * 2]] + 1; = \ + if (cond[i * 2 + 1]) = \ + y[i * 2 + 1] =3D x[index[i * 2 + 1]] + 2; = \ + } = \ + } + +TEST_LOOP (int8_t, int8_t) +TEST_LOOP (uint8_t, int8_t) +TEST_LOOP (int16_t, int8_t) +TEST_LOOP (uint16_t, int8_t) +TEST_LOOP (int32_t, int8_t) +TEST_LOOP (uint32_t, int8_t) +TEST_LOOP (int64_t, int8_t) +TEST_LOOP (uint64_t, int8_t) +TEST_LOOP (_Float16, int8_t) +TEST_LOOP (float, int8_t) +TEST_LOOP (double, int8_t) +TEST_LOOP (int8_t, int16_t) +TEST_LOOP (uint8_t, int16_t) +TEST_LOOP (int16_t, int16_t) +TEST_LOOP (uint16_t, int16_t) +TEST_LOOP (int32_t, int16_t) +TEST_LOOP (uint32_t, int16_t) +TEST_LOOP (int64_t, int16_t) +TEST_LOOP (uint64_t, int16_t) +TEST_LOOP (_Float16, int16_t) +TEST_LOOP (float, int16_t) +TEST_LOOP (double, int16_t) +TEST_LOOP (int8_t, int32_t) +TEST_LOOP (uint8_t, int32_t) +TEST_LOOP (int16_t, int32_t) +TEST_LOOP (uint16_t, int32_t) +TEST_LOOP (int32_t, int32_t) +TEST_LOOP (uint32_t, int32_t) +TEST_LOOP (int64_t, int32_t) +TEST_LOOP (uint64_t, int32_t) +TEST_LOOP (_Float16, int32_t) +TEST_LOOP (float, int32_t) +TEST_LOOP (double, int32_t) +TEST_LOOP (int8_t, int64_t) +TEST_LOOP (uint8_t, int64_t) +TEST_LOOP (int16_t, int64_t) +TEST_LOOP (uint16_t, int64_t) +TEST_LOOP (int32_t, int64_t) +TEST_LOOP (uint32_t, int64_t) +TEST_LOOP (int64_t, int64_t) +TEST_LOOP (uint64_t, int64_t) +TEST_LOOP (_Float16, int64_t) +TEST_LOOP (float, int64_t) +TEST_LOOP (double, int64_t) +TEST_LOOP (int8_t, uint8_t) +TEST_LOOP (uint8_t, uint8_t) +TEST_LOOP (int16_t, uint8_t) +TEST_LOOP (uint16_t, uint8_t) +TEST_LOOP (int32_t, uint8_t) +TEST_LOOP (uint32_t, uint8_t) +TEST_LOOP (int64_t, uint8_t) +TEST_LOOP (uint64_t, uint8_t) +TEST_LOOP (_Float16, uint8_t) +TEST_LOOP (float, uint8_t) +TEST_LOOP (double, uint8_t) +TEST_LOOP (int8_t, uint16_t) +TEST_LOOP (uint8_t, uint16_t) +TEST_LOOP (int16_t, uint16_t) +TEST_LOOP (uint16_t, uint16_t) +TEST_LOOP (int32_t, uint16_t) +TEST_LOOP (uint32_t, uint16_t) +TEST_LOOP (int64_t, uint16_t) +TEST_LOOP (uint64_t, uint16_t) +TEST_LOOP (_Float16, uint16_t) +TEST_LOOP (float, uint16_t) +TEST_LOOP (double, uint16_t) +TEST_LOOP (int8_t, uint32_t) +TEST_LOOP (uint8_t, uint32_t) +TEST_LOOP (int16_t, uint32_t) +TEST_LOOP (uint16_t, uint32_t) +TEST_LOOP (int32_t, uint32_t) +TEST_LOOP (uint32_t, uint32_t) +TEST_LOOP (int64_t, uint32_t) +TEST_LOOP (uint64_t, uint32_t) +TEST_LOOP (_Float16, uint32_t) +TEST_LOOP (float, uint32_t) +TEST_LOOP (double, uint32_t) +TEST_LOOP (int8_t, uint64_t) +TEST_LOOP (uint8_t, uint64_t) +TEST_LOOP (int16_t, uint64_t) +TEST_LOOP (uint16_t, uint64_t) +TEST_LOOP (int32_t, uint64_t) +TEST_LOOP (uint32_t, uint64_t) +TEST_LOOP (int64_t, uint64_t) +TEST_LOOP (uint64_t, uint64_t) +TEST_LOOP (_Float16, uint64_t) +TEST_LOOP (float, uint64_t) +TEST_LOOP (double, uint64_t) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 88= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_GATHER_LOAD" "vect" } } */ +/* { dg-final { scan-assembler-not {vlse64\.v\s+v[0-9]+,\s*0\([a-x0-9]+\= ),\s*zero} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-2.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-2.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-2.c index cc5f52e0c34..b586d64da29 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-3.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-3.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-3.c index 311e25ea199..11818a19e51 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-4.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-4.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-4.c index 9223df9c4a2..3660198f7e5 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-5.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-5.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-5.c index 9ec7e60dc68..30589741e97 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-6.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-6.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-6.c index ff18009fba1..a8cc99ac86a 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-7.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-7.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-7.c index fd05df7b381..9639235475f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-7.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-8.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-8.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-8.c index a58c1c22042..a2526eaf72f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-8.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/mask_gather_load_64-9.c similarity index 94% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_gather_load-9.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= gather_load_64-9.c index 36947db76ba..0eb57440b2d 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_64-9.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fno-s= chedule-insns -fdump-tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fno-sc= hedule-insns -fdump-tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-1.c index fb342859044..913d2f7a7fe 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-1.c" +#include "mask_gather_load_64-1.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_gather_load_run-10.c index 531f298691f..3336a18d340 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-10.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-10.c" +#include "mask_gather_load_64-10.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_gather_load_run-11.c index 0ce20a8394e..eba0be9c319 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-11.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-11.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "mask_gather_load-11.c" +#include "mask_gather_load_64-11.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-2.c index 8bb78aeaa24..50a94905a3d 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-2.c" +#include "mask_gather_load_64-2.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-3.c index 0472ed0aaeb..ba93eb8b40a 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-3.c" +#include "mask_gather_load_64-3.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-4.c index 4fab81af280..d96fc13eda0 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-4.c" +#include "mask_gather_load_64-4.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-5.c index 8db1ea11fd2..05fdae37540 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-5.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-5.c" +#include "mask_gather_load_64-5.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-6.c index d58bc80394c..175ce086bb1 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-6.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-6.c" +#include "mask_gather_load_64-6.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-7.c index cc495718b11..5a82541e9ba 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-7.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "mask_gather_load-7.c" +#include "mask_gather_load_64-7.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-8.c index 47459855135..4195f26886f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-8.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "mask_gather_load-8.c" +#include "mask_gather_load_64-8.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_gather_load_run-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gathe= r-scatter/mask_gather_load_run-9.c index 32924f0df70..686d0a5119d 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_gath= er_load_run-9.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_gather_load-9.c" +#include "mask_gather_load_64-9.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-1.c new file mode 100644 index 00000000000..5b427765416 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-1.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t +#define INDEX16 uint16_t +#define INDEX32 uint32_t +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_32-10.c new file mode 100644 index 00000000000..d96c96dab2b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-10.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-2.c new file mode 100644 index 00000000000..ca939831d26 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-2.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 int8_t +#define INDEX16 int16_t +#define INDEX32 int32_t +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-3.c new file mode 100644 index 00000000000..60f3a66c8ad --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-3.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-4.c new file mode 100644 index 00000000000..36f316df9ad --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-4.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 int8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-5.c new file mode 100644 index 00000000000..df58b3dedbc --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-5.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX16 uint16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-6.c new file mode 100644 index 00000000000..c2da72ae4a2 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-6.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX16 int16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-7.c new file mode 100644 index 00000000000..e6bdd366a96 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-7.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX32 uint32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-8.c new file mode 100644 index 00000000000..3ae681dbea5 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-8.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX32 int32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_32-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gath= er-scatter/mask_scatter_store_32-9.c new file mode 100644 index 00000000000..be5077f8614 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_32-9.c @@ -0,0 +1,43 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* For some reason we exceed + the default code model's +-2 GiB limits. We should investigate why a= nd + add a proper description here. For now just make sure the test case + compiles properly. */ +/* { dg-additional-options "-mcmodel=3Dmedany" } */ + +#include + +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices, INDEX##BITS *restrict cond) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + if (cond[i]) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 8 = "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-1.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-1.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-1.c index 0099ed357c4..27c982aa354 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather= -scatter/mask_scatter_store_64-10.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-10.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-10.c index 089ec487c47..93f33696a20 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-2.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-2.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-2.c index 57a1acec099..cbb22507ad3 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-3.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-3.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-3.c index ba89eb35db2..93a84056b92 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-4.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-4.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-4.c index 2d6499fea56..c5816e06fdd 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-5.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-5.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-5.c index f55db716cd9..c140d05b15e 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-6.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-6.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-6.c index a7ec2796834..41a03d31b70 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-7.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-7.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-7.c index b7bd3f415d5..f29ae25e8cc 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-7.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-8.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-8.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-8.c index f2ab86519bd..8d72d98fb49 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-8.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/mask_scatter_store_64-9.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mas= k_scatter_store-9.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_= scatter_store_64-9.c index 42ce1c5364f..dfd9412376d 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_64-9.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ /* For some reason we exceed the default code model's +-2 GiB limits. We should investigate why a= nd add a proper description here. For now just make sure the test case diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-1.c index cf89555aca3..077bf827df2 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-1.c" +#include "mask_scatter_store_64-1.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/ga= ther-scatter/mask_scatter_store_run-10.c index 6e5dc5dc0a7..a1e8df1b71f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-10.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-10.c" +#include "mask_scatter_store_64-10.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-2.c index 197b4436432..5ee27174883 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-2.c" +#include "mask_scatter_store_64-2.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-3.c index 81059e4f7de..b77fb634163 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-3.c" +#include "mask_scatter_store_64-3.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-4.c index a50b6d2e44e..0a8b4a5ba53 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-4.c" +#include "mask_scatter_store_64-4.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-5.c index 645e3a57a6b..8eca62bcdfa 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-5.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-5.c" +#include "mask_scatter_store_64-5.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-6.c index 52032ba1b36..4bcaf426cfe 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-6.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-6.c" +#include "mask_scatter_store_64-6.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-7.c index 38b05958042..7e4b1d8076b 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-7.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "mask_scatter_store-7.c" +#include "mask_scatter_store_64-7.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-8.c index fcb311067b0..0189aa8ea45 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-8.c @@ -5,7 +5,7 @@ compiles properly. */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "mask_scatter_store-8.c" +#include "mask_scatter_store_64-8.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/ma= sk_scatter_store_run-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gat= her-scatter/mask_scatter_store_run-9.c index c120e681f73..e2a3a8ca407 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/mask_scat= ter_store_run-9.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "mask_scatter_store-9.c" +#include "mask_scatter_store_64-9.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-1.c new file mode 100644 index 00000000000..4ad244b8e83 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-1.c @@ -0,0 +1,40 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t +#define INDEX16 uint16_t +#define INDEX32 uint32_t +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_32-10.c new file mode 100644 index 00000000000..a44cbc18b68 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-10.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX64 int64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-2.c new file mode 100644 index 00000000000..35e97012469 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-2.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 uint8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-4.c new file mode 100644 index 00000000000..fb72b092b7c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-4.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX8 int8_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 8) = \ + T (uint8_t, 8) = \ + T (int16_t, 8) = \ + T (uint16_t, 8) = \ + T (_Float16, 8) = \ + T (int32_t, 8) = \ + T (uint32_t, 8) = \ + T (float, 8) = \ + T (int64_t, 8) = \ + T (uint64_t, 8) = \ + T (double, 8) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-5.c new file mode 100644 index 00000000000..7b562bd94a9 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-5.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX16 uint16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-6.c new file mode 100644 index 00000000000..67ea0e005f1 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-6.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX16 int16_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 16) = \ + T (uint8_t, 16) = \ + T (int16_t, 16) = \ + T (uint16_t, 16) = \ + T (_Float16, 16) = \ + T (int32_t, 16) = \ + T (uint32_t, 16) = \ + T (float, 16) = \ + T (int64_t, 16) = \ + T (uint64_t, 16) = \ + T (double, 16) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-7.c new file mode 100644 index 00000000000..76f84850b2b --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-7.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX32 uint32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-8.c new file mode 100644 index 00000000000..e6e49019fb1 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-8.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX32 int32_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 32) = \ + T (uint8_t, 32) = \ + T (int16_t, 32) = \ + T (uint16_t, 32) = \ + T (_Float16, 32) = \ + T (int32_t, 32) = \ + T (uint32_t, 32) = \ + T (float, 32) = \ + T (int64_t, 32) = \ + T (uint64_t, 32) = \ + T (double, 32) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_32-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-sc= atter/scatter_store_32-9.c new file mode 100644 index 00000000000..81eb9352598 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_32-9.c @@ -0,0 +1,37 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ + +#include + +#define INDEX64 uint64_t + +#define TEST_LOOP(DATA_TYPE, BITS) = \ + void __attribute__ ((noinline, noclone)) = \ + f_##DATA_TYPE (DATA_TYPE *restrict dest, DATA_TYPE *restrict src, = \ + INDEX##BITS *restrict indices) \ + { = \ + for (int i =3D 0; i < 128; ++i) = \ + dest[indices[i]] =3D src[i] + 1; = \ + } + +#define TEST_ALL(T) = \ + T (int8_t, 64) = \ + T (uint8_t, 64) = \ + T (int16_t, 64) = \ + T (uint16_t, 64) = \ + T (_Float16, 64) = \ + T (int32_t, 64) = \ + T (uint32_t, 64) = \ + T (float, 64) = \ + T (int64_t, 64) = \ + T (uint64_t, 64) = \ + T (double, 64) + +TEST_ALL (TEST_LOOP) + +/* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 11= "vect" } } */ +/* { dg-final { scan-tree-dump " \.MASK_LEN_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-tree-dump-not " \.SCATTER_STORE" "vect" } } */ +/* { dg-final { scan-tree-dump-not " \.MASK_SCATTER_STORE" "vect" } } */= +/* { dg-final { scan-assembler-not {vluxei64\.v} } } */ +/* { dg-final { scan-assembler-not {vsuxei64\.v} } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-1.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-1.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-1.c index 28c4bae01c3..343a3658396 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scat= ter/scatter_store_64-10.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-10.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-10.c index 2cd3e7245aa..76b0b075ba3 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-2.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-2.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-2.c index ee44f415e8b..7eb881989b3 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-3.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-3.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-3.c index 899b05f96ff..47e8ce3e186 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-4.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-4.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-4.c index ff6d90ce404..5c51741e892 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-5.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-5.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-5.c index 212bd2d9d24..cc0b2fe15c4 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-5.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-6.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-6.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-6.c index 4b6b39df814..3408cbd88d6 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-7.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-7.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-7.c index 2415c69a3b0..f45c9bc6727 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-7.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-8.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-8.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-8.c index 4c2fcb14428..64fe30548cb 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-8.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatt= er/scatter_store_64-9.c similarity index 95% rename from gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sca= tter_store-9.c rename to gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatt= er_store_64-9.c index 0f4f94cc800..bd1538db045 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_64-9.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=3Drv32gcv_zvfh -mabi=3Dilp32d -fdump= -tree-vect-details" } */ +/* { dg-additional-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64d -fdump-= tree-vect-details" } */ =20 #include =20 diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-1.c index 91edba70626..ec1e0204512 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-1.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-1.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "scatter_store-1.c" +#include "scatter_store_64-1.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-= scatter/scatter_store_run-10.c index 40e34c698d2..d61a37af539 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-10.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "scatter_store-10.c" +#include "scatter_store_64-10.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-2.c index 721c6f6210b..c1c32008d15 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-2.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-2.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "scatter_store-2.c" +#include "scatter_store_64-2.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-3.c index 8d268a6d174..8234f84820a 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-3.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-3.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "scatter_store-3.c" +#include "scatter_store_64-3.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-4.c index 3931a81cb17..b137e1d35cf 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-4.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-4.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "scatter_store-4.c" +#include "scatter_store_64-4.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-5.c index ff306301457..1290f871765 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-5.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-5.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "scatter_store-5.c" +#include "scatter_store_64-5.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-6.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-6.c index a30c47da723..79b1ea73c8f 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-6.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-6.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ =20 =20 -#include "scatter_store-6.c" +#include "scatter_store_64-6.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-7.c index 94ab40470bf..c204e7cdfcf 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-7.c @@ -5,7 +5,7 @@ compiles properly. */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "scatter_store-7.c" +#include "scatter_store_64-7.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-8.c index 16c1e17d9be..1dafabafff7 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-8.c @@ -5,7 +5,7 @@ compiles properly. */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "scatter_store-8.c" +#include "scatter_store_64-8.c" #include =20 int diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/sc= atter_store_run-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-s= catter/scatter_store_run-9.c index a91b500b3c7..1b37cac71e1 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/scatter_s= tore_run-9.c @@ -1,7 +1,7 @@ /* { dg-do run { target { riscv_v } } } */ /* { dg-additional-options "-mcmodel=3Dmedany" } */ =20 -#include "scatter_store-9.c" +#include "scatter_store_64-9.c" #include =20 int --=20 2.42.0