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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gdb/] [gdb-6.8/] [sim/] [testsuite/] [sim/] [frv/] [cmqmulhs.cgs] - Blame information for rev 26

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 26 jlechner
# frv testcase for cmqmulhs $GRi,$GRj,$ACCk,$CCi,$cond
2
# mach: all
3
 
4
        .include "testutils.inc"
5
 
6
        start
7
 
8
        .global cmqmulhs
9
cmqmulhs:
10
        set_spr_immed   0x1b1b,cccr
11
 
12
        ; Positive operands
13
        set_fr_iimmed   2,3,fr8         ; multiply small numbers
14
        set_fr_iimmed   3,2,fr10
15
        set_fr_iimmed   0,1,fr9         ; multiply by 0
16
        set_fr_iimmed   2,0,fr11
17
        cmqmulhs        fr8,fr10,acc0,cc0,1
18
        test_accg_immed         0,accg0
19
        test_acc_immed  6,acc0
20
        test_accg_immed         0,accg1
21
        test_acc_immed  6,acc1
22
        test_accg_immed         0,accg2
23
        test_acc_immed  0,acc2
24
        test_accg_immed         0,accg3
25
        test_acc_immed  0,acc3
26
 
27
        set_fr_iimmed   2,1,fr8         ; multiply by 1
28
        set_fr_iimmed   1,2,fr10
29
        set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
30
        set_fr_iimmed   2,0x3fff,fr11
31
        cmqmulhs        fr8,fr10,acc0,cc0,1
32
        test_accg_immed         0,accg0
33
        test_acc_immed  2,acc0
34
        test_accg_immed         0,accg1
35
        test_acc_immed  2,acc1
36
        test_accg_immed         0,accg2
37
        test_acc_limmed 0,0x7ffe,acc2
38
        test_accg_immed         0,accg3
39
        test_acc_limmed 0,0x7ffe,acc3
40
 
41
        set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
42
        set_fr_iimmed   2,0x4000,fr10
43
        set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
44
        set_fr_iimmed   0x7fff,0x7fff,fr11
45
        cmqmulhs        fr8,fr10,acc0,cc0,1
46
        test_accg_immed         0,accg0
47
        test_acc_limmed 0x0000,0x8000,acc0
48
        test_accg_immed         0,accg1
49
        test_acc_limmed 0x0000,0x8000,acc1
50
        test_accg_immed         0,accg2
51
        test_acc_limmed 0x3fff,0x0001,acc2
52
        test_accg_immed         0,accg3
53
        test_acc_limmed 0x3fff,0x0001,acc3
54
 
55
        ; Mixed operands
56
        set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
57
        set_fr_iimmed   0xfffd,2,fr10
58
        set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
59
        set_fr_iimmed   1,0xfffe,fr11
60
        cmqmulhs        fr8,fr10,acc0,cc0,1
61
        test_accg_immed         0xff,accg0
62
        test_acc_immed  -6,acc0
63
        test_accg_immed         0xff,accg1
64
        test_acc_immed  -6,acc1
65
        test_accg_immed         0xff,accg2
66
        test_acc_immed  -2,acc2
67
        test_accg_immed         0xff,accg3
68
        test_acc_immed  -2,acc3
69
 
70
        set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
71
        set_fr_iimmed   0,0xfffe,fr10
72
        set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
73
        set_fr_iimmed   0xfffe,0x2001,fr11
74
        cmqmulhs        fr8,fr10,acc0,cc4,1
75
        test_accg_immed         0,accg0
76
        test_acc_immed  0,acc0
77
        test_accg_immed         0,accg1
78
        test_acc_immed  0,acc1
79
        test_accg_immed         0xff,accg2
80
        test_acc_limmed 0xffff,0xbffe,acc2
81
        test_accg_immed         0xff,accg3
82
        test_acc_limmed 0xffff,0xbffe,acc3
83
 
84
        set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
85
        set_fr_iimmed   0xfffe,0x4000,fr10
86
        set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
87
        set_fr_iimmed   0x8000,0x7fff,fr11
88
        cmqmulhs        fr8,fr10,acc0,cc4,1
89
        test_accg_immed         0xff,accg0
90
        test_acc_limmed 0xffff,0x8000,acc0
91
        test_accg_immed         0xff,accg1
92
        test_acc_limmed 0xffff,0x8000,acc1
93
        test_accg_immed         0xff,accg2
94
        test_acc_limmed 0xc000,0x8000,acc2
95
        test_accg_immed         0xff,accg3
96
        test_acc_limmed 0xc000,0x8000,acc3
