[PATCH] aarch64: Improve strncmp for mutually misaligned inputs

Szabolcs Nagy szabolcs.nagy@arm.com
Tue Mar 13 13:12:00 GMT 2018


On 13/03/18 09:03, Siddhesh Poyarekar wrote:
> Ping!
> 
> On Tuesday 06 March 2018 07:17 PM, Siddhesh Poyarekar wrote:
>> The mutually misaligned inputs on aarch64 are compared with a simple
>> byte copy, which is not very efficient.  Enhance the comparison
>> similar to strcmp by loading a double-word at a time.  The peak
>> performance improvement (i.e. 4k maxlen comparisons) due to this on
>> the strncmp microbenchmark is as follows:
>>
>> falkor: 3.5x (up to 72% time reduction)
>> cortex-a73: 3.5x (up to 71% time reduction)
>> cortex-a53: 3.5x (up to 71% time reduction)
>>
>> All mutually misaligned inputs from 16 bytes maxlen onwards show
>> upwards of 15% improvement and there is no measurable effect on the
>> performance of aligned/mutually aligned inputs.
>>
>> 	* sysdeps/aarch64/strncmp.S (count): New macro.
>> 	(strncmp): Store misaligned length in SRC1 in COUNT.
>> 	(mutual_align): Adjust.
>> 	(misaligned8): Load dword at a time when it is safe.

OK to commit.

(it would be nice to have the equivalent change in newlib too..)



More information about the Libc-alpha mailing list