diff options
Diffstat (limited to 'sysdeps/arm')
-rw-r--r-- | sysdeps/arm/armv6t2/string-fza.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/arm/armv6t2/string-fza.h b/sysdeps/arm/armv6t2/string-fza.h index 76274cc..d85ce86 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. */ |