|
|
1.1 ! root 1: ! 2: ! 3: /* ANDL3 (and long 3 operand) test */ ! 4: ! 5: /*Test name = andl3 */ ! 6: /*Description = */ ! 7: /* This test checks 'andl3' instruction as follows: */ ! 8: /* source mask destination Z N C V(flags) */ ! 9: /* ___________ ____ ___________ _____________ */ ! 10: /* 0xaaaaaaaa 0xaaaaaaaa 0xaaaaaaaa 0 1 1 0 */ ! 11: /* 0xaaaaaaaa 0x55555555 0x00000000 1 0 1 0 */ ! 12: /* R R R --- */ ! 13: /* M M M --- */ ! 14: /* R M M --- */ ! 15: /* M R R --- */ ! 16: /* */ ! 17: /* */ ! 18: /* Constants */ ! 19: /* */ ! 20: .set MASK1B3,0xaa ! 21: .set MASK1W3,0xaaaa ! 22: .set MASK1L3,0xaaaaaaaa ! 23: .set MASK2B3,0x55 ! 24: .set MASK2W3,0x5555 ! 25: .set MASK2L3,0x55555555 ! 26: .set SOURCE1B3,0xaa ! 27: .set SOURCE1W3,0xaaaa ! 28: .set SOURCE1L3,0xaaaaaaaa ! 29: .set SOURCE2B3,0xaa ! 30: .set SOURCE2W3,0xaaaa ! 31: .set SOURCE2L3,0xaaaaaaaa ! 32: .set INITIAL3,0x7fffffff ! 33: .set EXP1B3,0x7fffffaa ! 34: .set EXP1W3,0x7fffaaaa ! 35: .set EXP1L3,0xaaaaaaaa ! 36: .set EXP2B3,0x7fffff00 ! 37: .set EXP2W3,0x7fff0000 ! 38: .set EXP2L3,0x00000000 ! 39: ! 40: /* */ ! 41: /* */ ! 42: /* */ ! 43: /* Syst.s - constants */ ! 44: /* */ ! 45: .set IPL,8 ! 46: .set HIGH,31 ! 47: .set ZERO,0 ! 48: .set ONES,0xffffffff ! 49: .set N,8 ! 50: .set Z,4 ! 51: .set V,2 ! 52: .set C,1 ! 53: .set T,16 ! 54: .set IV,32 ! 55: .set FU,64 ! 56: .set DV,128 ! 57: .set PSWMASK,0x003f ! 58: .globl _andl3 ! 59: _andl3: ! 60: callf $4,_setjmp /* save context for error return */ ! 61: movab _andl3,_stpc /* save program counter of subtest */ ! 62: movl $1,_subtst /* number of subtest */ ! 63: movl $2,_no_opr /* number of operands in use */ ! 64: movl $MASK1L3,_opr /* first operand */ ! 65: movl $SOURCE1L3,_opr + 4 /* second operand */ ! 66: 0: movl $MASK1L3,r3 /*mask */ ! 67: movl $SOURCE1L3,r4 /*source */ ! 68: movl $INITIAL3,r5 /*destination */ ! 69: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 70: andl3 r3,r4,r5 /*try it reg reg reg */ ! 71: jeql error1 /*error if Z = 1 */ ! 72: jgeq error1 /*error if N = 0 */ ! 73: jcc error1 /*error if C = 0 */ ! 74: jvs error1 /*error if V = 1 */ ! 75: cmpl r5,$EXP1L3 /*if dest <> expected value, */ ! 76: jeql a2 /* if correct continue */ ! 77: movl $1,_ercode /* error code data miscompare */ ! 78: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 79: movl r5,_actual /* actual data */ ! 80: movl $EXP1L3,_expected /* expected data */ ! 81: jmp *badrtn ! 82: error1: movpsl _actual /* actual = psl */ ! 83: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 84: movl $2,_ercode /* error code flag miscompare */ ! 85: jmp *badrtn ! 86: ! 87: /* Now try another mask(0x55) */ ! 88: /* */ ! 89: a2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 90: aa2: callf $4,_setjmp /* save context for error return */ ! 91: movab aa2,_stpc /* save program counter of subtest */ ! 92: movl $2,_subtst /* number of subtest */ ! 93: movl $2,_no_opr /* number of operands in use */ ! 94: movl $MASK2L3,_opr /* first operand */ ! 95: movl $SOURCE2L3,_opr + 4 /* second operand */ ! 96: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 97: movl $MASK2L3,r3 /*mask */ ! 98: movl $SOURCE2L3,r4 /*source */ ! 99: movl $INITIAL3,dest /*destination */ ! 100: bispsw $(N|V) /*overflow & negetive bits ON */ ! 101: andl3 r3,r4,dest /* try again reg reg dest */ ! 102: jneq error2 /*error if Z = 0 */ ! 103: jlss error2 /*error if N = 1 */ ! 104: jcc error2 /*error if C = 0 */ ! 105: jvs error2 /*error if V = 1 */ ! 106: cmpl dest,$EXP2L3 /*if dest <> expected value, */ ! 107: jeql andl3mmm /* if correct continue */ ! 108: movl $1,_ercode /* error code data miscompare */ ! 109: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 110: movl dest,_actual /* actual data */ ! 111: movl $EXP2L3,_expected /* expected data */ ! 112: jmp *badrtn ! 113: error2: movpsl _actual /* actual = psl */ ! 114: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 115: movl $2,_ercode /* error code flag miscompare */ ! 116: jmp *badrtn ! 117: /* */ ! 118: /* now try source = M, mask = M, destination = M */ ! 119: andl3mmm: ! 120: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 121: aa3: callf $4,_setjmp /* save context for error return */ ! 122: movab aa3,_stpc /* save program counter of subtest */ ! 123: movl $3,_subtst /* number of subtest */ ! 124: movl $2,_no_opr /* number of operands in use */ ! 125: movl $MASK1L3,_opr /* first operand */ ! 126: movl $SOURCE1L3,_opr + 4 /* second operand */ ! 127: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 128: movl $SOURCE1L3,r4 /*source */ ! 129: movl $INITIAL3,dest /*destination */ ! 130: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 131: andl3 $MASK1L3,r4,dest/*try it reg data mem data reg mem */ ! 132: jeql error3 /*error if Z = 1 */ ! 133: jgeq error3 /*error if N = 0 */ ! 134: jcc error3 /*error if C = 0 */ ! 135: jvs error3 /*error if V = 1 */ ! 136: movl $EXP1L3,r4 ! 137: cmpl dest,$EXP1L3 /*if dest <> expected value, */ ! 138: jneq error5 /*then error */ ! 139: jeql a4 /* if correct continue */ ! 140: movl $1,_ercode /* error code data miscompare */ ! 141: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 142: movl dest,_actual /* actual data */ ! 143: movl $EXP1L3,_expected /* expected data */ ! 144: jmp *badrtn ! 145: error3: movpsl _actual /* actual = psl */ ! 146: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 147: movl $2,_ercode /* error code flag miscompare */ ! 148: jmp *badrtn ! 149: ! 150: /* Now try another mask(0x55) */ ! 151: /* */ ! 152: a4: ! 153: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 154: aa4: callf $4,_setjmp /* save context for error return */ ! 155: movab aa4,_stpc /* save program counter of subtest */ ! 156: movl $4,_subtst /* number of subtest */ ! 157: movl $2,_no_opr /* number of operands in use */ ! 158: movl $MASK2L3,_opr /* first operand */ ! 159: movl $SOURCE1L3,_opr + 4 /* second operand */ ! 160: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 161: movl $MASK2L3,r3 /*mask */ ! 162: movl $INITIAL3,dest /*destination */ ! 163: bispsw $(N|V) /*overflow & negetive bits ON */ ! 164: andl3 r3,$SOURCE1L3,dest/* try again reg data mem */ ! 165: jneq error4 /*error if Z = 0 */ ! 166: jlss error4 /*error if N = 1 */ ! 167: jcc error4 /*error if C = 0 */ ! 168: jvs error4 /*error if V = 1 */ ! 169: cmpl dest,$EXP2L3 /*if dest <> expected value, */ ! 170: jeql andl3mrm /* if correct continue */ ! 171: movl $1,_ercode /* error code data miscompare */ ! 172: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 173: movl dest,_actual /* actual data */ ! 174: movl $EXP2L3,_expected /* expected data */ ! 175: jmp *badrtn ! 176: error4: movpsl _actual /* actual = psl */ ! 177: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 178: movl $2,_ercode /* error code flag miscompare */ ! 179: jmp *badrtn ! 180: /* */ ! 181: /* Now use mask = R, source & destination = M */ ! 182: andl3mrm: ! 183: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 184: aa5: callf $4,_setjmp /* save context for error return */ ! 185: movab aa5,_stpc /* save program counter of subtest */ ! 186: movl $5,_subtst /* number of subtest */ ! 187: movl $2,_no_opr /* number of operands in use */ ! 188: movl $MASK1L3,_opr /* first operand */ ! 189: movl $SOURCE1L3,_opr + 4 /* second operand */ ! 190: 0: ! 191: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 192: movl $SOURCE1L3,r4 /*source */ ! 193: movl $INITIAL3,r5 /*destination */ ! 194: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 195: andl3 $MASK1L3,r4,r5 /*try it data reg reg */ ! 196: jeql error5 /*error if Z = 1 */ ! 197: jgeq error5 /*error if N = 0 */ ! 198: jcc error5 /*error if C = 0 */ ! 199: jvs error5 /*error if V = 1 */ ! 200: cmpl r5,$EXP1L3 /*if dest <> expected value, */ ! 201: jeql a6 /* if correct continue */ ! 202: movl $1,_ercode /* error code data miscompare */ ! 203: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 204: movl r5,_actual /* actual data */ ! 205: movl $EXP1L3,_expected /* expected data */ ! 206: jmp *badrtn ! 207: error5: movpsl _actual /* actual = psl */ ! 208: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 209: movl $2,_ercode /* error code flag miscompare */ ! 210: jmp *badrtn ! 211: /* */ ! 212: /* Now try another mask(0x55) */ ! 213: /* */ ! 214: a6: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 215: aa6: callf $4,_setjmp /* save context for error return */ ! 216: movab aa6,_stpc /* save program counter of subtest */ ! 217: movl $6,_subtst /* number of subtest */ ! 218: movl $2,_no_opr /* number of operands in use */ ! 219: movl $MASK2L3,_opr /* first operand */ ! 220: movl $SOURCE2L3,_opr + 4 /* second operand */ ! 221: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 222: movl $MASK2L3,r3 /*mask */ ! 223: movl $SOURCE2L3,source/*source */ ! 224: movl $INITIAL3,r5 /*destination */ ! 225: bispsw $(N|V) /*overflow & negetive bits ON */ ! 226: andl3 r3,$SOURCE2L3,r5/* try again reg data reg */ ! 227: jneq error6 /*error if Z = 0 */ ! 228: jlss error6 /*error if N = 1 */ ! 229: jcc error6 /*error if C = 0 */ ! 230: jvs error6 /*error if V = 1 */ ! 231: cmpl r5,$EXP2L3 /*if dest <> expected value, */ ! 232: jeql andl3rmm /* if correct continue */ ! 233: movl $1,_ercode /* error code data miscompare */ ! 234: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 235: movl r5,_actual /* actual data */ ! 236: movl $EXP2L3,_expected /* expected data */ ! 237: jmp *badrtn ! 238: error6: movpsl _actual /* actual = psl */ ! 239: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 240: movl $2,_ercode /* error code flag miscompare */ ! 241: jmp *badrtn ! 242: /* */ ! 243: /* Now try mask = M, source = R, dest = M */ ! 244: /* */ ! 245: andl3rmm: ! 246: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 247: aa7: callf $4,_setjmp /* save context for error return */ ! 248: movab aa7,_stpc /* save program counter of subtest */ ! 249: movl $7,_subtst /* number of subtest */ ! 250: movl $2,_no_opr /* number of operands in use */ ! 251: movl $MASK1L3,_opr /* first operand */ ! 252: movl $SOURCE1L3,_opr + 4 /* second operand */ ! 253: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 254: movl $INITIAL3,r5 /*destination */ ! 255: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 256: andl3 $MASK1L3,$SOURCE1L3,r5/*try it data data reg */ ! 257: jeql error7 /*error if Z = 1 */ ! 258: jgeq error7 /*error if N = 0 */ ! 259: jcc error7 /*error if C = 0 */ ! 260: jvs error7 /*error if V = 1 */ ! 261: movl $EXP1L3,r4 ! 262: cmpl r5,$EXP1L3 /*if dest <> expected value, */ ! 263: jeql a8 /* if correct continue */ ! 264: movl $1,_ercode /* error code data miscompare */ ! 265: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 266: movl r5,_actual /* actual data */ ! 267: movl $EXP1L3,_expected /* expected data */ ! 268: jmp *badrtn ! 269: error7: movpsl _actual /* actual = psl */ ! 270: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 271: movl $2,_ercode /* error code flag miscompare */ ! 272: jmp *badrtn ! 273: ! 274: /* Now try another mask(0x55) */ ! 275: /* */ ! 276: ! 277: a8: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 278: aa8: callf $4,_setjmp /* save context for error return */ ! 279: movab aa8,_stpc /* save program counter of subtest */ ! 280: movl $8,_subtst /* number of subtest */ ! 281: movl $2,_no_opr /* number of operands in use */ ! 282: movl $MASK2L3,_opr /* first operand */ ! 283: movl $SOURCE2L3,_opr + 4 /* second operand */ ! 284: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 285: movl $INITIAL3,dest /*destination */ ! 286: bispsw $(N|V) /*overflow & negetive bits ON */ ! 287: andl3 $MASK2L3,$SOURCE2L3,dest/* try again data data mem */ ! 288: jneq error8 /*error if Z = 0 */ ! 289: jlss error8 /*error if N = 1 */ ! 290: jcc error8 /*error if C = 0 */ ! 291: jvs error8 /*error if V = 1 */ ! 292: cmpl dest,$EXP2L3 /*if dest <> expected value, */ ! 293: jeql andl3mrr /* if correct continue */ ! 294: movl $1,_ercode /* error code data miscompare */ ! 295: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 296: movl dest,_actual /* actual data */ ! 297: movl $EXP2L3,_expected /* expected data */ ! 298: jmp *badrtn ! 299: error8: movpsl _actual /* actual = psl */ ! 300: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 301: movl $2,_ercode /* error code flag miscompare */ ! 302: jmp *badrtn ! 303: /* */ ! 304: /* Now try mask = R, source = M, dest = R */ ! 305: /* */ ! 306: andl3mrr: ! 307: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 308: aa9: callf $4,_setjmp /* save context for error return */ ! 309: movab aa9,_stpc /* save program counter of subtest */ ! 310: movl $9,_subtst /* number of subtest */ ! 311: movl $2,_no_opr /* number of operands in use */ ! 312: movl $MASK1L3,_opr /* first operand */ ! 313: movl $SOURCE1L3,_opr + 4 /* second operand */ ! 314: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 315: movl $SOURCE1L3,r4 /*source */ ! 316: movl $INITIAL3,r5 /*destination */ ! 317: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 318: andl3 $MASK1L3,r4,r5 /*try it data reg reg */ ! 319: jeql error9 /*error if Z = 1 */ ! 320: jgeq error9 /*error if N = 0 */ ! 321: jcc error9 /*error if C = 0 */ ! 322: jvs error9 /*error if V = 1 */ ! 323: cmpl r5,$EXP1L3 /*if dest <> expected value, */ ! 324: jeql a10 /* if correct continue */ ! 325: movl $1,_ercode /* error code data miscompare */ ! 326: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 327: movl r5,_actual /* actual data */ ! 328: movl $EXP1L3,_expected /* expected data */ ! 329: jmp *badrtn ! 330: error9: movpsl _actual /* actual = psl */ ! 331: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 332: movl $2,_ercode /* error code flag miscompare */ ! 333: jmp *badrtn ! 334: ! 335: /* Now try another mask(0x55) */ ! 336: /* */ ! 337: ! 338: a10: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 339: aa10: callf $4,_setjmp /* save context for error return */ ! 340: movab aa10,_stpc /* save program counter of subtest */ ! 341: movl $0xa,_subtst /* number of subtest */ ! 342: movl $2,_no_opr /* number of operands in use */ ! 343: movl $MASK2L3,_opr /* first operand */ ! 344: movl $SOURCE2L3,_opr + 4 /* second operand */ ! 345: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 346: movl $MASK2L3,r3 /*mask */ ! 347: movl $SOURCE2L3,source/*source */ ! 348: movl $INITIAL3,r5 /*destination */ ! 349: bispsw $(N|V) /*overflow & negetive bits ON */ ! 350: andl3 r3,source,r5 /* try again */ ! 351: jneq error10 /*error if Z = 0 */ ! 352: jlss error10 /*error if N = 1 */ ! 353: jcc error10 /*error if C = 0 */ ! 354: jvs error10 /*error if V = 1 */ ! 355: cmpl r5,$EXP2L3 /*if dest <> expected value, */ ! 356: jeql aldn /* if correct continue */ ! 357: movl $1,_ercode /* error code data miscompare */ ! 358: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 359: movl r5,_actual /* actual data */ ! 360: movl $EXP2L3,_expected /* expected data */ ! 361: jmp *badrtn ! 362: error10: movpsl _actual /* actual = psl */ ! 363: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 364: movl $2,_ercode /* error code flag miscompare */ ! 365: jmp *badrtn ! 366: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 367: jmp *return /* test passed, return to monitor */ ! 368: ! 369: /* */ ! 370: /* Variables */ ! 371: /* */ ! 372: .align 2 ! 373: mask: .space 4 ! 374: source: .space 4 ! 375: dest: .space 4 ! 376: ! 377: /* */ ! 378: /* End of file */ ! 379:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.