From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by sourceware.org (Postfix) with ESMTPS id 4D3453858C54 for ; Wed, 7 Jun 2023 06:57:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4D3453858C54 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1686121060; x=1717657060; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=4QRWAm2bxIk/DFk1ExePeIUNAg8chMOo+g6ig66qizc=; b=DwgQ6Jks+2mj1HzKruiIZbbUWwgPhaH7DSZyMKSlbkL9zh6uh6KSpdU+ 6Z/57k6O+yO9BEZef7CiODyskhhJIy+r06Z1jTjpdlpos3Dru3is7DuhR cTnzUVCepwj0ZV0F4jmIbxgmzT+rNFuWmZwSAXs5p69f7QmKJYjLDMkQ2 9xSkZVdN316vEYtaXYMjad39HQA3sIr0QhoI/Kh7A6dvPLfHxu/WGxExY TfM4u45aMccXB1NuNKzXj8tuYSNrfYMcIf+5IJqrizgiuHEFpKw9e6220 qvwXV0Kkot1KwRT6dLDLMAwBzylJQuXAUzUK0hU+g2W3L4uFCNShEgZC5 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="420457049" X-IronPort-AV: E=Sophos;i="6.00,223,1681196400"; d="scan'208,217";a="420457049" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jun 2023 23:57:25 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="1039478495" X-IronPort-AV: E=Sophos;i="6.00,223,1681196400"; d="scan'208,217";a="1039478495" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP; 06 Jun 2023 23:57:25 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 6 Jun 2023 23:57:24 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Tue, 6 Jun 2023 23:57:24 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Tue, 6 Jun 2023 23:57:24 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.42) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Tue, 6 Jun 2023 23:57:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lmkCSkZJ1mcBGqmayAL3emiaXGP+EDjXZP6ZMrynZZJb2ZPmWUSHOQdWS9ul9+acSw/fVDsuv2/r0z+zv0AOhB3F3T8l+V31PaTWe2yhwhOOc/FY866bkqkezEzgE32Yk/ocHNWHUTuBOUsONN8CNgl0upH7ce33F47UKP7PSrDR8rdgwvO3yiX2KY5S+jnqfcvENh/HwVhjlJWs7taNrbkxAKQS3w0Ec0wTMu+JHUpktNv7IkcxSLIwtqLABV0/9+4pOkCFaVqwOrnaTyfdAIxihGzMHMD2PfZ/p9ErRq6TQAxSyBb5B3kJj5shRZmmfgleFYOMU93DsetTcf/kUA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=xzPEUpJ27xOM7D01SGpNKfTSx/CdcBjzt9vGYi2gVow=; b=Q4YQWMVStPs5MZNTuLEpz5X06zcjN37/DvK4FbOXdC0s2p06+sip/y7mWj9f43L5aw75DMyLofGM6kM06GDt+VItgBrGpFTZcNIT6m3dem275e9kiQnRmNvjAIKyEVk30JGlmQyghLCULYvqkNyCkwleNfLfxtuelYxuLJAQEpWMo+WTg2HwWCckjEsnYP0uVRG/f5Eq9KoVWbCw+pZ/YqOGn6WSHEyKafgbslZYVfZ7g97rc7alnSz58jNSSOY8eLg+o+Bxz/Vh7INgcb39npGy5dTEt04G+M5NNSQ6XsMh2w4JKvloSN7qQeFeLw/lb+BncpQzBi8BOrYpxFuvSQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by MW4PR11MB6910.namprd11.prod.outlook.com (2603:10b6:303:225::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.32; Wed, 7 Jun 2023 06:57:21 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::127c:f4cc:e699:8f73]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::127c:f4cc:e699:8f73%5]) with mapi id 15.20.6455.030; Wed, 7 Jun 2023 06:57:21 +0000 From: "Li, Pan2" To: "juzhe.zhong@rivai.ai" , gcc-patches CC: Kito.cheng , "Wang, Yanzhang" Subject: RE: [PATCH v3] RISC-V: Refactor requirement of ZVFH and ZVFHMIN. Thread-Topic: [PATCH v3] RISC-V: Refactor requirement of ZVFH and ZVFHMIN. Thread-Index: AQHZmOxLXv+u2tX9KUiKJDTgmLVkkK9+vVmWgAAhEYCAAAotMA== Date: Wed, 7 Jun 2023 06:57:21 +0000 Message-ID: References: <20230606123646.1553843-1-pan2.li@intel.com>, <20230607030038.896932-1-pan2.li@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MW5PR11MB5908:EE_|MW4PR11MB6910:EE_ x-ms-office365-filtering-correlation-id: ceacf1ee-492c-43ad-bf9c-08db6724711b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: N8BdeVPcFBxoiPBxRgofRpcXtB2aTNcuhPWU3sPbbxREIzQXLQ/ZvrrFkAMqzRCY6zvXErutteZFeIMAOn84M4Rw3vT6dT2mQlXvnJlOcv6enwLE217WqF4hcI+W5leX35VQCAzgl5dZwzTEU9F0ARPVuzxWUGgfPj17iRVBEMWQr6dAEKTXFMJmff8ker5bi3jTRy/5xIpFAOteCtIVjR9MfmdD5yp5E10UQCwcAONZJ0xK2dIcSLm3rPyAcwmIIY2bIrPleUyFotOk25lWIruOhAT6spayOcG1z8NpQuPaUoepIp5rABNkfUksszM5uPsA3Tm7wJfM9W1Vfoz1H7Fs6+9KcF3jdvuykmUde9k7IzMYifla2cSbrs9ZEgUE65bMxyyS/FJT3XfqjdJ6kvDZVeDu/kqKHIobtB4VMxo0yyuYBlxJ+Jbyg/0deT4LkMff7GKcn77eP5YuQG5kmxDKktWJx1KJj3rzYxbhA7DzLcpv8T8x+aJLV2RMzCQIjuGf3umJ73CNW300LgE82gXEAsqLUgLRoy7uh73lIkz7DSF4bD8sGnNQOzksO0RLk4HnXZQtfGqQE2wh4uvaBL8M8/f8d6N1NJe6CAYKQ5s= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(136003)(39860400002)(346002)(396003)(376002)(366004)(451199021)(33656002)(54906003)(110136005)(71200400001)(478600001)(8936002)(5660300002)(21615005)(8676002)(166002)(86362001)(38070700005)(2906002)(30864003)(52536014)(66556008)(66476007)(122000001)(64756008)(66446008)(316002)(55016003)(66946007)(76116006)(82960400001)(4326008)(7696005)(6506007)(41300700001)(38100700002)(2940100002)(107886003)(53546011)(9686003)(84970400001)(26005)(966005)(83380400001)(186003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?jeZc6T0JexOfiL5JtnOdEHFvcnxkw3jmLWJ1O+VJ50vOqOvVvr8WKnvzBL56?= =?us-ascii?Q?7SWdSsAEgUXCqI03TZsvwb1u8nwy6jX/Zn6Ap8pi4u2D+hpvYP+TV3J8TXVh?= =?us-ascii?Q?Y2Arb9re8qlnNE1SzOZsA5S4Kosymfnn7ged4jFMOcbX2QiCKZ41C+kr/jPn?= =?us-ascii?Q?AemQo5RNr47YSHYRYCVU0uVbc1q8T8mNstZT3qaSs748UQZycqkpnMW0OcP9?= =?us-ascii?Q?43A9E2joYqP8vTSCE9cgP+oBcKgxnDEfmBwmzqSB9ssN7jLNRU+vSS6UJVwY?= =?us-ascii?Q?KrrZMUNQR57kyrCsV6FsvNQ1qg+cuwOKYS+kRYVbcOqjVTjRNJqVIV5XiTZ6?= =?us-ascii?Q?ae8OHbAyoze+SWjOQ5kR96IcWwgZS6XfIqFM3KudMYh9TVMN492p2Kb+2XTw?= =?us-ascii?Q?LT2PWvCY4RRmWc86kgGGtrdu+0zdZd8O6731ZrmuAsD8Uk2LKY/11qlBblND?= =?us-ascii?Q?px5sGCp8Xk/PMDxjMDjvLVdbm6ReRlS0pKOTs+cPKED4aREVpOtbf+J9+ON1?= =?us-ascii?Q?hOAL0y8brOyLikhLqksW7oi2NZ5fc2WwSoiODLzbLpYWHuYfSt/J88DPVkw2?= =?us-ascii?Q?oO7P/4+bK2jJJXGoMnVVRSSITE7PioI6qw/u58wt1QVtIHSTraVcIgMjyifr?= =?us-ascii?Q?hWKsRl0reUcB5JWgEEEugLHLTEWlseA2rOwnqjfRkptsTAu3lhcoSSOg3HaM?= =?us-ascii?Q?O7zcfpdZwme7IMNoZzvqHvp4tP2q89WsPX2ru7DWom6Spoflkw6sg31vge7b?= =?us-ascii?Q?BmZE4AOHUsh2vpsA38Iw32s0t1bLdMn4uq0zE0gq+nM+zmGUbCgSLR9BbuY+?= =?us-ascii?Q?Mg6RLaL6CCuOoRUcDzGYpx1In6BnpWiOxyDAff8v6+0BCdL1giwzGlVNcwG/?= =?us-ascii?Q?JiYWoZl0kJwqmujdvuKexL0WSrY541Aqp0xReo71qV5Stp2nSTJd/N8QpS7o?= =?us-ascii?Q?gSJ0jYYwTtl+wPXKrA7xOhjVw8gwfoFmJCbB7GqzvdzSVZvbQPmaD87TAUCm?= =?us-ascii?Q?oU6pdGicb6A05v8nJ2Iazx1g2K2P4ws1c/pHNDn7xTG+xVYApbmwSFT7RcA8?= =?us-ascii?Q?3lJOM3D8YCVRtxtr6hyNFFk7JWCA4p3Mq44QZQtoD7JB6bvWBBLulTmqu8xq?= =?us-ascii?Q?0pFXxhP6782BLMeWwNXTc9A0DdjYeq1jc4mPlh1wgko+oW9f1sFrgWJaJfiZ?= =?us-ascii?Q?jODS9oqF4o0y9h9O+EQ0JBdJmmPeesKpkzIaoe32Zfk3PeHHmqgti1q2E0Bi?= =?us-ascii?Q?Am5+CAgmemqJcxMiJztKWd3DpPuNMQSh39clUK+nZfeDl3nClzmEnO341zWI?= =?us-ascii?Q?7hVuNCM1G39Vv32WKs87hKLT6HRdNHUZfUsVwpUWme1PaGLGfMffvxwIMHO+?= =?us-ascii?Q?Gmnnu7a5IARGy4QTkoq/Q/bNo43wZTDDCNwCbs4pvB4fKqiVp/bqpfuTPiiN?= =?us-ascii?Q?scRI6WIVLVL2iprE4dnGpw1whLBQUQahI827QmqZwzCiOW7m1IiTWVaCPwto?= =?us-ascii?Q?NGPFHEd+wIlE+3KQ4eAIR7OaR5APL979jc/q8vLvL3kxBrmFfdDb7Db2q07+?= =?us-ascii?Q?90tIis8kSqYE5vu2JCCbFHESOHp/URPgA7mGBGQo?= Content-Type: multipart/alternative; boundary="_000_MW5PR11MB5908FC6EA69CDFE8C9D2FCCEA953AMW5PR11MB5908namp_" MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ceacf1ee-492c-43ad-bf9c-08db6724711b X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2023 06:57:21.6922 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Hc9Z5lRx4N3rrVjmUnfgcbeLMuUsgJ8zLy+jBXgSdfqzAR8993w/61m3W2G7P4V26TqHnK9+aaO3U4s0AQvPuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB6910 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,HTML_MESSAGE,KAM_SHORT,SPF_HELO_NONE,SPF_NONE,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: --_000_MW5PR11MB5908FC6EA69CDFE8C9D2FCCEA953AMW5PR11MB5908namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Update the PATCH V4 as below, sorry for missed the v4 prefix in subject. https://gcc.gnu.org/pipermail/gcc-patches/2023-June/620879.html Pan From: Li, Pan2 Sent: Wednesday, June 7, 2023 2:21 PM To: juzhe.zhong@rivai.ai; gcc-patches Cc: Kito.cheng ; Wang, Yanzhang Subject: RE: [PATCH v3] RISC-V: Refactor requirement of ZVFH and ZVFHMIN. Thanks JuZhe, make sense, will update the V4 for this change. Pan From: juzhe.zhong@rivai.ai > Sent: Wednesday, June 7, 2023 12:21 PM To: Li, Pan2 >; gcc-patches > Cc: Kito.cheng >; Li, P= an2 >; Wang, Yanzhang > Subject: Re: [PATCH v3] RISC-V: Refactor requirement of ZVFH and ZVFHMIN. HI, + (VNx1SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN < 128") + (VNx2SF "TARGET_VECTOR_ELEN_FP_16") + (VNx4SF "TARGET_VECTOR_ELEN_FP_16") + (VNx8SF "TARGET_VECTOR_ELEN_FP_16") + (VNx16SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32") + (VNx32SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN >=3D 128") Add TARGET_VECTOR_ELEN_FP_32 here, for FP16->FP32 conversion, we need both ELEN_FP16 and ELEN_FP32 enable. ________________________________ juzhe.zhong@rivai.ai From: pan2.li Date: 2023-06-07 11:00 To: gcc-patches CC: juzhe.zhong; kito.cheng; pan2.li; yanzhang.wang Subject: [PATCH v3] RISC-V: Refactor requirement of ZVFH and ZVFHMIN. From: Pan Li > This patch would like to refactor the requirement of both the ZVFH and ZVFHMIN. The related define_insn and iterator will take the requirement based on the ZVFHMIN and ZVFH. Please note the ZVFH will cover the ZVFHMIN instructions. This patch add one test for this. Signed-off-by: Pan Li > gcc/ChangeLog: * config/riscv/vector-iterators.md: Add requirement to VF, VWEXTF and VWCONVERTI, add V_CONVERT_F and VCONVERTF. * config/riscv/vector.md: Adjust FP convert to V_CONVERT_F and VCONVERTF. gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c: New test. --- gcc/config/riscv/vector-iterators.md | 68 +++++++++++++------ gcc/config/riscv/vector.md | 46 ++++++------- .../riscv/rvv/base/zvfh-over-zvfhmin.c | 25 +++++++ 3 files changed, 97 insertions(+), 42 deletions(-) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmi= n.c diff --git a/gcc/config/riscv/vector-iterators.md b/gcc/config/riscv/vector= -iterators.md index f4946d84449..1dc82bd44d3 100644 --- a/gcc/config/riscv/vector-iterators.md +++ b/gcc/config/riscv/vector-iterators.md @@ -296,13 +296,13 @@ (define_mode_iterator VWI_ZVE32 [ ]) (define_mode_iterator VF [ - (VNx1HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN < 128") - (VNx2HF "TARGET_VECTOR_ELEN_FP_16") - (VNx4HF "TARGET_VECTOR_ELEN_FP_16") - (VNx8HF "TARGET_VECTOR_ELEN_FP_16") - (VNx16HF "TARGET_VECTOR_ELEN_FP_16") - (VNx32HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32") - (VNx64HF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN >=3D 128") + (VNx1HF "TARGET_ZVFH && TARGET_MIN_VLEN < 128") + (VNx2HF "TARGET_ZVFH") + (VNx4HF "TARGET_ZVFH") + (VNx8HF "TARGET_ZVFH") + (VNx16HF "TARGET_ZVFH") + (VNx32HF "TARGET_ZVFH && TARGET_MIN_VLEN > 32") + (VNx64HF "TARGET_ZVFH && TARGET_MIN_VLEN >=3D 128") (VNx1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN < 128") (VNx2SF "TARGET_VECTOR_ELEN_FP_32") @@ -497,12 +497,12 @@ (define_mode_iterator VWEXTI [ ]) (define_mode_iterator VWEXTF [ - (VNx1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN < 128") - (VNx2SF "TARGET_VECTOR_ELEN_FP_32") - (VNx4SF "TARGET_VECTOR_ELEN_FP_32") - (VNx8SF "TARGET_VECTOR_ELEN_FP_32") - (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32") - (VNx32SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN >=3D 128") + (VNx1SF "TARGET_ZVFH && TARGET_MIN_VLEN < 128") + (VNx2SF "TARGET_ZVFH") + (VNx4SF "TARGET_ZVFH") + (VNx8SF "TARGET_ZVFH") + (VNx16SF "TARGET_ZVFH && TARGET_MIN_VLEN > 32") + (VNx32SF "TARGET_ZVFH && TARGET_MIN_VLEN >=3D 128") (VNx1DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN < 128") (VNx2DF "TARGET_VECTOR_ELEN_FP_64") @@ -512,12 +512,12 @@ (define_mode_iterator VWEXTF [ ]) (define_mode_iterator VWCONVERTI [ - (VNx1SI "TARGET_MIN_VLEN < 128 && TARGET_VECTOR_ELEN_FP_16") - (VNx2SI "TARGET_VECTOR_ELEN_FP_16") - (VNx4SI "TARGET_VECTOR_ELEN_FP_16") - (VNx8SI "TARGET_VECTOR_ELEN_FP_16") - (VNx16SI "TARGET_MIN_VLEN > 32 && TARGET_VECTOR_ELEN_FP_16") - (VNx32SI "TARGET_MIN_VLEN >=3D 128 && TARGET_VECTOR_ELEN_FP_16") + (VNx1SI "TARGET_ZVFH && TARGET_MIN_VLEN < 128") + (VNx2SI "TARGET_ZVFH") + (VNx4SI "TARGET_ZVFH") + (VNx8SI "TARGET_ZVFH") + (VNx16SI "TARGET_ZVFH && TARGET_MIN_VLEN > 32") + (VNx32SI "TARGET_ZVFH && TARGET_MIN_VLEN >=3D 128") (VNx1DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN= _VLEN < 128") (VNx2DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32") @@ -526,6 +526,21 @@ (define_mode_iterator VWCONVERTI [ (VNx16DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32 && TARGET_MI= N_VLEN >=3D 128") ]) +(define_mode_iterator VCONVERTF [ + (VNx1SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN < 128") + (VNx2SF "TARGET_VECTOR_ELEN_FP_16") + (VNx4SF "TARGET_VECTOR_ELEN_FP_16") + (VNx8SF "TARGET_VECTOR_ELEN_FP_16") + (VNx16SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN > 32") + (VNx32SF "TARGET_VECTOR_ELEN_FP_16 && TARGET_MIN_VLEN >=3D 128") + + (VNx1DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN < 128") + (VNx2DF "TARGET_VECTOR_ELEN_FP_64") + (VNx4DF "TARGET_VECTOR_ELEN_FP_64") + (VNx8DF "TARGET_VECTOR_ELEN_FP_64") + (VNx16DF "TARGET_VECTOR_ELEN_FP_64 && TARGET_MIN_VLEN >=3D 128") +]) + (define_mode_iterator VQEXTI [ (VNx1SI "TARGET_MIN_VLEN < 128") VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_M= IN_VLEN > 32") (VNx32SI "TARGET_MIN_VLEN >=3D 128") (VNx1DI "TARGET_VECTOR_ELEN_64 && TARGET_MIN_VLEN < 128") (VNx2DI "TARGE= T_VECTOR_ELEN_64") @@ -1181,6 +1196,21 @@ (define_mode_attr V_DOUBLE_TRUNC [ (VNx16DF "VNx16SF") ]) +(define_mode_attr V_CONVERT_F [ + (VNx1SF "VNx1HF") + (VNx2SF "VNx2HF") + (VNx4SF "VNx4HF") + (VNx8SF "VNx8HF") + (VNx16SF "VNx16HF") + (VNx32SF "VNx32HF") + + (VNx1DF "VNx1SF") + (VNx2DF "VNx2SF") + (VNx4DF "VNx4SF") + (VNx8DF "VNx8SF") + (VNx16DF "VNx16SF") +]) + (define_mode_attr V_QUAD_TRUNC [ (VNx1SI "VNx1QI") (VNx2SI "VNx2QI") (VNx4SI "VNx4QI") (VNx8SI "VNx8QI") (VNx16SI "VNx16QI") (VNx32SI "VNx32QI") diff --git a/gcc/config/riscv/vector.md b/gcc/config/riscv/vector.md index 1d1847bd85a..97162b07642 100644 --- a/gcc/config/riscv/vector.md +++ b/gcc/config/riscv/vector.md @@ -7106,23 +7106,23 @@ (define_insn "@pred_widen_" (set_attr "mode" "")]) (define_insn "@pred_extend" - [(set (match_operand:VWEXTF 0 "register_operand" "=3D&vr= , &vr") - (if_then_else:VWEXTF + [(set (match_operand:VCONVERTF 0 "register_operand" "=3D&vr, &= vr") + (if_then_else:VCONVERTF (unspec: - [(match_operand: 1 "vector_mask_operand" "vmWc1,vmWc1") - (match_operand 4 "vector_length_operand" " rK, rK") - (match_operand 5 "const_int_operand" " i, i") - (match_operand 6 "const_int_operand" " i, i") - (match_operand 7 "const_int_operand" " i, i") + [(match_operand: 1 "vector_mask_operand" "vmWc1,vmWc1") + (match_operand 4 "vector_length_operand" " rK, rK") + (match_operand 5 "const_int_operand" " i, i") + (match_operand 6 "const_int_operand" " i, i") + (match_operand 7 "const_int_operand" " i, i") (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE) - (float_extend:VWEXTF - (match_operand: 3 "register_operand" " vr, vr")) - (match_operand:VWEXTF 2 "vector_merge_operand" " vu, 0"))= )] + (float_extend:VCONVERTF + (match_operand: 3 "register_operand" " vr, vr")) + (match_operand:VCONVERTF 2 "vector_merge_operand" " vu, 0")))] "TARGET_VECTOR" "vfwcvt.f.f.v\t%0,%3%p1" [(set_attr "type" "vfwcvtftof") - (set_attr "mode" "")]) + (set_attr "mode" "")]) ;; ------------------------------------------------------------------------= ------- ;; ---- Predicated floating-point narrow conversions @@ -7193,25 +7193,25 @@ (define_insn "@pred_narrow_" (set_attr "mode" "")]) (define_insn "@pred_trunc" - [(set (match_operand: 0 "register_operand" "=3Dvd,= vd, vr, vr, &vr, &vr") - (if_then_else: + [(set (match_operand: 0 "register_operand" "=3Dvd, vd= , vr, vr, &vr, &vr") + (if_then_else: (unspec: - [(match_operand: 1 "vector_mask_operand" " vm, vm,Wc1,W= c1,vmWc1,vmWc1") - (match_operand 4 "vector_length_operand" " rK, rK, rK, = rK, rK, rK") - (match_operand 5 "const_int_operand" " i, i, i, = i, i, i") - (match_operand 6 "const_int_operand" " i, i, i, = i, i, i") - (match_operand 7 "const_int_operand" " i, i, i, = i, i, i") - (match_operand 8 "const_int_operand" " i, i, i, = i, i, i") + [(match_operand: 1 "vector_mask_operand" " vm, vm,Wc1,Wc1,= vmWc1,vmWc1") + (match_operand 4 "vector_length_operand" " rK, rK, rK, rK,= rK, rK") + (match_operand 5 "const_int_operand" " i, i, i, i,= i, i") + (match_operand 6 "const_int_operand" " i, i, i, i,= i, i") + (match_operand 7 "const_int_operand" " i, i, i, i,= i, i") + (match_operand 8 "const_int_operand" " i, i, i, i,= i, i") (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM) (reg:SI FRM_REGNUM)] UNSPEC_VPREDICATE) - (float_truncate: - (match_operand:VWEXTF 3 "register_operand" " 0, 0, 0, = 0, vr, vr")) - (match_operand: 2 "vector_merge_operand" " vu, 0, vu, = 0, vu, 0")))] + (float_truncate: + (match_operand:VCONVERTF 3 "register_operand" " 0, 0, 0, 0,= vr, vr")) + (match_operand: 2 "vector_merge_operand" " vu, 0, vu, 0,= vu, 0")))] "TARGET_VECTOR" "vfncvt.f.f.w\t%0,%3%p1" [(set_attr "type" "vfncvtftof") - (set_attr "mode" "")]) + (set_attr "mode" "")]) (define_insn "@pred_rod_trunc" [(set (match_operand: 0 "register_operand" "=3Dvd,= vd, vr, vr, &vr, &vr") diff --git a/gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c b/= gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c new file mode 100644 index 00000000000..32d6657775c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-options "-march=3Drv64gcv_zvfh -mabi=3Dlp64 -O3" } */ + +#include "riscv_vector.h" + +vfloat16mf4_t test_vfncvt_f_f_w_f16mf4(vfloat32mf2_t src, size_t vl) { + return __riscv_vfncvt_f_f_w_f16mf4(src, vl); +} + +vfloat16m4_t test_vfncvt_f_f_w_f16m4(vfloat32m8_t src, size_t vl) { + return __riscv_vfncvt_f_f_w_f16m4(src, vl); +} + +vfloat32mf2_t test_vfwcvt_f_f_v_f32mf2(vfloat16mf4_t src, size_t vl) { + return __riscv_vfwcvt_f_f_v_f32mf2(src, vl); +} + +vfloat32m8_t test_vfwcvt_f_f_v_f32m8(vfloat16m4_t src, size_t vl) { + return __riscv_vfwcvt_f_f_v_f32m8(src, vl); +} + +/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\= s*mf4,\s*t[au],\s*m[au]} 2 } } */ +/* { dg-final { scan-assembler-times {vsetvli\s+zero,\s*[a-x0-9]+,\s*e16,\= s*m4,\s*t[au],\s*m[au]} 2 } } */ +/* { dg-final { scan-assembler-times {vfwcvt\.f\.f\.v\s+v[0-9]+,\s*v[0-9]+= } 2 } } */ +/* { dg-final { scan-assembler-times {vfncvt\.f\.f\.w\s+v[0-9]+,\s*v[0-9]+= } 2 } } */ -- 2.34.1 --_000_MW5PR11MB5908FC6EA69CDFE8C9D2FCCEA953AMW5PR11MB5908namp_--