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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [testbench/] [basic.S] - Blame information for rev 511

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

Line No. Rev Author Line
1 432 markom
/* Basic instruction set test */
2
#include "spr_defs.h"
3
 
4
#define MEM_RAM 0x40000000
5
 
6
        .section .except
7
        .org 0x100
8
_reset:
9 511 markom
        l.nop 0
10 432 markom
        l.movhi r1,hi(_regs)
11
        l.ori   r1,r1,lo(_regs)
12
        l.jr    r1
13
        l.nop
14
 
15
  .section .text
16
_regs:
17
        l.addi  r1,r0,0x1
18
        l.addi  r2,r1,0x2
19
        l.addi  r3,r2,0x4
20
        l.addi  r4,r3,0x8
21
        l.addi  r5,r4,0x10
22
        l.addi  r6,r5,0x20
23
        l.addi  r7,r6,0x40
24
        l.addi  r8,r7,0x80
25
        l.addi  r9,r8,0x100
26
        l.addi  r10,r9,0x200
27
        l.addi  r11,r10,0x400
28
        l.addi  r12,r11,0x800
29
        l.addi  r13,r12,0x1000
30
        l.addi  r14,r13,0x2000
31
        l.addi  r15,r14,0x4000
32
        l.addi  r16,r15,0x8000
33
 
34
        l.sub   r31,r0,r1
35
        l.sub   r30,r31,r2
36
        l.sub   r29,r30,r3
37
        l.sub   r28,r29,r4
38
        l.sub   r27,r28,r5
39
        l.sub   r26,r27,r6
40
        l.sub   r25,r26,r7
41
        l.sub   r24,r25,r8
42
        l.sub   r23,r24,r9
43
        l.sub   r22,r23,r10
44
        l.sub   r21,r22,r11
45
        l.sub   r20,r21,r12
46
        l.sub   r19,r20,r13
47
        l.sub   r18,r19,r14
48
        l.sub   r17,r18,r15
49
        l.sub   r16,r17,r16
50
 
51 511 markom
  l.or  r3,r0,r16
52
  l.nop NOP_REPORT  /* Should be 0xffff0012 */
53 432 markom
 
54
        l.movhi r31, hi(MEM_RAM)
55
        l.ori  r31,r31, lo(MEM_RAM)
56
        l.sw    0(r31),r16
57
 
58
_mem:   l.movhi r3,0x1234
59
        l.ori   r3,r3,0x5678
60
 
61
        l.sw    4(r31),r3
62
 
63
        l.lbz   r4,4(r31)
64
        l.add   r8,r8,r4
65
        l.sb    11(r31),r4
66
        l.lbz   r4,5(r31)
67
        l.add   r8,r8,r4
68
        l.sb    10(r31),r4
69
        l.lbz   r4,6(r31)
70
        l.add   r8,r8,r4
71
        l.sb    9(r31),r4
72
        l.lbz   r4,7(r31)
73
        l.add   r8,r8,r4
74
        l.sb    8(r31),r4
75
 
76
        l.lbs   r4,8(r31)
77
        l.add   r8,r8,r4
78
        l.sb    7(r31),r4
79
        l.lbs   r4,9(r31)
80
        l.add   r8,r8,r4
81
        l.sb    6(r31),r4
82
        l.lbs   r4,10(r31)
83
        l.add   r8,r8,r4
84
        l.sb    5(r31),r4
85
        l.lbs   r4,11(r31)
86
        l.add   r8,r8,r4
87
        l.sb    4(r31),r4
88
 
89
        l.lhz   r4,4(r31)
90
        l.add   r8,r8,r4
91
        l.sh    10(r31),r4
92
        l.lhz   r4,6(r31)
93
        l.add   r8,r8,r4
94
        l.sh    8(r31),r4
95
 
96
        l.lhs   r4,8(r31)
97
        l.add   r8,r8,r4
98
        l.sh    6(r31),r4
99
        l.lhs   r4,10(r31)
100
        l.add   r8,r8,r4
101
        l.sh    4(r31),r4
102
 
103
        l.lwz   r4,4(r31)
104
        l.add   r8,r8,r4
105
 
106 511 markom
  l.or  r3,r0,r8
