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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [or1ksim/] [testsuite/] [or1ksim.tests/] [inst-set-test.exp] - Blame information for rev 118

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

Line No. Rev Author Line
1 107 jeremybenn
# inst-set-test.exp. Tests of ORBIS32 instruction set
2
 
3
# Copyright (C) 2010 Embecosm Limited
4
 
5
# Contributor Jeremy Bennett 
6
 
7
# This file is part of OpenRISC 1000 Architectural Simulator.
8
 
9
# This program is free software; you can redistribute it and/or modify it
10
# under the terms of the GNU General Public License as published by the Free
11
# Software Foundation; either version 3 of the License, or (at your option)
12
# any later version.
13
 
14
# This program is distributed in the hope that it will be useful, but WITHOUT
15
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
17
# more details.
18
 
19
# You should have received a copy of the GNU General Public License along
20
# with this program.  If not, see .  */
21
 
22
# -----------------------------------------------------------------------------
23
# This code is commented throughout for use with Doxygen.
24
# -----------------------------------------------------------------------------
25
 
26
 
27 112 jeremybenn
# Run the l.add, l.addc, l.addi and l.addic tests
28 115 jeremybenn
run_or1ksim "add-test"                                     \
29 118 jeremybenn
    [list "!  ** OVE flag cleared **"                      \
30
          "!l.add"                                         \
31
          "  0x00000001 + 0x00000002     = 0x00000003: OK" \
32
          "  - carry flag set:      FALSE"                 \
33
          "  - overflow flag set:   FALSE"                 \
34
          "  - exception triggered: FALSE"                 \
35
          "  0x00000001 + 0x00000002 + c = 0x00000003: OK" \
36
          "  - carry flag set:      FALSE"                 \
37
          "  - overflow flag set:   FALSE"                 \
38
          "  - exception triggered: FALSE"                 \
39
          "  0xffffffff + 0xfffffffe     = 0xfffffffd: OK" \
40
          "  - carry flag set:      TRUE"                  \
41
          "  - overflow flag set:   FALSE"                 \
42
          "  - exception triggered: FALSE"                 \
43
          "  0x40000000 + 0x3fffffff     = 0x7fffffff: OK" \
44
          "  - carry flag set:      FALSE"                 \
45
          "  - overflow flag set:   FALSE"                 \
46
          "  - exception triggered: FALSE"                 \
47
          "  0x40000000 + 0x40000000     = 0x80000000: OK" \
48
          "  - carry flag set:      FALSE"                 \
49
          "  - overflow flag set:   TRUE"                  \
50
          "  - exception triggered: FALSE"                 \
51
          "  0xc0000000 + 0xc0000000     = 0x80000000: OK" \
52
          "  - carry flag set:      TRUE"                  \
53
          "  - overflow flag set:   FALSE"                 \
54
          "  - exception triggered: FALSE"                 \
55
          "  0xbfffffff + 0xbfffffff     = 0x7ffffffe: OK" \
56
          "  - carry flag set:      TRUE"                  \
57
          "  - overflow flag set:   TRUE"                  \
58
          "  - exception triggered: FALSE"                 \
59 114 jeremybenn
          "!  ** OVE flag set **"                          \
60
          "  RANGE exception"                              \
61 118 jeremybenn
          "!  - caused by: report(0xe0853000);"            \
62
          "!  - SR value:  report(0x00009a01);"            \
63
          "  0x40000000 + 0x40000000     = 0x80000000: OK" \
64
          "  - carry flag set:      FALSE"                 \
65
          "  - overflow flag set:   TRUE"                  \
66
          "  - exception triggered: TRUE"                  \
67
          "  0xffffffff + 0xfffffffe     = 0xfffffffd: OK" \
68
          "  - carry flag set:      TRUE"                  \
69
          "  - overflow flag set:   FALSE"                 \
70
          "  - exception triggered: FALSE"                 \
71 114 jeremybenn
          "  RANGE exception"                              \
72 118 jeremybenn
          "!  - caused by: report(0xe0853000);"            \
73
          "!  - SR value:  report(0x00009e01);"            \
74
          "  0xbfffffff + 0xbfffffff     = 0x7ffffffe: OK" \
75
          "  - carry flag set:      TRUE"                  \
76
          "  - overflow flag set:   TRUE"                  \
77
          "  - exception triggered: TRUE"                  \
78 114 jeremybenn
          "!  ** OVE flag cleared **"                      \
79 118 jeremybenn
          "l.addc"                                         \
80 114 jeremybenn
          "  0x00000001 + 0x00000002     = 0x00000003: OK" \
81 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
82
          "  - overflow flag set:   FALSE"                 \
83
          "  - exception triggered: FALSE"                 \
84 114 jeremybenn
          "  0xffffffff + 0xfffffffe     = 0xfffffffd: OK" \
85 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
86
          "  - overflow flag set:   FALSE"                 \
87
          "  - exception triggered: FALSE"                 \
88 114 jeremybenn
          "  0x40000000 + 0x3fffffff     = 0x7fffffff: OK" \
89 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
90
          "  - overflow flag set:   FALSE"                 \
91
          "  - exception triggered: FALSE"                 \
92 114 jeremybenn
          "  0x40000000 + 0x3fffffff + c = 0x80000000: OK" \
93 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
94
          "  - overflow flag set:   TRUE"                  \
95
          "  - exception triggered: FALSE"                 \
96 114 jeremybenn
          "  0x40000000 + 0x40000000     = 0x80000000: OK" \
97 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
98
          "  - overflow flag set:   TRUE"                  \
99
          "  - exception triggered: FALSE"                 \
100 114 jeremybenn
          "  0xffffffff + 0x00000000 + c = 0x00000000: OK" \
101 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
102
          "  - overflow flag set:   FALSE"                 \
103
          "  - exception triggered: FALSE"                 \
104 114 jeremybenn
          "  0x00000000 + 0xffffffff + c = 0x00000000: OK" \
105 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
106
          "  - overflow flag set:   FALSE"                 \
107
          "  - exception triggered: FALSE"                 \
108 114 jeremybenn
          "  0xc0000000 + 0xc0000000     = 0x80000000: OK" \
109 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
110
          "  - overflow flag set:   FALSE"                 \
111
          "  - exception triggered: FALSE"                 \
112 114 jeremybenn
          "  0xc0000000 + 0xbfffffff + c = 0x80000000: OK" \
113 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
114
          "  - overflow flag set:   FALSE"                 \
115
          "  - exception triggered: FALSE"                 \
116 114 jeremybenn
          "  0xbfffffff + 0xbfffffff     = 0x7ffffffe: OK" \
117 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
118
          "  - overflow flag set:   TRUE"                  \
119
          "  - exception triggered: FALSE"                 \
120 114 jeremybenn
          "!  ** OVE flag set **"                          \
121
          "  RANGE exception"                              \
122 118 jeremybenn
          "!  - caused by: report(0xe0853001);"            \
123
          "!  - SR value:  report(0x00009a01);"            \
124 114 jeremybenn
          "  0x40000000 + 0x40000000     = 0x80000000: OK" \
125 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
126
          "  - overflow flag set:   TRUE"                  \
127
          "  - exception triggered: TRUE"                  \
128 114 jeremybenn
          "  RANGE exception"                              \
129 118 jeremybenn
          "!  - caused by: report(0xe0853001);"            \
130
          "!  - SR value:  report(0x00009a01);"            \
131 114 jeremybenn
          "  0x40000000 + 0x3fffffff + c = 0x80000000: OK" \
132 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
133
          "  - overflow flag set:   TRUE"                  \
134
          "  - exception triggered: TRUE"                  \
135 114 jeremybenn
          "  0xffffffff + 0xfffffffe     = 0xfffffffd: OK" \
136 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
137
          "  - overflow flag set:   FALSE"                 \
138
          "  - exception triggered: FALSE"                 \
139 114 jeremybenn
          "  0x00000000 + 0xffffffff + c = 0x00000000: OK" \
140 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
141
          "  - overflow flag set:   FALSE"                 \
142
          "  - exception triggered: FALSE"                 \
143 114 jeremybenn
          "  RANGE exception"                              \
144 118 jeremybenn
          "!  - caused by: report(0xe0853001);"            \
145
          "!  - SR value:  report(0x00009e01);"            \
146 114 jeremybenn
          "  0xbfffffff + 0xbfffffff     = 0x7ffffffe: OK" \
147 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
148
          "  - overflow flag set:   TRUE"                  \
149
          "  - exception triggered: TRUE"                  \
150 114 jeremybenn
          "!  ** OVE flag cleared **"                      \
151 118 jeremybenn
          "l.addi"                                         \
152
          "  0x00000001 + 0x00000002     = 0x00000003: OK" \
153
          "  - carry flag set:      FALSE"                 \
154
          "  - overflow flag set:   FALSE"                 \
155
          "  - exception triggered: FALSE"                 \
156
          "  0x00000001 + 0x00000002 + c = 0x00000003: OK" \
157
          "  - carry flag set:      FALSE"                 \
158
          "  - overflow flag set:   FALSE"                 \
159
          "  - exception triggered: FALSE"                 \
160
          "  0xffffffff + 0x0000fffe     = 0xfffffffd: OK" \
161
          "  - carry flag set:      TRUE"                  \
162
          "  - overflow flag set:   FALSE"                 \
163
          "  - exception triggered: FALSE"                 \
164
          "  0x7fff8000 + 0x00007fff     = 0x7fffffff: OK" \
165
          "  - carry flag set:      FALSE"                 \
166
          "  - overflow flag set:   FALSE"                 \
167
          "  - exception triggered: FALSE"                 \
168
          "  0x7fffc000 + 0x00004000     = 0x80000000: OK" \
169
          "  - carry flag set:      FALSE"                 \
170
          "  - overflow flag set:   TRUE"                  \
171
          "  - exception triggered: FALSE"                 \
172
          "  0x80008000 + 0x00008000     = 0x80000000: OK" \
173
          "  - carry flag set:      TRUE"                  \
174
          "  - overflow flag set:   FALSE"                 \
175
          "  - exception triggered: FALSE"                 \
176
          "  0x80007fff + 0x00008000     = 0x7fffffff: OK" \
177
          "  - carry flag set:      TRUE"                  \
178
          "  - overflow flag set:   TRUE"                  \
179
          "  - exception triggered: FALSE"                 \
180 114 jeremybenn
          "!  ** OVE flag set **"                          \
181
          "  RANGE exception"                              \
182 118 jeremybenn
          "!  - caused by: report(0x9c854000);"            \
183
          "!  - SR value:  report(0x00009a01);"            \
184
          "  0x7fffc000 + 0x00004000     = 0x80000000: OK" \
185
          "  - carry flag set:      FALSE"                 \
186
          "  - overflow flag set:   TRUE"                  \
187
          "  - exception triggered: TRUE"                  \
188
          "  0xffffffff + 0x0000fffe     = 0xfffffffd: OK" \
189
          "  - carry flag set:      TRUE"                  \
190
          "  - overflow flag set:   FALSE"                 \
191
          "  - exception triggered: FALSE"                 \
192 114 jeremybenn
          "  RANGE exception"                              \
193 118 jeremybenn
          "!  - caused by: report(0x9c858000);"            \
194
          "!  - SR value:  report(0x00009e01);"            \
195
          "  0x80007fff + 0x00008000     = 0x7fffffff: OK" \
196
          "  - carry flag set:      TRUE"                  \
197
          "  - overflow flag set:   TRUE"                  \
198
          "  - exception triggered: TRUE"                  \
199 114 jeremybenn
          "!  ** OVE flag cleared **"                      \
200 118 jeremybenn
          "l.addic"                                        \
201 114 jeremybenn
          "  0x00000001 + 0x00000002     = 0x00000003: OK" \
202 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
203
          "  - overflow flag set:   FALSE"                 \
204
          "  - exception triggered: FALSE"                 \
205
          "  0xffffffff + 0x0000fffe     = 0xfffffffd: OK" \
206
          "  - carry flag set:      TRUE"                  \
207
          "  - overflow flag set:   FALSE"                 \
208
          "  - exception triggered: FALSE"                 \
209 114 jeremybenn
          "  0x7fff8000 + 0x00007fff     = 0x7fffffff: OK" \
210 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
211
          "  - overflow flag set:   FALSE"                 \
212
          "  - exception triggered: FALSE"                 \
213 114 jeremybenn
          "  0x7fff8000 + 0x00007fff + c = 0x80000000: OK" \
214 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
215
          "  - overflow flag set:   TRUE"                  \
216
          "  - exception triggered: FALSE"                 \
217 114 jeremybenn
          "  0x7fffc000 + 0x00004000     = 0x80000000: OK" \
218 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
219
          "  - overflow flag set:   TRUE"                  \
220
          "  - exception triggered: FALSE"                 \
221 114 jeremybenn
          "  0xffffffff + 0x00000000 + c = 0x00000000: OK" \
222 118 jeremybenn
          "  - carry flag set:      TRUE"                  \
223
          "  - overflow flag set:   FALSE"                 \
224
          "  - exception triggered: FALSE"                 \
225
          "  0x00000000 + 0x0000ffff + c = 0x00000000: OK" \
226
          "  - carry flag set:      TRUE"                  \
227
          "  - overflow flag set:   FALSE"                 \
228
          "  - exception triggered: FALSE"                 \
229
          "  0x80008000 + 0x00008000     = 0x80000000: OK" \
230
          "  - carry flag set:      TRUE"                  \
231
          "  - overflow flag set:   FALSE"                 \
232
          "  - exception triggered: FALSE"                 \
233
          "  0x80007fff + 0x00008000 + c = 0x80000000: OK" \
234
          "  - carry flag set:      TRUE"                  \
235
          "  - overflow flag set:   FALSE"                 \
236
          "  - exception triggered: FALSE"                 \
237
          "  0x80007fff + 0x00008000     = 0x7fffffff: OK" \
238
          "  - carry flag set:      TRUE"                  \
239
          "  - overflow flag set:   TRUE"                  \
240
          "  - exception triggered: FALSE"                 \
241 114 jeremybenn
          "!  ** OVE flag set **"                          \
242
          "  RANGE exception"                              \
243 118 jeremybenn
          "!  - caused by: report(0xa0854000);"            \
244
          "!  - SR value:  report(0x00009a01);"            \
245 114 jeremybenn
          "  0x7fffc000 + 0x00004000     = 0x80000000: OK" \
246 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
247
          "  - overflow flag set:   TRUE"                  \
248
          "  - exception triggered: TRUE"                  \
249 114 jeremybenn
          "  RANGE exception"                              \
250 118 jeremybenn
          "!  - caused by: report(0xa0853fff);"            \
251
          "!  - SR value:  report(0x00009a01);"            \
252 114 jeremybenn
          "  0x7fffc000 + 0x00003fff + c = 0x80000000: OK" \
253 118 jeremybenn
          "  - carry flag set:      FALSE"                 \
254
          "  - overflow flag set:   TRUE"                  \
255
          "  - exception triggered: TRUE"                  \
256
          "  0xffffffff + 0x0000fffe     = 0xfffffffd: OK" \
257
          "  - carry flag set:      TRUE"                  \
258
          "  - overflow flag set:   FALSE"                 \
259
          "  - exception triggered: FALSE"                 \
260
          "  0x00000000 + 0x0000ffff + c = 0x00000000: OK" \
261
          "  - carry flag set:      TRUE"                  \
262
          "  - overflow flag set:   FALSE"                 \
263
          "  - exception triggered: FALSE"                 \
264 114 jeremybenn
          "  RANGE exception"                              \
265 118 jeremybenn
          "!  - caused by: report(0xa0858000);"            \
266
          "!  - SR value:  report(0x00009e01);"            \
267
          "  0x80007fff + 0x00008000     = 0x7fffffff: OK" \
268
          "  - carry flag set:      TRUE"                  \
269
          "  - overflow flag set:   TRUE"                  \
270
          "  - exception triggered: TRUE"                  \
271 114 jeremybenn
          "!  ** OVE flag cleared **"                      \
272
          "!Test completed"                                \
273
          "!report(0xdeaddead);"                           \
274
          "!exit(0)"]                                      \
