|
|
1.1 root 1:
2:
3:
4: /* ORL3 (or long 3 operand) test */
5:
6: /*Test name = orl3 */
7: /*Description = */
8: /* This test checks 'orl3' instruction as follows: */
9: /* source mask destination Z N C V(flags) */
10: /* ___________ ____ ___________ _____________ */
11: /* 0xaaaaaaaa 0xaaaaaaaa 0x7fffffaa 0 0 1 0 */
12: /* 0xaaaaaaaa 0x55555555 0x7fffffff 0 0 1 0 */
13: /* 0x00000000 0x00000000 0x00000000 1 0 x 0 */
14: /* R R R --- */
15: /* M M M --- */
16: /* R M M --- */
17: /* M R R --- */
18: /* */
19: /* */
20: /* */
21: /* Constants */
22: /* */
23: .set MASK1B3,0xaa
24: .set MASK1W3,0xaaaa
25: .set MASK1L3,0xaaaaaaaa
26: .set MASK2B3,0x55
27: .set MASK2W3,0x5555
28: .set MASK2L3,0x55555555
29: .set MASK3B3,0x00
30: .set MASK3W3,0x0000
31: .set MASK3L3,0x00000000
32: .set SOURCE1B3,0xaa
33: .set SOURCE1W3,0xaaaa
34: .set SOURCE1L3,0xaaaaaaaa
35: .set SOURCE2B3,0xaa
36: .set SOURCE2W3,0xaaaa
37: .set SOURCE2L3,0xaaaaaaaa
38: .set SOURCE3B3,0x00
39: .set SOURCE3W3,0x0000
40: .set SOURCE3L3,0x00000000
41: .set INIT1B3,0x7fffff00
42: .set INIT1W3,0x7fff0000
43: .set INIT1L3,0x00000000
44: .set INIT3B3,0x7fffffff
45: .set INIT3W3,INIT3B3
46: .set INIT3L3,INIT3B3
47: .set EXP1B3,0x7fffffaa
48: .set EXP1W3,0x7fffaaaa
49: .set EXP1L3,0xaaaaaaaa
50: .set EXP2B3,0x7fffffff
51: .set EXP2W3,0x7fffffff
52: .set EXP2L3,0xffffffff
53: .set EXP3B3,0x00000000
54: .set EXP3W3,EXP3B3
55: .set EXP3L3,EXP3B3
56:
57: /* */
58: /* */
59: /* */
60: /* Syst.s - constants */
61: /* */
62: .set IPL,8
63: .set HIGH,31
64: .set ZERO,0
65: .set ONES,0xffffffff
66: .set N,8
67: .set Z,4
68: .set V,2
69: .set C,1
70: .set T,16
71: .set IV,32
72: .set FU,64
73: .set DV,128
74: .set PSWMASK,0x003f
75: /* */
76: .globl _orl3
77: _orl3:
78: callf $4,_setjmp /* save context for error return */
79: movab _orl3,_stpc /* save starting address of program subtest */
80: movl $1,_subtst /* subtest number */
81: movl $2,_no_opr /* number of operands */
82: movl $MASK1L3,_opr /* first operand */
83: movl $SOURCE1L3,_opr + 4 /* second operand */
84: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
85: movl $MASK1L3,r3 /*mask */
86: movl $SOURCE1L3,r4 /*source */
87: movl $INIT1L3,r5 /*destination */
88: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
89: orl3 r3,r4,r5 /*try it reg reg reg */
90: jeql error1 /*error if Z = 1 */
91: jgeq error1 /*error if N = 0 */
92: jcc error1 /*error if C = 0 */
93: jvs error1 /*error if V = 1 */
94: jmp 1f
95: error1: movpsl _actual /* actual = psl Maybe incorrect */
96: bbs $0,_scoplp,0b /* if set scope loop on error */
97: movl $2,_ercode /* error code flag failure */
98: jmp *badrtn
99: 1: cmpl r5,$EXP1L3 /*if dest <> expected value, */
100: jeql o2
101: bbs $0,_scoplp,0b /* if set scope loop on error */
102: movl $1,_ercode /* error code data miscompare */
103: movl r5,_actual /* actual data */
104: movl $EXP1L3,_expected /* expected data */
105: jmp *badrtn
106:
107: /* Now try another mask(0x55555555) */
108: /* */
109:
110: o2:
111: bbs $0,_force_lp,0b /* if set loop on last subtest */
112: ao2: callf $4,_setjmp /* save context for error return */
113: movab ao2,_stpc /* save starting address of program subtest */
114: movl $2,_subtst /* subtest number */
115: movl $2,_no_opr /* number of operands */
116: movl $MASK2L3,_opr /* first operand */
117: movl $SOURCE2L3,_opr + 4 /* second operand */
118: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
119: movl $MASK2L3,r3 /*mask */
120: movl $SOURCE2L3,r4 /*source */
121: movl $INIT1L3,dest /*destination */
122: bispsw $(Z|V) /*overflow & zero bits ON */
123: orl3 r3,r4,dest /* try again reg reg mem */
124: jeql error2 /*error if Z = 1 */
125: jgeq error2 /*error if N = 0 */
126: jcc error2 /*error if C = 0 */
127: jvs error2 /*error if V = 1 */
128: jmp 1f
129: error2: movpsl _actual /* actual = psl Maybe incorrect */
130: bbs $0,_scoplp,0b /* if set scope loop on error */
131: movl $2,_ercode /* error code flag failure */
132: jmp *badrtn
133: 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */
134: jeql o3
135: bbs $0,_scoplp,0b /* if set scope loop on error */
136: movl $1,_ercode /* error code data miscompare */
137: movl dest,_actual /* actual data */
138: movl $EXP2L3,_expected /* expected data */
139: jmp *badrtn
140:
141:
142: /* Now try another mask(0), source(0) & dest(0) */
143:
144: o3:
145: bbs $0,_force_lp,0b /* if set loop on last subtest */
146: ao3: callf $4,_setjmp /* save context for error return */
147: movab ao3,_stpc /* save starting address of program subtest */
148: movl $3,_subtst /* subtest number */
149: movl $2,_no_opr /* number of operands */
150: movl $MASK3L3,_opr /* first operand */
151: movl $SOURCE3L3,_opr + 4 /* second operand */
152: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
153: movl $SOURCE3L3,r4 /*source */
154: movl $INIT3L3,dest /*destination */
155: bispsw $(N|V) /*overflow & negetive bits ON */
156: orl3 $MASK3L3,r4,dest/* try again data reg mem */
157: jneq error3 /*error if Z = 0 */
158: jlss error3 /*error if N = 1 */
159: jcc error3 /*error if C = 0 */
160: jvs error3 /*error if V = 1 */
161: jmp 1f
162: error3: movpsl _actual /* actual = psl Maybe incorrect */
163: bbs $0,_scoplp,0b /* if set scope loop on error */
164: movl $2,_ercode /* error code flag failure */
165: jmp *badrtn
166: 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */
167: jeql o4
168: bbs $0,_scoplp,0b /* if set scope loop on error */
169: movl $1,_ercode /* error code data miscompare */
170: movl dest,_actual /* actual data */
171: movl $EXP3L3,_expected /* expected data */
172: jmp *badrtn
173:
174: o4:
175: bbs $0,_force_lp,0b /* if set loop on last subtest */
176: ao4: callf $4,_setjmp /* save context for error return */
177: movab ao4,_stpc /* save starting address of program subtest */
178: movl $4,_subtst /* subtest number */
179: movl $2,_no_opr /* number of operands */
180: movl $MASK3L3,_opr /* first operand */
181: movl $SOURCE3L3,_opr + 4 /* second operand */
182: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
183: movl $MASK3L3,r3
184: movl $INIT3L3,dest /*destination */
185: bispsw $(N|V) /*overflow & negetive bits ON */
186: orl3 r3,$SOURCE3L3,dest/* try again reg data mem */
187: jneq error4 /*error if Z = 0 */
188: jlss error4 /*error if N = 1 */
189: jcc error4 /*error if C = 0 */
190: jvs error4 /*error if V = 1 */
191: jmp 1f
192: error4: movpsl _actual /* actual = psl Maybe incorrect */
193: bbs $0,_scoplp,0b /* if set scope loop on error */
194: movl $2,_ercode /* error code flag failure */
195: jmp *badrtn
196: 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */
197: jeql o5
198: bbs $0,_scoplp,0b /* if set scope loop on error */
199: movl $1,_ercode /* error code data miscompare */
200: movl dest,_actual /* actual data */
201: movl $EXP3L3,_expected /* expected data */
202: jmp *badrtn
203:
204: o5:
205: bbs $0,_force_lp,0b /* if set loop on last subtest */
206: ao5: callf $4,_setjmp /* save context for error return */
207: movab ao5,_stpc /* save starting address of program subtest */
208: movl $5,_subtst /* subtest number */
209: movl $2,_no_opr /* number of operands */
210: movl $MASK1L3,_opr /* first operand */
211: movl $SOURCE1L3,_opr + 4 /* second operand */
212: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
213: movl $SOURCE1L3,r4 /*source */
214: movl $INIT1L3,r5 /*destination */
215: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
216: orl3 $MASK1L3,r4,r5 /*try it data reg reg */
217: jeql error5 /*error if Z = 1 */
218: jgeq error5 /*error if N = 0 */
219: jcc error5 /*error if C = 0 */
220: jvs error5 /*error if V = 1 */
221: jmp 1f
222: error5: movpsl _actual /* actual = psl Maybe incorrect */
223: bbs $0,_scoplp,0b /* if set scope loop on error */
224: movl $2,_ercode /* error code flag failure */
225: jmp *badrtn
226: 1: cmpl r5,$EXP1L3 /*if dest <> expected value, */
227: jeql o6
228: bbs $0,_scoplp,0b /* if set scope loop on error */
229: movl $1,_ercode /* error code data miscompare */
230: movl r5,_actual /* actual data */
231: movl $EXP1L3,_expected /* expected data */
232: jmp *badrtn
233:
234: o6:
235: bbs $0,_force_lp,0b /* if set loop on last subtest */
236: ao6: callf $4,_setjmp /* save context for error return */
237: movab ao6,_stpc /* save starting address of program subtest */
238: movl $6,_subtst /* subtest number */
239: movl $2,_no_opr /* number of operands */
240: movl $MASK2L3,_opr /* first operand */
241: movl $SOURCE2L3,_opr + 4 /* second operand */
242: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
243: movl $MASK2L3,r3 /*mask */
244: movl $INIT1L3,r5 /*destination */
245: bispsw $(Z|V) /*overflow & zero bits ON */
246: orl3 r3,$SOURCE2L3,r5/* try again reg data reg */
247: jeql error6 /*error if Z = 1 */
248: jgeq error6 /*error if N = 0 */
249: jcc error6 /*error if C = 0 */
250: jvs error6 /*error if V = 1 */
251: jmp 1f
252: error6: movpsl _actual /* actual = psl Maybe incorrect */
253: bbs $0,_scoplp,0b /* if set scope loop on error */
254: movl $2,_ercode /* error code flag failure */
255: jmp *badrtn
256: 1: cmpl r5,$EXP2L3 /*if dest <> expected value, */
257: jeql orl3mmm /* no error then continue */
258: bbs $0,_scoplp,0b /* if set scope loop on error */
259: movl $1,_ercode /* error code data miscompare */
260: movl r5,_actual /* actual data */
261: movl $EXP1L3,_expected /* expected data */
262: jmp *badrtn
263:
264: /* */
265: /* now try source = M, mask = M, destination = M */
266: orl3mmm:
267:
268: bbs $0,_force_lp,0b /* if set loop on last subtest */
269: ao7: callf $4,_setjmp /* save context for error return */
270: movab ao7,_stpc /* save starting address of program subtest */
271: movl $7,_subtst /* subtest number */
272: movl $2,_no_opr /* number of operands */
273: movl $MASK1L3,_opr /* first operand */
274: movl $SOURCE1L3,_opr + 4 /* second operand */
275: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
276: movl $MASK1L3,mask /*mask */
277: movl $SOURCE1L3,source/*source */
278: movl $INIT1L3,dest /*destination */
279: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
280: orl3 mask,source,dest/*try it mem mem mem */
281: jeql error7 /*error if Z = 1 */
282: jgeq error7 /*error if N = 0 */
283: jcc error7 /*error if C = 0 */
284: jvs error7 /*error if V = 1 */
285: jmp 1f
286: error7: movpsl _actual /* actual = psl Maybe incorrect */
287: bbs $0,_scoplp,0b /* if set scope loop on error */
288: movl $2,_ercode /* error code flag failure */
289: jmp *badrtn
290: 1: cmpl dest,$EXP1L3 /*if dest <> expected value, */
291: jeql o8 /* no error then continue */
292: bbs $0,_scoplp,0b /* if set scope loop on error */
293: movl $1,_ercode /* error code data miscompare */
294: movl dest,_actual /* actual data */
295: movl $EXP1L3,_expected /* expected data */
296: jmp *badrtn
297:
298: /* Now try another mask(0x55555555) */
299: /* */
300:
301: o8:
302: bbs $0,_force_lp,0b /* if set loop on last subtest */
303: ao8: callf $4,_setjmp /* save context for error return */
304: movab ao8,_stpc /* save starting address of program subtest */
305: movl $8,_subtst /* subtest number */
306: movl $2,_no_opr /* number of operands */
307: movl $MASK2L3,_opr /* first operand */
308: movl $SOURCE2L3,_opr + 4 /* second operand */
309: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
310: movl $INIT1L3,dest /*destination */
311: bispsw $(Z|V) /*overflow & zero bits ON */
312: orl3 $MASK2L3,$SOURCE2L3,dest/* try again data data mem */
313: jeql error8 /*error if Z = 1 */
314: jgeq error8 /*error if N = 0 */
315: jcc error8 /*error if C = 0 */
316: jvs error8 /*error if V = 1 */
317: jmp 1f
318: error8: movpsl _actual /* actual = psl Maybe incorrect */
319: bbs $0,_scoplp,0b /* if set scope loop on error */
320: movl $2,_ercode /* error code flag failure */
321: jmp *badrtn
322: 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */
323: jeql o9 /* no error then continue */
324: bbs $0,_scoplp,0b /* if set scope loop on error */
325: movl $1,_ercode /* error code data miscompare */
326: movl dest,_actual /* actual data */
327: movl $EXP2L3,_expected /* expected data */
328: jmp *badrtn
329:
330: o9:
331: bbs $0,_force_lp,0b /* if set loop on last subtest */
332: ao9: callf $4,_setjmp /* save context for error return */
333: movab ao9,_stpc /* save starting address of program subtest */
334: movl $9,_subtst /* subtest number */
335: movl $2,_no_opr /* number of operands */
336: movl $MASK2L3,_opr /* first operand */
337: movl $SOURCE2L3,_opr + 4 /* second operand */
338: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
339: movl $INIT1L3,r5 /*destination */
340: bispsw $(Z|V) /*overflow & zero bits ON */
341: orl3 $MASK2L3,$SOURCE2L3,r5/* try again data data reg */
342: jeql error9 /*error if Z = 1 */
343: jgeq error9 /*error if N = 0 */
344: jcc error9 /*error if C = 0 */
345: jvs error9 /*error if V = 1 */
346: jmp 1f
347: error9: movpsl _actual /* actual = psl Maybe incorrect */
348: bbs $0,_scoplp,0b /* if set scope loop on error */
349: movl $2,_ercode /* error code flag failure */
350: jmp *badrtn
351: 1: cmpl r5,$EXP2L3 /*if dest <> expected value, */
352: jeql o10 /* no error then continue */
353: bbs $0,_scoplp,0b /* if set scope loop on error */
354: movl $1,_ercode /* error code data miscompare */
355: movl r5,_actual /* actual data */
356: movl $EXP2L3,_expected /* expected data */
357: jmp *badrtn
358: /* */
359: /* */
360: /* Now try another mask(0), source(0), & dest(0) */
361: /* */
362: o10:
363: bbs $0,_force_lp,0b /* if set loop on last subtest */
364: ao10: callf $4,_setjmp /* save context for error return */
365: movab ao10,_stpc /* save starting address of program subtest */
366: movl $0xa,_subtst /* subtest number */
367: movl $2,_no_opr /* number of operands */
368: movl $MASK3L3,_opr /* first operand */
369: movl $SOURCE3L3,_opr + 4 /* second operand */
370: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
371: movl $SOURCE3L3,r4 /*source */
372: movl $INIT3L3,r5 /*destination */
373: bispsw $(N|V) /*overflow & negetive bits ON */
374: orl3 $MASK3L3,r4,r5 /* try again data reg reg */
375: jneq error10 /*error if Z = 0 */
376: jlss error10 /*error if N = 1 */
377: jcc error10 /*error if C = 0 */
378: jvs error10 /*error if V = 1 */
379: jmp 1f
380: error10: movpsl _actual /* actual = psl Maybe incorrect */
381: bbs $0,_scoplp,0b /* if set scope loop on error */
382: movl $2,_ercode /* error code flag failure */
383: jmp *badrtn
384: 1: movl $EXP3L3,r6
385: cmpl r5,r6 /*if dest <> expected value, */
386: jeql orl3mrm /* no error then continue */
387: bbs $0,_scoplp,0b /* if set scope loop on error */
388: movl $1,_ercode /* error code data miscompare */
389: movl r5,_actual /* actual data */
390: movl r6,_expected /* expected data */
391: jmp *badrtn
392: /* */
393: /* Now use mask = R, source & destination = M */
394: /* */
395: orl3mrm:
396: bbs $0,_force_lp,0b /* if set loop on last subtest */
397: ao11: callf $4,_setjmp /* save context for error return */
398: movab ao11,_stpc /* save starting address of program subtest */
399: movl $0xb,_subtst /* subtest number */
400: movl $2,_no_opr /* number of operands */
401: movl $MASK1L3,_opr /* first operand */
402: movl $SOURCE1L3,_opr + 4 /* second operand */
403: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
404: movl $MASK1L3,r3 /*mask */
405: movl $SOURCE1L3,source/*source */
406: movl $INIT1L3,dest /*destination */
407: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
408: orl3 r3,source,dest /*try it */
409: jeql error11 /*error if Z = 1 */
410: jgeq error11 /*error if N = 0 */
411: jcc error11 /*error if C = 0 */
412: jvs error11 /*error if V = 1 */
413: jmp 1f
414: error11: movpsl _actual /* actual = psl Maybe incorrect */
415: bbs $0,_scoplp,0b /* if set scope loop on error */
416: movl $2,_ercode /* error code flag failure */
417: jmp *badrtn
418: 1: cmpl dest,$EXP1L3 /*if dest <> expected value, */
419: jeql o12 /* no error then continue */
420: bbs $0,_scoplp,0b /* if set scope loop on error */
421: movl $1,_ercode /* error code data miscompare */
422: movl dest,_actual /* actual data */
423: movl $EXP1L3,_expected /* expected data */
424: jmp *badrtn
425: /* */
426: /* Now try another mask(0x55555555) */
427: /* */
428: o12:
429: bbs $0,_force_lp,0b /* if set loop on last subtest */
430: ao12: callf $4,_setjmp /* save context for error return */
431: movab ao12,_stpc /* save starting address of program subtest */
432: movl $0xc,_subtst /* subtest number */
433: movl $2,_no_opr /* number of operands */
434: movl $MASK2L3,_opr /* first operand */
435: movl $SOURCE2L3,_opr + 4 /* second operand */
436: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
437: movl $MASK2L3,r3 /*mask */
438: movl $SOURCE2L3,source/*source */
439: movl $INIT1L3,dest /*destination */
440: bispsw $(Z|V) /*overflow & zero bits ON */
441: orl3 r3,source,dest /* try again */
442: jeql error12 /*error if Z = 1 */
443: jgeq error12 /*error if N = 0 */
444: jcc error12 /*error if C = 0 */
445: jvs error12 /*error if V = 1 */
446: jmp 1f
447: error12: movpsl _actual /* actual = psl Maybe incorrect */
448: bbs $0,_scoplp,0b /* if set scope loop on error */
449: movl $2,_ercode /* error code flag failure */
450: jmp *badrtn
451: 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */
452: jeql o13 /* no error then continue */
453: bbs $0,_scoplp,0b /* if set scope loop on error */
454: movl $1,_ercode /* error code data miscompare */
455: movl dest,_actual /* actual data */
456: movl $EXP2L3,_expected /* expected data */
457: jmp *badrtn
458: /* */
459: /* Now try another mask(0), source(0), & dest(0) */
460: /* */
461: o13:
462: bbs $0,_force_lp,0b /* if set loop on last subtest */
463: ao13: callf $4,_setjmp /* save context for error return */
464: movab ao13,_stpc /* save starting address of program subtest */
465: movl $0xd,_subtst /* subtest number */
466: movl $2,_no_opr /* number of operands */
467: movl $MASK3L3,_opr /* first operand */
468: movl $SOURCE3L3,_opr + 4 /* second operand */
469: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
470: movl $MASK3L3,r3 /*mask */
471: movl $SOURCE3L3,source/*source */
472: movl $INIT3L3,dest /*destination */
473: bispsw $(N|V) /*overflow & negetive bits ON */
474: orl3 r3,source,dest /* try again */
475: jneq error13 /*error if Z = 0 */
476: jlss error13 /*error if N = 1 */
477: jcc error13 /*error if C = 0 */
478: jvs error13 /*error if V = 1 */
479: jmp 1f
480: error13: movpsl _actual /* actual = psl Maybe incorrect */
481: bbs $0,_scoplp,0b /* if set scope loop on error */
482: movl $2,_ercode /* error code flag failure */
483: jmp *badrtn
484: 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */
485: jeql orl3rmm /* no error then continue */
486: bbs $0,_scoplp,0b /* if set scope loop on error */
487: movl $1,_ercode /* error code data miscompare */
488: movl dest,_actual /* actual data */
489: movl $EXP3L3,_expected /* expected data */
490: jmp *badrtn
491:
492: /* */
493: /* Now try mask = M, source = R, dest = M */
494: /* */
495: orl3rmm:
496: bbs $0,_force_lp,0b /* if set loop on last subtest */
497: ao14: callf $4,_setjmp /* save context for error return */
498: movab ao14,_stpc /* save starting address of program subtest */
499: movl $0xe,_subtst /* subtest number */
500: movl $2,_no_opr /* number of operands */
501: movl $MASK1L3,_opr /* first operand */
502: movl $SOURCE1L3,_opr + 4 /* second operand */
503: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
504: movl $MASK1L3,mask /*mask */
505: movl $SOURCE1L3,r4 /*source */
506: movl $INIT1L3,dest /*destination */
507: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
508: orl3 mask,r4,dest /*try it */
509: jeql error14 /*error if Z = 1 */
510: jgeq error14 /*error if N = 0 */
511: jcc error14 /*error if C = 0 */
512: jvs error14 /*error if V = 1 */
513: jmp 1f
514: error14: movpsl _actual /* actual = psl Maybe incorrect */
515: bbs $0,_scoplp,0b /* if set scope loop on error */
516: movl $2,_ercode /* error code flag failure */
517: jmp *badrtn
518: 1: cmpl dest,$EXP1L3 /*if dest <> expected value, */
519: jeql o15 /* no error then continue */
520: bbs $0,_scoplp,0b /* if set scope loop on error */
521: movl $1,_ercode /* error code data miscompare */
522: movl dest,_actual /* actual data */
523: movl $EXP1L3,_expected /* expected data */
524: jmp *badrtn
525:
526: /* Now try another mask(0x55555555) */
527: /* */
528:
529: o15:
530: bbs $0,_force_lp,0b /* if set loop on last subtest */
531: ao15: callf $4,_setjmp /* save context for error return */
532: movab ao15,_stpc /* save starting address of program subtest */
533: movl $0xf,_subtst /* subtest number */
534: movl $2,_no_opr /* number of operands */
535: movl $MASK2L3,_opr /* first operand */
536: movl $SOURCE2L3,_opr + 4 /* second operand */
537: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
538: movl $MASK2L3,mask /*mask */
539: movl $SOURCE2L3,r4 /*source */
540: movl $INIT1L3,dest /*destination */
541: bispsw $(Z|V) /*overflow & zero bits ON */
542: orl3 mask,r4,dest /* try again */
543: jeql error15 /*error if Z = 1 */
544: jgeq error15 /*error if N = 0 */
545: jcc error15 /*error if C = 0 */
546: jvs error15 /*error if V = 1 */
547: jmp 1f
548: error15: movpsl _actual /* actual = psl Maybe incorrect */
549: bbs $0,_scoplp,0b /* if set scope loop on error */
550: movl $2,_ercode /* error code flag failure */
551: jmp *badrtn
552: 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */
553: jeql o16 /* no error then continue */
554: bbs $0,_scoplp,0b /* if set scope loop on error */
555: movl $1,_ercode /* error code data miscompare */
556: movl dest,_actual /* actual data */
557: movl $EXP2L3,_expected /* expected data */
558: jmp *badrtn
559: /* */
560: /* Now try another mask(0), mask(0), dest(0) */
561: /* */
562: o16:
563: bbs $0,_force_lp,0b /* if set loop on last subtest */
564: ao16: callf $4,_setjmp /* save context for error return */
565: movab ao16,_stpc /* save starting address of program subtest */
566: movl $0x10,_subtst /* subtest number */
567: movl $2,_no_opr /* number of operands */
568: movl $MASK3L3,_opr /* first operand */
569: movl $SOURCE3L3,_opr + 4 /* second operand */
570: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
571: movl $MASK3L3,mask /*mask */
572: movl $SOURCE3L3,r4 /*source */
573: movl $INIT3L3,dest /*destination */
574: bispsw $(N|V) /*overflow & negetive bits ON */
575: orl3 mask,r4,dest /* try again */
576: jneq error16 /*error if Z = 0 */
577: jlss error16 /*error if N = 1 */
578: jcc error16 /*error if C = 0 */
579: jvs error16 /*error if V = 1 */
580: jmp 1f
581: error16: movpsl _actual /* actual = psl Maybe incorrect */
582: bbs $0,_scoplp,0b /* if set scope loop on error */
583: movl $2,_ercode /* error code flag failure */
584: jmp *badrtn
585: 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */
586: jeql orl3mrr /* no error then continue */
587: bbs $0,_scoplp,0b /* if set scope loop on error */
588: movl $1,_ercode /* error code data miscompare */
589: movl dest,_actual /* actual data */
590: movl $EXP3L3,_expected /* expected data */
591: jmp *badrtn
592: /* */
593: /* Now try mask = R, source = M, dest = R */
594: /* */
595: orl3mrr:
596: bbs $0,_force_lp,0b /* if set loop on last subtest */
597: ao17: callf $4,_setjmp /* save context for error return */
598: movab ao17,_stpc /* save starting address of program subtest */
599: movl $0x11,_subtst /* subtest number */
600: movl $2,_no_opr /* number of operands */
601: movl $MASK1L3,_opr /* first operand */
602: movl $SOURCE1L3,_opr + 4 /* second operand */
603: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
604: movl $MASK1L3,r3 /*mask */
605: movl $SOURCE1L3,source/*source */
606: movl $INIT1L3,r5 /*destination */
607: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
608: orl3 r3,source,r5 /*try it */
609: jeql error17 /*error if Z = 1 */
610: jgeq error17 /*error if N = 0 */
611: jcc error17 /*error if C = 0 */
612: jvs error17 /*error if V = 1 */
613: jmp 1f
614: error17: movpsl _actual /* actual = psl Maybe incorrect */
615: bbs $0,_scoplp,0b /* if set scope loop on error */
616: movl $2,_ercode /* error code flag failure */
617: jmp *badrtn
618: 1: cmpl r5,$EXP1L3 /*if dest <> expected value, */
619: jeql o18 /* no error then continue */
620: bbs $0,_scoplp,0b /* if set scope loop on error */
621: movl $1,_ercode /* error code data miscompare */
622: movl r5,_actual /* actual data */
623: movl $EXP1L3,_expected /* expected data */
624: jmp *badrtn
625:
626: /* Now try another mask(0x55555555) */
627: /* */
628:
629: o18:
630: bbs $0,_force_lp,0b /* if set loop on last subtest */
631: ao18: callf $4,_setjmp /* save context for error return */
632: movab ao18,_stpc /* save starting address of program subtest */
633: movl $0x12,_subtst /* subtest number */
634: movl $2,_no_opr /* number of operands */
635: movl $MASK2L3,_opr /* first operand */
636: movl $SOURCE2L3,_opr + 4 /* second operand */
637: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
638: movl $MASK2L3,r3 /*mask */
639: movl $SOURCE2L3,source/*source */
640: movl $INIT1L3,r5 /*destination */
641: bispsw $(Z|V) /*overflow & zero bits ON */
642: orl3 r3,source,r5 /* try again */
643: jeql error18 /*error if Z = 1 */
644: jgeq error18 /*error if N = 0 */
645: jcc error18 /*error if C = 0 */
646: jvs error18 /*error if V = 1 */
647: jmp 1f
648: error18: movpsl _actual /* actual = psl Maybe incorrect */
649: bbs $0,_scoplp,0b /* if set scope loop on error */
650: movl $2,_ercode /* error code flag failure */
651: jmp *badrtn
652: 1: cmpl r5,$EXP2L3 /*if dest <> expected value, */
653: jeql o19 /* no error then continue */
654: bbs $0,_scoplp,0b /* if set scope loop on error */
655: movl $1,_ercode /* error code data miscompare */
656: movl r5,_actual /* actual data */
657: movl $EXP2L3,_expected /* expected data */
658: jmp *badrtn
659: /* */
660: /* Now try another mask(0), mask(0), & dest(0) */
661: /* */
662: o19:
663: bbs $0,_force_lp,0b /* if set loop on last subtest */
664: ao19: callf $4,_setjmp /* save context for error return */
665: movab ao19,_stpc /* save starting address of program subtest */
666: movl $0x13,_subtst /* subtest number */
667: movl $2,_no_opr /* number of operands */
668: movl $MASK3L3,_opr /* first operand */
669: movl $SOURCE3L3,_opr + 4 /* second operand */
670: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
671: movl $MASK3L3,r3 /*mask */
672: movl $SOURCE3L3,source/*source */
673: movl $INIT3L3,r5 /*destination */
674: bispsw $(N|V) /*overflow & negetive bits ON */
675: orl3 r3,source,r5 /* try again */
676: jneq error19 /*error if Z = 0 */
677: jlss error19 /*error if N = 1 */
678: jcc error19 /*error if C = 0 */
679: jvs error19 /*error if V = 1 */
680: jmp 1f
681: error19: movpsl _actual /* actual = psl Maybe incorrect */
682: bbs $0,_scoplp,0b /* if set scope loop on error */
683: movl $2,_ercode /* error code flag failure */
684: jmp *badrtn
685: 1: cmpl r5,$EXP3L3 /*if dest <> expected value, */
686: jeql aldn /* no error then continue */
687: bbs $0,_scoplp,0b /* if set scope loop on error */
688: movl $1,_ercode /* error code data miscompare */
689: movl r5,_actual /* actual data */
690: movl $EXP3L3,_expected /* expected data */
691: jmp *badrtn
692:
693: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
694: jmp *return
695: /* */
696: /* Variables */
697: /* */
698: .align 2
699: mask: .space 4
700: source: .space 4
701: dest: .space 4
702:
703: /* */
704: /* End of file */
705:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.