97
 
98
        ; Negative operands
99
        set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
100
        set_fr_iimmed   0xfffd,0xfffe,fr10
101
        set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
102
        set_fr_iimmed   0xfffe,0xffff,fr11
103
        cmqmulhs        fr8,fr10,acc0,cc4,1
104
        test_accg_immed         0,accg0
105
        test_acc_immed  6,acc0
106
        test_accg_immed         0,accg1
107
        test_acc_immed  6,acc1
108
        test_accg_immed         0,accg2
109
        test_acc_immed  2,acc2
110
        test_accg_immed         0,accg3
111
        test_acc_immed  2,acc3
112
 
113
        set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
114
        set_fr_iimmed   0x8001,0x8001,fr10
115
        set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
116
        set_fr_iimmed   0x8000,0x8000,fr11
117
        cmqmulhs        fr8,fr10,acc0,cc4,1
118
        test_accg_immed         0,accg0
119
        test_acc_immed  0x3fff0001,acc0
120
        test_accg_immed         0,accg1
121
        test_acc_immed  0x3fff0001,acc1
122
        test_accg_immed         0,accg2
123
        test_acc_immed  0x40000000,acc2
124
        test_accg_immed         0,accg3
125
        test_acc_immed  0x40000000,acc3
126
 
127
        ; Positive operands
128
        set_fr_iimmed   2,3,fr8         ; multiply small numbers
129
        set_fr_iimmed   3,2,fr10
130
        set_fr_iimmed   0,1,fr9         ; multiply by 0
131
        set_fr_iimmed   2,0,fr11
132
        cmqmulhs        fr8,fr10,acc0,cc1,0
133
        test_accg_immed         0,accg0
134
        test_acc_immed  6,acc0
135
        test_accg_immed         0,accg1
136
        test_acc_immed  6,acc1
137
        test_accg_immed         0,accg2
138
        test_acc_immed  0,acc2
139
        test_accg_immed         0,accg3
140
        test_acc_immed  0,acc3
141
 
142
        set_fr_iimmed   2,1,fr8         ; multiply by 1
143
        set_fr_iimmed   1,2,fr10
144
        set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
145
        set_fr_iimmed   2,0x3fff,fr11
146
        cmqmulhs        fr8,fr10,acc0,cc1,0
147
        test_accg_immed         0,accg0
148
        test_acc_immed  2,acc0
149
        test_accg_immed         0,accg1
150
        test_acc_immed  2,acc1
151
        test_accg_immed         0,accg2
152
        test_acc_limmed 0,0x7ffe,acc2
153
        test_accg_immed         0,accg3
154
        test_acc_limmed 0,0x7ffe,acc3
155
 
156
        set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
157
        set_fr_iimmed   2,0x4000,fr10
158
        set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
159
        set_fr_iimmed   0x7fff,0x7fff,fr11
160
        cmqmulhs        fr8,fr10,acc0,cc1,0
161
        test_accg_immed         0,accg0
162
        test_acc_limmed 0x0000,0x8000,acc0
163
        test_accg_immed         0,accg1
164
        test_acc_limmed 0x0000,0x8000,acc1
165
        test_accg_immed         0,accg2
166
        test_acc_limmed 0x3fff,0x0001,acc2
167
        test_accg_immed         0,accg3
168
        test_acc_limmed 0x3fff,0x0001,acc3
169
 
170
        ; Mixed operands
171
        set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
172
        set_fr_iimmed   0xfffd,2,fr10
173
        set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
174
        set_fr_iimmed   1,0xfffe,fr11
175
        cmqmulhs        fr8,fr10,acc0,cc1,0
176
        test_accg_immed         0xff,accg0
177
        test_acc_immed  -6,acc0
178
        test_accg_immed         0xff,accg1
179
        test_acc_immed  -6,acc1
180
        test_accg_immed         0xff,accg2
181
        test_acc_immed  -2,acc2
182
        test_accg_immed         0xff,accg3
183
        test_acc_immed  -2,acc3
184
 
185
        set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
186
        set_fr_iimmed   0,0xfffe,fr10
187
        set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
188
        set_fr_iimmed   0xfffe,0x2001,fr11
189
        cmqmulhs        fr8,fr10,acc0,cc5,0
190
        test_accg_immed         0,accg0
191
        test_acc_immed  0,acc0
192
        test_accg_immed         0,accg1
193
        test_acc_immed  0,acc1
194
        test_accg_immed         0xff,accg2
195
        test_acc_limmed 0xffff,0xbffe,acc2