275 112 jeremybenn
    "inst-set-test.cfg" "inst-set-test/is-add-test"
276 115 jeremybenn
 
277
# Run the l.div and l.divu test
278 118 jeremybenn
run_or1ksim "div-test"                                 \
279
    [list "!l.div"                                     \
280
          "  0x0000000c / 0x00000003 = 0x00000004: OK" \
281
          "  - carry flag set:      FALSE"             \
282
          "  - overflow flag set:   FALSE"             \
283
          "  - exception triggered: FALSE"             \
284
          "  0x0000000b / 0x00000003 = 0x00000003: OK" \
285
          "  - carry flag set:      FALSE"             \
286
          "  - overflow flag set:   FALSE"             \
287
          "  - exception triggered: FALSE"             \
288
          "  0xfffffff4 / 0xfffffffd = 0x00000004: OK" \
289
          "  - carry flag set:      FALSE"             \
290
          "  - overflow flag set:   FALSE"             \
291
          "  - exception triggered: FALSE"             \
292
          "  0xfffffff5 / 0xfffffffd = 0x00000003: OK" \
293
          "  - carry flag set:      FALSE"             \
294
          "  - overflow flag set:   FALSE"             \
295
          "  - exception triggered: FALSE"             \
296
          "  0xfffffff4 / 0x00000003 = 0xfffffffc: OK" \
297
          "  - carry flag set:      FALSE"             \
298
          "  - overflow flag set:   FALSE"             \
299
          "  - exception triggered: FALSE"             \
300
          "  0xfffffff5 / 0x00000003 = 0xfffffffd: OK" \
301
          "  - carry flag set:      FALSE"             \
302
          "  - overflow flag set:   FALSE"             \
303
          "  - exception triggered: FALSE"             \
304
          "  0x0000000c / 0xfffffffd = 0xfffffffc: OK" \
305
          "  - carry flag set:      FALSE"             \
306
          "  - overflow flag set:   FALSE"             \
307
          "  - exception triggered: FALSE"             \
308
          "  0x0000000b / 0xfffffffd = 0xfffffffd: OK" \
309
          "  - carry flag set:      FALSE"             \
310
          "  - overflow flag set:   FALSE"             \
311
          "  - exception triggered: FALSE"             \
312
          "  0x0000000c / 0x00000000 = 0x00000000: OK" \
313
          "  - carry flag set:      TRUE"              \
314
          "  - overflow flag set:   FALSE"             \
315
          "  - exception triggered: FALSE"             \
316
          "  0xfffffff4 / 0x00000000 = 0x00000000: OK" \
317
          "  - carry flag set:      TRUE"              \
318
          "  - overflow flag set:   FALSE"             \
319
          "  - exception triggered: FALSE"             \
320
          "!  ** OVE flag set **"                      \
321
          "  RANGE exception"                          \
322
          "!  - caused by: report(0xe0853309);"        \
323
          "!  - SR value:  report(0x00009601);"        \
324
          "  0x0000000c / 0x00000000 = 0x00000000: OK" \
325
          "  - carry flag set:      TRUE"              \
326
          "  - overflow flag set:   FALSE"             \
327
          "  - exception triggered: TRUE"              \
328
          "  RANGE exception"                          \
329
          "!  - caused by: report(0xe0853309);"        \
330
          "!  - SR value:  report(0x00009601);"        \
331
          "  0xfffffff4 / 0x00000000 = 0x00000000: OK" \
332
          "  - carry flag set:      TRUE"              \
333
          "  - overflow flag set:   FALSE"             \
334
          "  - exception triggered: TRUE"              \
335
          "!  ** OVE flag cleared **"                  \
336
          "l.divu"                                     \
337
          "  0x0000000c / 0x00000003 = 0x00000004: OK" \
338
          "  - carry flag set:      FALSE"             \
339
          "  - overflow flag set:   FALSE"             \
340
          "  - exception triggered: FALSE"             \
341
          "  0x0000000b / 0x00000003 = 0x00000003: OK" \
342
          "  - carry flag set:      FALSE"             \
343
          "  - overflow flag set:   FALSE"             \
344
          "  - exception triggered: FALSE"             \
345
          "  0xfffffff4 / 0xfffffffd = 0x00000000: OK" \
346
          "  - carry flag set:      FALSE"             \
347
          "  - overflow flag set:   FALSE"             \
348
          "  - exception triggered: FALSE"             \
349
          "  0xfffffff5 / 0xfffffffd = 0x00000000: OK" \
350
          "  - carry flag set:      FALSE"             \
351
          "  - overflow flag set:   FALSE"             \
352
          "  - exception triggered: FALSE"             \
353
          "  0xfffffff4 / 0x00000003 = 0x55555551: OK" \
354
          "  - carry flag set:      FALSE"             \
355
          "  - overflow flag set:   FALSE"             \
356
          "  - exception triggered: FALSE"             \
357
          "  0xfffffff5 / 0x00000003 = 0x55555551: OK" \
358
          "  - carry flag set:      FALSE"             \
359
          "  - overflow flag set:   FALSE"             \
360
          "  - exception triggered: FALSE"             \
361
          "  0x0000000c / 0xfffffffd = 0x00000000: OK" \
362
          "  - carry flag set:      FALSE"             \
363
          "  - overflow flag set:   FALSE"             \
364
          "  - exception triggered: FALSE"             \
365
          "  0x0000000b / 0xfffffffd = 0x00000000: OK" \
366
          "  - carry flag set:      FALSE"             \
367
          "  - overflow flag set:   FALSE"             \
368
          "  - exception triggered: FALSE"             \
369
          "  0x0000000c / 0x00000000 = 0x00000000: OK" \
370
          "  - carry flag set:      TRUE"              \
371
          "  - overflow flag set:   FALSE"             \
372
          "  - exception triggered: FALSE"             \
373
          "  0xfffffff4 / 0x00000000 = 0x00000000: OK" \
374
          "  - carry flag set:      TRUE"              \
375
          "  - overflow flag set:   FALSE"             \
376
          "  - exception triggered: FALSE"             \
377
          "!  ** OVE flag set **"                      \
378
          "  RANGE exception"                          \
379
          "!  - caused by: report(0xe085330a);"        \
380
          "!  - SR value:  report(0x00009601);"        \
381
          "  0x0000000c / 0x00000000 = 0x00000000: OK" \
382
          "  - carry flag set:      TRUE"              \
383
          "  - overflow flag set:   FALSE"             \
384
          "  - exception triggered: TRUE"              \
385
          "  RANGE exception"                          \
386
          "!  - caused by: report(0xe085330a);"        \
387
          "!  - SR value:  report(0x00009601);"        \
388
          "  0xfffffff4 / 0x00000000 = 0x00000000: OK" \
389
          "  - carry flag set:      TRUE"              \
390
          "  - overflow flag set:   FALSE"             \
391
          "  - exception triggered: TRUE"              \
392
          "!  ** OVE flag cleared **"                  \
393
          "!Test completed"                            \
394
          "!report(0xdeaddead);"                       \
395
          "!exit(0)"]                                  \
