]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/amd64/memcmp.s
libc: change usize to 64-bit for amd64 and arm64, make memory(2) functions use usize
[plan9front.git] / sys / src / libc / amd64 / memcmp.s
1 TEXT    memcmp(SB),$0
2
3         MOVQ    n+16(FP), BX
4         CMPQ    BX, $0
5         JEQ     none
6         MOVQ    RARG, DI
7         MOVQ    p2+8(FP), SI
8         CLD
9         MOVQ    DI, CX
10         ORQ     SI, CX
11         ANDL    $3, CX
12         JNE     c3
13 /*
14  * first by longs
15  */
16
17         MOVQ    BX, CX
18         SHRQ    $2, CX
19
20         REP;    CMPSL
21         JNE     found
22
23 /*
24  * then by bytes
25  */
26         ANDL    $3, BX
27 c3:
28         MOVQ    BX, CX
29         REP;    CMPSB
30         JNE     found1
31
32 none:
33         MOVQ    $0, AX
34         RET
35
36 /*
37  * if long found,
38  * back up and look by bytes
39  */
40 found:
41         MOVL    $4, CX
42         SUBQ    CX, DI
43         SUBQ    CX, SI
44         REP;    CMPSB
45
46 found1:
47         JLS     lt
48         MOVQ    $-1, AX
49         RET
50 lt:
51         MOVQ    $1, AX
52         RET