196
        test_accg_immed         0xff,accg3
197
        test_acc_limmed 0xffff,0xbffe,acc3
198
 
199
        set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
200
        set_fr_iimmed   0xfffe,0x4000,fr10
201
        set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
202
        set_fr_iimmed   0x8000,0x7fff,fr11
203
        cmqmulhs        fr8,fr10,acc0,cc5,0
204
        test_accg_immed         0xff,accg0
205
        test_acc_limmed 0xffff,0x8000,acc0
206
        test_accg_immed         0xff,accg1
207
        test_acc_limmed 0xffff,0x8000,acc1
208
        test_accg_immed         0xff,accg2
209
        test_acc_limmed 0xc000,0x8000,acc2
210
        test_accg_immed         0xff,accg3
211
        test_acc_limmed 0xc000,0x8000,acc3
212
 
213
        ; Negative operands
214
        set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
215
        set_fr_iimmed   0xfffd,0xfffe,fr10
216
        set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
217
        set_fr_iimmed   0xfffe,0xffff,fr11
218
        cmqmulhs        fr8,fr10,acc0,cc5,0
219
        test_accg_immed         0,accg0
220
        test_acc_immed  6,acc0
221
        test_accg_immed         0,accg1
222
        test_acc_immed  6,acc1
223
        test_accg_immed         0,accg2
224
        test_acc_immed  2,acc2
225
        test_accg_immed         0,accg3
226
        test_acc_immed  2,acc3
227
 
228
        set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
229
        set_fr_iimmed   0x8001,0x8001,fr10
230
        set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
231
        set_fr_iimmed   0x8000,0x8000,fr11
232
        cmqmulhs        fr8,fr10,acc0,cc5,0
233
        test_accg_immed         0,accg0
234
        test_acc_immed  0x3fff0001,acc0
235
        test_accg_immed         0,accg1
236
        test_acc_immed  0x3fff0001,acc1
237
        test_accg_immed         0,accg2
238
        test_acc_immed  0x40000000,acc2
239
        test_accg_immed         0,accg3
240
        test_acc_immed  0x40000000,acc3
241
 
242
        ; Positive operands
243
        set_accg_immed  0x00000011,accg0
244
        set_acc_immed   0x11111111,acc0
245
        set_accg_immed  0x00000022,accg1
246
        set_acc_immed   0x22222222,acc1
247
        set_accg_immed  0x00000033,accg2
248
        set_acc_immed   0x33333333,acc2
249
        set_accg_immed  0x00000044,accg3
250
        set_acc_immed   0x44444444,acc3
251
        set_fr_iimmed   2,3,fr8         ; multiply small numbers
252
        set_fr_iimmed   3,2,fr10
253
        set_fr_iimmed   0,1,fr9         ; multiply by 0
254
        set_fr_iimmed   2,0,fr11
255
        cmqmulhs        fr8,fr10,acc0,cc0,0
256
        test_accg_immed         0x00000011,accg0
257
        test_acc_immed  0x11111111,acc0
258
        test_accg_immed         0x00000022,accg1
259
        test_acc_immed  0x22222222,acc1
260
        test_accg_immed         0x00000033,accg2
261
        test_acc_immed  0x33333333,acc2
262
        test_accg_immed         0x00000044,accg3
263
        test_acc_immed  0x44444444,acc3
264
 
265
        set_fr_iimmed   2,1,fr8         ; multiply by 1
266
        set_fr_iimmed   1,2,fr10
267
        set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
268
        set_fr_iimmed   2,0x3fff,fr11
269
        cmqmulhs        fr8,fr10,acc0,cc0,0
270
        test_accg_immed         0x00000011,accg0
271
        test_acc_immed  0x11111111,acc0
272
        test_accg_immed         0x00000022,accg1
273
        test_acc_immed  0x22222222,acc1
274
        test_accg_immed         0x00000033,accg2
275
        test_acc_immed  0x33333333,acc2
276
        test_accg_immed         0x00000044,accg3
277
        test_acc_immed  0x44444444,acc3
278
 
279
        set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
280
        set_fr_iimmed   2,0x4000,fr10
281
        set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
282
        set_fr_iimmed   0x7fff,0x7fff,fr11
283
        cmqmulhs        fr8,fr10,acc0,cc0,0
284
        test_accg_immed         0x00000011,accg0
285
        test_acc_immed  0x11111111,acc0
286
        test_accg_immed         0x00000022,accg1
287
        test_acc_immed  0x22222222,acc1
288
        test_accg_immed         0x00000033,accg2