396 115 jeremybenn
    "inst-set-test.cfg" "inst-set-test/is-div-test"
397
 
398
# Run the l.ff1 and l.fl1 test
399
run_or1ksim "find-test"                 \
400
    [list "!l.ff1"                      \
401 118 jeremybenn
          "  ff1 (0x00000001) = 0x01: OK" \
402
          "  ff1 (0x80000000) = 0x20: OK" \
403
          "  ff1 (0x55555555) = 0x01: OK" \
404
          "  ff1 (0xaaaaaaaa) = 0x02: OK" \
405
          "  ff1 (0x00018000) = 0x10: OK" \
406
          "  ff1 (0xc0000000) = 0x1f: OK" \
407
          "  ff1 (0x00000000) = 0x00: OK" \
408 115 jeremybenn
          "!l.fl1"                      \
409 118 jeremybenn
          "  fl1 (0x00000001) = 0x01: OK" \
410
          "  fl1 (0x80000000) = 0x20: OK" \
411
          "  fl1 (0x55555555) = 0x1f: OK" \
412
          "  fl1 (0xaaaaaaaa) = 0x20: OK" \
413
          "  fl1 (0x00018000) = 0x11: OK" \
414
          "  fl1 (0xc0000000) = 0x20: OK" \
415
          "  fl1 (0x00000000) = 0x00: OK" \
416 115 jeremybenn
          "!Test completed"             \
417
          "!report(0xdeaddead);"        \
418
          "!exit(0)"]                   \
