mips: retire bcmp
Unused since ba96f37758
("Use __builtin for various mem* and b* (e.g. bzero)
routines.")
Sponsored by: Rubicon Communications, LLC ("Netgate")
This commit is contained in:
parent
5de5419b5e
commit
ebc52eabdc
@ -473,86 +473,6 @@ smallclr:
|
||||
nop
|
||||
END(bzero)
|
||||
|
||||
|
||||
/*
|
||||
* bcmp(s1, s2, n)
|
||||
*/
|
||||
LEAF(bcmp)
|
||||
.set noreorder
|
||||
blt a2, 16, smallcmp # is it worth any trouble?
|
||||
xor v0, a0, a1 # compare low two bits of addresses
|
||||
and v0, v0, 3
|
||||
PTR_SUBU a3, zero, a1 # compute # bytes to word align address
|
||||
bne v0, zero, unalignedcmp # not possible to align addresses
|
||||
and a3, a3, 3
|
||||
|
||||
beq a3, zero, 1f
|
||||
PTR_SUBU a2, a2, a3 # subtract from remaining count
|
||||
move v0, v1 # init v0,v1 so unmodified bytes match
|
||||
LWHI v0, 0(a0) # read 1, 2, or 3 bytes
|
||||
LWHI v1, 0(a1)
|
||||
PTR_ADDU a1, a1, a3
|
||||
bne v0, v1, nomatch
|
||||
PTR_ADDU a0, a0, a3
|
||||
1:
|
||||
and a3, a2, ~3 # compute number of whole words left
|
||||
PTR_SUBU a2, a2, a3 # which has to be >= (16-3) & ~3
|
||||
PTR_ADDU a3, a3, a0 # compute ending address
|
||||
2:
|
||||
lw v0, 0(a0) # compare words
|
||||
lw v1, 0(a1)
|
||||
PTR_ADDU a0, a0, 4
|
||||
bne v0, v1, nomatch
|
||||
PTR_ADDU a1, a1, 4
|
||||
bne a0, a3, 2b
|
||||
nop
|
||||
b smallcmp # finish remainder
|
||||
nop
|
||||
unalignedcmp:
|
||||
beq a3, zero, 2f
|
||||
PTR_SUBU a2, a2, a3 # subtract from remaining count
|
||||
PTR_ADDU a3, a3, a0 # compute ending address
|
||||
1:
|
||||
lbu v0, 0(a0) # compare bytes until a1 word aligned
|
||||
lbu v1, 0(a1)
|
||||
PTR_ADDU a0, a0, 1
|
||||
bne v0, v1, nomatch
|
||||
PTR_ADDU a1, a1, 1
|
||||
bne a0, a3, 1b
|
||||
nop
|
||||
2:
|
||||
and a3, a2, ~3 # compute number of whole words left
|
||||
PTR_SUBU a2, a2, a3 # which has to be >= (16-3) & ~3
|
||||
PTR_ADDU a3, a3, a0 # compute ending address
|
||||
3:
|
||||
LWHI v0, 0(a0) # compare words a0 unaligned, a1 aligned
|
||||
LWLO v0, 3(a0)
|
||||
lw v1, 0(a1)
|
||||
PTR_ADDU a0, a0, 4
|
||||
bne v0, v1, nomatch
|
||||
PTR_ADDU a1, a1, 4
|
||||
bne a0, a3, 3b
|
||||
nop
|
||||
smallcmp:
|
||||
ble a2, zero, match
|
||||
PTR_ADDU a3, a2, a0 # compute ending address
|
||||
1:
|
||||
lbu v0, 0(a0)
|
||||
lbu v1, 0(a1)
|
||||
PTR_ADDU a0, a0, 1
|
||||
bne v0, v1, nomatch
|
||||
PTR_ADDU a1, a1, 1
|
||||
bne a0, a3, 1b
|
||||
nop
|
||||
match:
|
||||
j ra
|
||||
move v0, zero
|
||||
nomatch:
|
||||
j ra
|
||||
li v0, 1
|
||||
END(bcmp)
|
||||
|
||||
|
||||
/*
|
||||
* bit = ffs(value)
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user