289
        test_acc_immed  0x33333333,acc2
290
        test_accg_immed         0x00000044,accg3
291
        test_acc_immed  0x44444444,acc3
292
 
293
        ; Mixed operands
294
        set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
295
        set_fr_iimmed   0xfffd,2,fr10
296
        set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
297
        set_fr_iimmed   1,0xfffe,fr11
298
        cmqmulhs        fr8,fr10,acc0,cc0,0
299
        test_accg_immed         0x00000011,accg0
300
        test_acc_immed  0x11111111,acc0
301
        test_accg_immed         0x00000022,accg1
302
        test_acc_immed  0x22222222,acc1
303
        test_accg_immed         0x00000033,accg2
304
        test_acc_immed  0x33333333,acc2
305
        test_accg_immed         0x00000044,accg3
306
        test_acc_immed  0x44444444,acc3
307
 
308
        set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
309
        set_fr_iimmed   0,0xfffe,fr10
310
        set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
311
        set_fr_iimmed   0xfffe,0x2001,fr11
312
        cmqmulhs        fr8,fr10,acc0,cc4,0
313
        test_accg_immed         0x00000011,accg0
314
        test_acc_immed  0x11111111,acc0
315
        test_accg_immed         0x00000022,accg1
316
        test_acc_immed  0x22222222,acc1
317
        test_accg_immed         0x00000033,accg2
318
        test_acc_immed  0x33333333,acc2
319
        test_accg_immed         0x00000044,accg3
320
        test_acc_immed  0x44444444,acc3
321
 
322
        set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
323
        set_fr_iimmed   0xfffe,0x4000,fr10
324
        set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
325
        set_fr_iimmed   0x8000,0x7fff,fr11
326
        cmqmulhs        fr8,fr10,acc0,cc4,0
327
        test_accg_immed         0x00000011,accg0
328
        test_acc_immed  0x11111111,acc0
329
        test_accg_immed         0x00000022,accg1
330
        test_acc_immed  0x22222222,acc1
331
        test_accg_immed         0x00000033,accg2
332
        test_acc_immed  0x33333333,acc2
333
        test_accg_immed         0x00000044,accg3
334
        test_acc_immed  0x44444444,acc3
335
 
336
        ; Negative operands
337
        set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
338
        set_fr_iimmed   0xfffd,0xfffe,fr10
339
        set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
340
        set_fr_iimmed   0xfffe,0xffff,fr11
341
        cmqmulhs        fr8,fr10,acc0,cc4,0
342
        test_accg_immed         0x00000011,accg0
343
        test_acc_immed  0x11111111,acc0
344
        test_accg_immed         0x00000022,accg1
345
        test_acc_immed  0x22222222,acc1
346
        test_accg_immed         0x00000033,accg2
347
        test_acc_immed  0x33333333,acc2
348
        test_accg_immed         0x00000044,accg3
349
        test_acc_immed  0x44444444,acc3
350
 
351
        set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
352
        set_fr_iimmed   0x8001,0x8001,fr10
353
        set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
354
        set_fr_iimmed   0x8000,0x8000,fr11
355
        cmqmulhs        fr8,fr10,acc0,cc4,0
356
        test_accg_immed         0x00000011,accg0
357
        test_acc_immed  0x11111111,acc0
358
        test_accg_immed         0x00000022,accg1
359
        test_acc_immed  0x22222222,acc1
360
        test_accg_immed         0x00000033,accg2
361
        test_acc_immed  0x33333333,acc2
362
        test_accg_immed         0x00000044,accg3
363
        test_acc_immed  0x44444444,acc3
364
 
365
        ; Positive operands
366
        set_accg_immed  0x00000011,accg0
367
        set_acc_immed   0x11111111,acc0
368
        set_accg_immed  0x00000022,accg1
369
        set_acc_immed   0x22222222,acc1
370
        set_accg_immed  0x00000033,accg2
371
        set_acc_immed   0x33333333,acc2
372
        set_accg_immed  0x00000044,accg3
373
        set_acc_immed   0x44444444,acc3
374
        set_fr_iimmed   2,3,fr8         ; multiply small numbers
375
        set_fr_iimmed   3,2,fr10
376
        set_fr_iimmed   0,1,fr9         ; multiply by 0
377
        set_fr_iimmed   2,0,fr11
378
        cmqmulhs        fr8,fr10,acc0,cc1,1
379
        test_accg_immed         0x00000011,accg0
380
        test_acc_immed  0x11111111,acc0
381
        test_accg_immed         0x00000022,accg1