419
    "inst-set-test.cfg" "inst-set-test/is-find-test"
420
 
421
# Run the l.lws test
422
run_or1ksim "lws-test"                            \
423
    [list "!l.lws"                                \
424
          "   l.lws r4,0(r5): r4=0xdeadbeef:  OK" \
425
          "   l.lws r4,0(r5): r4=0x00000000:  OK" \
426
          "   l.lws r4,0(r5): r4=0x7fffffff:  OK" \
427
          "   l.lws r4,0(r5): r4=0x80000000:  OK" \
428
          "   l.lws r4,0(r5): r4=0xffffffff:  OK" \
429
          "   l.lws r4,0(r5): r4=0x00000000:  OK" \
430
          "   l.lws r4,0(r5): r4=0x7fffffff:  OK" \
431
          "   l.lws r4,0(r5): r4=0x80000000:  OK" \
432
          "   l.lws r4,0(r5): r4=0xffffffff:  OK" \
433
          "   l.lws r4,0(r5): r4=0xdeadbeef:  OK" \
434
          "   l.lws r4,0(r5): r4=0x00000000:  OK" \
435
          "   l.lws r4,0(r5): r4=0x7fffffff:  OK" \
436
          "   l.lws r4,0(r5): r4=0x80000000:  OK" \
437
          "!Test completed"                       \
438
          "!report(0xdeaddead);"                  \
439
          "!exit(0)"]                             \
440
    "inst-set-test.cfg" "inst-set-test/is-lws-test"
441 116 jeremybenn
 
