From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17]) by sourceware.org (Postfix) with ESMTPS id 33DAE3839398 for ; Thu, 27 Jun 2024 06:51:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 33DAE3839398 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 33DAE3839398 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=192.198.163.17 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1719471089; cv=pass; b=kEc175xlcGYHXSSSMMSmIZvl6oHKePypBu6sUhlzYFKTOoCVoWgycHBkAVzzW//L3MH0cJe7YBHHi4bt7S2/SRaOPOfLGQ6YA9ZUm+0cI90BNXTzPZxxPbk5KtIHVq21N7HtCoK18kdI1ZFjmORadc2qSToAz8pGwlFnF3KhXEM= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1719471089; c=relaxed/simple; bh=a2bdFZWbswhFXOL1N7Lo0xplI/U3LXqrtBqvQfuXu/Q=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=uI5oRlMYQfj8IymqoA/dU3RzfpF/ieIuUy6kWv11qHyu7YLNgthmgkopRM/VsT0Szl3Zzqb8Iz0g9c7JbxXolrQ+HVef309Qk4EaeNHn0j0gNY1mwaEBkbw8pZVcFgeuPp6/VDU5m22nox9C39sf9RIuq86ZQY9/Kx6XX8tuYPE= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1719471083; x=1751007083; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=a2bdFZWbswhFXOL1N7Lo0xplI/U3LXqrtBqvQfuXu/Q=; b=PyFj+8U/7zeFUU/JyhkKCZDyEVgv2GCDHexI+NeC/+P9AkuQF0OkOXWs /QrpGoCOARGeee5/qLNF6scw7rhkmpcmgWrtRZBOpc/SNCpdE0CmAUCuY BAF7zmFXYCertBdEzQnFOcunhKe87x6hIpbK4D74HYKwt8TDoTQeXIdt3 1EiVqFWCoYBSRSumoRqzhyzXUHd6jIvJ9Oko57uzKTqlGB/0tzudtN1L4 26a/9UL2PXaAHSsRSRbpc3DCBIDMQ9B3mxAxvZA2aYUJJyrorkaFzCgoJ 63XMN2ttvksqTePPX1WWidNPiTUPZbquE7JZoXvZJ4z0NtPT+2ZC6sQhi g==; X-CSE-ConnectionGUID: R1hMZkzVR5a8tIsyfsgM2Q== X-CSE-MsgGUID: 66bIvhicQXmiR7qeLFcu+w== X-IronPort-AV: E=McAfee;i="6700,10204,11115"; a="16462075" X-IronPort-AV: E=Sophos;i="6.08,269,1712646000"; d="scan'208,217";a="16462075" Received: from orviesa004.jf.intel.com ([10.64.159.144]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jun 2024 23:51:22 -0700 X-CSE-ConnectionGUID: KZGaixpjTtK2XLy485j5bQ== X-CSE-MsgGUID: 2t6OEEJJRSiq0qwaovqktw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,269,1712646000"; d="scan'208,217";a="49448553" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orviesa004.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 26 Jun 2024 23:51:21 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 26 Jun 2024 23:51:21 -0700 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) 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.39; Wed, 26 Jun 2024 23:51:20 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Wed, 26 Jun 2024 23:51:20 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (104.47.56.40) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Wed, 26 Jun 2024 23:51:20 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KnlK7jwoCiJmLPzd/K9IoIlBHs783lPw5Edo2bnDzkAAxPwkRUocvkajGTtJyjHtTfxfGvtZl70rW01hQraFoitVLh6xFRbSq7W2cIxw6eE8tTkzIkFVKpdkVHhqmlqu2lAH8JnyWufoQc+D36AuGCiBTEhdLSFY9BpINj4fYyRvjj3xPb+4jSFoqI3psFxMkuIJgkWOoKwF0kb+L7yHTnd6tsLW+EPpmnqGADvTa2XQ7PtpeNz6Cy9ucE3wWa9dA/EHg1x2rC+5NSquZ7oNsxmcu/CUWVjaH6FVf4NLOIaXhqMXUo1VVPvPO+wp/nDc3+/EP03yWOzUl1zU8sbjww== 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=onGvceYmE+wDQmQeDqQ/Zd1h8ACTNYImPCawceZO2SY=; b=KHBBSzNpy7ZUvb228hrWgro6kIfXsdddWuH0tW/zV0srQWr3eSQKcF6TlrnN53yBrpOWZvdCu4+3iHmy8IhJgz4m9FLR1AH3FN+Gts6ohJ2AgjjgsJA+Iv957O/GV6zbbfVxWWqH8I+PoptVF9RcEaWo9g08xLYntXjLsqjRWSlU2bcsp78JvQwQZm48OIU7uLzI5UQ8NgUZwJIzyhVQGX3hQ/zwWi/cyM470/vQeuoJkQH/md9yTc/MDT8NoRij4ycIjO6MV6yMv3uNqiD7LDy6llZOV3uogk6ZEE6AaGxr5NKoqUaAZxf2CYLTvFcIEw2xjRS+g+14K7zwVOhPAw== 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 MW4PR11MB7150.namprd11.prod.outlook.com (2603:10b6:303:213::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7698.32; Thu, 27 Jun 2024 06:51:16 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::c798:ab3c:1a03:af59]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::c798:ab3c:1a03:af59%3]) with mapi id 15.20.7698.025; Thu, 27 Jun 2024 06:51:16 +0000 From: "Li, Pan2" To: "juzhe.zhong@rivai.ai" , gcc-patches CC: kito.cheng , Richard Biener , jeffreyalaw , Robin Dapp Subject: RE: [PATCH v1] RISC-V: Add testcases for vector truncate after .SAT_SUB Thread-Topic: [PATCH v1] RISC-V: Add testcases for vector truncate after .SAT_SUB Thread-Index: AQHaxvzyy+xsr5Ap4UKHKvc1y0QlMbHbLb+NgAABBJA= Date: Thu, 27 Jun 2024 06:51:16 +0000 Message-ID: References: <20240625124041.80080-1-pan2.li@intel.com> <3719BFEC151FEC73+2024062714463552609911@rivai.ai> In-Reply-To: <3719BFEC151FEC73+2024062714463552609911@rivai.ai> 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_|MW4PR11MB7150:EE_ x-ms-office365-filtering-correlation-id: c3eee6d4-5a0a-4547-83f6-08dc96758b18 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|1800799024|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?r9yFJb8kikaqkedVQeOPdzOzwopWbGLmcLh/BI8m1txdnpX897M+JXww9I48?= =?us-ascii?Q?XNYs7627Ovij6QNv28ApSC6STb3XiqLWWH3Fus/24yCQ6/Kdos62At3iGwaa?= =?us-ascii?Q?QZY6dvICsl4xFmiq15lq2VgT4m92d1niSYhznAo2ms+Za1h/gAWDiZHcXeNK?= =?us-ascii?Q?LIAb2silmyG9NXpgwhTZPUr0B6F/s9uFyWQ6jbwHAFA5avL0uQEEcdGLMRLb?= =?us-ascii?Q?/dV/sYWNzx/8i4bdm+ibXeMBifekDCHL+KMcZi0xzDeKgln5oGUErqLDje/u?= =?us-ascii?Q?fzuf9kUl+8ttXMBPT9bPdRA+HQV91joQsKLUXtvn8taHRPbqIIVqb2aAkIOU?= =?us-ascii?Q?Uf+2O07L1TR3JqQu3EnPDTqff+nHpedrZeAclSTUm4iaQs2pmfVTFkuk/wrD?= =?us-ascii?Q?cp+bBSY8JvkBY9WdJd3MMYsTxtcoY7cKlGK/F3O1gF2XiVNWQj0aZFTKB13r?= =?us-ascii?Q?BTo3xDHtSI6m8m+eH3/Z2MoRrB8AaZaJQswBU7EXkjk02927i0SRYqI2s3xG?= =?us-ascii?Q?OFkn/bQZz33xi5dBm85fF3epLgRiygTcR1B4mpxjh7c54iXQntp7Xx9Nt5ct?= =?us-ascii?Q?CnyUDnw+kKk8ouW6NQz+uUT+7zecInW5ZLOZYZ2nGnlO6HBHeoupAAiR35MO?= =?us-ascii?Q?C6OVippDr0s6Xb56pkKGod68b6w88Z3Hlyhaie/QaYHeIubS3BFY1852hStO?= =?us-ascii?Q?JhudwQyv8YtgbW2ADmHv/jOambQvqFCykdn+rzBuqZXnf0jRLf/shmd5KhxD?= =?us-ascii?Q?MxUTHS0GOHYUGjTwMkzlYmlrxElpx40aqnwki3ZRT7/6WEUgjWoUROtQitS9?= =?us-ascii?Q?V7bR8ieahJfJUKcI5iINkbTRPsiG3VVNf1+PxB/wI6ISIxbLwPEGo1ELmRQg?= =?us-ascii?Q?1TNNb20ZSV9DAlf7BjVnKxynxrIvsl2vkULNDXcx5X3tbykfd+qp3bW/duXQ?= =?us-ascii?Q?tSTOJfpPWdL90dkOI6QckXNHPZrmg/2e8+wBOVqIl08dfxR4AdO3oGqSF2E3?= =?us-ascii?Q?fadNhlaftgfWi2NZRHxzhZSe+UFsXvY4mGmNQeCvL3Zc/5TjSf57jjuPAwEk?= =?us-ascii?Q?2E8n/rOopE85W75SjUtbamOF3mc8CTr7lb4Egl6R1thj1Iv1F/RlYxev7phU?= =?us-ascii?Q?FsHZueJHS5hk9x1pvyFNol35u1iFNUDjfy6wUyZfDcfN1XrKU4W2hNVrt/fY?= =?us-ascii?Q?LOV7SDrSBXdfsNsYDPzXlsqqUyUGvSdN5DvrmmczXNAlK1O1z0qX6TKlufOY?= =?us-ascii?Q?IsLTUzffG6E9RrhwW7AHzRVj1E7eTD1urvguXS1t2r7C2inWJTTogTaqIi3W?= =?us-ascii?Q?q04BdCADMQ+cyCkmNXHFbJScoKh0drlGpqn5sHztktvidHJaAH0Wyxv6MU+u?= =?us-ascii?Q?76xpna8=3D?= 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:(13230040)(366016)(376014)(1800799024)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?8t4ejoDISlwDBPQIAf1CqS2e3w54UCK3YYmD7yfKqoA14yE1YMbA4b0v8hQu?= =?us-ascii?Q?/ii7N+HAyLzQhP+59DRWTKuDqQw1gNJOquNhyoIzKsjxzChBf39Bw41yKNus?= =?us-ascii?Q?kW1Ez/MZzcpm7tGlefT9ltaMMwBQ1GcS5qwAfv+g/2oOLrcpHiLtO/cNmWMc?= =?us-ascii?Q?FwOdS+/W6NgQg04VIZQlsnB0a95/V8YHs33T1g/WadAxWvT1809yhOxjC6Zz?= =?us-ascii?Q?3NkMiZCDBbbyOqWPRl0m2P/oYk/iHQB8PKXN8RPJpxj2xM/dWts7yRqmSTCp?= =?us-ascii?Q?dp5lu8/C/wFWr7sNq5KpyI6lfKpWeexg1AFp+k8XfIsQ/pppIvhqFZOOzaKe?= =?us-ascii?Q?On2rjo3SKG6dtCa2Ail3j0e3qEshwmCEW3w3VAhAx0sgC7o6pTChEv7WmUYR?= =?us-ascii?Q?UjauS7zaMArROz8K8bFYchdee0ZYno1GMFju9WTGyRlgRHgxhJ4yhX7nSiGp?= =?us-ascii?Q?zKe7UqvA72YylbQHs+cTg9JlU8IX5LkB7oTCE3mKMeMIMpAbro0L9cuzGGHp?= =?us-ascii?Q?xI+cAVhN5sJ4MTINyFTsGjBsH9dFs5QvxSumlxXf44JB65PxCxi8IJS2tQ2m?= =?us-ascii?Q?sxp2CS/v4yNe0IJBBCpOiDyVwYpA7IOSCLS9DJhDfJFemEiI/ExPwLFQQVTo?= =?us-ascii?Q?Em9m/hkEvyRDuidQKYPITH0okiM5X/9uIiNJ5N0th7NGixI6w7+1NfnzFg+b?= =?us-ascii?Q?owxEKsGsbt5/kMj8SDzPCL2Nkx0IYiOLi4Tk0QWgxLk1wmoqiGyr/1nSRnzi?= =?us-ascii?Q?SiuFTKsLbe5z46IiZcBLcnlNmj49WSgLbzmzu5x/O6ZDDl/+DYN7HwMakp/1?= =?us-ascii?Q?63vWQaqMDSG9arT8uoOC5XZ8x95/kBEYaSZ1fjz9c4kAUiWr3YKdQQW0QfIP?= =?us-ascii?Q?urAHEr04IqQ5sJx5YJ6ASaZRD98Ma81dCyKLVXeXX+8xbuL/aVUxZn/bFxZs?= =?us-ascii?Q?cNjXPGFoeozfohUAf2dHcY7B5BkVIoah6igU0/3KfN9y3QxMrPyOdddDlCeT?= =?us-ascii?Q?Cc9iFLPb9wlq9V0tk1JETt0xFD4+zSkHYeoUJhviJvECgs0mkWaS29DiqyHQ?= =?us-ascii?Q?C1fKbtj3rRnUa69YY4Y684D97DsqasERdfJ8GQ/Vm9AxAlKa7cjemAopMWQs?= =?us-ascii?Q?7ZwhqpjEb4KTchiEOywiWY0W8rNRKEwusDEpKbOE7tedyL1Ywac56nxlElZJ?= =?us-ascii?Q?JyFrOPIJ7kid3VgKE07YyBS0GyUF4IyvaVKia9re47MVJ4H4VIIVHQaWZjqc?= =?us-ascii?Q?lD9LB7OMxk0Logy0kHhvNgCuW0yCygKusMHip1kwplw1roW+/1vMbhtmC/hQ?= =?us-ascii?Q?vSGZAaQpnl3wjus0QOoV5XeCBY1PGOWRTl+mswXNfgHY5DZ9DCHJvV9B+2Pj?= =?us-ascii?Q?BtTsmsEstoDyakknkEoC5e5XqSeLK00f0CNAXrk6gJdJAvKaDsox+y0dGxII?= =?us-ascii?Q?H+LOibmjElp/pAyDbcnIP+yir7g70Zd5Oari85XMSZokzipXUoWeuCNm2AHZ?= =?us-ascii?Q?E7Mki9KHZx+BvQITL+bH0YoiqwOEuXzZkz4oBuBIfY7RdDM4eXvS29C1QgKp?= =?us-ascii?Q?sJLh3QLKk4vVaN8rHCw=3D?= Content-Type: multipart/alternative; boundary="_000_MW5PR11MB5908F27848BE52FF9379C175A9D72MW5PR11MB5908namp_" 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: c3eee6d4-5a0a-4547-83f6-08dc96758b18 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2024 06:51:16.8382 (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: uK8f1LmuzPBJbvl3PH1dhdoluF6rHBVg/bzhjQVRa+6DocIlz7xbupa577lDMRniBpn1PUvYQJE8P5qEJdWMNA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB7150 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-11.3 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_LOTSOFHASH,KAM_SHORT,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_NONE,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 List-Id: --_000_MW5PR11MB5908F27848BE52FF9379C175A9D72MW5PR11MB5908namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Committed, thanks Juzhe. Pan From: juzhe.zhong@rivai.ai Sent: Thursday, June 27, 2024 2:47 PM To: Li, Pan2 ; gcc-patches Cc: kito.cheng ; Richard Biener ; jeffreyalaw ; Robin Dapp ; Li, Pan2 Subject: Re: [PATCH v1] RISC-V: Add testcases for vector truncate after .SA= T_SUB Since middle-end patch is approved, LGTM this patch. Thanks for improving RVV vectorization. ________________________________ juzhe.zhong@rivai.ai From: pan2.li Date: 2024-06-25 20:40 To: gcc-patches CC: juzhe.zhong; kito.cheng; richard.guenther; jeffreyala= w; rdapp.gcc; Pan= Li Subject: [PATCH v1] RISC-V: Add testcases for vector truncate after .SAT_SUB From: Pan Li > This patch would like to add the test cases of the vector truncate after .SAT_SUB. Aka: #define DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(OUT_T, IN_T) \ void __attribute__((noinline)) \ vec_sat_u_sub_trunc_##OUT_T##_fmt_1 (OUT_T *out, IN_T *op_1, IN_T y, \ unsigned limit) \ { \ unsigned i; \ for (i =3D 0; i < limit; i++) \ { \ IN_T x =3D op_1[i]; \ out[i] =3D (OUT_T)(x >=3D y ? x - y : 0); \ } \ } The below 3 cases are included. DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint8_t, uint16_t) DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint16_t, uint32_t) DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint32_t, uint64_t) gcc/testsuite/ChangeLog: * gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h: Add helper test macros. * gcc.target/riscv/rvv/autovec/binop/vec_sat_binary_scalar.h: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-1.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-2.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-3.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-run-1.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-run-2.c: New test. * gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-run-3.c: New test. Signed-off-by: Pan Li > --- .../riscv/rvv/autovec/binop/vec_sat_arith.h | 19 +++++ .../rvv/autovec/binop/vec_sat_binary_scalar.h | 27 +++++++ .../rvv/autovec/binop/vec_sat_u_sub_trunc-1.c | 21 ++++++ .../rvv/autovec/binop/vec_sat_u_sub_trunc-2.c | 21 ++++++ .../rvv/autovec/binop/vec_sat_u_sub_trunc-3.c | 21 ++++++ .../autovec/binop/vec_sat_u_sub_trunc-run-1.c | 74 +++++++++++++++++++ .../autovec/binop/vec_sat_u_sub_trunc-run-2.c | 74 +++++++++++++++++++ .../autovec/binop/vec_sat_u_sub_trunc-run-3.c | 74 +++++++++++++++++++ 8 files changed, 331 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _binary_scalar.h create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _u_sub_trunc-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _u_sub_trunc-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _u_sub_trunc-3.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _u_sub_trunc-run-1.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _u_sub_trunc-run-2.c create mode 100644 gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat= _u_sub_trunc-run-3.c diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith= .h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h index d5c81fbe5a9..a3116033fb3 100644 --- a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_arith.h @@ -310,4 +310,23 @@ vec_sat_u_sub_##T##_fmt_10 (T *out, T *op_1, T *op_2, = unsigned limit) \ #define RUN_VEC_SAT_U_SUB_FMT_10(T, out, op_1, op_2, N) \ vec_sat_u_sub_##T##_fmt_10(out, op_1, op_2, N) +/*************************************************************************= *****/ +/* Saturation Sub Truncated (Unsigned and Signed) = */ +/*************************************************************************= *****/ +#define DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(OUT_T, IN_T) \ +void __attribute__((noinline)) \ +vec_sat_u_sub_trunc_##OUT_T##_fmt_1 (OUT_T *out, IN_T *op_1, IN_T y, \ + unsigned limit) \ +{ \ + unsigned i; \ + for (i =3D 0; i < limit; i++) \ + { \ + IN_T x =3D op_1[i]; \ + out[i] =3D (OUT_T)(x >=3D y ? x - y : 0); \ + } \ +} + +#define RUN_VEC_SAT_U_SUB_TRUNC_FMT_1(OUT_T, IN_T, out, op_1, y, N) \ + vec_sat_u_sub_trunc_##OUT_T##_fmt_1(out, op_1, y, N) + #endif diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_binar= y_scalar.h b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_binar= y_scalar.h new file mode 100644 index 00000000000..c79b180054e --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_binary_scala= r.h @@ -0,0 +1,27 @@ +#ifndef HAVE_DEFINED_VEC_SAT_BINARY_SCALAR +#define HAVE_DEFINED_VEC_SAT_BINARY_SCALAR + +int +main () +{ + unsigned i, k; + OUT_T out[N]; + + for (i =3D 0; i < sizeof (expect_data) / sizeof (expect_data[0]); i++) + { + IN_T *op_1 =3D op_1_data[i]; + IN_T op_2 =3D op_2_data[i]; + OUT_T *expect =3D expect_data[i]; + + RUN_VEC_SAT_BINARY (OUT_T, IN_T, out, op_1, op_2, N); + + for (k =3D 0; k < N; k++) + if (out[k] !=3D expect[k]) + __builtin_abort (); + } + + return 0; +} + +#endif + diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-1.c new file mode 100644 index 00000000000..dd9e3999a29 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-= 1.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-march=3Drv64gcv -mabi=3Dlp64d -O3 -ftree-vectorize -fdum= p-rtl-expand-details -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-skip-if "" { *-*-* } { "-flto" } } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "vec_sat_arith.h" + +/* +** vec_sat_u_sub_trunc_uint8_t_fmt_1: +** ... +** vsetvli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*e16,\s*m1,\s*ta,\s*ma +** ... +** vle16\.v\s+v[0-9]+,\s*0\([atx][0-9]+\) +** vssubu\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+ +** vsetvli\s+zero,\s*zero,\s*e8,\s*mf2,\s*ta,\s*ma +** vncvt\.x\.x\.w\s+v[0-9]+,\s*v[0-9]+ +** ... +*/ +DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint8_t, uint16_t) + +/* { dg-final { scan-rtl-dump-times ".SAT_SUB " 2 "expand" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-2.c new file mode 100644 index 00000000000..738d1465a01 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-= 2.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-march=3Drv64gcv -mabi=3Dlp64d -O3 -ftree-vectorize -fdum= p-rtl-expand-details -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-skip-if "" { *-*-* } { "-flto" } } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "vec_sat_arith.h" + +/* +** vec_sat_u_sub_trunc_uint16_t_fmt_1: +** ... +** vsetvli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*e32,\s*m1,\s*ta,\s*ma +** ... +** vle32\.v\s+v[0-9]+,\s*0\([atx][0-9]+\) +** vssubu\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+ +** vsetvli\s+zero,\s*zero,\s*e16,\s*mf2,\s*ta,\s*ma +** vncvt\.x\.x\.w\s+v[0-9]+,\s*v[0-9]+ +** ... +*/ +DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint16_t, uint32_t) + +/* { dg-final { scan-rtl-dump-times ".SAT_SUB " 2 "expand" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-3.c new file mode 100644 index 00000000000..b008b21cf0c --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-= 3.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-march=3Drv64gcv -mabi=3Dlp64d -O3 -ftree-vectorize -fdum= p-rtl-expand-details -fno-schedule-insns -fno-schedule-insns2" } */ +/* { dg-skip-if "" { *-*-* } { "-flto" } } */ +/* { dg-final { check-function-bodies "**" "" } } */ + +#include "vec_sat_arith.h" + +/* +** vec_sat_u_sub_trunc_uint32_t_fmt_1: +** ... +** vsetvli\s+[atx][0-9]+,\s*[atx][0-9]+,\s*e64,\s*m1,\s*ta,\s*ma +** ... +** vle64\.v\s+v[0-9]+,\s*0\([atx][0-9]+\) +** vssubu\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+ +** vsetvli\s+zero,\s*zero,\s*e32,\s*mf2,\s*ta,\s*ma +** vncvt\.x\.x\.w\s+v[0-9]+,\s*v[0-9]+ +** ... +*/ +DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint32_t, uint64_t) + +/* { dg-final { scan-rtl-dump-times ".SAT_SUB " 2 "expand" } } */ diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-run-1.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u= _sub_trunc-run-1.c new file mode 100644 index 00000000000..324648e6e31 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-= run-1.c @@ -0,0 +1,74 @@ +/* { dg-do run { target { riscv_v } } } */ +/* { dg-additional-options "-std=3Dc99" } */ + +#include "vec_sat_arith.h" + +#define OUT_T uint8_t +#define IN_T uint16_t +#define N 16 +#define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_SUB_TRUNC_FMT_1 + +DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(OUT_T, IN_T) + +OUT_T expect_data[][N] =3D { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }, + { + 254, 255, 4, 0, + 254, 255, 4, 0, + 254, 255, 4, 0, + 254, 255, 4, 0, + }, + { + 23, 0, 0, 2, + 23, 0, 0, 2, + 23, 0, 0, 2, + 23, 0, 0, 2, + }, + { + 254, 43, 0, 255, + 254, 43, 0, 255, + 254, 43, 0, 255, + 254, 43, 0, 255, + }, +}; + +IN_T op_1_data[][N] =3D { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }, + { + 65535, 256, 5, 0, + 65535, 256, 5, 0, + 65535, 256, 5, 0, + 65535, 256, 5, 0, + }, + { + 65535, 1024, 5, 65002, + 65535, 1024, 5, 65002, + 65535, 1024, 5, 65002, + 65535, 1024, 5, 65002, + }, + { + 65535, 300, 256, 512, + 65535, 300, 256, 512, + 65535, 300, 256, 512, + 65535, 300, 256, 512, + }, +}; + +IN_T op_2_data[] =3D { + 0, + 1, + 65000, + 257, +}; + +#include "vec_sat_binary_scalar.h" diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-run-2.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u= _sub_trunc-run-2.c new file mode 100644 index 00000000000..a9bf1dddf98 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-= run-2.c @@ -0,0 +1,74 @@ +/* { dg-do run { target { riscv_v } } } */ +/* { dg-additional-options "-std=3Dc99" } */ + +#include "vec_sat_arith.h" + +#define OUT_T uint16_t +#define IN_T uint32_t +#define N 16 +#define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_SUB_TRUNC_FMT_1 + +DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(OUT_T, IN_T) + +OUT_T expect_data[][N] =3D { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }, + { + 65534, 65535, 4, 0, + 65534, 65535, 4, 0, + 65534, 65535, 4, 0, + 65534, 65535, 4, 0, + }, + { + 43, 0, 0, 2, + 43, 0, 0, 2, + 43, 0, 0, 2, + 43, 0, 0, 2, + }, + { + 65532, 34484, 0, 65535, + 65532, 34484, 0, 65535, + 65532, 34484, 0, 65535, + 65532, 34484, 0, 65535, + }, +}; + +IN_T op_1_data[][N] =3D { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }, + { + 4294967295, 65536, 5, 0, + 4294967295, 65536, 5, 0, + 4294967295, 65536, 5, 0, + 4294967295, 65536, 5, 0, + }, + { + 4294967295, 1024, 5, 4294967254, + 4294967295, 1024, 5, 4294967254, + 4294967295, 1024, 5, 4294967254, + 4294967295, 1024, 5, 4294967254, + }, + { + 4294967295, 100023, 65536, 131074, + 4294967295, 100023, 65536, 131074, + 4294967295, 100023, 65536, 131074, + 4294967295, 100023, 65536, 131074, + }, +}; + +IN_T op_2_data[] =3D { + 0, + 1, + 4294967252, + 65539, +}; + +#include "vec_sat_binary_scalar.h" diff --git a/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub= _trunc-run-3.c b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u= _sub_trunc-run-3.c new file mode 100644 index 00000000000..1ea7467e8a6 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/rvv/autovec/binop/vec_sat_u_sub_trunc-= run-3.c @@ -0,0 +1,74 @@ +/* { dg-do run { target { riscv_v } } } */ +/* { dg-additional-options "-std=3Dc99" } */ + +#include "vec_sat_arith.h" + +#define OUT_T uint32_t +#define IN_T uint64_t +#define N 16 +#define RUN_VEC_SAT_BINARY RUN_VEC_SAT_U_SUB_TRUNC_FMT_1 + +DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(OUT_T, IN_T) + +OUT_T expect_data[][N] =3D { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }, + { + 4294967294, 4294967295, 4, 0, + 4294967294, 4294967295, 4, 0, + 4294967294, 4294967295, 4, 0, + 4294967294, 4294967295, 4, 0, + }, + { + 10, 0, 0, 2, + 10, 0, 0, 2, + 10, 0, 0, 2, + 10, 0, 0, 2, + }, + { + 4294967288, 99995992, 0, 1, + 4294967288, 99995992, 0, 1, + 4294967288, 99995992, 0, 1, + 4294967288, 99995992, 0, 1, + }, +}; + +IN_T op_1_data[][N] =3D { + { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }, + { + 18446744073709551615u, 4294967296, 5, 0, + 18446744073709551615u, 4294967296, 5, 0, + 18446744073709551615u, 4294967296, 5, 0, + 18446744073709551615u, 4294967296, 5, 0, + }, + { + 18446744073709551615u, 1024, 5, 18446744073709551607u, + 18446744073709551615u, 1024, 5, 18446744073709551607u, + 18446744073709551615u, 1024, 5, 18446744073709551607u, + 18446744073709551615u, 1024, 5, 18446744073709551607u, + }, + { + 18446744073709551615u, 4394963295, 65536, 4294967304, + 18446744073709551615u, 4394963295, 65536, 4294967304, + 18446744073709551615u, 4394963295, 65536, 4294967304, + 18446744073709551615u, 4394963295, 65536, 4294967304, + }, +}; + +IN_T op_2_data[] =3D { + 0, + 1, + 18446744073709551605u, + 4294967303, +}; + +#include "vec_sat_binary_scalar.h" -- 2.34.1 --_000_MW5PR11MB5908F27848BE52FF9379C175A9D72MW5PR11MB5908namp_--