Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sh/lib64/udivsi3.S
10817 views
1
.global __udivsi3
2
.section .text..SHmedia32,"ax"
3
.align 2
4
5
/*
6
inputs: r4,r5
7
clobbered: r18,r19,r20,r21,r22,r25,tr0
8
result in r0.
9
*/
10
__udivsi3:
11
addz.l r5,r63,r22
12
nsb r22,r0
13
shlld r22,r0,r25
14
shlri r25,48,r25
15
movi 0xffffffffffffbb0c,r20 /* shift count eqiv 76 */
16
sub r20,r25,r21
17
mmulfx.w r21,r21,r19
18
mshflo.w r21,r63,r21
19
ptabs r18,tr0
20
mmulfx.w r25,r19,r19
21
sub r20,r0,r0
22
/* bubble */
23
msub.w r21,r19,r19
24
25
/*
26
* It would be nice for scheduling to do this add to r21 before
27
* the msub.w, but we need a different value for r19 to keep
28
* errors under control.
29
*/
30
addi r19,-2,r21
31
mulu.l r4,r21,r18
32
mmulfx.w r19,r19,r19
33
shlli r21,15,r21
34
shlrd r18,r0,r18
35
mulu.l r18,r22,r20
36
mmacnfx.wl r25,r19,r21
37
/* bubble */
38
sub r4,r20,r25
39
40
mulu.l r25,r21,r19
41
addi r0,14,r0
42
/* bubble */
43
shlrd r19,r0,r19
44
mulu.l r19,r22,r20
45
add r18,r19,r18
46
/* bubble */
47
sub.l r25,r20,r25
48
49
mulu.l r25,r21,r19
50
addz.l r25,r63,r25
51
sub r25,r22,r25
52
shlrd r19,r0,r19
53
mulu.l r19,r22,r20
54
addi r25,1,r25
55
add r18,r19,r18
56
57
cmpgt r25,r20,r25
58
add.l r18,r25,r0
59
blink tr0,r63
60
61