From patchwork Wed Sep 20 12:39:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "juzhe.zhong@rivai.ai" X-Patchwork-Id: 142391 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp4107671vqi; Wed, 20 Sep 2023 05:40:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFGJVJqXznFunTM0xqo7GIfiyGdql3LpidRvx4Uwy3+K+Z7wgxM/fiYB54+Fic7hY6ZzkDi X-Received: by 2002:a17:906:11e:b0:9a5:e440:38dd with SMTP id 30-20020a170906011e00b009a5e44038ddmr1943229eje.45.1695213644419; Wed, 20 Sep 2023 05:40:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695213644; cv=none; d=google.com; s=arc-20160816; b=VtmkySztm0cLd38jjVRf86FkJJRz961myMWLuE+LRQ8P4hfPIOBFHlcTK218fYFYsx S71v1NhVGxx6c/T0dBX1/6yQsLXxKEnyvq9C3y5e4RJZw5EUo5UMghVBaESmGml+uo9i N1McKNJF+Gn+5uXtSnT/Y60tYliE2tC4p1BY+bSACC/BIQI0Ule/atvqn9cNT8JXXome qvT+hkMij699l8aCtDYdyR268Qg0qam9jdJa5MM9HYDJ1ooDapzu2IKrXyEvSfw+FV45 zpOu8yNeAVnaWtIwvtuuy38K4xRrz4IYMsSwGTLNQ+1BeblD4fUYB2QLF/PZDxfFiqX/ vrgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:feedback-id :content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dmarc-filter:delivered-to; bh=7h+uZP/VpSljrLgcfh3Deb+bbhMkSY9uAvl9RzsSpWU=; fh=idvV5TQ1gmHAoU8u1GUGfjilVySOK+BR5TeZLoSouN8=; b=X/o8nIFyGvYnv/g50nxoYBC9OqT/a82U/19pIWE4DGrbV4OhYPWQM6ZDuUrM3OpSUj Nr6ZhhUmopTKPQdLniUYMYo4Oa9jpWbaI7VbhpRicjEIcbCWnCFO/iUk8TrKgRHwmIAI bE+4+I6IyxjWS7nkfLLKKjHfdPQYtNOpjEICmuSpT/AjPJkldmm3ReNyVB+7MhZAAxtT 3MW0/yYOSf7E7weehLicdrGpCkWE0Sr2gcJCSn0eo6Yslv7nQXYlYpZeNqEEb2r0ICde mXH+Ce6uB/GFKWH70H+hIubTs6XO4iiZIeINx9BiaodDVrJbxYLIM/GUykiH1V95eS0V rqPQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id i14-20020a17090671ce00b0098dfec24292si11312777ejk.829.2023.09.20.05.40.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 05:40:44 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 01AE33856DC2 for ; Wed, 20 Sep 2023 12:40:40 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtpbgau1.qq.com (smtpbgau1.qq.com [54.206.16.166]) by sourceware.org (Postfix) with ESMTPS id 2E51A385842A for ; Wed, 20 Sep 2023 12:40:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2E51A385842A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp81t1695213576tiye9lvq Received: from rios-cad122.hadoop.rioslab.org ( [58.60.1.26]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 20 Sep 2023 20:39:35 +0800 (CST) X-QQ-SSF: 01400000000000G0V000000A0000000 X-QQ-FEAT: RrZlkntZBfkN/AaA5KsnTfXaGD3FS/KxfyWV2c8D/b5uRSrcN0zVUEAiKUtl3 QljDiQsS2045EySAt/Ab6IHUbfE51cFUa3/ADItl72JXheUQkQKn9incHgQn4+AK3eDVj1/ ONTJCh4P/h9uqoaeaIPxvuWX4Ol6g3Tfqvct5XuelI3gXciEZAVqamcr/H071olwUwe1NZD gpVOQB1YCLAk0eKCLyNQkjMFoo3gCH3bemYKTGyLYtgryHyqhN3r29Q3UwUIsn5Tg5y7Hlg KG2T5oYvPv3qUfikPMAeFVnowG11AQNuk+nYzP+Z76ewOWk1OYEh4hSLWMd0UmXwQxGjs+L AOT/dU8YiGgbdYamtdWD2tyblXHbTh0+Fu8ODDOTZR+606PVSwlHYGTg8q4EtpOX7OwgZs4 Pr4hdncsCBA= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 9650283172765639387 From: Juzhe-Zhong To: gcc-patches@gcc.gnu.org Cc: Juzhe-Zhong Subject: [Committed] RISC-V: Support VLS floating-point extend/truncate Date: Wed, 20 Sep 2023 20:39:34 +0800 Message-Id: <20230920123934.167085-1-juzhe.zhong@rivai.ai> X-Mailer: git-send-email 2.36.3 MIME-Version: 1.0 X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777560342585160949 X-GMAIL-MSGID: 1777560342585160949 Regression passed. Committed. gcc/ChangeLog: * config/riscv/vector-iterators.md: Extend VLS floating-point. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/widen/widen-10.c: Adapt test. * gcc.target/riscv/rvv/autovec/widen/widen-11.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-12.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-7.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-8.c: Ditto. * gcc.target/riscv/rvv/autovec/widen/widen-complicate-9.c: Ditto. * gcc.target/riscv/rvv/autovec/vls/ext-4.c: New test. * gcc.target/riscv/rvv/autovec/vls/ext-5.c: New test. * gcc.target/riscv/rvv/autovec/vls/trunc-4.c: New test. * gcc.target/riscv/rvv/autovec/vls/trunc-5.c: New test. --- gcc/config/riscv/vector-iterators.md | 95 +++++++++++++++++++ .../gcc.target/riscv/rvv/autovec/vls/ext-4.c | 35 +++++++ .../gcc.target/riscv/rvv/autovec/vls/ext-5.c | 27 ++++++ .../riscv/rvv/autovec/vls/trunc-4.c | 35 +++++++ .../riscv/rvv/autovec/vls/trunc-5.c | 27 ++++++ .../riscv/rvv/autovec/widen/widen-10.c | 2 +- .../riscv/rvv/autovec/widen/widen-11.c | 2 +- .../riscv/rvv/autovec/widen/widen-12.c | 2 +- .../rvv/autovec/widen/widen-complicate-7.c | 2 +- .../rvv/autovec/widen/widen-complicate-8.c | 2 +- .../rvv/autovec/widen/widen-complicate-9.c | 2 +- 11 files changed, 225 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-5.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-4.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-5.c diff --git a/gcc/config/riscv/vector-iterators.md b/gcc/config/riscv/vector-iterators.md index 73df55a69c8..053d84c0c7d 100644 --- a/gcc/config/riscv/vector-iterators.md +++ b/gcc/config/riscv/vector-iterators.md @@ -994,6 +994,28 @@ (RVVM8DF "TARGET_VECTOR_ELEN_FP_64") (RVVM4DF "TARGET_VECTOR_ELEN_FP_64") (RVVM2DF "TARGET_VECTOR_ELEN_FP_64") (RVVM1DF "TARGET_VECTOR_ELEN_FP_64") + + (V1SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32") + (V2SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32") + (V4SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32") + (V8SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32") + (V16SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 64") + (V32SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 128") + (V64SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 256") + (V128SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 512") + (V256SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 1024") + (V512SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 2048") + (V1024SF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_16 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >= 4096") + (V1DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64") + (V2DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64") + (V4DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64") + (V8DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 64") + (V16DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 128") + (V32DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 256") + (V64DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 512") + (V128DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 1024") + (V256DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 2048") + (V512DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 4096") ]) (define_mode_iterator VWEXTF [ @@ -1049,6 +1071,17 @@ (define_mode_iterator VQEXTF [ (RVVM8DF "TARGET_VECTOR_ELEN_FP_64") (RVVM4DF "TARGET_VECTOR_ELEN_FP_64") (RVVM2DF "TARGET_VECTOR_ELEN_FP_64") (RVVM1DF "TARGET_VECTOR_ELEN_FP_64") + + (V1DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64") + (V2DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64") + (V4DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64") + (V8DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 64") + (V16DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 128") + (V32DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 256") + (V64DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 512") + (V128DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 1024") + (V256DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 2048") + (V512DF "TARGET_VECTOR_VLS && TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >= 4096") ]) (define_mode_iterator VOEXTI [ @@ -2343,6 +2376,27 @@ (V128DI "V128SI") (V256DI "V256SI") (V512DI "V512SI") + (V1SF "V1HF") + (V2SF "V2HF") + (V4SF "V4HF") + (V8SF "V8HF") + (V16SF "V16HF") + (V32SF "V32HF") + (V64SF "V64HF") + (V128SF "V128HF") + (V256SF "V256HF") + (V512SF "V512HF") + (V1024SF "V1024HF") + (V1DF "V1SF") + (V2DF "V2SF") + (V4DF "V4SF") + (V8DF "V8SF") + (V16DF "V16SF") + (V32DF "V32SF") + (V64DF "V64SF") + (V128DF "V128SF") + (V256DF "V256SF") + (V512DF "V512SF") ]) (define_mode_attr V_QUAD_TRUNC [ @@ -2373,6 +2427,16 @@ (V128DI "V128HI") (V256DI "V256HI") (V512DI "V512HI") + (V1DF "V1HF") + (V2DF "V2HF") + (V4DF "V4HF") + (V8DF "V8HF") + (V16DF "V16HF") + (V32DF "V32HF") + (V64DF "V64HF") + (V128DF "V128HF") + (V256DF "V256HF") + (V512DF "V512HF") ]) (define_mode_attr V_OCT_TRUNC [ @@ -2435,6 +2499,27 @@ (V128DI "v128si") (V256DI "v256si") (V512DI "v512si") + (V1SF "v1hf") + (V2SF "v2hf") + (V4SF "v4hf") + (V8SF "v8hf") + (V16SF "v16hf") + (V32SF "v32hf") + (V64SF "v64hf") + (V128SF "v128hf") + (V256SF "v256hf") + (V512SF "v512hf") + (V1024SF "v1024hf") + (V1DF "v1sf") + (V2DF "v2sf") + (V4DF "v4sf") + (V8DF "v8sf") + (V16DF "v16sf") + (V32DF "v32sf") + (V64DF "v64sf") + (V128DF "v128sf") + (V256DF "v256sf") + (V512DF "v512sf") ]) (define_mode_attr v_quad_trunc [ @@ -2465,6 +2550,16 @@ (V128DI "v128hi") (V256DI "v256hi") (V512DI "v512hi") + (V1DF "v1hf") + (V2DF "v2hf") + (V4DF "v4hf") + (V8DF "v8hf") + (V16DF "v16hf") + (V32DF "v32hf") + (V64DF "v64hf") + (V128DF "v128hf") + (V256DF "v256hf") + (V512DF "v512hf") ]) (define_mode_attr v_oct_trunc [ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-4.c new file mode 100644 index 00000000000..7593a35d666 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-4.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8 -fdump-tree-optimized" } */ + +#include "def.h" + +DEF_CONVERT (fwcvt, _Float16, float, 4) +DEF_CONVERT (fwcvt, _Float16, float, 16) +DEF_CONVERT (fwcvt, _Float16, float, 32) +DEF_CONVERT (fwcvt, _Float16, float, 64) +DEF_CONVERT (fwcvt, _Float16, float, 128) +DEF_CONVERT (fwcvt, _Float16, float, 256) +DEF_CONVERT (fwcvt, _Float16, float, 512) +DEF_CONVERT (fwcvt, _Float16, float, 1024) + +DEF_CONVERT (fwcvt, float, double, 4) +DEF_CONVERT (fwcvt, float, double, 16) +DEF_CONVERT (fwcvt, float, double, 32) +DEF_CONVERT (fwcvt, float, double, 64) +DEF_CONVERT (fwcvt, float, double, 128) +DEF_CONVERT (fwcvt, float, double, 256) + +/* { dg-final { scan-assembler-times {vfwcvt\.f\.f\.v} 14 } } */ +/* { dg-final { scan-assembler-not {csrr} } } */ +/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-5.c new file mode 100644 index 00000000000..5dca5a7875d --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/ext-5.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8 -fdump-tree-optimized" } */ + +#include "def.h" + +DEF_CONVERT (fwcvt, _Float16, double, 4) +DEF_CONVERT (fwcvt, _Float16, double, 16) +DEF_CONVERT (fwcvt, _Float16, double, 32) +DEF_CONVERT (fwcvt, _Float16, double, 64) +DEF_CONVERT (fwcvt, _Float16, double, 128) +DEF_CONVERT (fwcvt, _Float16, double, 256) +DEF_CONVERT (fwcvt, _Float16, double, 512) + +/* { dg-final { scan-assembler-times {vfwcvt\.f\.f\.v} 14 } } */ +/* { dg-final { scan-assembler-not {csrr} } } */ +/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-4.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-4.c new file mode 100644 index 00000000000..d9a5eeb212e --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-4.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8 -fdump-tree-optimized" } */ + +#include "def.h" + +DEF_CONVERT (fncvt, float, _Float16, 4) +DEF_CONVERT (fncvt, float, _Float16, 16) +DEF_CONVERT (fncvt, float, _Float16, 32) +DEF_CONVERT (fncvt, float, _Float16, 64) +DEF_CONVERT (fncvt, float, _Float16, 128) +DEF_CONVERT (fncvt, float, _Float16, 256) +DEF_CONVERT (fncvt, float, _Float16, 512) +DEF_CONVERT (fncvt, float, _Float16, 1024) + +DEF_CONVERT (fncvt, double, float, 4) +DEF_CONVERT (fncvt, double, float, 16) +DEF_CONVERT (fncvt, double, float, 32) +DEF_CONVERT (fncvt, double, float, 64) +DEF_CONVERT (fncvt, double, float, 128) +DEF_CONVERT (fncvt, double, float, 256) + +/* { dg-final { scan-assembler-times {vfncvt\.f\.f\.w} 14 } } */ +/* { dg-final { scan-assembler-not {csrr} } } */ +/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-5.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-5.c new file mode 100644 index 00000000000..b87a5c4dfad --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/vls/trunc-5.c @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-march=rv64gcv_zvfh_zvl4096b -mabi=lp64d -O3 --param=riscv-autovec-lmul=m8 -fdump-tree-optimized" } */ + +#include "def.h" + +DEF_CONVERT (fncvt, double, _Float16, 4) +DEF_CONVERT (fncvt, double, _Float16, 16) +DEF_CONVERT (fncvt, double, _Float16, 32) +DEF_CONVERT (fncvt, double, _Float16, 64) +DEF_CONVERT (fncvt, double, _Float16, 128) +DEF_CONVERT (fncvt, double, _Float16, 256) +DEF_CONVERT (fncvt, double, _Float16, 512) + +/* { dg-final { scan-assembler-times {vfncvt} 14 } } */ +/* { dg-final { scan-assembler-not {csrr} } } */ +/* { dg-final { scan-tree-dump-not "1,1" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2,2" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4,4" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "16,16" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "32,32" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "64,64" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "128,128" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "256,256" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "512,512" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "1024,1024" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "2048,2048" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "4096,4096" "optimized" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-10.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-10.c index 490f1a41068..28aacb95904 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-10.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -O3 -ffast-math" } */ +/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -O3 -ffast-math -fno-vect-cost-model" } */ #include diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-11.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-11.c index 4d44a40fed3..6d39bffbdc7 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-11.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-11.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -O3 -ffast-math" } */ +/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -O3 -ffast-math -fno-vect-cost-model" } */ #include diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-12.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-12.c index 2cb2a1edebf..1f50fd24ae4 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-12.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-12.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -O3 -ffast-math" } */ +/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -O3 -ffast-math -fno-vect-cost-model" } */ #include diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-7.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-7.c index 2e3f6664d93..5d93a0ed60a 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-7.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-7.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -ffast-math" } */ +/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -ffast-math -fno-vect-cost-model" } */ #include diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-8.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-8.c index 2acfbd01c6d..1a496bcfcea 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-8.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-8.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -ffast-math" } */ +/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -ffast-math -fno-vect-cost-model" } */ #include diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-9.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-9.c index da7f870c12b..4d2f7ccab99 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-9.c +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/widen/widen-complicate-9.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -ffast-math" } */ +/* { dg-additional-options "-march=rv32gcv_zvfh -mabi=ilp32d --param=riscv-autovec-preference=scalable -ffast-math -fno-vect-cost-model" } */ #include