]> git.lizzy.rs Git - plan9front.git/blob - sys/src/libc/arm/vlop.s
libc: native _addv() and _subv() routines for arm
[plan9front.git] / sys / src / libc / arm / vlop.s
1 TEXT    _mulv(SB), 1, $0
2         MOVW    4(FP),R8        /* l0 */
3         MOVW    8(FP),R11       /* h0 */
4         MOVW    12(FP),R4       /* l1 */
5         MOVW    16(FP),R5       /* h1 */
6         MULLU   R8,R4,(R7,R6)   /* l0*l1 */
7         MUL     R8,R5,R5        /* l0*h1 */
8         ADD     R5,R7
9         MUL     R11,R4,R4       /* h0*l1 */
10         ADD     R4,R7
11         MOVM.IA [R6,R7],(R0)
12         RET
13
14 TEXT    _addv(SB), 1, $0
15         MOVW    4(FP),R8        /* l0 */
16         MOVW    8(FP),R11       /* h0 */
17         MOVW    12(FP),R4       /* l1 */
18         MOVW    16(FP),R5       /* h1 */
19         ADD.S   R8,R4
20         ADC     R11,R5
21         MOVM.IA [R4,R5],(R0)
22         RET
23
24 TEXT    _subv(SB), 1, $0
25         MOVW    4(FP),R8        /* l0 */
26         MOVW    8(FP),R11       /* h0 */
27         MOVW    12(FP),R4       /* l1 */
28         MOVW    16(FP),R5       /* h1 */
29         SUB.S   R4,R8,R4
30         SBC     R5,R11,R5
31         MOVM.IA [R4,R5],(R0)
32         RET