382
        test_acc_immed  0x22222222,acc1
383
        test_accg_immed         0x00000033,accg2
384
        test_acc_immed  0x33333333,acc2
385
        test_accg_immed         0x00000044,accg3
386
        test_acc_immed  0x44444444,acc3
387
 
388
        set_fr_iimmed   2,1,fr8         ; multiply by 1
389
        set_fr_iimmed   1,2,fr10
390
        set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
391
        set_fr_iimmed   2,0x3fff,fr11
392
        cmqmulhs        fr8,fr10,acc0,cc1,1
393
        test_accg_immed         0x00000011,accg0
394
        test_acc_immed  0x11111111,acc0
395
        test_accg_immed         0x00000022,accg1
396
        test_acc_immed  0x22222222,acc1
397
        test_accg_immed         0x00000033,accg2
398
        test_acc_immed  0x33333333,acc2
399
        test_accg_immed         0x00000044,accg3
400
        test_acc_immed  0x44444444,acc3
401
 
402
        set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
403
        set_fr_iimmed   2,0x4000,fr10
404
        set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
405
        set_fr_iimmed   0x7fff,0x7fff,fr11
406
        cmqmulhs        fr8,fr10,acc0,cc1,1
407
        test_accg_immed         0x00000011,accg0
408
        test_acc_immed  0x11111111,acc0
409
        test_accg_immed         0x00000022,accg1
410
        test_acc_immed  0x22222222,acc1
411
        test_accg_immed         0x00000033,accg2
412
        test_acc_immed  0x33333333,acc2
413
        test_accg_immed         0x00000044,accg3
414
        test_acc_immed  0x44444444,acc3
415
 
416
        ; Mixed operands
417
        set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
418
        set_fr_iimmed   0xfffd,2,fr10
419
        set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
420
        set_fr_iimmed   1,0xfffe,fr11
421
        cmqmulhs        fr8,fr10,acc0,cc1,1
422
        test_accg_immed         0x00000011,accg0
423
        test_acc_immed  0x11111111,acc0
424
        test_accg_immed         0x00000022,accg1
425
        test_acc_immed  0x22222222,acc1
426
        test_accg_immed         0x00000033,accg2
427
        test_acc_immed  0x33333333,acc2
428
        test_accg_immed         0x00000044,accg3
429
        test_acc_immed  0x44444444,acc3
430
 
431
        set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
432
        set_fr_iimmed   0,0xfffe,fr10
433
        set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
434
        set_fr_iimmed   0xfffe,0x2001,fr11
435
        cmqmulhs        fr8,fr10,acc0,cc5,1
436
        test_accg_immed         0x00000011,accg0
437
        test_acc_immed  0x11111111,acc0
438
        test_accg_immed         0x00000022,accg1
439
        test_acc_immed  0x22222222,acc1
440
        test_accg_immed         0x00000033,accg2
441
        test_acc_immed  0x33333333,acc2
442
        test_accg_immed         0x00000044,accg3
443
        test_acc_immed  0x44444444,acc3
444
 
445
        set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
446
        set_fr_iimmed   0xfffe,0x4000,fr10
447
        set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
448
        set_fr_iimmed   0x8000,0x7fff,fr11
449
        cmqmulhs        fr8,fr10,acc0,cc5,1
450
        test_accg_immed         0x00000011,accg0
451
        test_acc_immed  0x11111111,acc0
452
        test_accg_immed         0x00000022,accg1
453
        test_acc_immed  0x22222222,acc1
454
        test_accg_immed         0x00000033,accg2
455
        test_acc_immed  0x33333333,acc2
456
        test_accg_immed         0x00000044,accg3
457
        test_acc_immed  0x44444444,acc3
458
 
459
        ; Negative operands
460
        set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
461
        set_fr_iimmed   0xfffd,0xfffe,fr10
462
        set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
463
        set_fr_iimmed   0xfffe,0xffff,fr11
464
        cmqmulhs        fr8,fr10,acc0,cc5,1
465
        test_accg_immed         0x00000011,accg0
466
        test_acc_immed  0x11111111,acc0
467
        test_accg_immed         0x00000022,accg1
468
        test_acc_immed  0x22222222,acc1
469
        test_accg_immed         0x00000033,accg2
470
        test_acc_immed  0x33333333,acc2
471
        test_accg_immed         0x00000044,accg3
472
        test_acc_immed  0x44444444,acc3
473
 
474
        set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
475
        set_fr_iimmed   0x8001,0x8001,fr10
476
        set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
