From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (unknown [134.134.136.31]) by sourceware.org (Postfix) with ESMTPS id 4A4A7385841D for ; Mon, 31 Jul 2023 12:15:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4A4A7385841D 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=1690805709; x=1722341709; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=cLzQ1uYlywV6zUxD4V821d34dXdsBwe/6xAjSv2udFA=; b=mB6sL4vvn33x2B0hWN460wVdvbX6Qrg/Bly54MQHEGJkgXZpmSFUO+Z5 nexDgz7IT0NFnaVDlExwSCOn6KebOs44fElRbf3BnJCO3xNao700OcvQY DIpL1B69czrKBPhtgtVxYhIjCK296M/rI0X9lpLD4IPMqDURLH/HY+94F ifVZuds7jJHdngqpxS3Om6SlxgSCeBktGgoSMdrnqKZq58+4mQlkKmzV/ HafzRAHUfEMVuwPOft5gxB5pezVepTJZoIqzyCGIMCgjEoFuBGTY7bv3e p0Wtiu5HHyxwL5c+/R7WmtoOkrCME55+CPST6UdhabspjWX7oKXFH7tfH Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="432817907" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="432817907" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Jul 2023 05:15:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10788"; a="678316530" X-IronPort-AV: E=Sophos;i="6.01,244,1684825200"; d="scan'208";a="678316530" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga003.jf.intel.com with ESMTP; 31 Jul 2023 05:15:07 -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.27; Mon, 31 Jul 2023 05:15:07 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.27 via Frontend Transport; Mon, 31 Jul 2023 05:15:07 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.168) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.27; Mon, 31 Jul 2023 05:15:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UQvrpbaEzMSTmezUPrepBxqVDVs9teyDy/ISkxTArXhSIdtDL8BzB9UzTjMKEL77bY7LlGobqiR+EiOFanB4epWPjEXvPcOiyWi686p7wjI1+aGqzdTtLN8Saz2dnEyMBof5gSZdv/xYLMPkmI1D+X51kb0HkEsnIxeb7dVxMr+c3H0Fm/tqnUoykEwvYbYkF0hi9YwHyWiSHiHAxHv9s0IqHKaaBdDoHM5iU2T84iYiBqYFKha7nR14qr25Prkr9wx6MPObHrJT//Ry23mWNHJl8RqUJ6gxMNzPvKwe2FJTRqlGL+6wXdIdQ6JmJu/5FCkLKb0+K6sO15b2IY+U+Q== 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=MpOhr79wKqJmdSPTAyF5JSoqRfvAJpWWft5dq6XPMe8=; b=JKKkPYDS/38tDmPTMHN5OpZzeLyJk7oVtuzyBU9GgEUzS8xikJf7FbQR78Aid7DAfA5HWfcGB2BoRcCEEWWjjcK5DDIP9YCi6r8Zows4GbCInPB5dt0crzWKhwc7JR7auTNEz/+vh+cljgmDV5vm5jg8LJM7BMl0ttM2cGdVzddhiaKixhtg7UjFguEHXGic/gRO4QSFG+7PiABtyF82IdaXVh9b8NPmAlxCQ3LNCK4O1ZS8y0as/xkI+76HdHVJ33shElTQmchX6p2ekFSDhpu+AbzcCXwW73renQSxUEeZgAdeuVvl4EqG13Zfd+EV3iBNoQ0r2mI39mzGuUsnSw== 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 DS0PR11MB7411.namprd11.prod.outlook.com (2603:10b6:8:150::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6631.29; Mon, 31 Jul 2023 12:15:04 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::21a9:85fa:b8a8:8052]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::21a9:85fa:b8a8:8052%3]) with mapi id 15.20.6631.042; Mon, 31 Jul 2023 12:15:04 +0000 From: "Li, Pan2" To: Richard Sandiford , "juzhe.zhong@rivai.ai" CC: "gcc-patches@gcc.gnu.org" , "rguenther@suse.de" Subject: RE: [PATCH] internal-fn: Refine macro define of COND_* and COND_LEN_* internal functions Thread-Topic: [PATCH] internal-fn: Refine macro define of COND_* and COND_LEN_* internal functions Thread-Index: AQHZvvfR12H4tnJ7mEi+BJbkUcQc26/TsnkDgAAgw/A= Date: Mon, 31 Jul 2023 12:15:04 +0000 Message-ID: References: <20230725125832.1399590-1-juzhe.zhong@rivai.ai> 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_|DS0PR11MB7411:EE_ x-ms-office365-filtering-correlation-id: eb30243f-4b96-48ce-f47d-08db91bfc5e7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yeJp4Zr70+NtcbmDCDfqoMz5D+fudF5w7zxEsRdaa8tba6fqFuOigObVYWjdqHzkYCP0VUrNlFdRbd8x6nK6Vz3NCTZPSmKWGu4Id4VGb4MTE9Bgejuj+P8OtzYG+j51DJ7fR0QMmStqMhhemYqPwnLLmGz6oBZLtFLXcOTkhBrf3tF1k4xbGNYS4co5TCpu/6BQis0x6AHi0rdxIhV3ugGjse/MfiaBv7SiuJzEJPo2pbfEgDsjKUhyFgTvyOwM4w4oGVoit47CTU5Z6ZOrWOmB1nLwhls0tHNA2zQI77bYUkD+JbpGuEv8t6ovs+z0EoQVoFmeUob4sAimBpCuCdUhgR/cACrCBXzJaCrdrux0ha9FLv7AwC//ARA9tRbE3CupBr8VH6bKMdgTrfOJdNScbBaT6DCN4+9e/nkWCALx+E5mQSD1K+cw66deH9ovZWvuO4fBaWPq9ku3xlseW+WQh4qubBd/iuLhSdFNuTCc7dRbct566OkUxfr+hbVEmCTat9ahh9Zm2WPQhTx60xc+QS1GWig4XW4bcH0nM9BxS69SeResvL+7QVgf7yz6me54wIdhWf1VKEAWPkaqCsSNQI94r65k+MRdmEfar0puSwdmuIm2/qDPoIiEtWRr 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)(346002)(366004)(136003)(396003)(39860400002)(376002)(451199021)(83380400001)(7696005)(52536014)(82960400001)(54906003)(2906002)(110136005)(30864003)(55016003)(38070700005)(71200400001)(53546011)(26005)(9686003)(86362001)(478600001)(38100700002)(5660300002)(41300700001)(186003)(6506007)(66946007)(66446008)(66556008)(316002)(76116006)(64756008)(122000001)(33656002)(8676002)(8936002)(66476007)(4326008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Btgt3oo4XxakcW4GtOJMn+IxbCnVhdiADMm12gaI6pks+wNeMiBWxVfUIWIX?= =?us-ascii?Q?WpvhE9tkfv7dLc2l34mU4Pz2SFrywmRmlLP/DFMee4qnabNJqHLoWRrBgEG9?= =?us-ascii?Q?jS46P2W5DTRMPqYefdlFVLU43TgE8vkNL+SSQLm2s0XBfp99OnpPG+uZsRUv?= =?us-ascii?Q?nzRRaJZL0VVb2Z9M0nWQfsHhzdSuszZtpshNCQ5QfOuimS2oUiCvz9cu35rC?= =?us-ascii?Q?JmjruG/40xPanLH64Xz0F9Co2d/OlzQpEs3FcLQgJT5ChdSqLDBPkI1k8ETz?= =?us-ascii?Q?hEkjMLk1Gdhdl5vM0JIAQ74dgYS8sTwcRd3luYUSK9FB+9Z+4vGzLK6mpVoP?= =?us-ascii?Q?URBZIp6ZrtOWoj5XXL3j1Zz1znPpphf1W7CKMEb1GnJz2Ri9MJIi8NQ4CdWA?= =?us-ascii?Q?WNCM22WeQOAHCfCPwsjBJenyjQUVNLJEotFeD5bLxcGNms6Fzr1Uo+6rbm13?= =?us-ascii?Q?XsdofKrDgB9kkhBIy9P9JTgjMkXtgxmwf9BqRVclj8xjmQqZ5cljvDyWRImW?= =?us-ascii?Q?I/skHbY/VCcQk7IAR3KmW4fUKd7pS6W67kQTpFWcLQk4S8TTlw0OUZKVdCVn?= =?us-ascii?Q?ciF+S76NuTnzzI6IXPSfiCXl6Zkz1cD0KG/m7N33BzY4t825yjFgsia6POJQ?= =?us-ascii?Q?fXYrQLELKmDbAHaZ8Km5WGiWWJ2YulW7P/1ma1BG+B6kC9GLT1yNGLohzg4M?= =?us-ascii?Q?V2c84/Z5KD65JytAytkhWqeXOfY0Z//W/+epkId1WQTd1XvBUljh57LZ2iBZ?= =?us-ascii?Q?KxgP3reGAgrOejZXBoJcLQm90o9OHd7pwP5V4i5ko5Rgs9Dca3geRYtGKePm?= =?us-ascii?Q?/vQxwrZ8Z7AD9TsIGVZ+6Y00pNjGZ1ZwncU5cBuwWlKWAtonoGElKN+TaKXN?= =?us-ascii?Q?sdLrIsacYGK8W1qOZG9qE1SRWOR8TWuiuGfkSZNWi8ASfujp3cdmCOggGO5e?= =?us-ascii?Q?Yzv9jgX9kgplm+CWzEBP8gJrWdL0QV1yIqb8ZU7h0+3km8yFmajldG4qzjUB?= =?us-ascii?Q?/ADKRS9TZTJaojt1LxRBEcfSkfuPzALLrtfOhP21KALd4WD3QYglaOQgUrEh?= =?us-ascii?Q?5GKPrhKAad+fAKrD8YKMB/gLGjk848sGW/4ieUwOsntdI+AzKCr12+mbyGSm?= =?us-ascii?Q?FxGQDskzNk25Iqhn8PbE/ePfa0Nr2ER5zU/NbeE4WxRt6gZT+6J8bNaI3dne?= =?us-ascii?Q?hpMWzEdvdE8ejiNScFTE07ufsHEtEEXucyMFDW9nzvz6PjJ4IajVLOJ6U28Q?= =?us-ascii?Q?FOcUsNwfaS6nMLONeEtuggJ05yeXjeJo/e1BE6y6+gO+aA3W4HtT8iX7Agqv?= =?us-ascii?Q?s9OefQWchpkyRFC8ZM2bvyrYxF99Ads21Kjq0r1FIiEKyBDaCqbFBWKwgrIU?= =?us-ascii?Q?HbQdJSsduGkbAz8XkOjbYB6I5Ep9uYKh2jxDBr8qY78hID1dGg705hrGPseT?= =?us-ascii?Q?X6AZ1rbpTNNMWqDUrFfTVPHDe3AYYPX2iKGEAH3CmLtCKHJMf5EFZAHCvF8Y?= =?us-ascii?Q?BalqAGqSfnCaGWw9+FNWtTBqxWWDxJGeqD59JYVzhgsBlYhIqDP0tMVs+8sR?= =?us-ascii?Q?hKc5LTp++TUB/oSanbc=3D?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable 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: eb30243f-4b96-48ce-f47d-08db91bfc5e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Jul 2023 12:15:04.7745 (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: 6yteJeVKKv5V7+pgzG1Nktnc78zCG4ImEJdr8e2pphtjZhkh6ut7hCnVEaHFH3z8E62QGuuoSyya+kPZmZmA/w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR11MB7411 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UPPERCASE_50_75 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: Committed, thanks Richard. Pan -----Original Message----- From: Gcc-patches On = Behalf Of Richard Sandiford via Gcc-patches Sent: Monday, July 31, 2023 6:17 PM To: juzhe.zhong@rivai.ai Cc: gcc-patches@gcc.gnu.org; rguenther@suse.de Subject: Re: [PATCH] internal-fn: Refine macro define of COND_* and COND_LE= N_* internal functions juzhe.zhong@rivai.ai writes: > From: Ju-Zhe Zhong > > Hi, Richard and Richi. > > Base on previous disscussions, we should make COND_* and COND_LEN_* > consistent. > > So, this patch define these internal function together by these 2 > wrappers: > > #ifndef DEF_INTERNAL_COND_FN > #define DEF_INTERNAL_COND_FN(NAME, FLAGS, OPTAB, TYPE) = \ > DEF_INTERNAL_OPTAB_FN (COND_##NAME, FLAGS, cond_##OPTAB, cond_##TYPE) = \ > DEF_INTERNAL_OPTAB_FN (COND_LEN_##NAME, FLAGS, cond_len_##OPTAB, = \ > cond_len_##TYPE) > #endif > > #ifndef DEF_INTERNAL_SIGNED_COND_FN > #define DEF_INTERNAL_SIGNED_COND_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB, = \ > UNSIGNED_OPTAB, TYPE) \ > DEF_INTERNAL_SIGNED_OPTAB_FN (COND_##NAME, FLAGS, SELECTOR, = \ > cond_##SIGNED_OPTAB, cond_##UNSIGNED_OPTAB, \ > cond_##TYPE) \ > DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_##NAME, FLAGS, SELECTOR, = \ > cond_len_##SIGNED_OPTAB, \ > cond_len_##UNSIGNED_OPTAB, cond_len_##TYPE) > #endif > > Bootstrap and Regression on X86 passed. > Ok for trunk ? > > gcc/ChangeLog: > > * internal-fn.def (DEF_INTERNAL_COND_FN): New macro. > (DEF_INTERNAL_SIGNED_COND_FN): Ditto. > (COND_ADD): Remove. > (COND_SUB): Ditto. > (COND_MUL): Ditto. > (COND_DIV): Ditto. > (COND_MOD): Ditto. > (COND_RDIV): Ditto. > (COND_MIN): Ditto. > (COND_MAX): Ditto. > (COND_FMIN): Ditto. > (COND_FMAX): Ditto. > (COND_AND): Ditto. > (COND_IOR): Ditto. > (COND_XOR): Ditto. > (COND_SHL): Ditto. > (COND_SHR): Ditto. > (COND_FMA): Ditto. > (COND_FMS): Ditto. > (COND_FNMA): Ditto. > (COND_FNMS): Ditto. > (COND_NEG): Ditto. > (COND_LEN_ADD): Ditto. > (COND_LEN_SUB): Ditto. > (COND_LEN_MUL): Ditto. > (COND_LEN_DIV): Ditto. > (COND_LEN_MOD): Ditto. > (COND_LEN_RDIV): Ditto. > (COND_LEN_MIN): Ditto. > (COND_LEN_MAX): Ditto. > (COND_LEN_FMIN): Ditto. > (COND_LEN_FMAX): Ditto. > (COND_LEN_AND): Ditto. > (COND_LEN_IOR): Ditto. > (COND_LEN_XOR): Ditto. > (COND_LEN_SHL): Ditto. > (COND_LEN_SHR): Ditto. > (COND_LEN_FMA): Ditto. > (COND_LEN_FMS): Ditto. > (COND_LEN_FNMA): Ditto. > (COND_LEN_FNMS): Ditto. > (COND_LEN_NEG): Ditto. > (ADD): New macro define. > (SUB): Ditto. > (MUL): Ditto. > (DIV): Ditto. > (MOD): Ditto. > (RDIV): Ditto. > (MIN): Ditto. > (MAX): Ditto. > (FMIN): Ditto. > (FMAX): Ditto. > (AND): Ditto. > (IOR): Ditto. > (XOR): Ditto. > (SHL): Ditto. > (SHR): Ditto. > (FMA): Ditto. > (FMS): Ditto. > (FNMA): Ditto. > (FNMS): Ditto. > (NEG): Ditto. OK, thanks. (And sorry for the slow review.) Richard > --- > gcc/internal-fn.def | 123 ++++++++++++++++++++------------------------ > 1 file changed, 56 insertions(+), 67 deletions(-) > > diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def > index 04f3812326e..bf6825c5d00 100644 > --- a/gcc/internal-fn.def > +++ b/gcc/internal-fn.def > @@ -34,10 +34,12 @@ along with GCC; see the file COPYING3. If not see > UNSIGNED_OPTAB, TYPE) > DEF_INTERNAL_FLT_FN (NAME, FLAGS, OPTAB, TYPE) > DEF_INTERNAL_INT_FN (NAME, FLAGS, OPTAB, TYPE) > + DEF_INTERNAL_COND_FN (NAME, FLAGS, OPTAB, TYPE) > + DEF_INTERNAL_SIGNED_COND_FN (NAME, FLAGS, OPTAB, TYPE) > =20 > where NAME is the name of the function, FLAGS is a set of > ECF_* flags and FNSPEC is a string describing functions fnspec. > - =20 > + > DEF_INTERNAL_OPTAB_FN defines an internal function that maps to a > direct optab. The function should only be called with a given > set of types if the associated optab is available for the modes > @@ -74,7 +76,8 @@ along with GCC; see the file COPYING3. If not see > =20 > - cond_len_unary: a conditional unary optab, such as cond_len_neg > - cond_len_binary: a conditional binary optab, such as cond_len_add > - - cond_len_ternary: a conditional ternary optab, such as cond_len_fma= _rev > + - cond_len_ternary: a conditional ternary optab, such as > + cond_len_fma_rev > =20 > DEF_INTERNAL_SIGNED_OPTAB_FN defines an internal function that > maps to one of two optabs, depending on the signedness of an input. > @@ -106,6 +109,16 @@ along with GCC; see the file COPYING3. If not see > These five internal functions will require two optabs each, a SIGNED_= OPTAB > and an UNSIGNED_OTPAB. > =20 > + DEF_INTERNAL_COND_FN is a wrapper that defines 2 internal functions w= ith > + DEF_INTERNAL_OPTAB_FN: > + - One is COND_* operations that are predicated by mask only. Such ope= rations > + make sense for both vectors and scalars. > + - The other is COND_LEN_* operations that are predicated by mask and = len > + both. Such operations only make sense for vectors. > + > + DEF_INTERNAL_SIGNED_COND_FN is like DEF_INTERNAL_COND_FN but defines = intenal > + functions with DEF_INTERNAL_SIGNED_OPTAB_FN. > + > Each entry must have a corresponding expander of the form: > =20 > void expand_NAME (gimple_call stmt) > @@ -153,6 +166,24 @@ along with GCC; see the file COPYING3. If not see > DEF_INTERNAL_SIGNED_OPTAB_FN (NAME ## _ODD, FLAGS, SELECTOR, SOPTAB##_= odd, UOPTAB##_odd, TYPE) > #endif > =20 > +#ifndef DEF_INTERNAL_COND_FN > +#define DEF_INTERNAL_COND_FN(NAME, FLAGS, OPTAB, TYPE) = \ > + DEF_INTERNAL_OPTAB_FN (COND_##NAME, FLAGS, cond_##OPTAB, cond_##TYPE) = \ > + DEF_INTERNAL_OPTAB_FN (COND_LEN_##NAME, FLAGS, cond_len_##OPTAB, = \ > + cond_len_##TYPE) > +#endif > + > +#ifndef DEF_INTERNAL_SIGNED_COND_FN > +#define DEF_INTERNAL_SIGNED_COND_FN(NAME, FLAGS, SELECTOR, SIGNED_OPTAB,= \ > + UNSIGNED_OPTAB, TYPE) \ > + DEF_INTERNAL_SIGNED_OPTAB_FN (COND_##NAME, FLAGS, SELECTOR, = \ > + cond_##SIGNED_OPTAB, cond_##UNSIGNED_OPTAB, \ > + cond_##TYPE) \ > + DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_##NAME, FLAGS, SELECTOR, = \ > + cond_len_##SIGNED_OPTAB, \ > + cond_len_##UNSIGNED_OPTAB, cond_len_##TYPE) > +#endif > + > DEF_INTERNAL_OPTAB_FN (MASK_LOAD, ECF_PURE, maskload, mask_load) > DEF_INTERNAL_OPTAB_FN (LOAD_LANES, ECF_CONST, vec_load_lanes, load_lanes= ) > DEF_INTERNAL_OPTAB_FN (MASK_LOAD_LANES, ECF_PURE, > @@ -220,71 +251,29 @@ DEF_INTERNAL_SIGNED_OPTAB_FN (MULHS, ECF_CONST | EC= F_NOTHROW, first, > DEF_INTERNAL_SIGNED_OPTAB_FN (MULHRS, ECF_CONST | ECF_NOTHROW, first, > smulhrs, umulhrs, binary) > =20 > -DEF_INTERNAL_OPTAB_FN (COND_ADD, ECF_CONST, cond_add, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_SUB, ECF_CONST, cond_sub, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_MUL, ECF_CONST, cond_smul, cond_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_DIV, ECF_CONST, first, > - cond_sdiv, cond_udiv, cond_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_MOD, ECF_CONST, first, > - cond_smod, cond_umod, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_RDIV, ECF_CONST, cond_sdiv, cond_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_MIN, ECF_CONST, first, > - cond_smin, cond_umin, cond_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_MAX, ECF_CONST, first, > - cond_smax, cond_umax, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_FMIN, ECF_CONST, cond_fmin, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_FMAX, ECF_CONST, cond_fmax, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_AND, ECF_CONST | ECF_NOTHROW, > - cond_and, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_IOR, ECF_CONST | ECF_NOTHROW, > - cond_ior, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_XOR, ECF_CONST | ECF_NOTHROW, > - cond_xor, cond_binary) > -DEF_INTERNAL_OPTAB_FN (COND_SHL, ECF_CONST | ECF_NOTHROW, > - cond_ashl, cond_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_SHR, ECF_CONST | ECF_NOTHROW, first, > - cond_ashr, cond_lshr, cond_binary) > - > -DEF_INTERNAL_OPTAB_FN (COND_FMA, ECF_CONST, cond_fma, cond_ternary) > -DEF_INTERNAL_OPTAB_FN (COND_FMS, ECF_CONST, cond_fms, cond_ternary) > -DEF_INTERNAL_OPTAB_FN (COND_FNMA, ECF_CONST, cond_fnma, cond_ternary) > -DEF_INTERNAL_OPTAB_FN (COND_FNMS, ECF_CONST, cond_fnms, cond_ternary) > - > -DEF_INTERNAL_OPTAB_FN (COND_NEG, ECF_CONST, cond_neg, cond_unary) > - > -DEF_INTERNAL_OPTAB_FN (COND_LEN_ADD, ECF_CONST, cond_len_add, cond_len_b= inary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_SUB, ECF_CONST, cond_len_sub, cond_len_b= inary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_MUL, ECF_CONST, cond_len_smul, cond_len_= binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_DIV, ECF_CONST, first, cond_len_s= div, > - cond_len_udiv, cond_len_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_MOD, ECF_CONST, first, cond_len_s= mod, > - cond_len_umod, cond_len_binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_RDIV, ECF_CONST, cond_len_sdiv, cond_len= _binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_MIN, ECF_CONST, first, cond_len_s= min, > - cond_len_umin, cond_len_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_MAX, ECF_CONST, first, cond_len_s= max, > - cond_len_umax, cond_len_binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_FMIN, ECF_CONST, cond_len_fmin, cond_len= _binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_FMAX, ECF_CONST, cond_len_fmax, cond_len= _binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_AND, ECF_CONST | ECF_NOTHROW, cond_len_a= nd, > - cond_len_binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_IOR, ECF_CONST | ECF_NOTHROW, cond_len_i= or, > - cond_len_binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_XOR, ECF_CONST | ECF_NOTHROW, cond_len_x= or, > - cond_len_binary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_SHL, ECF_CONST | ECF_NOTHROW, cond_len_a= shl, > - cond_len_binary) > -DEF_INTERNAL_SIGNED_OPTAB_FN (COND_LEN_SHR, ECF_CONST | ECF_NOTHROW, fir= st, > - cond_len_ashr, cond_len_lshr, cond_len_binary) > - > -DEF_INTERNAL_OPTAB_FN (COND_LEN_FMA, ECF_CONST, cond_len_fma, cond_len_t= ernary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_FMS, ECF_CONST, cond_len_fms, cond_len_t= ernary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_FNMA, ECF_CONST, cond_len_fnma, > - cond_len_ternary) > -DEF_INTERNAL_OPTAB_FN (COND_LEN_FNMS, ECF_CONST, cond_len_fnms, > - cond_len_ternary) > - > -DEF_INTERNAL_OPTAB_FN (COND_LEN_NEG, ECF_CONST, cond_len_neg, cond_len_u= nary) > +DEF_INTERNAL_COND_FN (ADD, ECF_CONST, add, binary) > +DEF_INTERNAL_COND_FN (SUB, ECF_CONST, sub, binary) > +DEF_INTERNAL_COND_FN (MUL, ECF_CONST, smul, binary) > +DEF_INTERNAL_SIGNED_COND_FN (DIV, ECF_CONST, first, sdiv, udiv, binary) > +DEF_INTERNAL_SIGNED_COND_FN (MOD, ECF_CONST, first, smod, umod, binary) > +DEF_INTERNAL_COND_FN (RDIV, ECF_CONST, sdiv, binary) > +DEF_INTERNAL_SIGNED_COND_FN (MIN, ECF_CONST, first, smin, umin, binary) > +DEF_INTERNAL_SIGNED_COND_FN (MAX, ECF_CONST, first, smax, umax, binary) > +DEF_INTERNAL_COND_FN (FMIN, ECF_CONST, fmin, binary) > +DEF_INTERNAL_COND_FN (FMAX, ECF_CONST, fmax, binary) > +DEF_INTERNAL_COND_FN (AND, ECF_CONST | ECF_NOTHROW, and, binary) > +DEF_INTERNAL_COND_FN (IOR, ECF_CONST | ECF_NOTHROW, ior, binary) > +DEF_INTERNAL_COND_FN (XOR, ECF_CONST | ECF_NOTHROW, xor, binary) > +DEF_INTERNAL_COND_FN (SHL, ECF_CONST | ECF_NOTHROW, ashl, binary) > +DEF_INTERNAL_SIGNED_COND_FN (SHR, ECF_CONST | ECF_NOTHROW, first, ashr, = lshr, > + binary) > + > +DEF_INTERNAL_COND_FN (FMA, ECF_CONST, fma, ternary) > +DEF_INTERNAL_COND_FN (FMS, ECF_CONST, fms, ternary) > +DEF_INTERNAL_COND_FN (FNMA, ECF_CONST, fnma, ternary) > +DEF_INTERNAL_COND_FN (FNMS, ECF_CONST, fnms, ternary) > + > +DEF_INTERNAL_COND_FN (NEG, ECF_CONST, neg, unary) > =20 > DEF_INTERNAL_OPTAB_FN (RSQRT, ECF_CONST, rsqrt, unary)