|
|
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.