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