477
        set_fr_iimmed   0x8000,0x8000,fr11
478
        cmqmulhs        fr8,fr10,acc0,cc5,1
479
        test_accg_immed         0x00000011,accg0
480
        test_acc_immed  0x11111111,acc0
481
        test_accg_immed         0x00000022,accg1
482
        test_acc_immed  0x22222222,acc1
483
        test_accg_immed         0x00000033,accg2
484
        test_acc_immed  0x33333333,acc2
485
        test_accg_immed         0x00000044,accg3
486
        test_acc_immed  0x44444444,acc3
487
 
488
        ; Positive operands
489
        set_accg_immed  0x00000011,accg0
490
        set_acc_immed   0x11111111,acc0
491
        set_accg_immed  0x00000022,accg1
492
        set_acc_immed   0x22222222,acc1
493
        set_accg_immed  0x00000033,accg2
494
        set_acc_immed   0x33333333,acc2
495
        set_accg_immed  0x00000044,accg3
496
        set_acc_immed   0x44444444,acc3
497
        set_fr_iimmed   2,3,fr8         ; multiply small numbers
498
        set_fr_iimmed   3,2,fr10
499
        set_fr_iimmed   0,1,fr9         ; multiply by 0
500
        set_fr_iimmed   2,0,fr11
501
        cmqmulhs        fr8,fr10,acc0,cc2,1
502
        test_accg_immed         0x00000011,accg0
503
        test_acc_immed  0x11111111,acc0
504
        test_accg_immed         0x00000022,accg1
505
        test_acc_immed  0x22222222,acc1
506
        test_accg_immed         0x00000033,accg2
507
        test_acc_immed  0x33333333,acc2
508
        test_accg_immed         0x00000044,accg3
509
        test_acc_immed  0x44444444,acc3
510
 
511
        set_fr_iimmed   2,1,fr8         ; multiply by 1
512
        set_fr_iimmed   1,2,fr10
513
        set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
514
        set_fr_iimmed   2,0x3fff,fr11
515
        cmqmulhs        fr8,fr10,acc0,cc2,0
516
        test_accg_immed         0x00000011,accg0
517
        test_acc_immed  0x11111111,acc0
518
        test_accg_immed         0x00000022,accg1
519
        test_acc_immed  0x22222222,acc1
520
        test_accg_immed         0x00000033,accg2
521
        test_acc_immed  0x33333333,acc2
522
        test_accg_immed         0x00000044,accg3
523
        test_acc_immed  0x44444444,acc3
524
 
525
        set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
526
        set_fr_iimmed   2,0x4000,fr10
527
        set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
528
        set_fr_iimmed   0x7fff,0x7fff,fr11
529
        cmqmulhs        fr8,fr10,acc0,cc2,1
530
        test_accg_immed         0x00000011,accg0
531
        test_acc_immed  0x11111111,acc0
532
        test_accg_immed         0x00000022,accg1
533
        test_acc_immed  0x22222222,acc1
534
        test_accg_immed         0x00000033,accg2
535
        test_acc_immed  0x33333333,acc2
536
        test_accg_immed         0x00000044,accg3
537
        test_acc_immed  0x44444444,acc3
538
 
539
        ; Mixed operands
540
        set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
541
        set_fr_iimmed   0xfffd,2,fr10
542
        set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
543
        set_fr_iimmed   1,0xfffe,fr11
544
        cmqmulhs        fr8,fr10,acc0,cc2,0
545
        test_accg_immed         0x00000011,accg0
546
        test_acc_immed  0x11111111,acc0
547
        test_accg_immed         0x00000022,accg1
548
        test_acc_immed  0x22222222,acc1
549
        test_accg_immed         0x00000033,accg2
550
        test_acc_immed  0x33333333,acc2
551
        test_accg_immed         0x00000044,accg3
552
        test_acc_immed  0x44444444,acc3
553
 
554
        set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
555
        set_fr_iimmed   0,0xfffe,fr10
556
        set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
557
        set_fr_iimmed   0xfffe,0x2001,fr11
558
        cmqmulhs        fr8,fr10,acc0,cc6,1
559
        test_accg_immed         0x00000011,accg0
560
        test_acc_immed  0x11111111,acc0
561
        test_accg_immed         0x00000022,accg1
562
        test_acc_immed  0x22222222,acc1
563
        test_accg_immed         0x00000033,accg2
564
        test_acc_immed  0x33333333,acc2
565
        test_accg_immed         0x00000044,accg3
566
        test_acc_immed  0x44444444,acc3
567
 
568
        set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
