12ddf2468SDavid du ColombierTEXT strcmp(SB), $-4 22ddf2468SDavid du Colombier MOVW R0, R1 32ddf2468SDavid du Colombier MOVW s2+4(FP), R2 42ddf2468SDavid du Colombier 52ddf2468SDavid du Colombier MOVW $0xFF, R3 /* mask */ 62ddf2468SDavid du Colombier 72ddf2468SDavid du Colombier_align: /* align s1 on 4 */ 82ddf2468SDavid du Colombier TST $3, R1 92ddf2468SDavid du Colombier BEQ _aligned 102ddf2468SDavid du Colombier 112ddf2468SDavid du Colombier MOVBU.P 1(R1), R4 /* implicit write back */ 122ddf2468SDavid du Colombier MOVBU.P 1(R2), R8 /* implicit write back */ 132ddf2468SDavid du Colombier SUB.S R8, R4, R0 142ddf2468SDavid du Colombier BNE _return 152ddf2468SDavid du Colombier CMP $0, R4 162ddf2468SDavid du Colombier BEQ _return 172ddf2468SDavid du Colombier B _align 182ddf2468SDavid du Colombier 192ddf2468SDavid du Colombier_aligned: /* is s2 now aligned? */ 202ddf2468SDavid du Colombier TST $3, R2 212ddf2468SDavid du Colombier BNE _unaligned 222ddf2468SDavid du Colombier 232ddf2468SDavid du Colombier_aloop: 242ddf2468SDavid du Colombier MOVW.P 4(R1), R5 /* 4 at a time */ 25*51480713SDavid du Colombier MOVW.P 4(R2), R7 262ddf2468SDavid du Colombier 272ddf2468SDavid du Colombier AND R5, R3, R4 28*51480713SDavid du Colombier AND R7, R3, R8 292ddf2468SDavid du Colombier SUB.S R8, R4, R0 302ddf2468SDavid du Colombier BNE _return 312ddf2468SDavid du Colombier CMP $0, R4 322ddf2468SDavid du Colombier BEQ _return 332ddf2468SDavid du Colombier 342ddf2468SDavid du Colombier AND R5>>8, R3, R4 35*51480713SDavid du Colombier AND R7>>8, R3, R8 362ddf2468SDavid du Colombier SUB.S R8, R4, R0 372ddf2468SDavid du Colombier BNE _return 382ddf2468SDavid du Colombier CMP $0, R4 392ddf2468SDavid du Colombier BEQ _return 402ddf2468SDavid du Colombier 412ddf2468SDavid du Colombier AND R5>>16, R3, R4 42*51480713SDavid du Colombier AND R7>>16, R3, R8 432ddf2468SDavid du Colombier SUB.S R8, R4, R0 442ddf2468SDavid du Colombier BNE _return 452ddf2468SDavid du Colombier CMP $0, R4 462ddf2468SDavid du Colombier BEQ _return 472ddf2468SDavid du Colombier 482ddf2468SDavid du Colombier AND R5>>24, R3, R4 49*51480713SDavid du Colombier AND R7>>24, R3, R8 502ddf2468SDavid du Colombier SUB.S R8, R4, R0 512ddf2468SDavid du Colombier BNE _return 522ddf2468SDavid du Colombier CMP $0, R4 532ddf2468SDavid du Colombier BEQ _return 542ddf2468SDavid du Colombier 552ddf2468SDavid du Colombier B _aloop 562ddf2468SDavid du Colombier 572ddf2468SDavid du Colombier_return: 582ddf2468SDavid du Colombier RET 592ddf2468SDavid du Colombier 602ddf2468SDavid du Colombier_unaligned: 612ddf2468SDavid du Colombier MOVBU.P 1(R1), R4 /* implicit write back */ 622ddf2468SDavid du Colombier MOVBU.P 1(R2), R8 /* implicit write back */ 632ddf2468SDavid du Colombier SUB.S R8, R4, R0 642ddf2468SDavid du Colombier BNE _return 652ddf2468SDavid du Colombier CMP $0, R4 662ddf2468SDavid du Colombier BEQ _return 672ddf2468SDavid du Colombier B _unaligned 68