diff options
Diffstat (limited to 'arch/sh/lib64/sdivsi3.S')
-rw-r--r-- | arch/sh/lib64/sdivsi3.S | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/sh/lib64/sdivsi3.S b/arch/sh/lib64/sdivsi3.S index 6a800c6a4904..1963bbd42288 100644 --- a/arch/sh/lib64/sdivsi3.S +++ b/arch/sh/lib64/sdivsi3.S | |||
@@ -1,4 +1,6 @@ | |||
1 | .global __sdivsi3 | 1 | .global __sdivsi3 |
2 | .global __sdivsi3_1 | ||
3 | .global __sdivsi3_2 | ||
2 | .section .text..SHmedia32,"ax" | 4 | .section .text..SHmedia32,"ax" |
3 | .align 2 | 5 | .align 2 |
4 | 6 | ||
@@ -6,13 +8,15 @@ | |||
6 | /* clobbered: r1,r18,r19,r20,r21,r25,tr0 */ | 8 | /* clobbered: r1,r18,r19,r20,r21,r25,tr0 */ |
7 | /* result in r0 */ | 9 | /* result in r0 */ |
8 | __sdivsi3: | 10 | __sdivsi3: |
11 | __sdivsi3_1: | ||
9 | ptb __div_table,tr0 | 12 | ptb __div_table,tr0 |
13 | gettr tr0,r20 | ||
10 | 14 | ||
15 | __sdivsi3_2: | ||
11 | nsb r5, r1 | 16 | nsb r5, r1 |
12 | shlld r5, r1, r25 /* normalize; [-2 ..1, 1..2) in s2.62 */ | 17 | shlld r5, r1, r25 /* normalize; [-2 ..1, 1..2) in s2.62 */ |
13 | shari r25, 58, r21 /* extract 5(6) bit index (s2.4 with hole -1..1) */ | 18 | shari r25, 58, r21 /* extract 5(6) bit index (s2.4 with hole -1..1) */ |
14 | /* bubble */ | 19 | /* bubble */ |
15 | gettr tr0,r20 | ||
16 | ldx.ub r20, r21, r19 /* u0.8 */ | 20 | ldx.ub r20, r21, r19 /* u0.8 */ |
17 | shari r25, 32, r25 /* normalize to s2.30 */ | 21 | shari r25, 32, r25 /* normalize to s2.30 */ |
18 | shlli r21, 1, r21 | 22 | shlli r21, 1, r21 |