OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [first/] [mp3/] [sw/] [mad-xess/] [libmad/] [imdct_or32.s] - Blame information for rev 1780

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 268 lampret
.file "imdct_or32.s"
2
 
3
#define X0   0x00
4
#define X1   0x04
5
#define X2   0x08
6
#define X3   0x0C
7
#define X4   0x10
8
#define X5   0x14
9
#define X6   0x18
10
#define X7   0x1c
11
#define X8   0x20
12
#define X9   0x24
13
#define X10  0x28
14
#define X11  0x2c
15
#define X12  0x30
16
#define X13  0x34
17
#define X14  0x38
18
#define X15  0x3c
19
#define X16  0x40
20
#define X17  0x44
21
 
22
#define x0   0x00
23
#define x1   0x04
24
#define x2   0x08
25
#define x3   0x0C
26
#define x4   0x10
27
#define x5   0x14
28
#define x6   0x18
29
#define x7   0x1c
30
#define x8   0x20
31
#define x9   0x24
32
#define x10  0x28
33
#define x11  0x2c
34
#define x12  0x30
35
#define x13  0x34
36
#define x14  0x38
37
#define x15  0x3c
38
#define x16  0x40
39
#define x17  0x44
40
 
41
.data
42
K00:    .word 0x0ffc19fd
43
K01:    .word 0x00b2aa3e
44
K02:    .word 0x0fdcf549
45
K03:    .word 0x0216a2a2
46
K04:    .word 0x0f9ee890
47
K05:    .word 0x03768962
48
K06:    .word 0x0f426cb5
49
K07:    .word 0x04cfb0e2
50
K08:    .word 0x0ec835e8
51
K09:    .word 0x061f78aa
52
K10:    .word 0x0e313245
53
K11:    .word 0x07635284
54
K12:    .word 0x0d7e8807
55
K13:    .word 0x0898c779
56
K14:    .word 0x0cb19346
57
K15:    .word 0x09bd7ca0
58
K16:    .word 0x0bcbe352
59
K17:    .word 0x0acf37ad
60
 
61
#define WL0  0x00b2aa3e
62
#define WL1  0x0216a2a2
63
#define WL2  0x03768962
64
#define WL3  0x04cfb0e2
65
#define WL4  0x061f78aa
66
#define WL5  0x07635284
67
#define WL6  0x0898c779
68
#define WL7  0x09bd7ca0
69
#define WL8  0x0acf37ad
70
#define WL9  0x0bcbe352
71
#define WL10 0x0cb19346
72
#define WL11 0x0d7e8807
73
#define WL12 0x0e313245
74
#define WL13 0x0ec835e8
75
#define WL14 0x0f426cb5
76
#define WL15 0x0f9ee890
77
#define WL16 0x0fdcf549
78
#define WL17 0x0ffc19fd
79
 
80
#define MACLO 0x2800
81
#define MACHI 0x2801
82
 
83
#   On entry:
84
#      r3 = pointer to 18 element input  array
85
#      r4 = pointer to 36 element output array
86
 
87
.text
88
.proc imdct36
89
        l.mtspr MACLO, 0
90
        l.mtspr MACHI, 0
91
 
92
# MAD_F_ML0(hi, lo, X[4],  MAD_F(0x0ec835e8));
93
        l.lwz   r5, X4(r3)
94
        l.lwz   r6, K08
95
        l.mac   r5, r6
96
 
97
# MAD_F_MLA(hi, lo, X[13], MAD_F(0x061f78aa));
98
        l.lwz   r5, X13(r3)
99
        l.lwz   r7, K09
100
        l.mac   r5, r7
101
# t6 = MAD_F_MLZ(hi, lo);
102
 
103
  MAD_F_MLA(hi, lo, (t14 = X[1] - X[10]), -MAD_F(0x061f78aa));
104
  MAD_F_MLA(hi, lo, (t15 = X[7] + X[16]), -MAD_F(0x0ec835e8));
105
 
106
  t0 = MAD_F_MLZ(hi, lo);
107
 
108
  MAD_F_MLA(hi, lo, (t8  = X[0] - X[11] - X[12]),  MAD_F(0x0216a2a2));
109
  MAD_F_MLA(hi, lo, (t9  = X[2] - X[9]  - X[14]),  MAD_F(0x09bd7ca0));
110
  MAD_F_MLA(hi, lo, (t10 = X[3] - X[8]  - X[15]), -MAD_F(0x0cb19346));
111
  MAD_F_MLA(hi, lo, (t11 = X[5] - X[6]  - X[17]), -MAD_F(0x0fdcf549));