107
  l.nop NOP_REPORT   /* Should be 0x12352af7 */
108 432 markom
 
109
        l.lwz   r9,0(r31)
110
        l.add   r8,r9,r8
111
        l.sw    0(r31),r8
112
 
113
_arith:
114
        l.addi  r3,r0,1
115
        l.addi  r4,r0,2
116
        l.addi  r5,r0,-1
117
        l.addi  r6,r0,-1
118
        l.addi  r8,r0,0
119
 
120
        l.sub   r7,r5,r3
121
        l.sub   r8,r3,r5
122
        l.add   r8,r8,r7
123
 
124
        l.div   r7,r7,r4
125
        l.add   r9,r3,r4
126
        l.mul   r7,r9,r7
127
        l.divu  r7,r7,r4
128
        l.add   r8,r8,r7
129
 
130 511 markom
        l.or  r3,r0,r8
131
  l.nop NOP_REPORT   /* Should be 0x7ffffffe */
132 432 markom
 
133
        l.lwz   r9,0(r31)
134
        l.add   r8,r9,r8
135
        l.sw    0(r31),r8
136
 
137
_log:
138
        l.addi  r3,r0,1
139
        l.addi  r4,r0,2
140
        l.addi  r5,r0,-1
141
        l.addi  r6,r0,-1
142
        l.addi  r8,r0,0
143
 
144
        l.andi  r8,r8,1
145
        l.and   r8,r8,r3
146
 
147
        l.xori  r8,r5,0xa5a5
148
        l.xor   r8,r8,r5
149
 
150
        l.ori   r8,r8,2
151
        l.or    r8,r8,r4
152
 
153 511 markom
        l.or  r3,r0,r8
154
  l.nop NOP_REPORT   /* Should be 0xffffa5a7 */
155 432 markom
 
156
        l.lwz   r9,0(r31)
157
        l.add   r8,r9,r8
158
        l.sw    0(r31),r8
159
 
160
_shift:
161
        l.addi  r3,r0,1
162
        l.addi  r4,r0,2
163
        l.addi  r5,r0,-1
164
        l.addi  r6,r0,-1
165
        l.addi  r8,r0,0
166
 
167
        l.slli  r8,r5,6
168
        l.sll   r8,r8,r4
169
 
170
        l.srli  r8,r8,6
171
        l.srl   r8,r8,r4
172
 
173
        l.srai  r8,r8,2
174
        l.sra   r8,r8,r4
175
 
176 511 markom
        l.or  r3,r0,r8
177
  l.nop NOP_REPORT  /* Should be 0x000fffff */
178 432 markom
 
179
        l.lwz   r9,0(r31)
180
        l.add   r8,r9,r8
181
        l.sw    0(r31),r8
182
 
183
_flag:
184
        l.addi  r3,r0,1
185
        l.addi  r4,r0,-2
186
        l.addi  r8,r0,0
187
 
188
        l.sfeq  r3,r3
189
        l.mfspr r5,r0,17
190
        l.andi  r4,r5,0x200
191
        l.add   r8,r8,r4
192
 
193
        l.sfeq  r3,r4
194
        l.mfspr r5,r0,17
195
        l.andi  r4,r5,0x200
196
        l.add   r8,r8,r4
197
 
198
        l.sfeqi r3,1
199
        l.mfspr r5,r0,17
200
        l.andi  r4,r5,0x200
201
        l.add   r8,r8,r4
202
 
203
        l.sfeqi r3,-2
204
        l.mfspr r5,r0,17
205
        l.andi  r4,r5,0x200
206
        l.add   r8,r8,r4
207
 
208
        l.sfne  r3,r3
209
        l.mfspr r5,r0,17
210
        l.andi  r4,r5,0x200
211
        l.add   r8,r8,r4
212
 
213
        l.sfne  r3,r4
214
        l.mfspr r5,r0,17
215
        l.andi  r4,r5,0x200
216
        l.add   r8,r8,r4
217
 
218
        l.sfnei r3,1
219
        l.mfspr r5,r0,17
220
        l.andi  r4,r5,0x200
221
        l.add   r8,r8,r4
222
 