442
# Run the l.mac test
443
run_or1ksim "mac-test"                            \
444
    [list "!l.mac"                                \
445
  "  0x00000000 00000000 + 0x00000002 * 0x00000003 = 0x00000000 00000006: OK" \
446
  "  0x00000000 00000006 + 0x00000002 * 0x00000003 = 0x00000000 0000000c: OK" \
447
  "  0x00000000 fffffffa + 0x00000002 * 0x00000003 = 0x00000001 00000000: OK" \
448
  "  0x3fffffff fffffffa + 0x00000002 * 0x00000003 = 0x40000000 00000000: OK" \
449
  "  0xffffffff fffffffa + 0x00000002 * 0x00000003 = 0x00000000 00000000: OK" \
450
  "  0xffffffff 00000000 + 0x00000002 * 0x00000003 = 0xffffffff 00000006: OK" \
451
  "  0x80000000 00000000 + 0x00000002 * 0x00000003 = 0x80000000 00000006: OK" \
452
  "!" \
453
  "  0x00000000 00000000 + 0x00008001 * 0x0000fffe = 0x00000000 7ffffffe: OK" \
454
  "  0x00000000 00000002 + 0x00008001 * 0x0000fffe = 0x00000000 80000000: OK" \
455
  "  0x00000000 80000002 + 0x00008001 * 0x0000fffe = 0x00000001 00000000: OK" \
456
  "  0x7fffffff 80000001 + 0x00008001 * 0x0000fffe = 0x7fffffff ffffffff: OK" \
457
  "  0xffffffff ffffffff + 0x00008001 * 0x0000fffe = 0x00000000 7ffffffd: OK" \
458
  "  0xffffffff 80000002 + 0x00008001 * 0x0000fffe = 0x00000000 00000000: OK" \
459
  "  0xfffffffe 80000002 + 0x00008001 * 0x0000fffe = 0xffffffff 00000000: OK" \
460
  "!" \
461
  "  0x00000000 00000000 + 0xfffffffe * 0xfffffffd = 0x00000000 00000006: OK" \
462
  "  0x00000000 00000006 + 0xfffffffe * 0xfffffffd = 0x00000000 0000000c: OK" \
463
  "  0xffffffff ffffffff + 0xfffffffe * 0xfffffffd = 0x00000000 00000005: OK" \
464
  "!" \
465
  "  0x00000000 00000000 + 0x00000002 * 0xfffffffd = 0xffffffff fffffffa: OK" \
466
  "  0x00000000 0000000c + 0x00000002 * 0xfffffffd = 0x00000000 00000006: OK" \
467
  "  0x00000001 00000005 + 0x00000002 * 0xfffffffd = 0x00000000 ffffffff: OK" \
468
  "  0x7fffffff ffffffff + 0x00000002 * 0xfffffffd = 0x7fffffff fffffff9: OK" \
469
  "  0xffffffff ffffffff + 0x00000002 * 0xfffffffd = 0xffffffff fffffff9: OK" \
470
  "  0xffffffff 00000005 + 0x00000002 * 0xfffffffd = 0xfffffffe ffffffff: OK" \
471
  "  0x80000000 00000006 + 0x00000002 * 0xfffffffd = 0x80000000 00000000: OK" \
472
  "!" \
473
  "  0x00000000 00000000 + 0x00008000 * 0xffff0000 = 0xffffffff 80000000: OK" \
474
  "  0x00000000 00000006 + 0x00008000 * 0xffff0000 = 0xffffffff 80000006: OK" \
475
  "  0x00000000 80000000 + 0x00008000 * 0xffff0000 = 0x00000000 00000000: OK" \
476
  "  0x7fffffff ffffffff + 0x00008000 * 0xffff0000 = 0x7fffffff 7fffffff: OK" \
477
  "  0xffffffff ffffffff + 0x00008000 * 0xffff0000 = 0xffffffff 7fffffff: OK" \
478
  "  0xffffffff 7fffffff + 0x00008000 * 0xffff0000 = 0xfffffffe ffffffff: OK" \
479
  "  0x80000000 80000000 + 0x00008000 * 0xffff0000 = 0x80000000 00000000: OK" \
480
  "!" \
481
  "l.maci" \
482
  "  0x00000000 00000000 + 0x00000002 * 0x00000003 = 0x00000000 00000006: OK" \
483
  "  0x00000000 00000006 + 0x00000002 * 0x00000003 = 0x00000000 0000000c: OK" \
484
  "  0x00000000 fffffffa + 0x00000002 * 0x00000003 = 0x00000001 00000000: OK" \
485
  "  0x3fffffff fffffffa + 0x00000002 * 0x00000003 = 0x40000000 00000000: OK" \
486
  "  0xffffffff fffffffa + 0x00000002 * 0x00000003 = 0x00000000 00000000: OK" \
487
  "  0xffffffff 00000000 + 0x00000002 * 0x00000003 = 0xffffffff 00000006: OK" \
488
  "  0x80000000 00000000 + 0x00000002 * 0x00000003 = 0x80000000 00000006: OK" \
489
  "!" \
490
  "  0x00000000 00000000 + 0x00010002 * 0x00007fff = 0x00000000 7ffffffe: OK" \
491
  "  0x00000000 00000002 + 0x00010002 * 0x00007fff = 0x00000000 80000000: OK" \
492
  "  0x00000000 80000002 + 0x00010002 * 0x00007fff = 0x00000001 00000000: OK" \
493
  "  0x7fffffff 80000001 + 0x00010002 * 0x00007fff = 0x7fffffff ffffffff: OK" \
494
  "  0xffffffff ffffffff + 0x00010002 * 0x00007fff = 0x00000000 7ffffffd: OK" \
495
  "  0xffffffff 80000002 + 0x00010002 * 0x00007fff = 0x00000000 00000000: OK" \
496
  "  0xfffffffe 80000002 + 0x00010002 * 0x00007fff = 0xffffffff 00000000: OK" \
497
  "!" \
498
  "  0x00000000 00000000 + 0xfffffffe * 0x0000fffd = 0x00000000 00000006: OK" \
499
  "  0x00000000 00000006 + 0xfffffffe * 0x0000fffd = 0x00000000 0000000c: OK" \
500
  "  0xffffffff ffffffff + 0xfffffffe * 0x0000fffd = 0x00000000 00000005: OK" \
501
  "!" \
502
  "  0x00000000 00000000 + 0x00000002 * 0x0000fffd = 0xffffffff fffffffa: OK" \
503
  "  0x00000000 0000000c + 0x00000002 * 0x0000fffd = 0x00000000 00000006: OK" \
504
  "  0x00000001 00000005 + 0x00000002 * 0x0000fffd = 0x00000000 ffffffff: OK" \
505
  "  0x7fffffff ffffffff + 0x00000002 * 0x0000fffd = 0x7fffffff fffffff9: OK" \
506
  "  0xffffffff ffffffff + 0x00000002 * 0x0000fffd = 0xffffffff fffffff9: OK" \
507
  "  0xffffffff 00000005 + 0x00000002 * 0x0000fffd = 0xfffffffe ffffffff: OK" \
508
  "  0x80000000 00000006 + 0x00000002 * 0x0000fffd = 0x80000000 00000000: OK" \
509
  "!" \
510
  "  0x00000000 00000000 + 0x00010000 * 0x00008000 = 0xffffffff 80000000: OK" \
511
  "  0x00000000 00000006 + 0x00010000 * 0x00008000 = 0xffffffff 80000006: OK" \
512
  "  0x00000000 80000000 + 0x00010000 * 0x00008000 = 0x00000000 00000000: OK" \
513
  "  0x7fffffff ffffffff + 0x00010000 * 0x00008000 = 0x7fffffff 7fffffff: OK" \
514
  "  0xffffffff ffffffff + 0x00010000 * 0x00008000 = 0xffffffff 7fffffff: OK" \
515
  "  0xffffffff 7fffffff + 0x00010000 * 0x00008000 = 0xfffffffe ffffffff: OK" \
516
  "  0x80000000 80000000 + 0x00010000 * 0x00008000 = 0x80000000 00000000: OK" \
517
  "!" \
518
  "l.macrc" \
519
  "  0x00000000 00000000 + 0x00000002 * 0x00000003 = 0x00000006:   OK" \
520
  "  - MACHI cleared" \
521
  "  - MACLO cleared" \
522
  "  0x00000000 00000006 + 0x00000002 * 0x00000003 = 0x0000000c:   OK" \
523
  "  - MACHI cleared" \
524
  "  - MACLO cleared" \
525
  "  0x00000000 fffffffa + 0x00000002 * 0x00000003 = 0x00000000:   OK" \
526
  "  - MACHI cleared" \
527
  "  - MACLO cleared" \
528
  "  0x3fffffff fffffffa + 0x00000002 * 0x00000003 = 0x00000000:   OK" \
529
  "  - MACHI cleared" \
530
  "  - MACLO cleared" \
531
  "  0xffffffff fffffffa + 0x00000002 * 0x00000003 = 0x00000000:   OK" \
532
  "  - MACHI cleared" \
533
  "  - MACLO cleared" \
534
  "  0xffffffff 00000000 + 0x00000002 * 0x00000003 = 0x00000006:   OK" \
535
  "  - MACHI cleared" \
536
  "  - MACLO cleared" \
537
  "  0x80000000 00000000 + 0x00000002 * 0x00000003 = 0x00000006:   OK" \
538
  "  - MACHI cleared" \
539
  "  - MACLO cleared" \
540
  "!" \
541
  "  0x00000000 00000000 + 0x00008001 * 0x0000fffe = 0x7ffffffe:   OK" \
542
  "  - MACHI cleared" \
543
  "  - MACLO cleared" \
544
  "  0x00000000 00000002 + 0x00008001 * 0x0000fffe = 0x80000000:   OK" \
545
  "  - MACHI cleared" \
546
  "  - MACLO cleared" \
547
  "  0x00000000 80000002 + 0x00008001 * 0x0000fffe = 0x00000000:   OK" \
548
  "  - MACHI cleared" \
549
  "  - MACLO cleared" \
550
  "  0x7fffffff 80000001 + 0x00008001 * 0x0000fffe = 0xffffffff:   OK" \
551
  "  - MACHI cleared" \
552
  "  - MACLO cleared" \
553
  "  0xffffffff ffffffff + 0x00008001 * 0x0000fffe = 0x7ffffffd:   OK" \
554
  "  - MACHI cleared" \
555
  "  - MACLO cleared" \
556
  "  0xffffffff 80000002 + 0x00008001 * 0x0000fffe = 0x00000000:   OK" \
557
  "  - MACHI cleared" \
558
  "  - MACLO cleared" \
559
  "  0xfffffffe 80000002 + 0x00008001 * 0x0000fffe = 0x00000000:   OK" \
560
  "  - MACHI cleared" \
561
  "  - MACLO cleared" \
562
  "!" \
563
  "  0x00000000 00000000 + 0xfffffffe * 0xfffffffd = 0x00000006:   OK" \
564
  "  - MACHI cleared" \
565
  "  - MACLO cleared" \
566
  "  0x00000000 00000006 + 0xfffffffe * 0xfffffffd = 0x0000000c:   OK" \
567
  "  - MACHI cleared" \
568
  "  - MACLO cleared" \
569
  "  0xffffffff ffffffff + 0xfffffffe * 0xfffffffd = 0x00000005:   OK" \
570
  "  - MACHI cleared" \
571
  "  - MACLO cleared" \
572
  "!" \
573
  "  0x00000000 00000000 + 0x00000002 * 0xfffffffd = 0xfffffffa:   OK" \
574
  "  - MACHI cleared" \
575
  "  - MACLO cleared" \
576
  "  0x00000000 0000000c + 0x00000002 * 0xfffffffd = 0x00000006:   OK" \
577
  "  - MACHI cleared" \
578
  "  - MACLO cleared" \
579
  "  0x00000001 00000005 + 0x00000002 * 0xfffffffd = 0xffffffff:   OK" \
580
  "  - MACHI cleared" \
581
  "  - MACLO cleared" \
582
  "  0x7fffffff ffffffff + 0x00000002 * 0xfffffffd = 0xfffffff9:   OK" \
583
  "  - MACHI cleared" \
584
  "  - MACLO cleared" \
585
  "  0xffffffff ffffffff + 0x00000002 * 0xfffffffd = 0xfffffff9:   OK" \
586
  "  - MACHI cleared" \
587
  "  - MACLO cleared" \
588
  "  0xffffffff 00000005 + 0x00000002 * 0xfffffffd = 0xffffffff:   OK" \
589
  "  - MACHI cleared" \
590
  "  - MACLO cleared" \
591
  "  0x80000000 00000006 + 0x00000002 * 0xfffffffd = 0x00000000:   OK" \
592
  "  - MACHI cleared" \
593
  "  - MACLO cleared" \
594
  "!" \
595
  "  0x00000000 00000000 + 0x00008000 * 0xffff0000 = 0x80000000:   OK" \
596
  "  - MACHI cleared" \
597
  "  - MACLO cleared" \
598
  "  0x00000000 00000006 + 0x00008000 * 0xffff0000 = 0x80000006:   OK" \
599
  "  - MACHI cleared" \
600
  "  - MACLO cleared" \
601
  "  0x00000000 80000000 + 0x00008000 * 0xffff0000 = 0x00000000:   OK" \
602
  "  - MACHI cleared" \
603
  "  - MACLO cleared" \
604
  "  0x7fffffff ffffffff + 0x00008000 * 0xffff0000 = 0x7fffffff:   OK" \
605
  "  - MACHI cleared" \
606
  "  - MACLO cleared" \
607
  "  0xffffffff ffffffff + 0x00008000 * 0xffff0000 = 0x7fffffff:   OK" \
608
  "  - MACHI cleared" \
609
  "  - MACLO cleared" \
610
  "  0xffffffff 7fffffff + 0x00008000 * 0xffff0000 = 0xffffffff:   OK" \
611
  "  - MACHI cleared" \
612
  "  - MACLO cleared" \
613
  "  0x80000000 80000000 + 0x00008000 * 0xffff0000 = 0x00000000:   OK" \
614
  "  - MACHI cleared" \
615
  "  - MACLO cleared" \
616
  "!" \
617
  "l.msb" \
618
  "  0x00000000 00000000 - 0x00000002 * 0x00000003 = 0xffffffff fffffffa: OK" \
619
  "  0x00000000 0000000c - 0x00000002 * 0x00000003 = 0x00000000 00000006: OK" \
620
  "  0x00000001 00000000 - 0x00000002 * 0x00000003 = 0x00000000 fffffffa: OK" \
621
  "  0x40000000 00000000 - 0x00000002 * 0x00000003 = 0x3fffffff fffffffa: OK" \
622
  "  0xffffffff fffffffa - 0x00000002 * 0x00000003 = 0xffffffff fffffff4: OK" \
623
  "  0xffffffff 00000005 - 0x00000002 * 0x00000003 = 0xfffffffe ffffffff: OK" \
624
  "  0x80000000 00000006 - 0x00000002 * 0x00000003 = 0x80000000 00000000: OK" \
625
  "!" \
626
  "  0x00000000 00000000 - 0x00008001 * 0x0000fffe = 0xffffffff 80000002: OK" \
627
  "  0x00000000 00000002 - 0x00008001 * 0x0000fffe = 0xffffffff 80000004: OK" \
628
  "  0x00000000 80000002 - 0x00008001 * 0x0000fffe = 0x00000000 00000004: OK" \
629
  "  0x7fffffff 7ffffffd - 0x00008001 * 0x0000fffe = 0x7ffffffe ffffffff: OK" \
630
  "  0xffffffff ffffffff - 0x00008001 * 0x0000fffe = 0xffffffff 80000001: OK" \
631
  "  0xffffffff 80000002 - 0x00008001 * 0x0000fffe = 0xffffffff 00000004: OK" \
632
  "  0xfffffffe 80000002 - 0x00008001 * 0x0000fffe = 0xfffffffe 00000004: OK" \
633
  "!" \
634
  "  0x00000000 00000006 - 0xfffffffe * 0xfffffffd = 0x00000000 00000000: OK" \
635
  "  0x00000000 0000000c - 0xfffffffe * 0xfffffffd = 0x00000000 00000006: OK" \
636
  "  0xffffffff ffffffff - 0xfffffffe * 0xfffffffd = 0xffffffff fffffff9: OK" \
637
  "!" \
638
  "  0x00000000 00000000 - 0x00000002 * 0xfffffffd = 0x00000000 00000006: OK" \
639
  "  0x00000000 00000006 - 0x00000002 * 0xfffffffd = 0x00000000 0000000c: OK" \
640
  "  0x00000000 ffffffff - 0x00000002 * 0xfffffffd = 0x00000001 00000005: OK" \
641
  "  0x7fffffff fffffff9 - 0x00000002 * 0xfffffffd = 0x7fffffff ffffffff: OK" \
642
  "  0xffffffff fffffff9 - 0x00000002 * 0xfffffffd = 0xffffffff ffffffff: OK" \
643
  "  0xfffffffe ffffffff - 0x00000002 * 0xfffffffd = 0xffffffff 00000005: OK" \
644
  "  0x80000000 00000000 - 0x00000002 * 0xfffffffd = 0x80000000 00000006: OK" \
645
  "!" \
646
  "  0x00000000 00000000 - 0x00008000 * 0xffff0000 = 0x00000000 80000000: OK" \
647
  "  0x00000000 00000006 - 0x00008000 * 0xffff0000 = 0x00000000 80000006: OK" \
648
  "  0x00000000 80000000 - 0x00008000 * 0xffff0000 = 0x00000001 00000000: OK" \
649
  "  0x7fffffff 7fffffff - 0x00008000 * 0xffff0000 = 0x7fffffff ffffffff: OK" \
650
  "  0xffffffff ffffffff - 0x00008000 * 0xffff0000 = 0x00000000 7fffffff: OK" \
651
  "  0xfffffffe ffffffff - 0x00008000 * 0xffff0000 = 0xffffffff 7fffffff: OK" \
652
  "  0x80000000 00000000 - 0x00008000 * 0xffff0000 = 0x80000000 80000000: OK" \
653
  "!" \
654
  "!Test completed"                       \
655
  "!report(0xdeaddead);"                  \
656
  "!exit(0)"]                             \