112
 
113
  x[7]  = MAD_F_MLZ(hi, lo);
114
  x[10] = -x[7];
115
 
116
  MAD_F_ML0(hi, lo, t8,  -MAD_F(0x0cb19346));
117
  MAD_F_MLA(hi, lo, t9,   MAD_F(0x0fdcf549));
118
  MAD_F_MLA(hi, lo, t10,  MAD_F(0x0216a2a2));
119
  MAD_F_MLA(hi, lo, t11, -MAD_F(0x09bd7ca0));
120
 
121
  x[19] = x[34] = MAD_F_MLZ(hi, lo) - t0;
122
 
123
  t12 = X[0] - X[3] + X[8] - X[11] - X[12] + X[15];
124
  t13 = X[2] + X[5] - X[6] - X[9]  - X[14] - X[17];
125
 
126
  MAD_F_ML0(hi, lo, t12, -MAD_F(0x0ec835e8));
127
  MAD_F_MLA(hi, lo, t13,  MAD_F(0x061f78aa));
128
 
129
  x[22] = x[31] = MAD_F_MLZ(hi, lo) + t0;
130
 
131
  MAD_F_ML0(hi, lo, X[1],  -MAD_F(0x09bd7ca0));
132
  MAD_F_MLA(hi, lo, X[7],   MAD_F(0x0216a2a2));
133
  MAD_F_MLA(hi, lo, X[10], -MAD_F(0x0fdcf549));
134
  MAD_F_MLA(hi, lo, X[16],  MAD_F(0x0cb19346));
135
 
136
  t1 = MAD_F_MLZ(hi, lo) + t6;
137
 
138
  MAD_F_ML0(hi, lo, X[0],   MAD_F(0x03768962));
139
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x0e313245));
140
  MAD_F_MLA(hi, lo, X[3],  -MAD_F(0x0ffc19fd));
141
  MAD_F_MLA(hi, lo, X[5],  -MAD_F(0x0acf37ad));
142
  MAD_F_MLA(hi, lo, X[6],   MAD_F(0x04cfb0e2));
143
  MAD_F_MLA(hi, lo, X[8],  -MAD_F(0x0898c779));
144
  MAD_F_MLA(hi, lo, X[9],   MAD_F(0x0d7e8807));
145
  MAD_F_MLA(hi, lo, X[11],  MAD_F(0x0f426cb5));
146
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0bcbe352));
147
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x00b2aa3e));
148
  MAD_F_MLA(hi, lo, X[15], -MAD_F(0x07635284));
149
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0f9ee890));
150
 
151
  x[6]  = MAD_F_MLZ(hi, lo) + t1;
152
  x[11] = -x[6];
153
 
154
  MAD_F_ML0(hi, lo, X[0],  -MAD_F(0x0f426cb5));
155
  MAD_F_MLA(hi, lo, X[2],  -MAD_F(0x00b2aa3e));
156
  MAD_F_MLA(hi, lo, X[3],   MAD_F(0x0898c779));
157
  MAD_F_MLA(hi, lo, X[5],   MAD_F(0x0f9ee890));
158
  MAD_F_MLA(hi, lo, X[6],   MAD_F(0x0acf37ad));
159
  MAD_F_MLA(hi, lo, X[8],  -MAD_F(0x07635284));
160
  MAD_F_MLA(hi, lo, X[9],  -MAD_F(0x0e313245));
161
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0bcbe352));
162
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x03768962));
163
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x0d7e8807));
164
  MAD_F_MLA(hi, lo, X[15],  MAD_F(0x0ffc19fd));
165
  MAD_F_MLA(hi, lo, X[17],  MAD_F(0x04cfb0e2));
166
 
167
  x[23] = x[30] = MAD_F_MLZ(hi, lo) + t1;
168
 
169
  MAD_F_ML0(hi, lo, X[0],  -MAD_F(0x0bcbe352));
170
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x0d7e8807));
171
  MAD_F_MLA(hi, lo, X[3],  -MAD_F(0x07635284));
172
  MAD_F_MLA(hi, lo, X[5],   MAD_F(0x04cfb0e2));
173
  MAD_F_MLA(hi, lo, X[6],   MAD_F(0x0f9ee890));
174
  MAD_F_MLA(hi, lo, X[8],  -MAD_F(0x0ffc19fd));
175
  MAD_F_MLA(hi, lo, X[9],  -MAD_F(0x00b2aa3e));
176
  MAD_F_MLA(hi, lo, X[11],  MAD_F(0x03768962));
