Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
[linux-2.6.git] / arch / sh / lib64 / sdivsi3.S
1         .global __sdivsi3
2         .global __sdivsi3_1
3         .global __sdivsi3_2
4         .section        .text..SHmedia32,"ax"
5         .align  2
6
7         /* inputs: r4,r5 */
8         /* clobbered: r1,r18,r19,r20,r21,r25,tr0 */
9         /* result in r0 */
10 __sdivsi3:
11 __sdivsi3_1:
12         ptb __div_table,tr0
13         gettr tr0,r20
14
15 __sdivsi3_2:
16         nsb r5, r1
17         shlld r5, r1, r25    /* normalize; [-2 ..1, 1..2) in s2.62 */
18         shari r25, 58, r21   /* extract 5(6) bit index (s2.4 with hole -1..1) */
19         /* bubble */
20         ldx.ub r20, r21, r19 /* u0.8 */
21         shari r25, 32, r25   /* normalize to s2.30 */
22         shlli r21, 1, r21
23         muls.l r25, r19, r19 /* s2.38 */
24         ldx.w r20, r21, r21  /* s2.14 */
25         ptabs r18, tr0
26         shari r19, 24, r19   /* truncate to s2.14 */
27         sub r21, r19, r19    /* some 11 bit inverse in s1.14 */
28         muls.l r19, r19, r21 /* u0.28 */
29         sub r63, r1, r1
30         addi r1, 92, r1
31         muls.l r25, r21, r18 /* s2.58 */
32         shlli r19, 45, r19   /* multiply by two and convert to s2.58 */
33         /* bubble */
34         sub r19, r18, r18
35         shari r18, 28, r18   /* some 22 bit inverse in s1.30 */
36         muls.l r18, r25, r0  /* s2.60 */
37         muls.l r18, r4, r25 /* s32.30 */
38         /* bubble */
39         shari r0, 16, r19   /* s-16.44 */
40         muls.l r19, r18, r19 /* s-16.74 */
41         shari r25, 63, r0
42         shari r4, 14, r18   /* s19.-14 */
43         shari r19, 30, r19   /* s-16.44 */
44         muls.l r19, r18, r19 /* s15.30 */
45         xor r21, r0, r21    /* You could also use the constant 1 << 27. */
46         add r21, r25, r21
47         sub r21, r19, r21
48         shard r21, r1, r21
49         sub r21, r0, r0
50         blink tr0, r63
51         
52 /* This table has been generated by divtab.c .
53 Defects for bias -330:
54    Max defect: 6.081536e-07 at -1.000000e+00
55    Min defect: 2.849516e-08 at 1.030651e+00
56    Max 2nd step defect: 9.606539e-12 at -1.000000e+00
57    Min 2nd step defect: 0.000000e+00 at 0.000000e+00
58    Defect at 1: 1.238659e-07
59    Defect at -2: 1.061708e-07 */
60
61         .balign 2
62         .type   __div_table,@object
63         .size   __div_table,128
64 /* negative division constants */
65         .word   -16638
66         .word   -17135
67         .word   -17737
68         .word   -18433
69         .word   -19103
70         .word   -19751
71         .word   -20583
72         .word   -21383
73         .word   -22343
74         .word   -23353
75         .word   -24407
76         .word   -25582
77         .word   -26863
78         .word   -28382
79         .word   -29965
80         .word   -31800
81 /* negative division factors */
82         .byte   66
83         .byte   70
84         .byte   75
85         .byte   81
86         .byte   87
87         .byte   93
88         .byte   101
89         .byte   109
90         .byte   119
91         .byte   130
92         .byte   142
93         .byte   156
94         .byte   172
95         .byte   192
96         .byte   214
97         .byte   241
98         .skip 16
99         .global __div_table
100 __div_table:
101         .skip 16
102 /* positive division factors */
103         .byte   241
104         .byte   214
105         .byte   192
106         .byte   172
107         .byte   156
108         .byte   142
109         .byte   130
110         .byte   119
111         .byte   109
112         .byte   101
113         .byte   93
114         .byte   87
115         .byte   81
116         .byte   75
117         .byte   70
118         .byte   66
119 /* positive division constants */
120         .word   31801
121         .word   29966
122         .word   28383
123         .word   26864
124         .word   25583
125         .word   24408
126         .word   23354
127         .word   22344
128         .word   21384
129         .word   20584
130         .word   19752
131         .word   19104
132         .word   18434
133         .word   17738
134         .word   17136
135         .word   16639