223
        l.sfnei r3,-2
224
        l.mfspr r5,r0,17
225
        l.andi  r4,r5,0x200
226
        l.add   r8,r8,r4
227
 
228
        l.sfgtu r3,r3
229
        l.mfspr r5,r0,17
230
        l.andi  r4,r5,0x200
231
        l.add   r8,r8,r4
232
 
233
        l.sfgtu r3,r4
234
        l.mfspr r5,r0,17
235
        l.andi  r4,r5,0x200
236
        l.add   r8,r8,r4
237
 
238
        l.sfgtui        r3,1
239
        l.mfspr r5,r0,17
240
        l.andi  r4,r5,0x200
241
        l.add   r8,r8,r4
242
 
243
        l.sfgtui        r3,-2
244
        l.mfspr r5,r0,17
245
        l.andi  r4,r5,0x200
246
        l.add   r8,r8,r4
247
 
248
        l.sfgeu r3,r3
249
        l.mfspr r5,r0,17
250
        l.andi  r4,r5,0x200
251
        l.add   r8,r8,r4
252
 
253
        l.sfgeu r3,r4
254
        l.mfspr r5,r0,17
255
        l.andi  r4,r5,0x200
256
        l.add   r8,r8,r4
257
 
258
        l.sfgeui        r3,1
259
        l.mfspr r5,r0,17
260
        l.andi  r4,r5,0x200
261
        l.add   r8,r8,r4
262
 
263
        l.sfgeui        r3,-2
264
        l.mfspr r5,r0,17
265
        l.andi  r4,r5,0x200
266
        l.add   r8,r8,r4
267
 
268
        l.sfltu r3,r3
269
        l.mfspr r5,r0,17
270
        l.andi  r4,r5,0x200
271
        l.add   r8,r8,r4
272
 
273
        l.sfltu r3,r4
274
        l.mfspr r5,r0,17
275
        l.andi  r4,r5,0x200
276
        l.add   r8,r8,r4
277
 
278
        l.sfltui        r3,1
279
        l.mfspr r5,r0,17
280
        l.andi  r4,r5,0x200
281
        l.add   r8,r8,r4
282
 
283
        l.sfltui        r3,-2
284
        l.mfspr r5,r0,17
285
        l.andi  r4,r5,0x200
286
        l.add   r8,r8,r4
287
 
288
        l.sfleu r3,r3
289
        l.mfspr r5,r0,17
290
        l.andi  r4,r5,0x200
291
        l.add   r8,r8,r4
292
 
293
        l.sfleu r3,r4
294
        l.mfspr r5,r0,17
295
        l.andi  r4,r5,0x200
296
        l.add   r8,r8,r4
297
 
298
        l.sfleui        r3,1
299
        l.mfspr r5,r0,17
300
        l.andi  r4,r5,0x200
301
        l.add   r8,r8,r4
302
 
303
        l.sfleui        r3,-2
304
        l.mfspr r5,r0,17
305
        l.andi  r4,r5,0x200
306
        l.add   r8,r8,r4
307
 
308
        l.sfgts r3,r3
309
        l.mfspr r5,r0,17
310
        l.andi  r4,r5,0x200
311
        l.add   r8,r8,r4
312
 
313
        l.sfgts r3,r4
314
        l.mfspr r5,r0,17
315
        l.andi  r4,r5,0x200
316
        l.add   r8,r8,r4
317
 
318
        l.sfgtsi        r3,1
319
        l.mfspr r5,r0,17
320
        l.andi  r4,r5,0x200
321
        l.add   r8,r8,r4
322
 
323
        l.sfgtsi        r3,-2
324
        l.mfspr r5,r0,17
325
        l.andi  r4,r5,0x200
326
        l.add   r8,r8,r4
327
 
328
        l.sfges r3,r3
329
        l.mfspr r5,r0,17
330
        l.andi  r4,r5,0x200
331
        l.add   r8,r8,r4
332
 
333
        l.sfges r3,r4
334
        l.mfspr r5,r0,17
335
        l.andi  r4,r5,0x200
336
        l.add   r8,r8,r4
337
 
338
        l.sfgesi        r3,1
339
        l.mfspr r5,r0,17