177
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0f426cb5));
178
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x0e313245));
179
  MAD_F_MLA(hi, lo, X[15],  MAD_F(0x0898c779));
180
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0acf37ad));
181
 
182
  x[18] = x[35] = MAD_F_MLZ(hi, lo) - t1;
183
 
184
  MAD_F_ML0(hi, lo, X[4],   MAD_F(0x061f78aa));
185
  MAD_F_MLA(hi, lo, X[13], -MAD_F(0x0ec835e8));
186
 
187
  t7 = MAD_F_MLZ(hi, lo);
188
 
189
  MAD_F_MLA(hi, lo, X[1],  -MAD_F(0x0cb19346));
190
  MAD_F_MLA(hi, lo, X[7],   MAD_F(0x0fdcf549));
191
  MAD_F_MLA(hi, lo, X[10],  MAD_F(0x0216a2a2));
192
  MAD_F_MLA(hi, lo, X[16], -MAD_F(0x09bd7ca0));
193
 
194
  t2 = MAD_F_MLZ(hi, lo);
195
 
196
  MAD_F_MLA(hi, lo, X[0],   MAD_F(0x04cfb0e2));
197
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x0ffc19fd));
198
  MAD_F_MLA(hi, lo, X[3],  -MAD_F(0x0d7e8807));
199
  MAD_F_MLA(hi, lo, X[5],   MAD_F(0x03768962));
200
  MAD_F_MLA(hi, lo, X[6],  -MAD_F(0x0bcbe352));
201
  MAD_F_MLA(hi, lo, X[8],  -MAD_F(0x0e313245));
202
  MAD_F_MLA(hi, lo, X[9],   MAD_F(0x07635284));
203
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0acf37ad));
204
  MAD_F_MLA(hi, lo, X[12],  MAD_F(0x0f9ee890));
205
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x0898c779));
206
  MAD_F_MLA(hi, lo, X[15],  MAD_F(0x00b2aa3e));
207
  MAD_F_MLA(hi, lo, X[17],  MAD_F(0x0f426cb5));
208
 
209
  x[5]  = MAD_F_MLZ(hi, lo);
210
  x[12] = -x[5];
211
 
212
  MAD_F_ML0(hi, lo, X[0],   MAD_F(0x0acf37ad));
213
  MAD_F_MLA(hi, lo, X[2],  -MAD_F(0x0898c779));
214
  MAD_F_MLA(hi, lo, X[3],   MAD_F(0x0e313245));
215
  MAD_F_MLA(hi, lo, X[5],  -MAD_F(0x0f426cb5));
216
  MAD_F_MLA(hi, lo, X[6],  -MAD_F(0x03768962));
217
  MAD_F_MLA(hi, lo, X[8],   MAD_F(0x00b2aa3e));
218
  MAD_F_MLA(hi, lo, X[9],  -MAD_F(0x0ffc19fd));
219
  MAD_F_MLA(hi, lo, X[11],  MAD_F(0x0f9ee890));
220
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x04cfb0e2));
221
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x07635284));
222
  MAD_F_MLA(hi, lo, X[15],  MAD_F(0x0d7e8807));
223
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0bcbe352));
224
 
225
  x[0]  = MAD_F_MLZ(hi, lo) + t2;
226
  x[17] = -x[0];
227
 
228
  MAD_F_ML0(hi, lo, X[0],  -MAD_F(0x0f9ee890));
229
  MAD_F_MLA(hi, lo, X[2],  -MAD_F(0x07635284));
230
  MAD_F_MLA(hi, lo, X[3],  -MAD_F(0x00b2aa3e));
231
  MAD_F_MLA(hi, lo, X[5],   MAD_F(0x0bcbe352));
232
  MAD_F_MLA(hi, lo, X[6],   MAD_F(0x0f426cb5));
233
  MAD_F_MLA(hi, lo, X[8],   MAD_F(0x0d7e8807));
234
  MAD_F_MLA(hi, lo, X[9],   MAD_F(0x0898c779));
235
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x04cfb0e2));
236
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0acf37ad));
237
  MAD_F_MLA(hi, lo, X[14], -MAD_F(0x0ffc19fd));
238
  MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0e313245));
239
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x03768962));
240
 
241
  x[24] = x[29] = MAD_F_MLZ(hi, lo) + t2;
242
 
243
  MAD_F_ML0(hi, lo, X[1],  -MAD_F(0x0216a2a2));
244
  MAD_F_MLA(hi, lo, X[7],  -MAD_F(0x09bd7ca0));
245
  MAD_F_MLA(hi, lo, X[10],  MAD_F(0x0cb19346));
