On Wed, 2016-01-06 at 10:16 +0000, David Laight wrote: > From: Eric Dumazet > > Sent: 05 January 2016 22:19 > > To: Tom Herbert > > 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 */ > > Or move label at the top (after the .align) and adjust the maths. > You could add a second label after the first adcq and use the > difference between them for the '4'.
Not really. We could not use the trick it the length was 5. Only 1, 2, 4 and 8 are supported. -- 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