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