|
|
1.1 root 1:
2:
3: /* ADDB2 (add byte 2) test */
4: /* */
5: /*Test name = addb2 */
6: /*Description = */
7: /* This test checks 'addb2' instruction as follows: */
8: /*add sum result N Z V C (flags) */
9: /*___ ___ ______ _______________ */
10: /*0x11107fff 0x11107fff 0x1110fffe 0 0 1 0 */
11: /*0x11108000 0x11108000 0x11100000 0 1 1 1 */
12: /*0x8000 0xffff 0x7fff 0 0 1 1 */
13: /*0x8001 0x7fff 0x0000 0 1 0 1 */
14: /*0x8000 0x7fff 0xffff 1 0 0 0 */
15: /*0xc000 0xc000 0x8000 1 0 0 1 */
16: /* */
17: /* */
18: /* */
19: /* */
20: /* constants definition for 'addx' tests. */
21: /* */
22:
23: .set A1B1,0x1111107f/*+127, highest +ve number, byte */
24: .set A1W1,0x11107fff
25: .set A1L1,0x7fffffff
26: .set A2B1,0x1111107f/* +127 */
27: .set A2W1,0x11107fff
28: .set A2L1,A1L1
29: .set RB1,0x111110fe
30: .set RW1,0x1110fffe
31: .set RL1,0xfffffffe
32: .set A1B2,0x11111080/* -128 */
33: .set A1W2,0x11108000
34: .set A1L2,0x80000000
35: .set A2B2,0x11111080/* -128 */
36: .set A2W2,0x11118000
37: .set A2L2,0X80000000
38: .set RB2,0x11111000/* 0 */
39: .set RW2,0x11100000
40: .set RL2,0x00000000
41: .set A1B3,0X80 /* -128 */
42: .set A1W3,0x8000
43: .set A1L3,0x80000000
44: .set A2B3,0xff /* -1 */
45: .set A2W3,0xffff
46: .set A2L3,0xffffffff
47: .set RB3,0x0000007f
48: .set RW3,0X00007fff
49: .set RL3,0X7fffffff
50: .set A1B4,0x81 /* -127 */
51: .set A1W4,0x8001
52: .set A1L4,0x80000001
53: .set A2B4,0x7f /* 127 */
54: .set A2W4,0x7fff
55: .set A2L4,0x7fffffff
56: .set RB4,0 /* 0 */
57: .set RW4,RB4
58: .set RL4,RB4
59: .set A1B5,A1B3 /* -128 */
60: .set A1W5,A1W3
61: .set A1L5,A1L3
62: .set A2B5,A2B4 /* 127 */
63: .set A2W5,A2W4
64: .set A2L5,A2L4
65: .set RB5,0xff /* -1 */
66: .set RW5,0xffff
67: .set RL5,0xffffffff
68: .set A1B6,0xc0 /* -64 */
69: .set A1W6,0xc000
70: .set A1L6,0xc0000000
71: .set A2B6,A1B6 /* -64 */
72: .set A2W6,A1W6
73: .set A2L6,A1L6
74: .set RB6,0x00000080 /* -128 */
75: .set RW6,0x00008000
76: .set RL6,0X80000000
77: .set BMSK,0xff /* mask value for byte compare operations */
78:
79: .set INITB,0x11111055/* initialization values for 3 operand */
80: .set INITW,0x11105555
81: .set INITL,0X55555555
82:
83: /* */
84: /* Syst.s - Constants */
85: /* */
86: .set IPL,8
87: .set HIGH,31
88: .set ZERO,0
89: .set ONES,0xffffffff
90: .set N,8
91: .set Z,4
92: .set V,2
93: .set C,1
94: .set T,16
95: .set IV,32
96: .set FU,64
97: .set DV,128
98: .set PSWMASK,0x003f
99:
100: .globl _addb2
101: _addb2:
102: ab1:
103: callf $4,_setjmp /* save context for error return */
104: movab ab1,_stpc /* save pc of subtest */
105: movl $1,_subtst /* subtest number */
106: movl $2,_no_opr /* number of operands in use */
107: movl $A1B1,_opr /* first operand */
108: movl $A2B1,_opr + 4 /* second operand */
109: 0:
110: bicpsw $PSWMASK /*PSW = 0 */
111: movl $A1B1,add /*first operand */
112: movl $A2B1,sum /*second operand */
113: bispsw $(N|Z|C) /* these flags ON */
114: addb2 add+3,sum+3 /* try 'add' instruction mem to mem */
115: jlss e1 /*error if N = 1 */
116: jeql e1 /*error if Z = 1 */
117: jvc e1 /*error if V = 0 */
118: jcs e1 /*error if C = 1 */
119: bicpsw $Z
120: movl $RB1,r4
121: cmpl $RB1,sum /*sum = expected ? */
122: jgeq ab1r
123: bbs $0,_scoplp,0b /* if set scope loop on error */
124: movl $1,_ercode /* error code flag failure */
125: movl sum,_actual /* actual data */
126: movl $RB1,_expected /* expected data */
127: jmp *badrtn
128: e1: movpsl _actual /* actual = psl */
129: bbs $0,_scoplp,0b /* if set scope loop on error */
130: movl $2,_ercode /* error code flag failure */
131: jmp *badrtn
132:
133: /* reverse operands data to memory operation */
134:
135: ab1r:
136: bbs $0,_force_lp,0b /* if set loop on last subtest */
137: aab1r: callf $4,_setjmp /* save context for error return */
138: movab aab1r,_stpc /* save pc of subtest */
139: movl $2,_subtst /* subtest number */
140: movl $2,_no_opr /* number of operands in use */
141: movl $0x7f,_opr /* first operand */
142: movl $A1B1,_opr + 4 /* second operand */
143: 0: bicpsw $PSWMASK /*PSW = 0 */
144: movl $A1B1,sum /*second operand */
145: bispsw $(N|Z|C) /* these flags ON */
146: addb2 $0x7f,sum+3 /* try 'add' instruction data to mem */
147: jlss e2 /*error if N = 1 */
148: jeql e2 /*error if Z = 1 */
149: jvc e2 /*error if V = 0 */
150: jcs e2 /*error if C = 1 */
151: bicpsw $Z
152: movl $RB1,r4
153: cmpl $RB1,sum /*sum = expected ? */
154: jeql ab2
155: bbs $0,_scoplp,0b /* if set scope loop on error */
156: movl $1,_ercode /* error code flag failure */
157: movl sum,_actual /* actual data */
158: movl $RB1,_expected /* expected data */
159: jmp *badrtn
160: e2: movpsl _actual /* actual = psl */
161: bbs $0,_scoplp,0b /* if set scope loop on error */
162: movl $2,_ercode /* error code flag failure */
163: jmp *badrtn
164:
165: ab2:
166: bbs $0,_force_lp,0b /* if set loop on last subtest */
167: aab2: callf $4,_setjmp /* save context for error return */
168: movab aab2,_stpc /* save pc of subtest */
169: movl $3,_subtst /* subtest number */
170: movl $2,_no_opr /* number of operands in use */
171: movl $A1B2,_opr /* first operand */
172: movl $A2B2,_opr + 4 /* second operand */
173: 0: bicpsw $PSWMASK /*PSW = 0 */
174: movl $A1B2,tmp
175: movb tmp+3,r5 /*first operand */
176: movl $A2B2,sum /*second operand */
177: bispsw $N /* these flags ON */
178: addb2 r5,sum+3 /* try 'add' instruction reg to mem */
179: jgeq e3 /*error if N = 0 */
180: jeql e3 /*error if Z = 1 */
181: jvc e3 /*error if V = 0 */
182: jcc e3 /*error if C = 0 */
183: bicpsw $Z
184: movl $RB2,r4
185: cmpl $RB2,sum /*sum = expected ? */
186: jeql ab2r /*if not, error */
187: bbs $0,_scoplp,0b /* if set scope loop on error */
188: movl $1,_ercode /* error code flag failure */
189: movl sum,_actual /* actual data */
190: movl $RB2,_expected /* expected data */
191: jmp *badrtn
192: e3: movpsl _actual /* actual = psl */
193: bbs $0,_scoplp,0b /* if set scope loop on error */
194: movl $2,_ercode /* error code flag failure */
195: jmp *badrtn
196:
197: /* reverse operands memory to register operation */
198:
199: ab2r:
200: bbs $0,_force_lp,0b /* if set loop on last subtest */
201: aab2r: callf $4,_setjmp /* save context for error return */
202: movab aab2r,_stpc /* save pc of subtest */
203: movl $4,_subtst /* subtest number */
204: movl $2,_no_opr /* number of operands in use */
205: movl $A2B2,_opr /* first operand */
206: movl $A1B2,_opr + 4 /* second operand */
207: 0: bicpsw $PSWMASK /*PSW = 0 */
208: movl $A2B2,add /*first operand */
209: movl $A1B2,tmp
210: movb tmp+3,r5 /*first operand */
211: bispsw $N /* these flags ON */
212: addb2 add+3,r5 /* try 'add' instruction */
213: jgeq e4 /*error if N = 0 */
214: jeql e4 /*error if Z = 1 */
215: jvc e4 /*error if V = 0 */
216: jcc e4 /*error if C = 0 */
217: bicpsw $Z
218: movl $RB2,r4
219: andl2 $BMSK,r4
220: andl2 $BMSK,r5 /* mask off don't care bits */
221: cmpl r4,r5 /*sum = expected ? */
222: jeql ab3 /*if not, error */
223: bbs $0,_scoplp,0b /* if set scope loop on error */
224: movl $1,_ercode /* error code flag failure */
225: movl r5,_actual /* actual data */
226: movl r4,_expected /* expected data */
227: jmp *badrtn
228: e4: movpsl _actual /* actual = psl */
229: bbs $0,_scoplp,0b /* if set scope loop on error */
230: movl $2,_ercode /* error code flag failure */
231: jmp *badrtn
232:
233:
234:
235: ab3:
236: bbs $0,_force_lp,0b /* if set loop on last subtest */
237: aab3: callf $4,_setjmp /* save context for error return */
238: movab aab3,_stpc /* save pc of subtest */
239: movl $5,_subtst /* subtest number */
240: movl $2,_no_opr /* number of operands in use */
241: movl $-0x80,_opr /* first operand */
242: movl $A2B3,_opr + 4 /* second operand */
243: 0: bicpsw $PSWMASK /*PSW = 0 */
244: movl $A2B3,tmp /*second operand */
245: movb tmp+3,r5 /*second operand */
246: bispsw $(N|Z) /* these flags ON */
247: addb2 $-0x80,r5 /* try 'add' instruction data to reg */
248: jgeq e5 /*error if N = 0 */
249: jeql e5 /*error if Z = 1 */
250: jvc e5 /*error if V = 0 */
251: jcc e5 /*error if C = 0 */
252: bicpsw $Z
253: movl $RB3,r4
254: andl2 $BMSK,r4
255: andl2 $BMSK,r5 /* mask off don't care bits */
256: cmpl r4,r5 /*sum = expected ? */
257: jeql ab3r /*if not, error */
258: bbs $0,_scoplp,0b /* if set scope loop on error */
259: movl $1,_ercode /* error code flag failure */
260: movl r5,_actual /* actual data */
261: movl r4,_expected /* expected data */
262: jmp *badrtn
263: e5: movpsl _actual /* actual = psl */
264: bbs $0,_scoplp,0b /* if set scope loop on error */
265: movl $2,_ercode /* error code flag failure */
266: jmp *badrtn
267:
268:
269: /* reverse operands register to register operation */
270:
271: ab3r:
272: bbs $0,_force_lp,0b /* if set loop on last subtest */
273: aab3r: callf $4,_setjmp /* save context for error return */
274: movab aab3r,_stpc /* save pc of subtest */
275: movl $6,_subtst /* subtest number */
276: movl $2,_no_opr /* number of operands in use */
277: movl $A2B3,_opr /* first operand */
278: movl $A1B3,_opr + 4 /* second operand */
279: 0: bicpsw $PSWMASK /*PSW = 0 */
280: movl $A2B3,tmp /*first operand */
281: movb tmp+3,r5 /*first operand */
282: movl $A1B3,tmp2 /*second operand */
283: movb tmp2+3,r6 /*second operand */
284: bispsw $(N|Z) /* these flags ON */
285: addb2 r5,r6 /* try 'add' instruction reg to reg */
286: jgeq e6 /*error if N = 0 */
287: jeql e6 /*error if Z = 1 */
288: jvc e6 /*error if V = 0 */
289: jcc e6 /*error if C = 0 */
290: bicpsw $Z
291: movl $RB3,r4
292: andl2 $BMSK,r4
293: andl2 $BMSK,r6 /* mask off don't care bits */
294: cmpl r4,r6 /*sum = expected ? */
295: jeql ab4 /*if not, error */
296: bbs $0,_scoplp,0b /* if set scope loop on error */
297: movl $1,_ercode /* error code flag failure */
298: movl r6,_actual /* actual data */
299: movl r4,_expected /* expected data */
300: jmp *badrtn
301: e6: movpsl _actual /* actual = psl */
302: bbs $0,_scoplp,0b /* if set scope loop on error */
303: movl $2,_ercode /* error code flag failure */
304: jmp *badrtn
305:
306: ab4:
307: bbs $0,_force_lp,0b /* if set loop on last subtest */
308: aab4: callf $4,_setjmp /* save context for error return */
309: movab aab4,_stpc /* save pc of subtest */
310: movl $7,_subtst /* subtest number */
311: movl $2,_no_opr /* number of operands in use */
312: movl $A2B3,_opr /* first operand */
313: movl $A1B3,_opr + 4 /* second operand */
314: 0: bicpsw $PSWMASK /*PSW = 0 */
315: movl $A1B4,add /*first operand */
316: movl $A2B4,sum /*second operand */
317: bispsw $(N|V) /* these flags ON */
318: addb2 add+3,sum+3 /* try 'add' instruction */
319: jlss e7 /*error if N = 1 */
320: jneq e7 /*error if Z = 0 */
321: jvs e7 /*error if V = 1 */
322: jcc e7 /*error if C = 0 */
323: bicpsw $Z
324: cmpl $RB4,sum /*sum = expected ? */
325: jeql ab4r /*if not, error */
326: bbs $0,_scoplp,0b /* if set scope loop on error */
327: movl $1,_ercode /* error code flag failure */
328: movl $RB4,_actual /* actual data */
329: movl sum,_expected /* expected data */
330: jmp *badrtn
331: e7: movpsl _actual /* actual = psl */
332: bbs $0,_scoplp,0b /* if set scope loop on error */
333: bbs $0,_scoplp,0b /* if set scope loop on error */
334: movl $2,_ercode /* error code flag failure */
335: jmp *badrtn
336:
337:
338: /* reverse operands */
339:
340: ab4r:
341: bbs $0,_force_lp,0b /* if set loop on last subtest */
342: aab4r: callf $4,_setjmp /* save context for error return */
343: movab aab4r,_stpc /* save pc of subtest */
344: movl $8,_subtst /* subtest number */
345: movl $2,_no_opr /* number of operands in use */
346: movl $A2B4,_opr /* first operand */
347: movl $A1B4,_opr + 4 /* second operand */
348: 0: bicpsw $PSWMASK /*PSW = 0 */
349: movl $A2B4,add /*first operand */
350: movl $A1B4,sum /*second operand */
351: bispsw $(N|V) /* these flags ON */
352: addb2 add+3,sum+3 /* try 'add' instruction */
353: jlss e8 /*error if N = 1 */
354: jneq e8 /*error if Z = 0 */
355: jvs e8 /*error if V = 1 */
356: jcc e8 /*error if C = 0 */
357: bicpsw $Z
358: movl $0,r4
359: cmpl r4,sum /*sum = expected ? */
360: jeql ab5 /*if not, error */
361: bbs $0,_scoplp,0b /* if set scope loop on error */
362: movl $1,_ercode /* error code flag failure */
363: movl sum,_actual /* actual data */
364: movl r4,_expected /* expected data */
365: jmp *badrtn
366: e8: movpsl _actual /* actual = psl */
367: bbs $0,_scoplp,0b /* if set scope loop on error */
368: bbs $0,_scoplp,0b /* if set scope loop on error */
369: movl $2,_ercode /* error code flag failure */
370: jmp *badrtn
371:
372:
373:
374: ab5:
375: bbs $0,_force_lp,0b /* if set loop on last subtest */
376: aab5: callf $4,_setjmp /* save context for error return */
377: movab aab5,_stpc /* save pc of subtest */
378: movl $9,_subtst /* subtest number */
379: movl $2,_no_opr /* number of operands in use */
380: movl $A1B5,_opr /* first operand */
381: movl $A2B5,_opr + 4 /* second operand */
382: 0: bicpsw $PSWMASK /*PSW = 0 */
383: movl $A1B5,add /*first operand */
384: movl $A2B5,sum /*second operand */
385: bispsw $(V|Z|C) /* these flags ON */
386: addb2 add+3,sum+3 /* try 'add' instruction */
387: jgeq e9 /*error if N = 0 */
388: jeql e9 /*error if Z = 1 */
389: jvs e9 /*error if V = 1 */
390: jcs e9 /*error if C = 1 */
391: bicpsw $Z
392: movl $RB5,r4
393: cmpl $RB5,sum /*sum = expected ? */
394: jeql ab6 /*if not, error */
395: bbs $0,_scoplp,0b /* if set scope loop on error */
396: movl $1,_ercode /* error code flag failure */
397: movl sum,_actual /* actual data */
398: movl r4,_expected /* expected data */
399: jmp *badrtn
400: e9: movpsl _actual /* actual = psl */
401: bbs $0,_scoplp,0b /* if set scope loop on error */
402: bbs $0,_scoplp,0b /* if set scope loop on error */
403: movl $2,_ercode /* error code flag failure */
404: jmp *badrtn
405:
406:
407: /* reverse operands */
408:
409: ab5r:
410: bbs $0,_force_lp,0b /* if set loop on last subtest */
411: aab5r: callf $4,_setjmp /* save context for error return */
412: movab aab5r,_stpc /* save pc of subtest */
413: movl $0xa,_subtst /* subtest number */
414: movl $2,_no_opr /* number of operands in use */
415: movl $A2B5,_opr /* first operand */
416: movl $A1B5,_opr + 4 /* second operand */
417: 0: bicpsw $PSWMASK /*PSW = 0 */
418: movl $A2B5,add /*first operand */
419: movl $A1B5,sum /*second operand */
420: bispsw $(V|Z|C) /* these flags ON */
421: addb2 add+3,sum+3 /* try 'add' instruction */
422: jgeq e10 /*error if N = 0 */
423: jeql e10 /*error if Z = 1 */
424: jvs e10 /*error if V = 1 */
425: jcs e10 /*error if C = 1 */
426: bicpsw $Z
427: movl $0xff,r4
428: cmpl r4,sum /*sum = expected ? */
429: jeql ab6 /*if not, error */
430: bbs $0,_scoplp,0b /* if set scope loop on error */
431: movl $1,_ercode /* error code flag failure */
432: movl sum,_actual /* actual data */
433: movl r4,_expected /* expected data */
434: jmp *badrtn
435: e10: movpsl _actual /* actual = psl */
436: bbs $0,_scoplp,0b /* if set scope loop on error */
437: movl $2,_ercode /* error code flag failure */
438: jmp *badrtn
439:
440:
441: ab6:
442: bbs $0,_force_lp,0b /* if set loop on last subtest */
443: aab6: callf $4,_setjmp /* save context for error return */
444: movab aab6,_stpc /* save pc of subtest */
445: movl $0xb,_subtst /* subtest number */
446: movl $2,_no_opr /* number of operands in use */
447: movl $A1B6,_opr /* first operand */
448: movl $A2B6,_opr + 4 /* second operand */
449: 0: bicpsw $PSWMASK /*PSW = 0 */
450: movl $A1B6,add /*first operand */
451: movl $A2B6,sum /*second operand */
452: bispsw $(Z|V) /* these flags ON */
453: addb2 add+3,sum+3 /* try 'add' instruction */
454: jgeq e11 /*error if N = 0 */
455: jeql e11 /*error if Z = 1 */
456: jvs e11 /*error if V = 1 */
457: jcc e11 /*error if C = 0 */
458: bicpsw $Z
459: movl $RB6,r4
460: cmpl $RB6,sum /*sum = expected ? */
461: jeql ab6r /*if not, error */
462: bbs $0,_scoplp,0b /* if set scope loop on error */
463: movl $1,_ercode /* error code flag failure */
464: movl sum,_actual /* actual data */
465: movl r4,_expected /* expected data */
466: jmp *badrtn
467: e11: movpsl _actual /* actual = psl */
468: bbs $0,_scoplp,0b /* if set scope loop on error */
469: movl $2,_ercode /* error code flag failure */
470: jmp *badrtn
471:
472:
473: /* reverse operands */
474:
475: ab6r:
476: bbs $0,_force_lp,0b /* if set loop on last subtest */
477: aab6r: callf $4,_setjmp /* save context for error return */
478: movab aab6r,_stpc /* save pc of subtest */
479: movl $0xc,_subtst /* subtest number */
480: movl $2,_no_opr /* number of operands in use */
481: movl $A2B6,_opr /* first operand */
482: movl $A1B6,_opr + 4 /* second operand */
483: 0: bicpsw $PSWMASK /*PSW = 0 */
484: movl $A2B6,add /*first operand */
485: movl $A1B6,sum /*second operand */
486: bispsw $(Z|V) /* these flags ON */
487: addb2 add+3,sum+3 /* try 'add' instruction */
488: jgeq e12 /*error if N = 0 */
489: jeql e12 /*error if Z = 1 */
490: jvs e12 /*error if V = 1 */
491: jcc e12 /*error if C = 0 */
492: bicpsw $Z
493: cmpl $RB6,sum /*sum = expected ? */
494: jneq e555 /*if not, error */
495: bbs $0,_force_lp,0b /* if set loop on last subtest */
496: jmp *return
497: e555: bbs $0,_scoplp,0b /* if set scope loop on error */
498: movl $1,_ercode /* error code flag failure */
499: movl sum,_actual /* actual data */
500: movl $RB6,_expected /* expected data */
501: jmp *badrtn
502: e12: movpsl _actual /* actual = psl */
503: bbs $0,_scoplp,0b /* if set scope loop on error */
504: movl $2,_ercode /* error code flag failure */
505: jmp *badrtn
506: /*good run, goto monitor */
507:
508: /* */
509: /* Variables */
510: /* */
511: .align 2
512: add1: .space 4
513: add2: .space 4
514: sum: .space 4
515: add: .space 4
516: tmp: .space 4 /* temp location for variable manipulation */
517: tmp2: .space 4 /* temp location for variable manipulation */
518:
519: /* End of file */
520:
521:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.