chiark / gitweb /
eglibc (2.11.3-4+deb6u3) squeeze-lts; urgency=medium
[eglibc.git] / ports / sysdeps / i960 / sub_n.s
1 .text
2         .align 4
3         .globl ___mpn_sub_n
4 ___mpn_sub_n:
5         mov     1,g6            # set carry-save register
6         cmpo    1,0             # clear cy
7
8 Loop:   subo    1,g3,g3         # update loop counter
9         ld      (g1),g5         # load from s1_ptr
10         addo    4,g1,g1         # s1_ptr++
11         ld      (g2),g4         # load from s2_ptr
12         addo    4,g2,g2         # s2_ptr++
13         cmpo    g6,1            # restore cy from g6, relies on cy being 0
14         subc    g4,g5,g4        # main subtract
15         subc    0,0,g6          # save cy in g6
16         st      g4,(g0)         # store result to res_ptr
17         addo    4,g0,g0         # res_ptr++
18         cmpobne 0,g3,Loop       # when branch is taken, cy will be 0
19
20         mov     g6,g0
21         ret