From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2089.outbound.protection.outlook.com [40.107.7.89]) by sourceware.org (Postfix) with ESMTPS id D8F8A3858C30 for ; Wed, 8 Mar 2023 10:57:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D8F8A3858C30 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2kItQnZmHOjpilRRo5Q4eGCuVZW79RvTVFN1IA/f0Sg=; b=Fy7U1pxDh+bKxnlHrATqw7Cg0OYLHRUm29hBnmcFc5gbyB7H5R51fMDY5K+2bJwxVnTm34501Vq1CKq4nWnCfxmOAw3ymBwBHRDVD6dyV4VrgVVGETms066fpyXyPOYhzFAIxsb1gs8Nwi4w1z49PWJlxNtcRKpElYs+CXsWKx8= Received: from FR3P281CA0025.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::23) by AS8PR08MB8634.eurprd08.prod.outlook.com (2603:10a6:20b:564::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Wed, 8 Mar 2023 10:57:46 +0000 Received: from VI1EUR03FT061.eop-EUR03.prod.protection.outlook.com (2603:10a6:d10:1c:cafe::8b) by FR3P281CA0025.outlook.office365.com (2603:10a6:d10:1c::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17 via Frontend Transport; Wed, 8 Mar 2023 10:57:45 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VI1EUR03FT061.mail.protection.outlook.com (100.127.144.125) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.31 via Frontend Transport; Wed, 8 Mar 2023 10:57:45 +0000 Received: ("Tessian outbound b29c0599cbc9:v135"); Wed, 08 Mar 2023 10:57:45 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: fcee49828ee75282 X-CR-MTA-TID: 64aa7808 Received: from 700fcd9c594d.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 99FAE580-0024-41F9-89BB-944239883B2F.1; Wed, 08 Mar 2023 10:57:38 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 700fcd9c594d.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 08 Mar 2023 10:57:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eRkf0uzCWwGiKYgEF0wG2JJjJwTd/OiC85LGLtssyLynj3KjgEypGZ57DdZe6rGvI9RHPEIZJtQOT4aOyTi5JMUlx5R+zLZnwGRal+3w+8/BZdHVAH85AdNZUrLNTieHcgOlJay6YVGGcIlgWoC6PH949qImzDbY8n0D/1EwAz9D3ScDv9+t1yAwAb6gYljuTcD00aP84ox+vIeBOVyLG3nhYwZOcMtfrEXTOFR3jgTmkc+gVaqeBFHfs7RPhKUoZhckRupbiK/pvJrxt3OrxwM+SmRTts3OBw33wtw8ddq43XEW76hlyvzUQltAYs4JWHRXHjAdhTO8dW5lnhM2cg== 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=2kItQnZmHOjpilRRo5Q4eGCuVZW79RvTVFN1IA/f0Sg=; b=iJ0MliV5DidjhLC23MAZZ89vA9wcKEO2jC4Ge89EZDy3PoCXIWtJz9zbQAKKG+8ucDdHRXQBo6NCoVhyasgUNk2oME1fvwEGSIwDpvLGhWDY/CfaI2F63888vAgHvT5CdpwXCiGdb8n+xbna+DjoFfB/AbEB8KYEWFugkEG40zxq8lNcitL6t+EAdqLaPdjE7uD2A0cVFH/5N8AanZYhxT0NGtaJTBThjIyUTZ+GUam2AeDmZZk5R175VaRtPtIDJUYH0UEJSEMT+L+azZYYw1UBjMQz1VzO/tIqz0TixmS61cP5mjjZKFiFE94Uai72w7Fktl1UsUWmarRyu0S18g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2kItQnZmHOjpilRRo5Q4eGCuVZW79RvTVFN1IA/f0Sg=; b=Fy7U1pxDh+bKxnlHrATqw7Cg0OYLHRUm29hBnmcFc5gbyB7H5R51fMDY5K+2bJwxVnTm34501Vq1CKq4nWnCfxmOAw3ymBwBHRDVD6dyV4VrgVVGETms066fpyXyPOYhzFAIxsb1gs8Nwi4w1z49PWJlxNtcRKpElYs+CXsWKx8= Received: from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20) by PAXPR08MB6606.eurprd08.prod.outlook.com (2603:10a6:102:157::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.17; Wed, 8 Mar 2023 10:57:30 +0000 Received: from PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::dc17:8fa2:cce5:3573]) by PAWPR08MB8982.eurprd08.prod.outlook.com ([fe80::dc17:8fa2:cce5:3573%7]) with mapi id 15.20.6156.025; Wed, 8 Mar 2023 10:57:30 +0000 From: Wilco Dijkstra To: 'GNU C Library' Subject: [PATCH] Benchtests: Remove simple_str(r)chr Thread-Topic: [PATCH] Benchtests: Remove simple_str(r)chr Thread-Index: AQHZUaykru6CBahYvUSWEbRnVlkRcg== Date: Wed, 8 Mar 2023 10:57:30 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAWPR08MB8982:EE_|PAXPR08MB6606:EE_|VI1EUR03FT061:EE_|AS8PR08MB8634:EE_ X-MS-Office365-Filtering-Correlation-Id: 2fd2fe49-5905-420c-2dc8-08db1fc3f2f2 x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: bMjfr57tsj+EWr0Abt5qfZ4A03fYpBWh9j+o/vuX0VlmSqwAIEoYQPn+nMiC18Xpcv8rsbJxdI0xgfcrGsfBY21dX6kbscx3/6eMPUCrsMuRXV3Apdwqrbj50vbwKz5bx5B9aveprJYGyD9nz2JMpP2XZ+w8YTMvdm9HM37mo94UvP4VtdKleVnPIwI93nbr2mjm4A2J2Mc7mp6TVITD5J4Y48imNbXlR4PY/z2g9y6C3QVpU581hla0id8rkTuRbnLKGBUvZyWlGomkz4SoG3L/HvI+KjyJRkDpifEHqS+2BwsHJuK+cI1rkNlPCwXxCV/hQkCRjeJRefRPx9SSpA4TnN2Lgj9fTAc1ZUhzHKj72D+qxuwWEIXrwJOcFWXBc+bYFe7Fq+3TMIHIBNzWa7dgVzxQ3Ug51fmOwZmX0k0FVXtmTezC5KAMcKZG1k0gxpDIwxBN91wpl2JBqNmg6C+wviYseyRgw5wh67rRBt/fOpo7OrZFEAhpHJpQXTHAq2u9xcGHXoytl+iwf7CFUjFD53hvbbIFM3qj054e8DrIwv48RADlXP8+11wTXupTi/gnvwCKjbaePNOvsJyQBBSQQ3l2KLSHuKuKs1nYFGF0y05I4h/MrBDiHQNaudwqLnfc+qazgqYEaVcMFA6C/Nc2n+vd893jdNOna1IB0BwfWDBiXQDlrqj/ZE5pktBQbpdtw6S4q1dg/7PzgYxE9A== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAWPR08MB8982.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(346002)(39860400002)(396003)(376002)(136003)(366004)(451199018)(76116006)(86362001)(41300700001)(64756008)(8676002)(66556008)(66476007)(66446008)(66946007)(6916009)(91956017)(55016003)(71200400001)(7696005)(33656002)(316002)(2906002)(186003)(478600001)(122000001)(38100700002)(38070700005)(6506007)(52536014)(9686003)(26005)(8936002)(5660300002);DIR:OUT;SFP:1101; Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6606 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VI1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8178ae28-3851-4c92-2924-08db1fc3e9d2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WFIZBBh6Lpxw8K4Q6ZYr/IePHyRKbTH0lcGAGo8v7kb/oO7ozMsBuRe2nag7HVyUVd4XeHGR2jdyj0UjiN+iwyeqQR4ozUsejtVlsD9/s4dkWU95Df23wTE5OwAel+cl0Z3cWnk1ncLhs+M1FNhsAbxT8jTiiFDV9W7XlaDPeFl+NqbYkaGwXXeD0ImZITrb8be3+w6k8ufp7qQ0qcUUVt7kz8JKAv/eDfhrJxFcmIXi6XFy7NiIGAeFbPGPz41Nfpbbdj3kkJNkLRv7QngEm1ShmZkttPOCH9Mqdfh7FbHsJw82ZlAUHiXwkMDesE69HC8xK0TfDHf8hyik33oDTgS0D2Ev3n5ew/g4Wa87B59IGyRADYjvi6YcjBSmXyci4LxbBUx6PmToXC3mLQfV2YihEg1ysPBcU+P/Ntrm2rijNiOSh1Ac8EaaqV3Gu2kd3FJtkheIpe0mpQcNoB3mpFKhMoyrWIS56rrpwj0Y147PuIog3av9N0fLdYSCfTuulMJlBQyQ0bN0/6kIg5supmbi2iuiWVZOBw6oEC5PAcGcHaijquDU7gk9bynxghixq/0whOxn8n9cvV5+kPz3G/ZamwFwyB6yzr7T1YwLdL3tnKbG+hpAd35LPbfjDnIpSp3r1y3cR5iJ01SoZSixAYDEDfDNH97NFSwhOznQs4HIpjsN74aboZ4IS5plbPZgniwVjf/L0j5cAF1O5e1cmg== X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230025)(4636009)(346002)(396003)(376002)(39860400002)(136003)(451199018)(40470700004)(46966006)(36840700001)(36860700001)(81166007)(82740400003)(47076005)(26005)(336012)(40460700003)(6506007)(9686003)(41300700001)(186003)(33656002)(52536014)(40480700001)(70206006)(8676002)(6916009)(2906002)(70586007)(8936002)(5660300002)(7696005)(356005)(316002)(55016003)(478600001)(86362001)(82310400005);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Mar 2023 10:57:45.6380 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2fd2fe49-5905-420c-2dc8-08db1fc3f2f2 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VI1EUR03FT061.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8634 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,UNPARSEABLE_RELAY 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: =0A= Instead of benchmarking slow byte oriented loops, include the optimized gen= eric=0A= strchr and strrchr implementation. Adjust iteration count to reduce benchma= rk time.=0A= =0A= ---=0A= =0A= diff --git a/benchtests/bench-strchr.c b/benchtests/bench-strchr.c=0A= index 420930d558e4c6f9de0eb4fc0bff4b536e4cfab3..116ec197603cc784e36d2a990eb= 9e47b7e90e74f 100644=0A= --- a/benchtests/bench-strchr.c=0A= +++ b/benchtests/bench-strchr.c=0A= @@ -39,7 +39,6 @@=0A= # ifdef USE_FOR_STRCHRNUL=0A= # undef STRCHR=0A= # define STRCHR strchrnul=0A= -# define simple_STRCHR simple_STRCHRNUL=0A= # endif /* !USE_FOR_STRCHRNUL */=0A= # define MIDDLE_CHAR 127=0A= # define SMALL_CHAR 23=0A= @@ -47,7 +46,6 @@=0A= # ifdef USE_FOR_STRCHRNUL=0A= # undef STRCHR=0A= # define STRCHR wcschrnul=0A= -# define simple_STRCHR simple_WCSCHRNUL=0A= # endif /* !USE_FOR_STRCHRNUL */=0A= # define MIDDLE_CHAR 1121=0A= # define SMALL_CHAR 851=0A= @@ -67,18 +65,19 @@=0A= =0A= typedef CHAR *(*proto_t) (const CHAR *, int);=0A= =0A= -CHAR *=0A= -simple_STRCHR (const CHAR *s, int c)=0A= -{=0A= - for (; *s !=3D (CHAR) c; ++s)=0A= - if (*s =3D=3D '\0')=0A= - return NULLRET ((CHAR *) s);=0A= - return (CHAR *) s;=0A= -}=0A= -=0A= -IMPL (simple_STRCHR, 0)=0A= IMPL (STRCHR, 1)=0A= =0A= +#ifndef WIDE=0A= +char *generic_strchr (const char *, int);=0A= +char *generic_strchrnul (const char *, int);=0A= +=0A= +# ifndef USE_FOR_STRCHRNUL=0A= +IMPL (generic_strchr, 0)=0A= +# else=0A= +IMPL (generic_strchrnul, 0)=0A= +# endif=0A= +#endif=0A= +=0A= #ifndef USE_FOR_STRCHRNUL=0A= /* Random benchmarks for strchr (if return is CHAR or NULL). The=0A= rational for the benchmark is returning null/char can be done with=0A= @@ -97,7 +96,7 @@ static void __attribute__ ((noinline, noclone))=0A= do_one_rand_plus_branch_test (json_ctx_t *json_ctx, impl_t *impl,=0A= const CHAR *s, const CHAR *c)=0A= {=0A= - size_t i, iters =3D INNER_LOOP_ITERS_LARGE;=0A= + size_t i, iters =3D INNER_LOOP_ITERS8;=0A= int must_execute =3D 0;=0A= timing_t start, stop, cur;=0A= TIMING_NOW (start);=0A= @@ -122,7 +121,7 @@ static void __attribute__ ((noinline, noclone))=0A= do_one_rand_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s,=0A= const CHAR *c)=0A= {=0A= - size_t i, iters =3D INNER_LOOP_ITERS_LARGE;=0A= + size_t i, iters =3D INNER_LOOP_ITERS8;=0A= timing_t start, stop, cur;=0A= TIMING_NOW (start);=0A= for (i =3D 0; i < iters; ++i)=0A= @@ -210,7 +209,7 @@ static void=0A= do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c,=0A= const CHAR *exp_res)=0A= {=0A= - size_t i, iters =3D INNER_LOOP_ITERS_LARGE;=0A= + size_t i, iters =3D INNER_LOOP_ITERS8;=0A= timing_t start, stop, cur;=0A= const CHAR *res =3D CALL (impl, s, c);=0A= if (res !=3D exp_res)=0A= @@ -401,3 +400,12 @@ test_main (void)=0A= }=0A= =0A= #include =0A= +=0A= +#ifndef WIDE=0A= +# undef STRCHRNUL=0A= +# define STRCHRNUL generic_strchrnul=0A= +# undef STRCHR=0A= +# define STRCHR generic_strchr=0A= +# include =0A= +# include =0A= +#endif=0A= diff --git a/benchtests/bench-strrchr.c b/benchtests/bench-strrchr.c=0A= index a33a657a275416b0cb0c42ba2689e3685c1b62aa..f846797770f9384fcde8eb3d66b= 3b8c720866452 100644=0A= --- a/benchtests/bench-strrchr.c=0A= +++ b/benchtests/bench-strrchr.c=0A= @@ -28,30 +28,20 @@=0A= #define BIG_CHAR MAX_CHAR=0A= =0A= #ifdef WIDE=0A= -# define SIMPLE_STRRCHR simple_wcsrchr=0A= # define SMALL_CHAR 1273=0A= #else=0A= -# define SIMPLE_STRRCHR simple_strrchr=0A= # define SMALL_CHAR 127=0A= -#endif=0A= =0A= -typedef CHAR *(*proto_t) (const CHAR *, int);=0A= -CHAR *SIMPLE_STRRCHR (const CHAR *, int);=0A= +char *=0A= +generic_strrchr (const char *, int);=0A= =0A= -IMPL (SIMPLE_STRRCHR, 0)=0A= -IMPL (STRRCHR, 1)=0A= +IMPL (generic_strrchr, 0)=0A= =0A= -CHAR *=0A= -SIMPLE_STRRCHR (const CHAR *s, int c)=0A= -{=0A= - const CHAR *ret =3D NULL;=0A= +#endif=0A= =0A= - for (; *s !=3D '\0'; ++s)=0A= - if (*s =3D=3D (CHAR) c)=0A= - ret =3D s;=0A= +typedef CHAR *(*proto_t) (const CHAR *, int);=0A= =0A= - return (CHAR *) (c =3D=3D '\0' ? s : ret);=0A= -}=0A= +IMPL (STRRCHR, 1)=0A= =0A= static void=0A= do_one_test (json_ctx_t *json_ctx, impl_t *impl, const CHAR *s, int c,=0A= @@ -237,3 +227,12 @@ test_main (void)=0A= }=0A= =0A= #include =0A= +=0A= +#define weak_alias(X,Y)=0A= +#define libc_hidden_builtin_def(X)=0A= +#ifndef WIDE=0A= +# undef STRRCHR=0A= +# define STRRCHR generic_strrchr=0A= +# define __memrchr memrchr=0A= +# include =0A= +#endif=0A= =0A=