246
  MAD_F_MLA(hi, lo, X[16],  MAD_F(0x0fdcf549));
247
 
248
  t3 = MAD_F_MLZ(hi, lo) + t7;
249
 
250
  MAD_F_ML0(hi, lo, X[0],   MAD_F(0x00b2aa3e));
251
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x03768962));
252
  MAD_F_MLA(hi, lo, X[3],  -MAD_F(0x04cfb0e2));
253
  MAD_F_MLA(hi, lo, X[5],  -MAD_F(0x07635284));
254
  MAD_F_MLA(hi, lo, X[6],   MAD_F(0x0898c779));
255
  MAD_F_MLA(hi, lo, X[8],   MAD_F(0x0acf37ad));
256
  MAD_F_MLA(hi, lo, X[9],  -MAD_F(0x0bcbe352));
257
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0d7e8807));
258
  MAD_F_MLA(hi, lo, X[12],  MAD_F(0x0e313245));
259
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x0f426cb5));
260
  MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0f9ee890));
261
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0ffc19fd));
262
 
263
  x[8] = MAD_F_MLZ(hi, lo) + t3;
264
  x[9] = -x[8];
265
 
266
  MAD_F_ML0(hi, lo, X[0],  -MAD_F(0x0e313245));
267
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x0bcbe352));
268
  MAD_F_MLA(hi, lo, X[3],   MAD_F(0x0f9ee890));
269
  MAD_F_MLA(hi, lo, X[5],  -MAD_F(0x0898c779));
270
  MAD_F_MLA(hi, lo, X[6],  -MAD_F(0x0ffc19fd));
271
  MAD_F_MLA(hi, lo, X[8],   MAD_F(0x04cfb0e2));
272
  MAD_F_MLA(hi, lo, X[9],   MAD_F(0x0f426cb5));
273
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x00b2aa3e));
274
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0d7e8807));
275
  MAD_F_MLA(hi, lo, X[14], -MAD_F(0x03768962));
276
  MAD_F_MLA(hi, lo, X[15],  MAD_F(0x0acf37ad));
277
  MAD_F_MLA(hi, lo, X[17],  MAD_F(0x07635284));
278
 
279
  x[21] = x[32] = MAD_F_MLZ(hi, lo) + t3;
280
 
281
  MAD_F_ML0(hi, lo, X[0],  -MAD_F(0x0d7e8807));
282
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x0f426cb5));
283
  MAD_F_MLA(hi, lo, X[3],   MAD_F(0x0acf37ad));
284
  MAD_F_MLA(hi, lo, X[5],  -MAD_F(0x0ffc19fd));
285
  MAD_F_MLA(hi, lo, X[6],  -MAD_F(0x07635284));
286
  MAD_F_MLA(hi, lo, X[8],   MAD_F(0x0f9ee890));
287
  MAD_F_MLA(hi, lo, X[9],   MAD_F(0x03768962));
288
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0e313245));
289
  MAD_F_MLA(hi, lo, X[12],  MAD_F(0x00b2aa3e));
290
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x0bcbe352));
291
  MAD_F_MLA(hi, lo, X[15], -MAD_F(0x04cfb0e2));
292
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0898c779));
293
 
294
  x[20] = x[33] = MAD_F_MLZ(hi, lo) - t3;
295
 
296
  MAD_F_ML0(hi, lo, t14, -MAD_F(0x0ec835e8));
297
  MAD_F_MLA(hi, lo, t15,  MAD_F(0x061f78aa));
298
 
299
  t4 = MAD_F_MLZ(hi, lo) - t7;
300
 
301
  MAD_F_ML0(hi, lo, t12, MAD_F(0x061f78aa));
302
  MAD_F_MLA(hi, lo, t13, MAD_F(0x0ec835e8));
303
 
304
  x[4]  = MAD_F_MLZ(hi, lo) + t4;
305
  x[13] = -x[4];
306
 
307
  MAD_F_ML0(hi, lo, t8,   MAD_F(0x09bd7ca0));
308
  MAD_F_MLA(hi, lo, t9,  -MAD_F(0x0216a2a2));
309
  MAD_F_MLA(hi, lo, t10,  MAD_F(0x0fdcf549));
310
  MAD_F_MLA(hi, lo, t11, -MAD_F(0x0cb19346));
311
 
312
  x[1]  = MAD_F_MLZ(hi, lo) + t4;
313
  x[16] = -x[1];
314
 
315
  MAD_F_ML0(hi, lo, t8,  -MAD_F(0x0fdcf549));
