[PATCH] aarch64: optimized memcpy implementation for thunderx2

Anton Youdkevitch anton.youdkevitch@bell-sw.com
Wed Oct 3 15:31:00 GMT 2018


Richard,

On 03.10.2018 18:00, Richard Henderson wrote:
> On 10/1/18 11:22 AM, Anton Youdkevitch wrote:
>> +#define EXT_SIZE 1
>> +	ext     A_v.16b, C_v.16b, D_v.16b, 16-EXT_SIZE
>> +	ext     B_v.16b, D_v.16b, E_v.16b, 16-EXT_SIZE
>> +	subs    count, count, 32
>> +	b.ge    2f
>> +1:
>> +	stp     A_q, B_q, [dst], #32
>> +	ext     H_v.16b, E_v.16b, F_v.16b, 16-EXT_SIZE
>> +	ext     I_v.16b, F_v.16b, G_v.16b, 16-EXT_SIZE
>> +	stp     H_q, I_q, [dst], #16
>> +	add     dst, dst, tmp1
>> +	str     G_q, [dst], #16
>> +	b       L(copy_long_check32)
>> +2:
>> +	stp     A_q, B_q, [dst], #32
>> +	prfm    pldl1strm, [src, MEMCPY_PREFETCH_LDR]
>> +	ldp     D_q, J_q, [src], #32
>> +	ext     H_v.16b, E_v.16b, F_v.16b, 16-EXT_SIZE
>> +	ext     I_v.16b, F_v.16b, G_v.16b, 16-EXT_SIZE
>> +	mov     C_v.16b, G_v.16b
>> +	stp     H_q, I_q, [dst], #32
>> +	ldp     F_q, G_q, [src], #32
>> +	ext     A_v.16b, C_v.16b, D_v.16b, 16-EXT_SIZE
>> +	ext     B_v.16b, D_v.16b, J_v.16b, 16-EXT_SIZE
>> +	mov     E_v.16b, J_v.16b
>> +	subs    count, count, 64
>> +	b.ge    2b
>> +	b	1b
>> +#undef EXT_SIZE
> 
> I would really prefer that you not replicate this code fragment 15 times.
> Surely it is better to use .macro or #define to avoid that.
OK, I will do that.



More information about the Libc-alpha mailing list