]> git.proxmox.com Git - mirror_edk2.git/blame - ArmPkg/Library/CompilerIntrinsicsLib/Arm/udivmoddi4.S
Update the copyright notice format
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / udivmoddi4.S
CommitLineData
2ef2b01e
A
1#------------------------------------------------------------------------------
2#
d6ebcab7 3# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
2ef2b01e 4#
d6ebcab7 5# This program and the accompanying materials
2ef2b01e
A
6# are licensed and made available under the terms and conditions of the BSD License
7# which accompanies this distribution. The full text of the license may be found at
8# http://opensource.org/licenses/bsd-license.php
9#
10# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12#
13#------------------------------------------------------------------------------
14
15 .text
16 .align 2
4e471bfd 17 .globl ASM_PFX(__udivmoddi4)
18
19ASM_PFX(__udivmoddi4):
2ef2b01e
A
20 stmfd sp!, {r4, r5, r6, r7, lr}
21 add r7, sp, #12
22 stmfd sp!, {r10, r11}
23 sub sp, sp, #20
24 stmia sp, {r2-r3}
25 ldr r6, [sp, #48]
26 orrs r2, r2, r3
27 mov r10, r0
28 mov r11, r1
29 beq L2
30 subs ip, r1, #0
31 bne L4
32 cmp r3, #0
33 bne L6
34 cmp r6, #0
35 beq L8
36 mov r1, r2
4e471bfd 37 bl ASM_PFX(__umodsi3)
2ef2b01e
A
38 mov r1, #0
39 stmia r6, {r0-r1}
40L8:
41 ldr r1, [sp, #0]
42 mov r0, r10
43 b L45
44L6:
45 cmp r6, #0
46 movne r1, #0
47 stmneia r6, {r0-r1}
48 b L2
49L4:
50 ldr r1, [sp, #0]
51 cmp r1, #0
52 bne L12
53 ldr r2, [sp, #4]
54 cmp r2, #0
55 bne L14
56 cmp r6, #0
57 beq L16
58 mov r1, r2
59 mov r0, r11
4e471bfd 60 bl ASM_PFX(__umodsi3)
2ef2b01e
A
61 mov r1, #0
62 stmia r6, {r0-r1}
63L16:
64 ldr r1, [sp, #4]
65 mov r0, r11
66L45:
4e471bfd 67 bl ASM_PFX(__udivsi3)
2ef2b01e
A
68L46:
69 mov r10, r0
70 mov r11, #0
71 b L10
72L14:
73 subs r1, r0, #0
74 bne L18
75 cmp r6, #0
76 beq L16
77 ldr r1, [sp, #4]
78 mov r0, r11
4e471bfd 79 bl ASM_PFX(__umodsi3)
2ef2b01e
A
80 mov r4, r10
81 mov r5, r0
82 stmia r6, {r4-r5}
83 b L16
84L18:
85 sub r3, r2, #1
86 tst r2, r3
87 bne L22
88 cmp r6, #0
89 movne r4, r0
90 andne r5, ip, r3
91 stmneia r6, {r4-r5}
92L24:
93 rsb r3, r2, #0
94 and r3, r2, r3
95 clz r3, r3
96 rsb r3, r3, #31
97 mov r0, ip, lsr r3
98 b L46
99L22:
100 clz r2, r2
101 clz r3, ip
102 rsb r3, r3, r2
103 cmp r3, #30
104 bhi L48
105 rsb r2, r3, #31
106 add lr, r3, #1
107 mov r3, r1, asl r2
108 str r3, [sp, #12]
109 mov r3, r1, lsr lr
110 ldr r0, [sp, #0]
111 mov r5, ip, lsr lr
112 orr r4, r3, ip, asl r2
113 str r0, [sp, #8]
114 b L29
115L12:
116 ldr r3, [sp, #4]
117 cmp r3, #0
118 bne L30
119 sub r3, r1, #1
120 tst r1, r3
121 bne L32
122 cmp r6, #0
123 andne r3, r3, r0
124 movne r2, r3
125 movne r3, #0
126 stmneia r6, {r2-r3}
127L34:
128 cmp r1, #1
129 beq L10
130 rsb r3, r1, #0
131 and r3, r1, r3
132 clz r3, r3
133 rsb r0, r3, #31
134 mov r1, ip, lsr r0
135 rsb r3, r0, #32
136 mov r0, r10, lsr r0
137 orr ip, r0, ip, asl r3
138 str r1, [sp, #12]
139 str ip, [sp, #8]
140 ldrd r10, [sp, #8]
141 b L10
142L32:
143 clz r2, r1
144 clz r3, ip
145 rsb r3, r3, r2
146 rsb r4, r3, #31
147 mov r2, r0, asl r4
148 mvn r1, r3
149 and r2, r2, r1, asr #31
150 add lr, r3, #33
151 str r2, [sp, #8]
152 add r2, r3, #1
153 mov r3, r3, asr #31
154 and r0, r3, r0, asl r1
155 mov r3, r10, lsr r2
156 orr r3, r3, ip, asl r4
157 and r3, r3, r1, asr #31
158 orr r0, r0, r3
159 mov r3, ip, lsr lr
160 str r0, [sp, #12]
161 mov r0, r10, lsr lr
162 and r5, r3, r2, asr #31
163 rsb r3, lr, #31
164 mov r3, r3, asr #31
165 orr r0, r0, ip, asl r1
166 and r3, r3, ip, lsr r2
167 and r0, r0, r2, asr #31
168 orr r4, r3, r0
169 b L29
170L30:
171 clz r2, r3
172 clz r3, ip
173 rsb r3, r3, r2
174 cmp r3, #31
175 bls L37
176L48:
177 cmp r6, #0
178 stmneia r6, {r10-r11}
179 b L2
180L37:
181 rsb r1, r3, #31
182 mov r0, r0, asl r1
183 add lr, r3, #1
184 mov r2, #0
185 str r0, [sp, #12]
186 mov r0, r10, lsr lr
187 str r2, [sp, #8]
188 sub r2, r3, #31
189 and r0, r0, r2, asr #31
190 mov r3, ip, lsr lr
191 orr r4, r0, ip, asl r1
192 and r5, r3, r2, asr #31
193L29:
194 mov ip, #0
195 mov r10, ip
196 b L40
197L41:
198 ldr r1, [sp, #12]
199 ldr r2, [sp, #8]
200 mov r3, r4, lsr #31
201 orr r5, r3, r5, asl #1
202 mov r3, r1, lsr #31
203 orr r4, r3, r4, asl #1
204 mov r3, r2, lsr #31
205 orr r0, r3, r1, asl #1
206 orr r1, ip, r2, asl #1
207 ldmia sp, {r2-r3}
208 str r0, [sp, #12]
209 subs r2, r2, r4
210 sbc r3, r3, r5
211 str r1, [sp, #8]
212 subs r0, r2, #1
213 sbc r1, r3, #0
214 mov r2, r1, asr #31
215 ldmia sp, {r0-r1}
216 mov r3, r2
217 and ip, r2, #1
218 and r3, r3, r1
219 and r2, r2, r0
220 subs r4, r4, r2
221 sbc r5, r5, r3
222 add r10, r10, #1
223L40:
224 cmp r10, lr
225 bne L41
226 ldrd r0, [sp, #8]
227 adds r0, r0, r0
228 adc r1, r1, r1
229 cmp r6, #0
230 orr r10, r0, ip
231 mov r11, r1
232 stmneia r6, {r4-r5}
233 b L10
234L2:
235 mov r10, #0
236 mov r11, #0
237L10:
238 mov r0, r10
239 mov r1, r11
240 sub sp, r7, #20
241 ldmfd sp!, {r10, r11}
242 ldmfd sp!, {r4, r5, r6, r7, pc}