MIPS: IP checksums: Optimize adjust of sum on buffers of odd alignment.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Ralf Baechle 2008-10-11 16:18:53 +01:00
parent 60724ca59e
commit b65a75b8c9
1 changed files with 24 additions and 11 deletions

View File

@ -270,13 +270,20 @@ LEAF(csum_partial)
#endif
/* odd buffer alignment? */
beqz t7, 1f
nop
sll v1, sum, 8
#ifdef CPU_MIPSR2
wsbh v1, sum
movn sum, v1, t7
#else
beqz t7, 1f /* odd buffer alignment? */
lui v1, 0x00ff
addu v1, 0x00ff
and t0, sum, v1
sll t0, t0, 8
srl sum, sum, 8
or sum, v1
andi sum, 0xffff
and sum, sum, v1
or sum, sum, t0
1:
#endif
.set reorder
/* Add the passed partial csum. */
ADDC32(sum, a2)
@ -663,14 +670,20 @@ EXC( sb t0, NBYTES-2(dst), .Ls_exc)
addu sum, v1
#endif
/* odd buffer alignment? */
beqz odd, 1f
nop
sll v1, sum, 8
#ifdef CPU_MIPSR2
wsbh v1, sum
movn sum, v1, odd
#else
beqz odd, 1f /* odd buffer alignment? */
lui v1, 0x00ff
addu v1, 0x00ff
and t0, sum, v1
sll t0, t0, 8
srl sum, sum, 8
or sum, v1
andi sum, 0xffff
and sum, sum, v1
or sum, sum, t0
1:
#endif
.set reorder
ADDC32(sum, psum)
jr ra