569
        set_fr_iimmed   0xfffe,0x4000,fr10
570
        set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
571
        set_fr_iimmed   0x8000,0x7fff,fr11
572
        cmqmulhs        fr8,fr10,acc0,cc6,0
573
        test_accg_immed         0x00000011,accg0
574
        test_acc_immed  0x11111111,acc0
575
        test_accg_immed         0x00000022,accg1
576
        test_acc_immed  0x22222222,acc1
577
        test_accg_immed         0x00000033,accg2
578
        test_acc_immed  0x33333333,acc2
579
        test_accg_immed         0x00000044,accg3
580
        test_acc_immed  0x44444444,acc3
581
 
582
        ; Negative operands
583
        set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
584
        set_fr_iimmed   0xfffd,0xfffe,fr10
585
        set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
586
        set_fr_iimmed   0xfffe,0xffff,fr11
587
        cmqmulhs        fr8,fr10,acc0,cc6,1
588
        test_accg_immed         0x00000011,accg0
589
        test_acc_immed  0x11111111,acc0
590
        test_accg_immed         0x00000022,accg1
591
        test_acc_immed  0x22222222,acc1
592
        test_accg_immed         0x00000033,accg2
593
        test_acc_immed  0x33333333,acc2
594
        test_accg_immed         0x00000044,accg3
595
        test_acc_immed  0x44444444,acc3
596
 
597
        set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
598
        set_fr_iimmed   0x8001,0x8001,fr10
599
        set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
600
        set_fr_iimmed   0x8000,0x8000,fr11
601
        cmqmulhs        fr8,fr10,acc0,cc6,0
602
        test_accg_immed         0x00000011,accg0
603
        test_acc_immed  0x11111111,acc0
604
        test_accg_immed         0x00000022,accg1
605
        test_acc_immed  0x22222222,acc1
606
        test_accg_immed         0x00000033,accg2
607
        test_acc_immed  0x33333333,acc2
608
        test_accg_immed         0x00000044,accg3
609
        test_acc_immed  0x44444444,acc3
610
;
611
        ; Positive operands
612
        set_accg_immed  0x00000011,accg0
613
        set_acc_immed   0x11111111,acc0
614
        set_accg_immed  0x00000022,accg1
615
        set_acc_immed   0x22222222,acc1
616
        set_accg_immed  0x00000033,accg2
617
        set_acc_immed   0x33333333,acc2
618
        set_accg_immed  0x00000044,accg3
619
        set_acc_immed   0x44444444,acc3
620
        set_fr_iimmed   2,3,fr8         ; multiply small numbers
621
        set_fr_iimmed   3,2,fr10
622
        set_fr_iimmed   0,1,fr9         ; multiply by 0
623
        set_fr_iimmed   2,0,fr11
624
        cmqmulhs        fr8,fr10,acc0,cc3,1
625
        test_accg_immed         0x00000011,accg0
626
        test_acc_immed  0x11111111,acc0
627
        test_accg_immed         0x00000022,accg1
628
        test_acc_immed  0x22222222,acc1
629
        test_accg_immed         0x00000033,accg2
630
        test_acc_immed  0x33333333,acc2
631
        test_accg_immed         0x00000044,accg3
632
        test_acc_immed  0x44444444,acc3
633
 
634
        set_fr_iimmed   2,1,fr8         ; multiply by 1
635
        set_fr_iimmed   1,2,fr10
636
        set_fr_iimmed   0x3fff,2,fr9    ; 15 bit result
637
        set_fr_iimmed   2,0x3fff,fr11
638
        cmqmulhs        fr8,fr10,acc0,cc3,0
639
        test_accg_immed         0x00000011,accg0
640
        test_acc_immed  0x11111111,acc0
641
        test_accg_immed         0x00000022,accg1
642
        test_acc_immed  0x22222222,acc1
643
        test_accg_immed         0x00000033,accg2
644
        test_acc_immed  0x33333333,acc2
645
        test_accg_immed         0x00000044,accg3
646
        test_acc_immed  0x44444444,acc3
647
 
648
        set_fr_iimmed   0x4000,2,fr8    ; 16 bit result
649
        set_fr_iimmed   2,0x4000,fr10
650
        set_fr_iimmed   0x7fff,0x7fff,fr9       ; max positive result
651
        set_fr_iimmed   0x7fff,0x7fff,fr11
652
        cmqmulhs        fr8,fr10,acc0,cc3,1
653
        test_accg_immed         0x00000011,accg0
654
        test_acc_immed  0x11111111,acc0
