On Tue, 2016-01-05 at 10:41 -0800, Tom Herbert wrote: > Implement assembly routine for csum_partial for 64 bit x86. This > primarily speeds up checksum calculation for smaller lengths such as > those that are present when doing skb_postpull_rcsum when getting > CHECKSUM_COMPLETE from device or after CHECKSUM_UNNECESSARY > conversion.
Very nice ! You might add a comment telling the '4' comes from length of 'adcq 6*8(%rdi),%rax' instruction, and that the 'nop' is to compensate that 'adcq 0*8(%rdi),%rax' is using 3 bytes instead. We also could use .byte 0x48, 0x13, 0x47, 0x00 to force a 4 bytes instruction and remove the nop. + lea 20f(, %rcx, 4), %r11 + clc + jmp *%r11 + +.align 8 + adcq 6*8(%rdi),%rax + adcq 5*8(%rdi),%rax + adcq 4*8(%rdi),%rax + adcq 3*8(%rdi),%rax + adcq 2*8(%rdi),%rax + adcq 1*8(%rdi),%rax + adcq 0*8(%rdi),%rax // could force a 4 byte instruction (.byte 0x48, 0x13, 0x47, 0x00) + nop +20: /* #quads % 8 jump table base */ Acked-by: Eric Dumazet <eduma...@google.com> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html