annotate libtwamr/s10_8pf.c @ 444:fe4983b05230

amrtest: implement twamr-decode
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 09 May 2024 23:35:25 +0000
parents ebd064c52fe3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
316
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * R99 Version 3.3.0
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * REL-4 Version 4.1.0
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 * File : s10_8pf.c
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 * Purpose : Searches a 35/31 bit algebraic codebook containing
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 * : 10/8 pulses in a frame of 40 samples.
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 /*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 * MODULE INCLUDE FILE AND VERSION ID
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 #include "namespace.h"
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 #include "s10_8pf.h"
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 /*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 * INCLUDE FILES
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 #include "typedef.h"
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 #include "basic_op.h"
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 #include "no_count.h"
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #include "cnst.h"
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 /*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 * LOCAL VARIABLES AND TABLES
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 ********************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 /*************************************************************************
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 * FUNCTION search_10and8i40()
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 * PURPOSE: Search the best codevector; determine positions of the 10/8
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 * pulses in the 40-sample frame.
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 * search_10and8i40 (10,5,5,dn, rr, ipos, pos_max, codvec); for GSMEFR
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 * search_10and8i40 (8, 4,4,dn, rr, ipos, pos_max, codvec); for 10.2
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 *************************************************************************/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 #define _1_2 (Word16)(32768L/2)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 #define _1_4 (Word16)(32768L/4)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 #define _1_8 (Word16)(32768L/8)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 #define _1_16 (Word16)(32768L/16)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 #define _1_32 (Word16)(32768L/32)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 #define _1_64 (Word16)(32768L/64)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 #define _1_128 (Word16)(32768L/128)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 void search_10and8i40 (
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 Word16 nbPulse, /* i : nbpulses to find */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 Word16 step, /* i : stepsize */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 Word16 nbTracks, /* i : nbTracks */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 Word16 dn[], /* i : correlation between target and h[] */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 Word16 rr[][L_CODE], /* i : matrix of autocorrelation */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 Word16 ipos[], /* i : starting position for each pulse */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 Word16 pos_max[], /* i : position of maximum of dn[] */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 Word16 codvec[] /* o : algebraic codebook vector */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 )
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 Word16 i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 Word16 i, j, k, pos, ia, ib;
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 Word16 psk, ps, ps0, ps1, ps2, sq, sq2;
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 Word16 alpk, alp, alp_16;
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 Word16 rrv[L_CODE];
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 Word32 s, alp0, alp1, alp2;
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 Word16 gsmefrFlag;
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 test();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 if (sub(nbPulse, 10) == 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 gsmefrFlag=1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 else
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 gsmefrFlag=0; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 /* fix i0 on maximum of correlation position */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 i0 = pos_max[ipos[0]]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 /*------------------------------------------------------------------*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 * i1 loop: *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 *------------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 /* Default value */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 psk = -1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 alpk = 1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 for (i = 0; i < nbPulse; i++)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 codvec[i] = i; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 for (i = 1; i < nbTracks; i++)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 i1 = pos_max[ipos[1]]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 ps0 = add (dn[i0], dn[i1]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 alp0 = L_mult (rr[i0][i0], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 alp0 = L_mac (alp0, rr[i1][i1], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 alp0 = L_mac (alp0, rr[i0][i1], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 /*----------------------------------------------------------------*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 * i2 and i3 loop: *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 *----------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 /* initialize 4 indices for next loop. */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 move16 (); /* initialize "rr[i3][i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 move16 (); /* initialize "rr[i0][i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 move16 (); /* initialize "rr[i1][i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 move16 (); /* initialize "rrv[i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 for (i3 = ipos[3]; i3 < L_CODE; i3 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 s = L_mult (rr[i3][i3], _1_8); /* index incr= step+L_CODE */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 s = L_mac (s, rr[i0][i3], _1_4); /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 s = L_mac (s, rr[i1][i3], _1_4); /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 rrv[i3] = round (s); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 /* Default value */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 sq = -1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 alp = 1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 ps = 0; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 ia = ipos[2]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 ib = ipos[3]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 /* initialize 4 indices for i2 loop. */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 move16 (); /* initialize "dn[i2]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 move16 (); /* initialize "rr[i2][i2]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 move16 (); /* initialize "rr[i0][i2]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 move16 (); /* initialize "rr[i1][i2]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 for (i2 = ipos[2]; i2 < L_CODE; i2 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 ps1 = add (ps0, dn[i2]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 /* index incr= step+L_CODE */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 alp1 = L_mac (alp0, rr[i2][i2], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 alp1 = L_mac (alp1, rr[i0][i2], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 alp1 = L_mac (alp1, rr[i1][i2], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 /* initialize 3 indices for i3 inner loop */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 move16 (); /* initialize "dn[i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 move16 (); /* initialize "rrv[i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 move16 (); /* initialize "rr[i2][i3]" pointer */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 for (i3 = ipos[3]; i3 < L_CODE; i3 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 ps2 = add (ps1, dn[i3]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 alp2 = L_mac (alp1, rrv[i3], _1_2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 /* index increment = step */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 alp2 = L_mac (alp2, rr[i2][i3], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 sq2 = mult (ps2, ps2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 alp_16 = round (alp2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 s = L_msu (L_mult (alp, sq2), sq, alp_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 test ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 if (s > 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 sq = sq2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 ps = ps2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 alp = alp_16; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 ia = i2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 ib = i3; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 i2 = ia; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 i3 = ib; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 /*----------------------------------------------------------------*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 * i4 and i5 loop: *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 *----------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 ps0 = ps; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 alp0 = L_mult (alp, _1_2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 /* initialize 6 indices for next loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 move16 (); move16 (); move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 for (i5 = ipos[5]; i5 < L_CODE; i5 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 s = L_mult (rr[i5][i5], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 s = L_mac (s, rr[i0][i5], _1_4);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 s = L_mac (s, rr[i1][i5], _1_4);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 s = L_mac (s, rr[i2][i5], _1_4);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 s = L_mac (s, rr[i3][i5], _1_4);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 rrv[i5] = round (s); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 /* Default value */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 sq = -1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 alp = 1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 ps = 0; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 ia = ipos[4]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 ib = ipos[5]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 /* initialize 6 indices for i4 loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 move16 (); move16 (); move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 for (i4 = ipos[4]; i4 < L_CODE; i4 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 ps1 = add (ps0, dn[i4]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 alp1 = L_mac (alp0, rr[i4][i4], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 alp1 = L_mac (alp1, rr[i0][i4], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 alp1 = L_mac (alp1, rr[i1][i4], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 alp1 = L_mac (alp1, rr[i2][i4], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 alp1 = L_mac (alp1, rr[i3][i4], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 /* initialize 3 indices for i5 inner loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 for (i5 = ipos[5]; i5 < L_CODE; i5 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235 ps2 = add (ps1, dn[i5]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 alp2 = L_mac (alp1, rrv[i5], _1_4);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 alp2 = L_mac (alp2, rr[i4][i5], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 sq2 = mult (ps2, ps2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 alp_16 = round (alp2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 s = L_msu (L_mult (alp, sq2), sq, alp_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 test ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 if (s > 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 sq = sq2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 ps = ps2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 alp = alp_16; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252 ia = i4; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 ib = i5; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 i4 = ia; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258 i5 = ib; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 /*----------------------------------------------------------------*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 * i6 and i7 loop: *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 *----------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264 ps0 = ps; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265 alp0 = L_mult (alp, _1_2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 /* initialize 8 indices for next loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 for (i7 = ipos[7]; i7 < L_CODE; i7 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 s = L_mult (rr[i7][i7], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 s = L_mac (s, rr[i0][i7], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 s = L_mac (s, rr[i1][i7], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 s = L_mac (s, rr[i2][i7], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 s = L_mac (s, rr[i3][i7], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 s = L_mac (s, rr[i4][i7], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 s = L_mac (s, rr[i5][i7], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280 rrv[i7] = round (s); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 /* Default value */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 sq = -1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285 alp = 1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 ps = 0; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287 ia = ipos[6]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 ib = ipos[7]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 /* initialize 8 indices for i6 loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
291 move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
292 move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
293
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
294 for (i6 = ipos[6]; i6 < L_CODE; i6 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
295 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
296 ps1 = add (ps0, dn[i6]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
297
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
298 alp1 = L_mac (alp0, rr[i6][i6], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
299 alp1 = L_mac (alp1, rr[i0][i6], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
300 alp1 = L_mac (alp1, rr[i1][i6], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
301 alp1 = L_mac (alp1, rr[i2][i6], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
302 alp1 = L_mac (alp1, rr[i3][i6], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
303 alp1 = L_mac (alp1, rr[i4][i6], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
304 alp1 = L_mac (alp1, rr[i5][i6], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
305
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
306 /* initialize 3 indices for i7 inner loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
307 move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
308
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
309 for (i7 = ipos[7]; i7 < L_CODE; i7 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
310 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
311 ps2 = add (ps1, dn[i7]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
312
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
313 alp2 = L_mac (alp1, rrv[i7], _1_4);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
314 alp2 = L_mac (alp2, rr[i6][i7], _1_32);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
315
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
316 sq2 = mult (ps2, ps2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
317
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
318 alp_16 = round (alp2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
319
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
320 s = L_msu (L_mult (alp, sq2), sq, alp_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
321
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
322 test ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
323 if (s > 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
324 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
325 sq = sq2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
326 ps = ps2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
327 alp = alp_16; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
328 ia = i6; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
329 ib = i7; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
330 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
331 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
332 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
333 i6 = ia; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
334 i7 = ib; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
335
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
336 /* now finished searching a set of 8 pulses */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
337
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
338 test();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
339 if(gsmefrFlag != 0){
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
340 /* go on with the two last pulses for GSMEFR */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
341 /*----------------------------------------------------------------*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
342 * i8 and i9 loop: *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
343 *----------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
344
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
345 ps0 = ps; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
346 alp0 = L_mult (alp, _1_2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
347
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
348 /* initialize 10 indices for next loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
349 move16 (); move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
350 move16 (); move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
351
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
352 for (i9 = ipos[9]; i9 < L_CODE; i9 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
353 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
354 s = L_mult (rr[i9][i9], _1_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
355 s = L_mac (s, rr[i0][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
356 s = L_mac (s, rr[i1][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
357 s = L_mac (s, rr[i2][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
358 s = L_mac (s, rr[i3][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
359 s = L_mac (s, rr[i4][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
360 s = L_mac (s, rr[i5][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
361 s = L_mac (s, rr[i6][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
362 s = L_mac (s, rr[i7][i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
363 rrv[i9] = round (s); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
364 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
365
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
366 /* Default value */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
367 sq = -1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
368 alp = 1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
369 ps = 0; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
370 ia = ipos[8]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
371 ib = ipos[9]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
372
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
373 /* initialize 10 indices for i8 loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
374 move16 (); move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
375 move16 (); move16 (); move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
376
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
377 for (i8 = ipos[8]; i8 < L_CODE; i8 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
378 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
379 ps1 = add (ps0, dn[i8]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
380
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
381 alp1 = L_mac (alp0, rr[i8][i8], _1_128);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
382 alp1 = L_mac (alp1, rr[i0][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
383 alp1 = L_mac (alp1, rr[i1][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
384 alp1 = L_mac (alp1, rr[i2][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
385 alp1 = L_mac (alp1, rr[i3][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
386 alp1 = L_mac (alp1, rr[i4][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
387 alp1 = L_mac (alp1, rr[i5][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
388 alp1 = L_mac (alp1, rr[i6][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
389 alp1 = L_mac (alp1, rr[i7][i8], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
390
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
391 /* initialize 3 indices for i9 inner loop (see i2-i3 loop) */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
392 move16 (); move16 (); move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
393
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
394 for (i9 = ipos[9]; i9 < L_CODE; i9 += step)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
395 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
396 ps2 = add (ps1, dn[i9]);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
397
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
398 alp2 = L_mac (alp1, rrv[i9], _1_8);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
399 alp2 = L_mac (alp2, rr[i8][i9], _1_64);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
400
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
401 sq2 = mult (ps2, ps2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
402
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
403 alp_16 = round (alp2);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
404
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
405 s = L_msu (L_mult (alp, sq2), sq, alp_16);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
406
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
407 test ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
408 if (s > 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
409 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
410 sq = sq2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
411 ps = ps2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
412 alp = alp_16; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
413 ia = i8; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
414 ib = i9; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
415 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
416 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
417 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
418 }/* end gsmefrFlag */
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
419
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
420 /*---------------------------------------------------------------- *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
421 * test and memorise if this combination is better than the last one.*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
422 *----------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
423
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
424 s = L_msu (L_mult (alpk, sq), psk, alp);
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
425
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
426 test ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
427 if (s > 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
428 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
429 psk = sq; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
430 alpk = alp; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
431 codvec[0] = i0; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
432 codvec[1] = i1; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
433 codvec[2] = i2; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
434 codvec[3] = i3; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
435 codvec[4] = i4; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
436 codvec[5] = i5; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
437 codvec[6] = i6; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
438 codvec[7] = i7; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
439
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
440 test();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
441 if (gsmefrFlag != 0)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
442 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
443 codvec[8] = ia; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
444 codvec[9] = ib; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
445 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
446 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
447 /*----------------------------------------------------------------*
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
448 * Cyclic permutation of i1,i2,i3,i4,i5,i6,i7,(i8 and i9). *
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
449 *----------------------------------------------------------------*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
450
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
451 pos = ipos[1]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
452 for (j = 1, k = 2; k < nbPulse; j++, k++)
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
453 {
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
454 ipos[j] = ipos[k]; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
455 }
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
456 ipos[sub(nbPulse,1)] = pos; move16 ();
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
457 } /* end 1..nbTracks loop*/
ebd064c52fe3 libtwamr: integrate s10_8pf.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
458 }