655
        test_accg_immed         0x00000022,accg1
656
        test_acc_immed  0x22222222,acc1
657
        test_accg_immed         0x00000033,accg2
658
        test_acc_immed  0x33333333,acc2
659
        test_accg_immed         0x00000044,accg3
660
        test_acc_immed  0x44444444,acc3
661
 
662
        ; Mixed operands
663
        set_fr_iimmed   2,0xfffd,fr8            ; multiply small numbers
664
        set_fr_iimmed   0xfffd,2,fr10
665
        set_fr_iimmed   0xfffe,1,fr9            ; multiply by 1
666
        set_fr_iimmed   1,0xfffe,fr11
667
        cmqmulhs        fr8,fr10,acc0,cc3,0
668
        test_accg_immed         0x00000011,accg0
669
        test_acc_immed  0x11111111,acc0
670
        test_accg_immed         0x00000022,accg1
671
        test_acc_immed  0x22222222,acc1
672
        test_accg_immed         0x00000033,accg2
673
        test_acc_immed  0x33333333,acc2
674
        test_accg_immed         0x00000044,accg3
675
        test_acc_immed  0x44444444,acc3
676
 
677
        set_fr_iimmed   0xfffe,0,fr8            ; multiply by 0
678
        set_fr_iimmed   0,0xfffe,fr10
679
        set_fr_iimmed   0x2001,0xfffe,fr9       ; 15 bit result
680
        set_fr_iimmed   0xfffe,0x2001,fr11
681
        cmqmulhs        fr8,fr10,acc0,cc7,1
682
        test_accg_immed         0x00000011,accg0
683
        test_acc_immed  0x11111111,acc0
684
        test_accg_immed         0x00000022,accg1
685
        test_acc_immed  0x22222222,acc1
686
        test_accg_immed         0x00000033,accg2
687
        test_acc_immed  0x33333333,acc2
688
        test_accg_immed         0x00000044,accg3
689
        test_acc_immed  0x44444444,acc3
690
 
691
        set_fr_iimmed   0x4000,0xfffe,fr8       ; 16 bit result
692
        set_fr_iimmed   0xfffe,0x4000,fr10
693
        set_fr_iimmed   0x7fff,0x8000,fr9       ; max negative result
694
        set_fr_iimmed   0x8000,0x7fff,fr11
695
        cmqmulhs        fr8,fr10,acc0,cc7,0
696
        test_accg_immed         0x00000011,accg0
697
        test_acc_immed  0x11111111,acc0
698
        test_accg_immed         0x00000022,accg1
699
        test_acc_immed  0x22222222,acc1
700
        test_accg_immed         0x00000033,accg2
701
        test_acc_immed  0x33333333,acc2
702
        test_accg_immed         0x00000044,accg3
703
        test_acc_immed  0x44444444,acc3
704
 
705
        ; Negative operands
706
        set_fr_iimmed   0xfffe,0xfffd,fr8               ; multiply small numbers
707
        set_fr_iimmed   0xfffd,0xfffe,fr10
708
        set_fr_iimmed   0xffff,0xfffe,fr9               ; multiply by -1
709
        set_fr_iimmed   0xfffe,0xffff,fr11
710
        cmqmulhs        fr8,fr10,acc0,cc7,1
711
        test_accg_immed         0x00000011,accg0
712
        test_acc_immed  0x11111111,acc0
713
        test_accg_immed         0x00000022,accg1
714
        test_acc_immed  0x22222222,acc1
715
        test_accg_immed         0x00000033,accg2
716
        test_acc_immed  0x33333333,acc2
717
        test_accg_immed         0x00000044,accg3
718
        test_acc_immed  0x44444444,acc3
719
 
720
        set_fr_iimmed   0x8001,0x8001,fr8       ; almost max positive result
721
        set_fr_iimmed   0x8001,0x8001,fr10
722
        set_fr_iimmed   0x8000,0x8000,fr9       ; max positive result
723
        set_fr_iimmed   0x8000,0x8000,fr11
724
        cmqmulhs        fr8,fr10,acc0,cc7,0
725
        test_accg_immed         0x00000011,accg0
726
        test_acc_immed  0x11111111,acc0
727
        test_accg_immed         0x00000022,accg1
728
        test_acc_immed  0x22222222,acc1
729
        test_accg_immed         0x00000033,accg2
730
        test_acc_immed  0x33333333,acc2
731
        test_accg_immed         0x00000044,accg3
732
        test_acc_immed  0x44444444,acc3
733
 
734
        pass

powered by: WebSVN 2.1.0

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