Commit | Line | Data |
---|---|---|
8df55cb8 CM |
1 | .text |
2 | .global abs | |
3 | abs: | |
4 | a0 = abs a0; | |
5 | A0 = ABS A1; | |
6 | A1 = Abs a0; | |
7 | a1 = aBs A1; | |
8 | A1 = abs a1, a0 = ABS A0; | |
9 | r0 = abs r2; | |
10 | ||
11 | .text | |
12 | .global add | |
13 | add: | |
14 | sp = sp + P0; | |
15 | SP = SP + P2; | |
16 | FP = p1 + fp; | |
17 | ||
18 | R7 = r7 + r2 (NS); | |
19 | r6 = r6 + r0 (s); | |
20 | ||
21 | r4.L = R2.h + r0.L (s); | |
22 | r5.H = R1.H + R1.L (S); | |
23 | r6.L = R6.L + r5.l (NS); | |
24 | ||
25 | .text | |
26 | .global add_sub_prescale_down | |
27 | add_sub_prescale_down: | |
28 | r4.l = r0 + r1 (RND20); | |
29 | R3.H = r5 + r0 (rnd20); | |
30 | r1.L = r7 - R5 (rND20); | |
31 | ||
32 | .text | |
33 | .global add_sub_prescale_up | |
34 | add_sub_prescale_up: | |
35 | r2.L = R0 + R1 (rnd12); | |
36 | r7.H = r7 + r6 (RND12); | |
37 | r5.l = r3 - R2 (rNd12); | |
38 | r2.h = R1 - R2 (Rnd12); | |
39 | ||
40 | .text | |
41 | .global add_immediate | |
42 | add_immediate: | |
43 | R5 += -64; | |
44 | r2 += 63; | |
45 | i0 += 2; | |
46 | I3 += 2; | |
47 | I2 += 4; | |
48 | i1 += 4; | |
49 | P0 += 4; | |
50 | sp += 16; | |
51 | FP += -32; | |
52 | ||
53 | .text | |
54 | .global divide_primitive | |
55 | divide_primitive: | |
56 | divs (r3, r5); | |
57 | divq (R3, R5); | |
58 | ||
59 | .text | |
60 | .global expadj | |
61 | expadj: | |
62 | r6.L = EXPADJ (r5, r4.l); | |
63 | R5.l = ExpAdj (r0.h, r1.l); | |
64 | R4.L = expadj (R3, R5.L) (V); | |
65 | ||
66 | .text | |
67 | .global max | |
68 | max: | |
69 | R6 = MAX (r5, R2); | |
70 | r0 = max (r1, r3); | |
71 | ||
72 | .text | |
73 | .global min | |
74 | min: | |
75 | r5 = mIn (r2, R3); | |
76 | R4 = Min (r7, R0); | |
77 | ||
78 | ||
79 | .text | |
80 | .global modify_decrement | |
81 | modify_decrement: | |
82 | A0 -= A1; | |
83 | a0 -= a1 (w32); | |
84 | fp -= p2; | |
85 | SP -= P0; | |
86 | I3 -= M0; | |
87 | i1 -= m1; | |
88 | ||
89 | .text | |
90 | .global modify_increment | |
91 | modify_increment: | |
92 | a0 += a1; | |
93 | A0 += A1 (w32); | |
94 | Sp += P1 (Brev); | |
95 | P5 += Fp (BREV); | |
96 | i2 += M2; | |
97 | I0 += m0 (brev); | |
98 | r7 = ( a0 += a1); | |
99 | r6.l = (A0 += a1); | |
100 | R0.H = (a0 += A1); | |
101 | ||
102 | .text | |
103 | .global multiply16 | |
104 | multiply16: | |
105 | R0.l = r1.h * r2.l; | |
106 | r1.L = r5.H * r0.H (s2rnd); | |
107 | r7.l = r3.l * r3.H (FU); | |
108 | r4 = r2.H * r5.H (iSS2); | |
109 | r0 = r1.l * r3.l (is); | |
110 | r6 = R5.H * r0.l; | |
111 | ||
112 | r2.h = r7.l * r6.H (M, iu); | |
113 | r3.H = r5.H * r0.L; | |
114 | R0.H = r1.L * r1.H (M); | |
115 | r1 = r7.H * r6.L (M, is); | |
116 | R5 = r0.l * r2.h; | |
117 | r3 = r6.H * r0.H (m); | |
118 | ||
119 | .text | |
120 | .global multiply32 | |
121 | multiply32: | |
122 | R4 *= r0; | |
123 | r7 *= R2; | |
124 | ||
125 | .text | |
126 | .global multiply_accumulate | |
127 | multiply_accumulate: | |
128 | a0 = r5.l * R7.H (w32); | |
129 | a0 = r0.h * r0.l; | |
130 | A0 += R2.L * r3.H (FU); | |
131 | A0 += r4.h * r1.L; | |
132 | a0 -= r7.l * r6.H (Is); | |
133 | A0 -= R5.H * r2.H; | |
134 | ||
135 | a1 = r1.L * r0.H (M); | |
136 | A1 = r2.h * r0.L; | |
137 | A1 = R7.H * R6.L (M, W32); | |
138 | a1 += r3.l * r2.l (fu); | |
139 | a1 += R6.H * r1.L; | |
140 | A1 -= r0.L * R3.H (is); | |
141 | a1 -= r2.l * r7.h; | |
142 | ||
143 | .text | |
144 | .global multiply_accumulate_half | |
145 | multiply_accumulate_half: | |
146 | r7.l = (a0 = r6.H * r5.L); | |
147 | r0.L = (A0 = r1.h * R2.l) (tfu); | |
148 | R2.L = (a0 += r5.L * r4.L); | |
149 | r3.l = (A0 += r7.H * r6.h) (T); | |
150 | r0.l = (a0 -= r3.h * r2.h); | |
151 | r1.l = (a0 -= r5.L * r4.L) (iH); | |
152 | ||
153 | r1.H = (a1 = r1.l * R0.H); | |
154 | r2.h = (A1 = r0.H * r3.L) (M, Iss2); | |
155 | R6.H = (a1 += r7.l * r7.H); | |
156 | r7.h = (a1 += R2.L * R3.L) (S2rnd); | |
157 | r6.H = (A1 -= R4.h * r2.h); | |
158 | r5.h = (a1 -= r3.H * r7.L) (M, tFu); | |
159 | ||
160 | .text | |
161 | .global multiply_accumulate_data_reg | |
162 | multiply_accumulate_data_reg: | |
163 | R0 = (A0 = R1.L * R2.L); | |
164 | R2 = (A0 = r1.l * r2.l) (is); | |
165 | r4 = (a0 += r7.h * r6.L); | |
166 | r6 = (A0 += R5.L * r3.h) (s2RND); | |
167 | R6 = (a0 -= r2.h * r7.l); | |
168 | r4 = (A0 -= R0.L * r6.H) (FU); | |
169 | ||
170 | r7 = (a1 = r0.h * r1.l); | |
171 | R5 = (A1 = r2.H * r3.H) (M, fu); | |
172 | R3 = (A1 += r7.l * r5.l); | |
173 | r1 = (a1 += r2.h * r7.h) (iss2); | |
174 | r3 = (A1 -= r0.l * R0.H); | |
175 | R5 = (a1 -= R2.l * R7.h) (m, is); | |
176 | ||
177 | .text | |
178 | .global negate | |
179 | negate: | |
180 | R5 = - r0; | |
181 | r7 = -R2(s); | |
182 | R7 = -r2(Ns); | |
183 | A0 = -A0; | |
184 | a0 = -a1; | |
185 | A1 = -A0; | |
186 | a1 = -A1; | |
187 | a1 = -a1, a0 = -a0; | |
188 | ||
189 | .text | |
190 | .global round_half | |
191 | round_half: | |
192 | R5.L = r3 (rnd); | |
193 | r6.H = r0 (RND); | |
194 | ||
195 | .text | |
196 | .global saturate | |
197 | saturate: | |
198 | A0 = A0 (S); | |
199 | a1 = a1 (s); | |
200 | A1 = a1 (S), a0 = A0 (s); | |
201 | ||
202 | .text | |
203 | .global signbits | |
204 | signbits: | |
205 | R5.l = signbits r0; | |
206 | r0.L = SIGNbits r7.H; | |
207 | r3.l = signBits A0; | |
208 | r7.L = SIGNBITS a1; | |
209 | ||
210 | .text | |
211 | .global subtract | |
212 | subtract: | |
213 | R5 = R3 - R0; | |
214 | R7 = R7 - r0 (S); | |
215 | r3 = r2 - r1 (ns); | |
216 | ||
217 | r5.l = R6.H - R7.h (s); | |
218 | r0.H = r3.l - r3.h (NS); | |
219 | ||
220 | .text | |
221 | .global subtract_immediate | |
222 | subtract_immediate: | |
223 | I2 -= 2; | |
224 | i0 -= 4; | |
225 |