12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- TEXT strcmp(SB), $-4
- MOVW R0, R1
- MOVW s2+4(FP), R2
- MOVW $0xFF, R3 /* mask */
- _align: /* align s1 on 4 */
- TST $3, R1
- BEQ _aligned
- MOVBU.P 1(R1), R4 /* implicit write back */
- MOVBU.P 1(R2), R8 /* implicit write back */
- SUB.S R8, R4, R0
- BNE _return
- CMP $0, R4
- BEQ _return
- B _align
- _aligned: /* is s2 now aligned? */
- TST $3, R2
- BNE _unaligned
- _aloop:
- MOVW.P 4(R1), R5 /* 4 at a time */
- MOVW.P 4(R2), R9
- AND R5, R3, R4
- AND R9, R3, R8
- SUB.S R8, R4, R0
- BNE _return
- CMP $0, R4
- BEQ _return
- AND R5>>8, R3, R4
- AND R9>>8, R3, R8
- SUB.S R8, R4, R0
- BNE _return
- CMP $0, R4
- BEQ _return
- AND R5>>16, R3, R4
- AND R9>>16, R3, R8
- SUB.S R8, R4, R0
- BNE _return
- CMP $0, R4
- BEQ _return
- AND R5>>24, R3, R4
- AND R9>>24, R3, R8
- SUB.S R8, R4, R0
- BNE _return
- CMP $0, R4
- BEQ _return
- B _aloop
- _return:
- RET
- _unaligned:
- MOVBU.P 1(R1), R4 /* implicit write back */
- MOVBU.P 1(R2), R8 /* implicit write back */
- SUB.S R8, R4, R0
- BNE _return
- CMP $0, R4
- BEQ _return
- B _unaligned
|