340
        l.andi  r4,r5,0x200
341
        l.add   r8,r8,r4
342
 
343
        l.sfgesi        r3,-2
344
        l.mfspr r5,r0,17
345
        l.andi  r4,r5,0x200
346
        l.add   r8,r8,r4
347
 
348
        l.sflts r3,r3
349
        l.mfspr r5,r0,17
350
        l.andi  r4,r5,0x200
351
        l.add   r8,r8,r4
352
 
353
        l.sflts r3,r4
354
        l.mfspr r5,r0,17
355
        l.andi  r4,r5,0x200
356
        l.add   r8,r8,r4
357
 
358
        l.sfltsi        r3,1
359
        l.mfspr r5,r0,17
360
        l.andi  r4,r5,0x200
361
        l.add   r8,r8,r4
362
 
363
        l.sfltsi        r3,-2
364
        l.mfspr r5,r0,17
365
        l.andi  r4,r5,0x200
366
        l.add   r8,r8,r4
367
 
368
        l.sfles r3,r3
369
        l.mfspr r5,r0,17
370
        l.andi  r4,r5,0x200
371
        l.add   r8,r8,r4
372
 
373
        l.sfles r3,r4
374
        l.mfspr r5,r0,17
375
        l.andi  r4,r5,0x200
376
        l.add   r8,r8,r4
377
 
378
        l.sflesi        r3,1
379
        l.mfspr r5,r0,17
380
        l.andi  r4,r5,0x200
381
        l.add   r8,r8,r4
382
 
383
        l.sflesi        r3,-2
384
        l.mfspr r5,r0,17
385
        l.andi  r4,r5,0x200
386
        l.add   r8,r8,r4
387
 
388 511 markom
        l.or  r3,r0,r8
389
  l.nop NOP_REPORT   /* Should be 0x00002800 */
390 432 markom
 
391
        l.lwz   r9,0(r31)
392
        l.add   r8,r9,r8
393
        l.sw    0(r31),r8
394
 
395
_jump:
396
        l.addi  r8,r0,0
397
 
398
        l.j     _T1
399
        l.addi  r8,r8,1
400
 
401
_T2:    l.jr    r9
402
        l.addi  r8,r8,1
403
 
404
_T1:    l.jal   _T2
405
        l.addi  r8,r8,1
406
 
407
        l.sfeqi r0,0
408
        l.bf    _T3
409
        l.addi  r8,r8,1
410
 
411
_T3:    l.sfeqi r0,1
412
        l.bf    _T4
413
        l.addi  r8,r8,1
414
 
415
        l.addi  r8,r8,1
416
 
417
_T4:    l.sfeqi r0,0
418
        l.bnf    _T5
419
        l.addi  r8,r8,1
420
 
421
        l.addi  r8,r8,1
422
 
423
_T5:    l.sfeqi r0,1
424
        l.bnf    _T6
425
        l.addi  r8,r8,1
426
 
427
        l.addi  r8,r8,1
428
 
429
_T6:    l.movhi r3,hi(_T7)
430
        l.ori  r3,r0,lo(_T7)
431
        l.mtspr r0,r3,32
432
        l.mfspr r5,r0,17
433
        l.mtspr r0,r5,64
434
        l.rfe
435
        l.addi  r8,r8,1 /* l.rfe should not have a delay slot */
436
 
437
        l.addi  r8,r8,1
438
 
439 511 markom
_T7:    l.or  r3,r0,r8
440
  l.nop NOP_REPORT   /* Should be 0x000000009 */
441 432 markom
 
442
        l.lwz   r9,0(r31)
443
        l.add   r8,r9,r8
444
        l.sw    0(r31),r8
445
 
446
        l.lwz   r9,0(r31)
447
        l.movhi r3,0x4c69
448
        l.ori   r3,r3,0xe5f7
449
        l.add   r8,r8,r3
450
 
451 511 markom
        l.or  r3,r0,r8
452
  l.nop NOP_REPORT   /* Should be 0xdeaddead */
453 432 markom
 
454
        l.addi  r3,r0,0
455 511 markom
        l.nop NOP_EXIT
456 432 markom
 

powered by: WebSVN 2.1.0

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