Home | History | Annotate | Download | only in bfin
      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