From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1791) id 40196384FB5C; Mon, 20 Feb 2023 19:44:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 40196384FB5C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676922255; bh=HrxE9ViEQv//jncXPXjbHPgb4LR1SrddUqUVbENwZ8M=; h=From:To:Subject:Date:From; b=jeYUMwL6ch04410odurkhXqIwZodbxNN/K4RObp7Bqj2NGZ+J3axhaiw4fT1cru1x lLx1TkWBeYFeyhBfXBvZBJS5I9KJLXF8gtGoaGZ8hzWpkV3jBj3dV+I6nbz79em5K+ V3bPszoj/0HJlELWcwDnsVO381mGCUECDXrdE8U8= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Adhemerval Zanella To: glibc-cvs@sourceware.org Subject: [glibc] arm: Support gcc older than 10 for find_zero_all X-Act-Checkin: glibc X-Git-Author: Adhemerval Zanella X-Git-Refname: refs/heads/master X-Git-Oldrev: 3f98a5c027de375ffe34cf036f80bacb9a40a9be X-Git-Newrev: 97830304bb477f18b67b7bc11989fb3357da443e Message-Id: <20230220194415.40196384FB5C@sourceware.org> Date: Mon, 20 Feb 2023 19:44:15 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=97830304bb477f18b67b7bc11989fb3357da443e commit 97830304bb477f18b67b7bc11989fb3357da443e Author: Adhemerval Zanella Date: Mon Feb 20 13:46:36 2023 -0300 arm: Support gcc older than 10 for find_zero_all __builtin_arm_uqsub8 is only available on gcc newer or equal than 10. Checked on arm-linux-gnueabihf built with gcc 9. Reviewed-by: Richard Henderson Diff: --- sysdeps/arm/armv6t2/string-fza.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sysdeps/arm/armv6t2/string-fza.h b/sysdeps/arm/armv6t2/string-fza.h index 76274ccca7..d85ce86434 100644 --- a/sysdeps/arm/armv6t2/string-fza.h +++ b/sysdeps/arm/armv6t2/string-fza.h @@ -33,7 +33,13 @@ find_zero_all (op_t x) /* Use unsigned saturated subtraction from 1 in each byte. That leaves 1 for every byte that was zero. */ op_t ones = repeat_bytes (0x01); +#if __GNUC_PREREQ (10, 0) return __builtin_arm_uqsub8 (ones, x); +#else + op_t ret; + asm ("uqsub8 %0,%1,%2" : "=r"(ret) : "r"(ones), "r"(x)); + return ret; +#endif } /* Identify bytes that are equal between X1 and X2. */