From patchwork Wed Sep 3 13:53:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Jovan Dmitrovic X-Patchwork-Id: 119470 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 537EC385841B for ; Wed, 3 Sep 2025 13:56:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 537EC385841B Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=htecgroup.com header.i=@htecgroup.com header.a=rsa-sha256 header.s=selector1 header.b=cIZFanJ7 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from GVXPR05CU001.outbound.protection.outlook.com (mail-swedencentralazon11023118.outbound.protection.outlook.com [52.101.83.118]) by sourceware.org (Postfix) with ESMTPS id 25763385842E for ; Wed, 3 Sep 2025 13:53:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 25763385842E Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=htecgroup.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=htecgroup.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 25763385842E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=52.101.83.118 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1756907633; cv=pass; b=R8IDClVfVVBGeqURLqerlO1zJMyh26mXv2D/CEuznq7Bt6TF6dUjS5j3cjdk9n3IdGOao4Oy9Mhr34xwE7zywZyUFNnSjBRX0CWa2DzjCy5EW6PY2ElJMqI9FlmqErNMLoFrbvq/FiNAGG6AhW8nmajh6+yT/2H711LH3D2ruZ0= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1756907633; c=relaxed/simple; bh=uu7a6vwg7WwqiFIJvjIRXLoClUsf4E8m8ENbmdKza7o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=t4x72EIHAJ5EhybhsGgkSF2//fieQV26rxMjKnPL5p3BfQVsz77ozwjMKJcPlwrFQbU4czJOkp26qCy0Wkk4+C/iBY3Ou8+6SRGb+FD2pXxGUIsWnSCWf5PKST+RXJA0rLVMwACxmhizhIoiER1mQtKrkg0Cr9/uLOnfkRJIEHM= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h5Ou6MjaySyosxhwr5mADDhVaDYHe8fo533MCwkwf6ttfZsdOqNiEYkfI8ZiRFuEuUjjUybWQ0PiRQgGjiKlFV+cpR3TsNx+FtblKebYm92FApXbhV0USViuSCIGqnsjv2/TjEeNXDcjgz9+saYhmvFXLM8s2PFlqT4FS1UTjlsVnaG4cLq6InDaTvTF1uJd8PtM/hcxQkr9djH9pqww9uzWqEoStyEW55iZp9xzaEbn1nVwnjkdSGDWkbywRE+gnMmkqpxtLnfcgmgXruPw6zHCJq2G9WKMiLjUjH9pkSClSVWSPWRo/bWkpzFPF2oZUVoeqMmWeYS6sBh6sku8tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ghXrn1s1CNrK7IA2LilH2fuK4PMUz3YBJs1qVNKaITA=; b=OOrpip/8u/H8Iq0/F5zeiIbT/jG34gx6e26RSy7VySTgcoyAiBnaX92M/KndjKsb9GOLNncz3V1bMDVvImQ4z7X/wtyLxuKCF9mZK263yaNGSkFfrIlaIDsz1+Q1z2an9Pjc3siisgKenJ01LsXcp3MRT6uuLnDl8My1bmIyjqHGVy7dmyd1AZ+BrXwsoh0c9hUcjhdBro1YigmWbkckmxC/khfpJiM/9Gg9t/QgIQaeQmei1SsjyEW30jehR3H279QwpoWQ0bFh1n8e2EaYToKefs5X0ts/0At2k0fV+flcCPZ9+HcHae0v/GuDr12MzuuyOynozPlE9XodC20G7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=htecgroup.com; dmarc=pass action=none header.from=htecgroup.com; dkim=pass header.d=htecgroup.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=htecgroup.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ghXrn1s1CNrK7IA2LilH2fuK4PMUz3YBJs1qVNKaITA=; b=cIZFanJ7G0+4tYbZm/4CXaFbSohCHVBJwvwS9f4cT2/IXt/VrOFYMxI1+iD4b7qrl2MV6d5G/wN4Ss0FUZiNrz36TGPDDKpNjU+nB5I/RZ5b+l20A1ivVo2Q6X1YcKIpzs8LkAeLZz6aazxzCM7GQoENu6BubLy7AAud5U9+TNApRDXeHNj/3P4iKC3yajvxEvbA9x/YZ/rnthF1OzjxpVPRo6v3BNde+R8c+VLLEp4+A2Pb2cVzgmEsP4IVGVo32sDrqCEAWwvTXm+bstW0Jw8KLx0z2QOKfz/QA8HfjEgFaXrMt++7Cc2/FKATljqKHUlE+EvSwdaNvFjbnF/Bag== Received: from PAVPR09MB6451.eurprd09.prod.outlook.com (2603:10a6:102:304::13) by VI2PR09MB7379.eurprd09.prod.outlook.com (2603:10a6:800:220::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9052.29; Wed, 3 Sep 2025 13:53:37 +0000 Received: from PAVPR09MB6451.eurprd09.prod.outlook.com ([fe80::4569:9af3:a4cf:48d]) by PAVPR09MB6451.eurprd09.prod.outlook.com ([fe80::4569:9af3:a4cf:48d%6]) with mapi id 15.20.9031.023; Wed, 3 Sep 2025 13:53:37 +0000 From: Jovan Dmitrovic To: "libc-alpha@sourceware.org" CC: Djordje Todorovic , "Maciej W . Rozycki" , Aleksandar Rakic , Adhemerval Zanella Netto , Joseph Myers , Jovan Dmitrovic Subject: [PATCH v3 5/6] mips: Remove strcmp.S Thread-Topic: [PATCH v3 5/6] mips: Remove strcmp.S Thread-Index: AQHcHNolkKTQfwUAg0qzG49yTbUTlg== Date: Wed, 3 Sep 2025 13:53:37 +0000 Message-ID: <20250903135251.679132-6-jovan.dmitrovic@htecgroup.com> References: <20250618143327.2665823-1-jovan.dmitrovic@htecgroup.com> <20250903135251.679132-1-jovan.dmitrovic@htecgroup.com> In-Reply-To: <20250903135251.679132-1-jovan.dmitrovic@htecgroup.com> 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=htecgroup.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR09MB6451:EE_|VI2PR09MB7379:EE_ x-ms-office365-filtering-correlation-id: 08b3feba-c271-46b2-8c03-08ddeaf14865 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|38070700018; x-microsoft-antispam-message-info: =?iso-8859-1?q?x+FcY7guGowZFXUhobs/UBOqhS?= =?iso-8859-1?q?gwZTecJPpIXGKyfzu0e1/hM9PBt4fwsHrfywbh3RxZMKLAa0vKBa3ZYSJyqU?= =?iso-8859-1?q?s9CusVHANZRcEGUsX+3NOUnK01Cn3O3t6Gokjt9BHZFbwW4Ty0WhFvmz9d26?= =?iso-8859-1?q?dgGqt6cEDD9GF2W0UELbxDQMFTEAKkMe7irN1A3NPdmhLctkww0QqXC89kei?= =?iso-8859-1?q?/QINtJ9ATZn3ZEOaHuq0sJARQnNYDTS2JMcSzPaQGiaGIG8x4fgpeA4wQmGI?= =?iso-8859-1?q?ewVohfMP1ZURDNg/Rpm67HiGPI3Fz6u4WI9XPQq2pzc2ihUj6w1y2PH43tBG?= =?iso-8859-1?q?4WkO3WhmN7sfxfUd6qCZMIlsQNolGa7R8j1N6DoBq5I1WtjcOntX9iGh+hro?= =?iso-8859-1?q?Cud2sra6Higm2eJrI7hEhxw90OffjP0gXZglxOoVE1Vr0XN8lXvVVhTD74LY?= =?iso-8859-1?q?pKrfqqrYj4OEQ+Z14hZIs0gk8/KcgXuRHDjTjo7YQDgfE4YLIUMk8/ja5dwZ?= =?iso-8859-1?q?mR58zV/29SQB2uVcD2j05MnpE23wQiTP5D/p3vUJhciBe1dotuCLgEQ4qvop?= =?iso-8859-1?q?ZJz67JpH/U/sDlzlTwqpZwcJS915MxU1kQlCiKR7SjJBVkZMVYJR9XFOh0e/?= =?iso-8859-1?q?ebw1a3kq5N0XhLXg1KfVsWjYKSQ/ncj7q635iAsmKePSMqq3WONRfckkfVE0?= =?iso-8859-1?q?zVLogUvR7BV77Kl7VRBTodCl9Ls7ixZn6vh7YSaFTKm9r2pWMIMZoLnkynD0?= =?iso-8859-1?q?UA0wuzl6tSTom34kK2GdpE7Mlsr8J3zq/S+LC6i3qGWma+lLES7QDRoVglS2?= =?iso-8859-1?q?ntiTHADKKoHmAwN1rsrFG60elEmupCv0tWbMoeWJZr0lubm4+yPhS9Py6RXr?= =?iso-8859-1?q?nPOQHCdiQ1X8IkZAa3k4R7O9/WJQlqMwbq5sRFtk7eFSLla8DfB1kTYQAuK6?= =?iso-8859-1?q?C9oxlORZhpih6O+pQoWANg4m1MLVD+O0BNSd4oy/mvOzUtN16fftgWtI0lLH?= =?iso-8859-1?q?hTbpIV5fIsR9oCMS2+VCl9u2XgObIPhDW/ZekYF3B00tIGfa/Mizq97PXZsC?= =?iso-8859-1?q?wYJ16PRa8pYIXSORpsNWcT3TPVTFqkAIT7gAzjXiTRHY90C4Hsw0AtZNEkeU?= =?iso-8859-1?q?cuKgFyH1T6rSRW2nPXKkhJCT6y6wEaKxr+Q8thnJu2WflpB3JTxeMFqGDjRk?= =?iso-8859-1?q?7DlkoXlv0eS1YxipeVSEkd3YSd056DtPOawXM++JrroOx8QCZRxEku42BT+t?= =?iso-8859-1?q?C1oSsfrK+Q1n0dHf5nPxapHDrcYD8sTHWi4pwB8ul3JebrDQLbrr3YAtRXkq?= =?iso-8859-1?q?wZaMiLUqYZY/EjdCCA5t8d2YBYVSeb+uhutkQAFrwDze750Nj0InkrVhJfWb?= =?iso-8859-1?q?bC1HSVELTkXJnVIIuwv/eMndeuUdf9LWxk0jJy5LqxuCNMphmLpW2HRQgxqx?= =?iso-8859-1?q?Gyirq3X1w8VydLyn3YvlaWziq0a8S36WdvAajvx0UXmrVMVr+qtTAFxR9wfz?= =?iso-8859-1?q?7BVlPIysK1t4bjnkDm9HuWsTuRuuuz6oJDc2dOqAwrFci06pw=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAVPR09MB6451.eurprd09.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?q?qhNFr5oGkhueVyxO/a4pH3p?= =?iso-8859-1?q?JIbPAwToT+lHJR6lQrEC0h6ljmYxw3KxM8RLF/GuVnNKmUqd7ZGAib4T5i2x?= =?iso-8859-1?q?ZQjlNLgkZNalsjrN+74HsRw/g1g5g98g0bzl22dyGS0KlrklipuP7rWyWRyh?= =?iso-8859-1?q?ag9oVvfm2fECXcsWf6wZCGS1HN2+MxCk2lK5jZfCQE+O4xOIVgZ+mH7aag4M?= =?iso-8859-1?q?aGM0l+itC6ayBnJfGXHlvzB7+p3GAJd8VhqJ2LgwM0aznCMLMk1T5Wf7mGZ9?= =?iso-8859-1?q?ZO1ppr1/AJTOtJ1jWinHAM9+B2DtDC8DLudYnGXZznjfblbNZx11DlYIzK2t?= =?iso-8859-1?q?/gV7+Y1zhc3k7J8wrQyoBjTwPFyRr1ZhpXdwGhFBrYuu7LmcKpxQwYrQa+tq?= =?iso-8859-1?q?hEfZdgx01lTL5OR1MACXJvtbPUaY4aECyG3zOc5s9kHATXexNGV6lz9kwJsr?= =?iso-8859-1?q?sCNGBdJTaJXciep3fs1NSzDVxNaHdUvG5CbVeGI/jHNcpPmBXJ786Z43jczP?= =?iso-8859-1?q?TphkO2KdTMn4ZSJspD/dpeXUNAH/VPBBQwIwzL014Vqjf7PhfphPA+sLe/OM?= =?iso-8859-1?q?IGU0D7K88+1sttzKWvmm7Vm9My0obE7n34vTmOKTFidUTmvXkZUp44xycb0m?= =?iso-8859-1?q?mQj/17GIxzEGCBomaykVNC+DiihPh3DTiqoL1iexoDPYWDuFbAOiFbYRyB1O?= =?iso-8859-1?q?ELVhdF8YSofihk1b0RhMQLpAk5Ky66jl44nCd8j0n8InvggmnDZLfJsJuei1?= =?iso-8859-1?q?+qZth45mvUyhLKyuzZppiPNKqCKIKoXjRbNi6bTJHx6ScrmDKyL5M1JZPzAB?= =?iso-8859-1?q?rAN4OJg78dX8dmU4ta2U1inZXlYP53nXITNXpS1xgJrmaZveiuWvKbQUlTFF?= =?iso-8859-1?q?CNd1jBmrdTDreLkVQbD+iqy2TWGQaOT27ggYyyvtrdiP8YCrPQ8cLWmBJq4f?= =?iso-8859-1?q?ARUM+QhC4VvCDWkP3rmgOSt76BrzipyWW8yrMGQwGHCl0JTzYib2ZM9WEQu7?= =?iso-8859-1?q?VE1S88dhSYSerChojDiGPWd+UflkRi8bAV3edaukHg6zknxsl/Aeg7RB4jb2?= =?iso-8859-1?q?Dx2OtfriJGW9OoGUd9B2QadzK3yDNc7WRE3Yx1yNkiHLjBW/SOUA0tWz0B/j?= =?iso-8859-1?q?xTXL+3BBDmUt0EM6rgILvO9aC2P8YV4m7Tr+60avIgU2JDMaDJoUlv/WVlxU?= =?iso-8859-1?q?GRaYE6IqwBAgxLtfko1bajw1z3jpVJvdWWkarPPdQYLyJipJjRnfV4AbSIA6?= =?iso-8859-1?q?W5WuGL4DmUn43ntdDOqdYtnIWbgQjbozaLC41Ktc9j6tf2jD8vuX1kxWGSwq?= =?iso-8859-1?q?8Ed3gpnMZBnBwRKqH3cvlXJuj3ymjLUy9Wlch6btIOTMWH9s3cNaDCJ9+LGV?= =?iso-8859-1?q?ya0aPBujMMYfAoyeb7yT5qhwD4tpPZtOb/PloyIjOhTo8hKQ7DPuPzYJrde6?= =?iso-8859-1?q?L5tlPjII4tDd5Ht03bcKQNDeVvrFUeIBPVwN+u7oo089LQC8xiMzN5Ukzuhn?= =?iso-8859-1?q?7cLBVzTiMHl79BTvMUoVgVe1NlMAPIiIeTQO8LBYfjLVhls1GiVwOg2qVdQA?= =?iso-8859-1?q?X6a7kt57y6w/0ZJHfx5+D1jzPOaxjJnR0/EHIz5IzR2smPosOhZYJQmZhuoR?= =?iso-8859-1?q?P6yRH9AoV74pkRE1HWngi9sPFu76MqA2koliJ2lY5kFY6XGuLPIE1x/0mPgg?= =?iso-8859-1?q?=3D?= MIME-Version: 1.0 X-OriginatorOrg: htecgroup.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR09MB6451.eurprd09.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08b3feba-c271-46b2-8c03-08ddeaf14865 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Sep 2025 13:53:37.8559 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9f85665b-7efd-4776-9dfe-b6bfda2565ee X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HTITEdEgnH4JGETY0ooxMZa8jKN7Or3gvs08byiGiNvhKoxxkZbGYXUwBa6W+paM44XqIIvJEBlnDWUxbwDVFMh4e+I/nJGKRlMl2LJaEX0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI2PR09MB7379 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, 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 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Testing strcmp on MIPS hardware shows that strcmp.S performs worse than the combination of using the generic strcmp.c implementation alongside -funroll-loops. Suggested-by: Joseph Myers Reviewed-by: Adhemerval Zanella Reviewed-by: Philippe Mathieu-Daudé --- sysdeps/mips/Makefile | 4 + sysdeps/mips/strcmp.S | 249 ------------------------------------------ 2 files changed, 4 insertions(+), 249 deletions(-) delete mode 100644 sysdeps/mips/strcmp.S diff --git a/sysdeps/mips/Makefile b/sysdeps/mips/Makefile index d189973aa0..c86bd3af33 100644 --- a/sysdeps/mips/Makefile +++ b/sysdeps/mips/Makefile @@ -17,6 +17,10 @@ CPPFLAGS-crti.S += $(pic-ccflag) CPPFLAGS-crtn.S += $(pic-ccflag) endif +ifeq ($(subdir),string) +CFLAGS-strcmp.c += -funroll-loops +endif + ASFLAGS-.os += $(pic-ccflag) # libc.a and libc_p.a must be compiled with -fPIE/-fpie for static PIE. ASFLAGS-.o += $(pie-default) diff --git a/sysdeps/mips/strcmp.S b/sysdeps/mips/strcmp.S deleted file mode 100644 index b599d5d7ec..0000000000 --- a/sysdeps/mips/strcmp.S +++ /dev/null @@ -1,249 +0,0 @@ -/* Copyright (C) 2014-2025 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifdef ANDROID_CHANGES -# include "machine/asm.h" -# include "machine/regdef.h" -#elif _LIBC -# include -# include -# include -#elif defined _COMPILING_NEWLIB -# include "machine/asm.h" -# include "machine/regdef.h" -#else -# include -# include -#endif - -/* Technically strcmp should not read past the end of the strings being - compared. We will read a full word that may contain excess bits beyond - the NULL string terminator but unless ENABLE_READAHEAD is set, we will not - read the next word after the end of string. Setting ENABLE_READAHEAD will - improve performance but is technically illegal based on the definition of - strcmp. */ -#ifdef ENABLE_READAHEAD -# define DELAY_READ -#else -# define DELAY_READ nop -#endif - -/* Testing on a little endian machine showed using CLZ was a - performance loss, so we are not turning it on by default. */ -#if defined(ENABLE_CLZ) && (__mips_isa_rev > 1) -# define USE_CLZ -#endif - -/* Some asm.h files do not have the L macro definition. */ -#ifndef L -# if _MIPS_SIM == _ABIO32 -# define L(label) $L ## label -# else -# define L(label) .L ## label -# endif -#endif - -/* Some asm.h files do not have the PTR_ADDIU macro definition. */ -#ifndef PTR_ADDIU -# ifdef USE_DOUBLE -# define PTR_ADDIU daddiu -# else -# define PTR_ADDIU addiu -# endif -#endif - -/* Allow the routine to be named something else if desired. */ -#ifndef STRCMP_NAME -# define STRCMP_NAME strcmp -#endif - -#ifdef ANDROID_CHANGES -LEAF(STRCMP_NAME, 0) -#else -LEAF(STRCMP_NAME) -#endif - .set nomips16 - .set noreorder - - or t0, a0, a1 - andi t0,0x3 - bne t0, zero, L(byteloop) - -/* Both strings are 4 byte aligned at this point. */ - - lui t8, 0x0101 - ori t8, t8, 0x0101 - lui t9, 0x7f7f - ori t9, 0x7f7f - -#define STRCMP32(OFFSET) \ - lw v0, OFFSET(a0); \ - lw v1, OFFSET(a1); \ - subu t0, v0, t8; \ - bne v0, v1, L(worddiff); \ - nor t1, v0, t9; \ - and t0, t0, t1; \ - bne t0, zero, L(returnzero) - -L(wordloop): - STRCMP32(0) - DELAY_READ - STRCMP32(4) - DELAY_READ - STRCMP32(8) - DELAY_READ - STRCMP32(12) - DELAY_READ - STRCMP32(16) - DELAY_READ - STRCMP32(20) - DELAY_READ - STRCMP32(24) - DELAY_READ - STRCMP32(28) - PTR_ADDIU a0, a0, 32 - b L(wordloop) - PTR_ADDIU a1, a1, 32 - -L(returnzero): - j ra - move v0, zero - -L(worddiff): -#ifdef USE_CLZ - subu t0, v0, t8 - nor t1, v0, t9 - and t1, t0, t1 - xor t0, v0, v1 - or t0, t0, t1 -# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - wsbh t0, t0 - rotr t0, t0, 16 -# endif - clz t1, t0 - and t1, 0xf8 -# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - neg t1 - addu t1, 24 -# endif - rotrv v0, v0, t1 - rotrv v1, v1, t1 - and v0, v0, 0xff - and v1, v1, 0xff - j ra - subu v0, v0, v1 -#else /* USE_CLZ */ -# if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - andi t0, v0, 0xff - beq t0, zero, L(wexit01) - andi t1, v1, 0xff - bne t0, t1, L(wexit01) - - srl t8, v0, 8 - srl t9, v1, 8 - andi t8, t8, 0xff - beq t8, zero, L(wexit89) - andi t9, t9, 0xff - bne t8, t9, L(wexit89) - - srl t0, v0, 16 - srl t1, v1, 16 - andi t0, t0, 0xff - beq t0, zero, L(wexit01) - andi t1, t1, 0xff - bne t0, t1, L(wexit01) - - srl t8, v0, 24 - srl t9, v1, 24 -# else /* __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ */ - srl t0, v0, 24 - beq t0, zero, L(wexit01) - srl t1, v1, 24 - bne t0, t1, L(wexit01) - - srl t8, v0, 16 - srl t9, v1, 16 - andi t8, t8, 0xff - beq t8, zero, L(wexit89) - andi t9, t9, 0xff - bne t8, t9, L(wexit89) - - srl t0, v0, 8 - srl t1, v1, 8 - andi t0, t0, 0xff - beq t0, zero, L(wexit01) - andi t1, t1, 0xff - bne t0, t1, L(wexit01) - - andi t8, v0, 0xff - andi t9, v1, 0xff -# endif /* __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ */ - -L(wexit89): - j ra - subu v0, t8, t9 -L(wexit01): - j ra - subu v0, t0, t1 -#endif /* USE_CLZ */ - -/* It might seem better to do the 'beq' instruction between the two 'lbu' - instructions so that the nop is not needed but testing showed that this - code is actually faster (based on glibc strcmp test). */ -#define BYTECMP01(OFFSET) \ - lbu v0, OFFSET(a0); \ - lbu v1, OFFSET(a1); \ - beq v0, zero, L(bexit01); \ - nop; \ - bne v0, v1, L(bexit01) - -#define BYTECMP89(OFFSET) \ - lbu t8, OFFSET(a0); \ - lbu t9, OFFSET(a1); \ - beq t8, zero, L(bexit89); \ - nop; \ - bne t8, t9, L(bexit89) - -L(byteloop): - BYTECMP01(0) - BYTECMP89(1) - BYTECMP01(2) - BYTECMP89(3) - BYTECMP01(4) - BYTECMP89(5) - BYTECMP01(6) - BYTECMP89(7) - PTR_ADDIU a0, a0, 8 - b L(byteloop) - PTR_ADDIU a1, a1, 8 - -L(bexit01): - j ra - subu v0, v0, v1 -L(bexit89): - j ra - subu v0, t8, t9 - - .set at - .set reorder - -END(STRCMP_NAME) -#ifndef ANDROID_CHANGES -# ifdef _LIBC -libc_hidden_builtin_def (STRCMP_NAME) -# endif -#endif