657
    "inst-set-test.cfg" "inst-set-test/is-mac-test"
658 118 jeremybenn
 
659
# Run the l.mul test
660
run_or1ksim "mul-test"                                 \
661
    [list "!  ** OVE flag cleared **"                  \
662
          "!l.mul"                                     \
663
          "  0x00000002 * 0x00000003 = 0x00000006: OK" \
664
          "  - carry flag set:      FALSE"             \
665
          "  - overflow flag set:   FALSE"             \
666
          "  - exception triggered: FALSE"             \
667
          "  0x00008001 * 0x0000fffe = 0x7ffffffe: OK" \
668
          "  - carry flag set:      FALSE"             \
669
          "  - overflow flag set:   FALSE"             \
670
          "  - exception triggered: FALSE"             \
671
          "  0x00008000 * 0x00010000 = 0x80000000: OK" \
672
          "  - carry flag set:      FALSE"             \
673
          "  - overflow flag set:   TRUE"              \
674
          "  - exception triggered: FALSE"             \
675
          "  0x00010000 * 0x00010000 = 0x00000000: OK" \
676
          "  - carry flag set:      TRUE"              \
677
          "  - overflow flag set:   TRUE"              \
678
          "  - exception triggered: FALSE"             \
679
          "  0xfffffffe * 0xfffffffd = 0x00000006: OK" \
680
          "  - carry flag set:      TRUE"              \
681
          "  - overflow flag set:   FALSE"             \
682
          "  - exception triggered: FALSE"             \
683
          "  0xffff7fff * 0xffff0002 = 0x7ffffffe: OK" \
684
          "  - carry flag set:      TRUE"              \
685
          "  - overflow flag set:   FALSE"             \
686
          "  - exception triggered: FALSE"             \
687
          "  0xffff7fff * 0xffff0000 = 0x80010000: OK" \
688
          "  - carry flag set:      TRUE"              \
689
          "  - overflow flag set:   TRUE"              \
690
          "  - exception triggered: FALSE"             \
691
          "  0xffff0000 * 0xfffeffff = 0x00010000: OK" \
692
          "  - carry flag set:      TRUE"              \
693
          "  - overflow flag set:   TRUE"              \
694
          "  - exception triggered: FALSE"             \
695
          "  0x00000002 * 0xfffffffd = 0xfffffffa: OK" \
696
          "  - carry flag set:      TRUE"              \
697
          "  - overflow flag set:   FALSE"             \
698
          "  - exception triggered: FALSE"             \
699
          "  0xffff8000 * 0x00010000 = 0x80000000: OK" \
700
          "  - carry flag set:      TRUE"              \
701
          "  - overflow flag set:   FALSE"             \
702
          "  - exception triggered: FALSE"             \
703
          "  0xffff7fff * 0x00010000 = 0x7fff0000: OK" \
704
          "  - carry flag set:      TRUE"              \
705
          "  - overflow flag set:   TRUE"              \
706
          "  - exception triggered: FALSE"             \
707
          "  0x80000000 * 0x00000001 = 0x80000000: OK" \
708
          "  - carry flag set:      FALSE"             \
709
          "  - overflow flag set:   FALSE"             \
710
          "  - exception triggered: FALSE"             \
711
          "!  ** OVE flag set **"                      \
712
          "  RANGE exception"                          \
713
          "!  - caused by: report(0xe0853306);"        \
714
          "!  - SR value:  report(0x00009a01);"        \
715
          "  0x00008000 * 0x00010000 = 0x80000000: OK" \
716
          "  - carry flag set:      FALSE"             \
717
          "  - overflow flag set:   TRUE"              \
718
          "  - exception triggered: TRUE"              \
719
          "  0x00000002 * 0xfffffffd = 0xfffffffa: OK" \
720
          "  - carry flag set:      TRUE"              \
721
          "  - overflow flag set:   FALSE"             \
722
          "  - exception triggered: FALSE"             \
723
          "  RANGE exception"                          \
724
          "!  - caused by: report(0xe0853306);"        \
725
          "!  - SR value:  report(0x00009e01);"        \
726
          "  0xffff7fff * 0xffff0000 = 0x80010000: OK" \
727
          "  - carry flag set:      TRUE"              \
728
          "  - overflow flag set:   TRUE"              \
729
          "  - exception triggered: TRUE"              \
730
          "!  ** OVE flag cleared **"                  \
731
          "l.muli"                                     \
732
          "  0x00000002 * 0x0003 = 0x00000006: OK"     \
733
          "  - carry flag set:      FALSE"             \
734
          "  - overflow flag set:   FALSE"             \
735
          "  - exception triggered: FALSE"             \
736
          "  0x00010002 * 0x7fff = 0x7ffffffe: OK"     \
737
          "  - carry flag set:      FALSE"             \
738
          "  - overflow flag set:   FALSE"             \
739
          "  - exception triggered: FALSE"             \
740
          "  0x00020000 * 0x4000 = 0x80000000: OK"     \
741
          "  - carry flag set:      FALSE"             \
742
          "  - overflow flag set:   TRUE"              \
743
          "  - exception triggered: FALSE"             \
744
          "  0x00040000 * 0x4000 = 0x00000000: OK"     \
745
          "  - carry flag set:      TRUE"              \
746
          "  - overflow flag set:   TRUE"              \
747
          "  - exception triggered: FALSE"             \
748
          "  0xfffffffe * 0xfffd = 0x00000006: OK"     \
749
          "  - carry flag set:      TRUE"              \
750
          "  - overflow flag set:   FALSE"             \
751
          "  - exception triggered: FALSE"             \
752
          "  0xfffefffe * 0x8001 = 0x7ffffffe: OK"     \
753
          "  - carry flag set:      TRUE"              \
754
          "  - overflow flag set:   FALSE"             \
755
          "  - exception triggered: FALSE"             \
756
          "  0xfffe0000 * 0xbfff = 0x80020000: OK"     \
757
          "  - carry flag set:      TRUE"              \
758
          "  - overflow flag set:   TRUE"              \
759
          "  - exception triggered: FALSE"             \
760
          "  0xfffdfffe * 0x8000 = 0x00010000: OK"     \
761
          "  - carry flag set:      TRUE"              \
762
          "  - overflow flag set:   TRUE"              \
763
          "  - exception triggered: FALSE"             \
764
          "  0x00000002 * 0xfffd = 0xfffffffa: OK"     \
765
          "  - carry flag set:      TRUE"              \
766
          "  - overflow flag set:   FALSE"             \
767
          "  - exception triggered: FALSE"             \
768
          "  0x00010000 * 0x8000 = 0x80000000: OK"     \
769
          "  - carry flag set:      TRUE"              \
770
          "  - overflow flag set:   FALSE"             \
771
          "  - exception triggered: FALSE"             \
772
          "  0xfffdfffc * 0x4000 = 0x7fff0000: OK"     \
773
          "  - carry flag set:      TRUE"              \
774
          "  - overflow flag set:   TRUE"              \
775
          "  - exception triggered: FALSE"             \
776
          "  0x80000000 * 0x0001 = 0x80000000: OK"     \
777
          "  - carry flag set:      FALSE"             \
778
          "  - overflow flag set:   FALSE"             \
779
          "  - exception triggered: FALSE"             \
780
          "!  ** OVE flag set **"                      \
781
          "  RANGE exception"                          \
782
          "!  - caused by: report(0xb0854000);"        \
783
          "!  - SR value:  report(0x00009a01);"        \
784
          "  0x00020000 * 0x4000 = 0x80000000: OK"     \
785
          "  - carry flag set:      FALSE"             \
786
          "  - overflow flag set:   TRUE"              \
787
          "  - exception triggered: TRUE"              \
788
          "  0xfffffffe * 0xfffd = 0x00000006: OK"     \
789
          "  - carry flag set:      TRUE"              \
790
          "  - overflow flag set:   FALSE"             \
791
          "  - exception triggered: FALSE"             \
792
          "  RANGE exception"                          \
793
          "!  - caused by: report(0xb0858000);"        \
794
          "!  - SR value:  report(0x00009e01);"        \
795
          "  0xfffdfffe * 0x8000 = 0x00010000: OK"     \
796
          "  - carry flag set:      TRUE"              \
797
          "  - overflow flag set:   TRUE"              \
798
          "  - exception triggered: TRUE"              \
799
          "!  ** OVE flag cleared **"                  \
800
          "l.mulu"                                     \
801
          "  0x00000002 * 0x00000003 = 0x00000006: OK" \
802
          "  - carry flag set:      FALSE"             \
803
          "  - overflow flag set:   FALSE"             \
804
          "  - exception triggered: FALSE"             \
805
          "  0x00008001 * 0x0000fffe = 0x7ffffffe: OK" \
806
          "  - carry flag set:      FALSE"             \
807
          "  - overflow flag set:   FALSE"             \
808
          "  - exception triggered: FALSE"             \
809
          "  0x00008000 * 0x00010000 = 0x80000000: OK" \
810
          "  - carry flag set:      FALSE"             \
811
          "  - overflow flag set:   FALSE"             \
812
          "  - exception triggered: FALSE"             \
813
          "  0x00010000 * 0x00010000 = 0x00000000: OK" \
814
          "  - carry flag set:      TRUE"              \
815
          "  - overflow flag set:   FALSE"             \
816
          "  - exception triggered: FALSE"             \
817
          "  0xfffffffe * 0xfffffffd = 0x00000006: OK" \
818
          "  - carry flag set:      TRUE"              \
819
          "  - overflow flag set:   FALSE"             \
820
          "  - exception triggered: FALSE"             \
821
          "  0xffff7fff * 0xffff0002 = 0x7ffffffe: OK" \
822
          "  - carry flag set:      TRUE"              \
823
          "  - overflow flag set:   FALSE"             \
824
          "  - exception triggered: FALSE"             \
825
          "  0xffff7fff * 0xffff0000 = 0x80010000: OK" \
826
          "  - carry flag set:      TRUE"              \
827
          "  - overflow flag set:   FALSE"             \
828
          "  - exception triggered: FALSE"             \
829
          "  0xffff0000 * 0xfffeffff = 0x00010000: OK" \
830
          "  - carry flag set:      TRUE"              \
831
          "  - overflow flag set:   FALSE"             \
832
          "  - exception triggered: FALSE"             \
833
          "  0x00000002 * 0xfffffffd = 0xfffffffa: OK" \
834
          "  - carry flag set:      TRUE"              \
835
          "  - overflow flag set:   FALSE"             \
836
          "  - exception triggered: FALSE"             \
837
          "  0xffff8000 * 0x00010000 = 0x80000000: OK" \
838
          "  - carry flag set:      TRUE"              \
839
          "  - overflow flag set:   FALSE"             \
840
          "  - exception triggered: FALSE"             \
841
          "  0xffff7fff * 0x00010000 = 0x7fff0000: OK" \
842
          "  - carry flag set:      TRUE"              \
843
          "  - overflow flag set:   FALSE"             \
844
          "  - exception triggered: FALSE"             \
845
          "  0x80000000 * 0x00000001 = 0x80000000: OK" \
846
          "  - carry flag set:      FALSE"             \
847
          "  - overflow flag set:   FALSE"             \
848
          "  - exception triggered: FALSE"             \
849
          "!  ** OVE flag set **"                      \
850
          "  0x00008000 * 0x00010000 = 0x80000000: OK" \
851
          "  - carry flag set:      FALSE"             \
852
          "  - overflow flag set:   FALSE"             \
853
          "  - exception triggered: FALSE"             \
854
          "  0x00000002 * 0xfffffffd = 0xfffffffa: OK" \
855
          "  - carry flag set:      TRUE"              \
856
          "  - overflow flag set:   FALSE"             \
857
          "  - exception triggered: FALSE"             \
858
          "  0xffff7fff * 0xffff0000 = 0x80010000: OK" \
859
          "  - carry flag set:      TRUE"              \
860
          "  - overflow flag set:   FALSE"             \
861
          "  - exception triggered: FALSE"             \
862
          "!  ** OVE flag cleared **"                  \
863
          "!Test completed"                            \
864
          "!report(0xdeaddead);"                       \
865
          "!exit(0)"]                                  \
866
    "inst-set-test.cfg" "inst-set-test/is-mul-test"

powered by: WebSVN 2.1.0

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