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 r7 = (a1+=r1.h*r3.h) (IU); 177 178 .text 179 .global negate 180 negate: 181 R5 = - r0; 182 r7 = -R2(s); 183 R7 = -r2(Ns); 184 A0 = -A0; 185 a0 = -a1; 186 A1 = -A0; 187 a1 = -A1; 188 a1 = -a1, a0 = -a0; 189 190 .text 191 .global round_half 192 round_half: 193 R5.L = r3 (rnd); 194 r6.H = r0 (RND); 195 196 .text 197 .global saturate 198 saturate: 199 A0 = A0 (S); 200 a1 = a1 (s); 201 A1 = a1 (S), a0 = A0 (s); 202 203 .text 204 .global signbits 205 signbits: 206 R5.l = signbits r0; 207 r0.L = SIGNbits r7.H; 208 r3.l = signBits A0; 209 r7.L = SIGNBITS a1; 210 211 .text 212 .global subtract 213 subtract: 214 R5 = R3 - R0; 215 R7 = R7 - r0 (S); 216 r3 = r2 - r1 (ns); 217 218 r5.l = R6.H - R7.h (s); 219 r0.H = r3.l - r3.h (NS); 220 221 .text 222 .global subtract_immediate 223 subtract_immediate: 224 I2 -= 2; 225 i0 -= 4; 226 227