316
  MAD_F_MLA(hi, lo, t9,  -MAD_F(0x0cb19346));
317
  MAD_F_MLA(hi, lo, t10, -MAD_F(0x09bd7ca0));
318
  MAD_F_MLA(hi, lo, t11, -MAD_F(0x0216a2a2));
319
 
320
  x[25] = x[28] = MAD_F_MLZ(hi, lo) + t4;
321
 
322
  MAD_F_ML0(hi, lo, X[1],  -MAD_F(0x0fdcf549));
323
  MAD_F_MLA(hi, lo, X[7],  -MAD_F(0x0cb19346));
324
  MAD_F_MLA(hi, lo, X[10], -MAD_F(0x09bd7ca0));
325
  MAD_F_MLA(hi, lo, X[16], -MAD_F(0x0216a2a2));
326
 
327
  t5 = MAD_F_MLZ(hi, lo) - t6;
328
 
329
  MAD_F_ML0(hi, lo, X[0],   MAD_F(0x0898c779));
330
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x04cfb0e2));
331
  MAD_F_MLA(hi, lo, X[3],   MAD_F(0x0bcbe352));
332
  MAD_F_MLA(hi, lo, X[5],   MAD_F(0x00b2aa3e));
333
  MAD_F_MLA(hi, lo, X[6],   MAD_F(0x0e313245));
334
  MAD_F_MLA(hi, lo, X[8],  -MAD_F(0x03768962));
335
  MAD_F_MLA(hi, lo, X[9],   MAD_F(0x0f9ee890));
336
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x07635284));
337
  MAD_F_MLA(hi, lo, X[12],  MAD_F(0x0ffc19fd));
338
  MAD_F_MLA(hi, lo, X[14], -MAD_F(0x0acf37ad));
339
  MAD_F_MLA(hi, lo, X[15],  MAD_F(0x0f426cb5));
340
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x0d7e8807));
341
 
342
  x[2]  = MAD_F_MLZ(hi, lo) + t5;
343
  x[15] = -x[2];
344
 
345
  MAD_F_ML0(hi, lo, X[0],   MAD_F(0x07635284));
346
  MAD_F_MLA(hi, lo, X[2],   MAD_F(0x0acf37ad));
347
  MAD_F_MLA(hi, lo, X[3],   MAD_F(0x03768962));
348
  MAD_F_MLA(hi, lo, X[5],   MAD_F(0x0d7e8807));
349
  MAD_F_MLA(hi, lo, X[6],  -MAD_F(0x00b2aa3e));
350
  MAD_F_MLA(hi, lo, X[8],   MAD_F(0x0f426cb5));
351
  MAD_F_MLA(hi, lo, X[9],  -MAD_F(0x04cfb0e2));
352
  MAD_F_MLA(hi, lo, X[11],  MAD_F(0x0ffc19fd));
353
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x0898c779));
354
  MAD_F_MLA(hi, lo, X[14],  MAD_F(0x0f9ee890));
355
  MAD_F_MLA(hi, lo, X[15], -MAD_F(0x0bcbe352));
356
  MAD_F_MLA(hi, lo, X[17],  MAD_F(0x0e313245));
357
 
358
  x[3]  = MAD_F_MLZ(hi, lo) + t5;
359
  x[14] = -x[3];
360
 
361
  MAD_F_ML0(hi, lo, X[0],  -MAD_F(0x0ffc19fd));
362
  MAD_F_MLA(hi, lo, X[2],  -MAD_F(0x0f9ee890));
363
  MAD_F_MLA(hi, lo, X[3],  -MAD_F(0x0f426cb5));
364
  MAD_F_MLA(hi, lo, X[5],  -MAD_F(0x0e313245));
365
  MAD_F_MLA(hi, lo, X[6],  -MAD_F(0x0d7e8807));
366
  MAD_F_MLA(hi, lo, X[8],  -MAD_F(0x0bcbe352));
367
  MAD_F_MLA(hi, lo, X[9],  -MAD_F(0x0acf37ad));
368
  MAD_F_MLA(hi, lo, X[11], -MAD_F(0x0898c779));
369
  MAD_F_MLA(hi, lo, X[12], -MAD_F(0x07635284));
370
  MAD_F_MLA(hi, lo, X[14], -MAD_F(0x04cfb0e2));
371
  MAD_F_MLA(hi, lo, X[15], -MAD_F(0x03768962));
372
  MAD_F_MLA(hi, lo, X[17], -MAD_F(0x00b2aa3e));
373
 
374
  x[26] = x[27] = MAD_F_MLZ(hi, lo) + t5;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.