123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- ENTRY (memcpy)
- .set noreorder
- slti t0, a2, 8
- bne t0, zero, L(last8)
- move v0, a0
- xor t0, a1, a0
- andi t0, 0x3
- bne t0, zero, L(shift)
- subu t1, zero, a1
- andi t1, 0x3
- beq t1, zero, L(chk8w)
- subu a2, t1
- LWHI t0, 0(a1)
- addu a1, t1
- SWHI t0, 0(a0)
- addu a0, t1
- L(chk8w):
- andi t0, a2, 0x1f
- beq t0, a2, L(chk1w)
- subu a3, a2, t0
- addu a3, a1
- move a2, t0
- L(lop8w):
- lw t0, 0(a1)
- lw t1, 4(a1)
- lw t2, 8(a1)
- lw t3, 12(a1)
- lw t4, 16(a1)
- lw t5, 20(a1)
- lw t6, 24(a1)
- lw t7, 28(a1)
- addiu a0, 32
- addiu a1, 32
- sw t0, -32(a0)
- sw t1, -28(a0)
- sw t2, -24(a0)
- sw t3, -20(a0)
- sw t4, -16(a0)
- sw t5, -12(a0)
- sw t6, -8(a0)
- bne a1, a3, L(lop8w)
- sw t7, -4(a0)
- L(chk1w):
- andi t0, a2, 0x3
- beq t0, a2, L(last8)
- subu a3, a2, t0
- addu a3, a1
- move a2, t0
- L(lop1w):
- lw t0, 0(a1)
- addiu a0, 4
- addiu a1, 4
- bne a1, a3, L(lop1w)
- sw t0, -4(a0)
- L(last8):
- blez a2, L(lst8e)
- addu a3, a2, a1
- L(lst8l):
- lb t0, 0(a1)
- addiu a0, 1
- addiu a1, 1
- bne a1, a3, L(lst8l)
- sb t0, -1(a0)
- L(lst8e):
- jr ra
- nop
- L(shift):
- subu a3, zero, a0
- andi a3, 0x3
- beq a3, zero, L(shft1)
- subu a2, a3
- LWHI t0, 0(a1)
- LWLO t0, 3(a1)
- addu a1, a3
- SWHI t0, 0(a0)
- addu a0, a3
- L(shft1):
- andi t0, a2, 0x3
- subu a3, a2, t0
- addu a3, a1
- L(shfth):
- LWHI t1, 0(a1)
- LWLO t1, 3(a1)
- addiu a0, 4
- addiu a1, 4
- bne a1, a3, L(shfth)
- sw t1, -4(a0)
- b L(last8)
- move a2, t0
- .set reorder
- END (memcpy)
- libc_hidden_builtin_def (memcpy)
|