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