From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by sourceware.org (Postfix) with ESMTPS id 7BAC23858C54 for ; Wed, 7 Jun 2023 06:21:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7BAC23858C54 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=1686118860; x=1717654860; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=CgNrRZ3j7vV28tCJA9ALBO26TisEJ3i2pBvWoJ4fFlQ=; b=lbMFSrk2jD67hdRW9WIPnIim3ylzVsnZe0HYH7VmQmOYVfnR06pH5aBb rngBLni7k8M09Mbin4FD3IZz2yg5+Ac3J3Ra8zVFh6FnT3/3vxCruEfd5 T1AQUsXslp0ydHWHvCjKxF7YwdAU3mlRTOyIJqqLfnhxPISqj2CYEiK06 uqzWbR8vXZes+KYtYAKKzommvFEZVoYmFOpkuH8ZqSNO8yscqGztl1ePB stvn9MptZS8qQvhoVN1vFyZw1+jbGdedQKjl+w1efA2X6HuVNoySo+sPa F3VXyFCBBfkgqLs6KGXrjiDEjuBMhUl0Y/8zz/YHtfA/GBOQYqs9fk7HT A==; X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="346510389" X-IronPort-AV: E=Sophos;i="6.00,223,1681196400"; d="scan'208,217";a="346510389" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jun 2023 23:20:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10733"; a="956076281" X-IronPort-AV: E=Sophos;i="6.00,223,1681196400"; d="scan'208,217";a="956076281" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga006.fm.intel.com with ESMTP; 06 Jun 2023 23:20:58 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX603.amr.corp.intel.com (10.22.229.16) 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:20:57 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx611.amr.corp.intel.com (10.22.229.24) 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:20:57 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.172) by edgegateway.intel.com (134.134.137.102) 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:20:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XVdgW+gcpAaqu54daNbp63Orl4W+g4AXS/WFyJXOsap3LbshknGD1ALS0dJ0vjTjDV0Bq0OLdi9DonQ57xdn9dc0MVM1hYHlPuXtBpPmMB0z2OuoD5d3dwSVB3mjqtjnqXfLQVEV99OdtmCTqTXJI0APoxnDtTDNUQlq5vHMIkWbdTg4XcWlN3fwoSNd2xy01zyswNCMsnDOOFXO95ttli4/tQH008cxnKr0Byh+NqIK0R8ok4Jd7Lq58oW6s8ol9sCGgcfLwm+K6JWSJq5L+swMJcqlv/NTnIM5Jcv2bB7sPCDDpxv4f/4bjE2upoRKde5hKJtMGoMb4Jv4nS8D6g== 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=whfmyKMvM7vCODpDnhlOodCXzkrY4P3sJLp0KdP1iZ0=; b=CzJtgLMfRF/5De0QbX5NNmmWxBtFY2npRvQO79WQuPoICZ/5VJUG+/LKUe6oaoQrUfH/gA1DX9Jutds1Kvugx2IQyboggSvtdQApUZNRo0/PfeBZe9p18a9YfSBYeDaTQE0A2JKtp4B3uIysdNy758NP0OoBADYQahL9Tad/6YCx+zGLYq4l49sstdcK8i91y1gjVmhR+zUzo4m2rakWHqv43Dk3zGcvYzdDOqZp7LSnDeVbPSdBRSAEYmiZwh8FoST9XM7/jvfFe9FsrEt/wtk0WItcO34UkHU9+pTi3Crle0TMnATdlX0ehMPW4UAA9cj6k5hkAFqdhoFkM/B02g== 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 DS0PR11MB7903.namprd11.prod.outlook.com (2603:10b6:8:f7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6477.19; Wed, 7 Jun 2023 06:20:55 +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:20:55 +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+vVmWgAAhEYA= Date: Wed, 7 Jun 2023 06:20:55 +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_|DS0PR11MB7903:EE_ x-ms-office365-filtering-correlation-id: fb8a6df6-0e2b-426d-00ce-08db671f59d4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cjp5mZTeQvQ8veTBnVV9ZMKyzYQT4oNgStQwgBgLK1aLcZiWgJBgajSWwQrwbF/cUoGZ4D5fZkubj3dcxTfjpjavyU0q36ntsKN3YBda4qQIR67JCiAg5BMr4GfV5Lk3QP7r0yqLfBR1fJsQC02qY+Z3bN5Mf4qsMPeiqh8FdQkjYmy8ZOEZMozDCiONS614I0XljjtJOrMaGPSWIJBfYv48hoC9kTw6DZZQgKYKfK3cbJdePUhThbegwTt2POZpMmXWUbPHuxfmITHXCnXCKjMJMEUSGCVW1Gk9L4G5XHyHwRZld8h5QO9s2YgYaqIDWA6q/9+WFvYBRxA8BHn5m0mueU1rFuwN5rSSPBzsnij3/dVgQQu33cYlGTcbYYASC9dyN6Hhj5DWF31ZILEQWt9kXkKpg+Wkeczb3S7Vn3/rlOxNJGMSTz2cQiaqpUIfkDEIhs+TehCRMLfeMGIvsFQp9LOjNxyl8mUcSL9YePlPHF2/AyTNzZdU4Ga0rJQdMUQCEUiOhTTFct2zW/9VzT2ySEys5sKZ7+fRb3cmIOxL07v7/aFXuv8VcwjHahQmT8pM/e/o1VaDEOmH7E700Muxphr4o68FDVg/ShQVojo= 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)(376002)(366004)(39860400002)(346002)(396003)(451199021)(41300700001)(5660300002)(52536014)(107886003)(33656002)(8936002)(8676002)(54906003)(478600001)(55016003)(7696005)(316002)(38100700002)(82960400001)(66946007)(66556008)(66476007)(66446008)(76116006)(64756008)(71200400001)(4326008)(122000001)(110136005)(30864003)(38070700005)(2906002)(186003)(86362001)(83380400001)(84970400001)(53546011)(9686003)(26005)(6506007)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?P3UvGpbfdCnSAELjfbwuY4/x0guXOBNFpVNEbWT+CipaGeESEoaL6c54EIqL?= =?us-ascii?Q?vXJSClOm3mBShr+B/Fz52JB/gGGAxBIuyKrQtMl30sDrzMrNbKhM8ehno6TE?= =?us-ascii?Q?a3NvqESGON5Wy7PPCZvpyo7JdYvVkvFLgFVk9xW9BibuuuE2zTHBrYPuerm5?= =?us-ascii?Q?BwIWqrYEoON+iMG4HYCLpZI7tNvfeyVzocFEXfj+9XZw0739blVXcRRIzCRv?= =?us-ascii?Q?8rHbkpfeFS+DA3OZD28g/ZU+AUTOy+xFFrHvyJyrNfIJirhwq6biMRd+SkwB?= =?us-ascii?Q?cNy0hLlzXmsY86o37dOYXLZ3vfq+T2YnRS3OMOTV0jpWVksx1YAMvtxaHkV4?= =?us-ascii?Q?g2kGjlphOq+AADAec9nSxpEC+fZmX41/gbRyBO8WnbclEJsGbUBBiF35g8lU?= =?us-ascii?Q?uOwdzgo9792jBJ9ohjgoilCOu2tEHn1DkE4eIlCnuSCcwWnzI0Y9Mu/yp+YL?= =?us-ascii?Q?u5FzYioSmDXiP3cR/f1p+DmXBqHRZVt3cp5DezF6XJibJU4FRBBZGZioge7I?= =?us-ascii?Q?JYBEm3xwhw80INGWcFsbbarj6gUsUEYvakBO3aDRkkUvG/UR0XnevjRdxBFv?= =?us-ascii?Q?+EGDEBbptxSRM9ihCx47RSKEZYnI/2wbpOE/ClZr6ypW3PpQIWdSlV58BI2d?= =?us-ascii?Q?jPoppistcKfKzXt6aY5mDMkrnMaBXSaEsq+RMtA1j5Oe99/zAsrS97yzLweU?= =?us-ascii?Q?YqbiGhEh0Ve8FnvZD5MpPAhAMnWz4jlSekArgk5UOJWlAz7OK9iaOEfsziK/?= =?us-ascii?Q?pyGvz0AEDlqe4xDudfZzXjqlLHArLOS+QyOBUAdmjp987JAwVbu/FD9324O+?= =?us-ascii?Q?djixeHDbbVRY/YPbtMtnneot722LCBqk9oqQIDi/W3zSVTDpaIXrma3l9hhU?= =?us-ascii?Q?FRpbRfRdvHtWjDroMJMwYfpgVRgg2sCYNEN/EhQhvI4loawvjTRC4Y/6eFQa?= =?us-ascii?Q?2t9RdS62HNipGT/qL38AKll6a6AlmtoxzcUSN0n0wuqsqH1uND//MvX+dL5O?= =?us-ascii?Q?Qcofsufc2v9/RDiMUarrZNlbHqJ+4CiNOHrMWXlSdCgBniHvStNuQoFyH4wl?= =?us-ascii?Q?5bvGuTN4B1X8zlm/NmMJB+Mp63N0jpdSaVEFdMFnl61BrLuqL4h9ySflF7IZ?= =?us-ascii?Q?z2PuciMbYSEUJ9SBWaGwehX0FV1o5STo2AM6pURBgJIWHss93oTW0NjSq32K?= =?us-ascii?Q?fbaN6G50GA3svRgzU9iMhE8k5N8/t+7laC74kYFY+8AoZijKZTYPBskYuzSt?= =?us-ascii?Q?NiSMaJdNFD0cg+M0syiKpv4WhSrAD9VNm/r5XaNSqW/PvKiJJXwtYqNvNlvA?= =?us-ascii?Q?NIzTUZk8SJvs/UlEmmFKhNeCPPAMgvN1j+3/qja8RB72tgylVi7wBXReaBVn?= =?us-ascii?Q?yRU3NqLIhotzS6H2FA7QjVXaZZVZiHhVHGCp3VK4HSOPzEbu8dC9woEP504n?= =?us-ascii?Q?fQ2t3meTxs0vd2Q1CxHrzq5CF6sbn8qvI3bOTQjFR8/E7qAQKPRZK3U1U6ZB?= =?us-ascii?Q?xvs/Mkvb9n11Fj2LcTVuBdfVIKVqyCCb+Rkf/xlo3JWcSv/akqtKCVjKgRgB?= =?us-ascii?Q?eUMH0zyzB48KP9SVhltwUJZs2PqD30HmSHxxTTJE?= Content-Type: multipart/alternative; boundary="_000_MW5PR11MB5908BB57CE4AD027DEFE41BEA953AMW5PR11MB5908namp_" 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: fb8a6df6-0e2b-426d-00ce-08db671f59d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Jun 2023 06:20:55.1717 (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: 3q4yYK02/h4hEuzhQ0J+DA8DyUbjFLH1/FdIN3G60jEIX0MYycxFCozXEiKKW/HQTpvx93e5UbVvf9M6OtE+3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7903 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,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,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_MW5PR11MB5908BB57CE4AD027DEFE41BEA953AMW5PR11MB5908namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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, Pan2 ; 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_MW5PR11MB5908BB57CE4AD027DEFE41BEA953AMW5PR11MB5908namp_--