|
|
1.1 ! root 1: /* ANDW2 (and word 2 operand) test */ ! 2: ! 3: /*Test name = andw2 */ ! 4: /*Description = */ ! 5: /* This test checks 'andw2' instruction as follows: */ ! 6: /* destination = r1, memory location (dest) */ ! 7: /* destination mask result Z N C V(flags) */ ! 8: /* ___________ ____ _____ _____________ */ ! 9: /* 0xaaaa 0xaaaa 0xaaaa 0 0 1 0 */ ! 10: /* 0xaaaa 0x5555 0x0000 1 0 1 0 */ ! 11: /* */ ! 12: /* */ ! 13: /* Constants */ ! 14: /* */ ! 15: .set VALUEB,0x000000aa ! 16: .set VALUEW,0X0000aaaa ! 17: .set VALUEL,0xaaaaaaaa ! 18: .set MASK1B,0xaa ! 19: .set MASK1W,0xaaaa ! 20: .set MASK1L,0xaaaaaaaa ! 21: .set MASK2B,0x55 ! 22: .set MASK2W,0x5555 ! 23: .set MASK2L,0x55555555 ! 24: .set EXP1B,0x000000aa ! 25: .set EXP1W,0x0000aaaa ! 26: .set EXP1L,0xaaaaaaaa ! 27: .set EXP2B,0x00000000 ! 28: .set EXP2W,0x00000000 ! 29: .set EXP2L,0x00000000 ! 30: ! 31: /* */ ! 32: /* */ ! 33: /* */ ! 34: /* Syst.s - constants */ ! 35: /* */ ! 36: .set IPL,8 ! 37: .set HIGH,31 ! 38: .set ZERO,0 ! 39: .set ONES,0xffffffff ! 40: .set N,8 ! 41: .set Z,4 ! 42: .set V,2 ! 43: .set C,1 ! 44: .set T,16 ! 45: .set IV,32 ! 46: .set FU,64 ! 47: .set DV,128 ! 48: .set PSWMASK,0x003f ! 49: ! 50: .globl _andw2 ! 51: _andw2: ! 52: callf $4,_setjmp /* save context for return from error */ ! 53: movab _andw2,_stpc /* subtest address */ ! 54: movl $1,_subtst /* subtest number */ ! 55: movl $2,_no_opr /* number of operands in use */ ! 56: movl $MASK1W,_opr /* first operand */ ! 57: movl $VALUEW,_opr + 4 /* second operand */ ! 58: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 59: movl $VALUEW,r4 /*set r4 = 0xaaaa */ ! 60: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 61: andw2 $MASK1W,r4 /*mask r4 with 0xaaaa data to reg */ ! 62: beql error1 /*error if Z = 1 */ ! 63: blss error1 /*error if N = 1 */ ! 64: bcc error1 /*error if C = 0 */ ! 65: bvs error1 /*error if V = 1 */ ! 66: movl $EXP1W,r3 ! 67: cmpl r4,$EXP1W /*if r4 <> expected(0xaaaa), */ ! 68: beql a2 /* if correct continue */ ! 69: movl $1,_ercode /* error code data miscompare */ ! 70: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 71: movl r4,_actual /* actual data */ ! 72: movl $EXP1W,_expected /* expected data */ ! 73: jmp *badrtn ! 74: error1: movpsl _actual /* actual = psl */ ! 75: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 76: movl $2,_ercode /* error code flag miscompare */ ! 77: jmp *badrtn ! 78: ! 79: /* Now try another mask(0x5555) memory to register */ ! 80: /* */ ! 81: a2: ! 82: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 83: aa2: callf $4,_setjmp /* save context for return from error */ ! 84: movab aa2,_stpc /* subtest address */ ! 85: movl $2,_subtst /* subtest number */ ! 86: movl $2,_no_opr /* number of operands in use */ ! 87: movl $MASK2W,_opr /* first operand */ ! 88: movl $VALUEW,_opr + 4 /* second operand */ ! 89: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 90: movl $VALUEW,r4 /*set r4 = 0xaaaa */ ! 91: movl $MASK2W,dest /* load mask into location dest */ ! 92: bispsw $(N|V) /*overflow & negetive bits ON */ ! 93: andw2 dest+2,r4 /*mask r4 with 0x5555 memory to reg */ ! 94: bneq error2 /*error if Z = 0 */ ! 95: blss error2 /*error if N = 1 */ ! 96: bcc error2 /*error if C = 1 */ ! 97: bvs error2 /*error if V = 1 */ ! 98: cmpl r4,$EXP2W /*if r4 <> expected(0x0000), */ ! 99: beql andw2m /* if correct continue */ ! 100: movl $1,_ercode /* error code data miscompare */ ! 101: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 102: movl r4,_actual /* actual data */ ! 103: movl $EXP2W,_expected /* expected data */ ! 104: jmp *badrtn ! 105: error2: movpsl _actual /* actual = psl */ ! 106: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 107: movl $2,_ercode /* error code flag miscompare */ ! 108: jmp *badrtn ! 109: ! 110: /* */ ! 111: /* Now use memory location instead of register as destination */ ! 112: /* data to memory operation */ ! 113: andw2m: ! 114: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 115: aa3: callf $4,_setjmp /* save context for return from error */ ! 116: movab aa3,_stpc /* subtest address */ ! 117: movl $3,_subtst /* subtest number */ ! 118: movl $2,_no_opr /* number of operands in use */ ! 119: movl $MASK1W,_opr /* first operand */ ! 120: movl $VALUEW,_opr + 4 /* second operand */ ! 121: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 122: movl $VALUEW,dest /*set dest = 0xaaaa */ ! 123: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 124: andw2 $MASK1W,dest+2 /*mask dest with 0xaaaa data to mem */ ! 125: jeql error3 /*error if Z = 1 */ ! 126: jlss error3 /*error if N = 1 */ ! 127: jcc error3 /*error if C = 0 */ ! 128: jvs error3 /*error if V = 1 */ ! 129: cmpl dest,$EXP1W /*if dest <> expected(0xaaaa), */ ! 130: beql a4 /* if correct continue */ ! 131: movl $1,_ercode /* error code data miscompare */ ! 132: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 133: movl dest,_actual /* actual data */ ! 134: movl $EXP1W,_expected /* expected data */ ! 135: jmp *badrtn ! 136: error3: movpsl _actual /* actual = psl */ ! 137: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 138: movl $2,_ercode /* error code flag miscompare */ ! 139: jmp *badrtn ! 140: ! 141: /* Now try another mask(0x5555) memory to memory */ ! 142: /* */ ! 143: a4: ! 144: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 145: aa4: callf $4,_setjmp /* save context for return from error */ ! 146: movab aa4,_stpc /* subtest address */ ! 147: movl $4,_subtst /* subtest number */ ! 148: movl $2,_no_opr /* number of operands in use */ ! 149: movl $MASK2W,_opr /* first operand */ ! 150: movl $VALUEW,_opr + 4 /* second operand */ ! 151: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 152: movl $VALUEW,dest /*set dest = 0xaaaa */ ! 153: movl $MASK2W,dest2 /* set dest2 = 0x5555 */ ! 154: bispsw $(N|V) /*overflow & negetive bits ON */ ! 155: andw2 dest2+2,dest+2 /*mask dest with 0x5555 mem to mem */ ! 156: jneq error4 /*error if Z = 0 */ ! 157: jlss error4 /*error if N = 1 */ ! 158: jcc error4 /*error if C = 1 */ ! 159: jvs error4 /*error if V = 1 */ ! 160: cmpl dest,$EXP2W /*if dest <> expected(0x0000), */ ! 161: beql a5 /* if correct continue */ ! 162: movl $1,_ercode /* error code data miscompare */ ! 163: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 164: movl dest,_actual /* actual data */ ! 165: movl $EXP2W,_expected /* expected data */ ! 166: jmp *badrtn ! 167: error4: movpsl _actual /* actual = psl */ ! 168: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 169: movl $2,_ercode /* error code flag miscompare */ ! 170: jmp *badrtn ! 171: ! 172: /* Now try another mask(0x5555) register to memory */ ! 173: /* */ ! 174: ! 175: a5: ! 176: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 177: aa5: callf $4,_setjmp /* save context for return from error */ ! 178: movab aa5,_stpc /* subtest address */ ! 179: movl $5,_subtst /* subtest number */ ! 180: movl $2,_no_opr /* number of operands in use */ ! 181: movl $MASK2W,_opr /* first operand */ ! 182: movl $VALUEW,_opr + 4 /* second operand */ ! 183: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 184: movl $VALUEW,dest /*set dest = 0xaaaa */ ! 185: movl $MASK2W,r3 /* set r3 = 0x5555 */ ! 186: bispsw $(N|V) /*overflow & negetive bits ON */ ! 187: andw2 r3,dest+2 /*mask dest with 0x5555 reg to mem */ ! 188: jneq error5 /*error if Z = 0 */ ! 189: jlss error5 /*error if N = 1 */ ! 190: jcc error5 /*error if C = 1 */ ! 191: jvs error5 /*error if V = 1 */ ! 192: cmpl dest,$EXP2W /*if dest <> expected(0x0000), */ ! 193: beql a6 /* if correct continue */ ! 194: movl $1,_ercode /* error code data miscompare */ ! 195: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 196: movl dest,_actual /* actual data */ ! 197: movl $EXP2W,_expected /* expected data */ ! 198: jmp *badrtn ! 199: error5: movpsl _actual /* actual = psl */ ! 200: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 201: movl $2,_ercode /* error code flag miscompare */ ! 202: jmp *badrtn ! 203: /* */ ! 204: /* Now try another mask(0x5555) register to register */ ! 205: /* */ ! 206: ! 207: a6: ! 208: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 209: aa6: callf $4,_setjmp /* save context for return from error */ ! 210: movab aa6,_stpc /* subtest address */ ! 211: movl $6,_subtst /* subtest number */ ! 212: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 213: movl $VALUEW,r4 /*set r4 = 0xaaaa */ ! 214: movl $MASK2W,r3 /* set r3 = 0x5555 */ ! 215: bispsw $(N|V) /*overflow & negetive bits ON */ ! 216: andw2 r3,r4 /*mask r4 with 0x5555 reg to r4 */ ! 217: jneq error6 /*error if Z = 0 */ ! 218: jlss error6 /*error if N = 1 */ ! 219: jcc error6 /*error if C = 1 */ ! 220: jvs error6 /*error if V = 1 */ ! 221: cmpl r4,$EXP2W /*if r5 <> expected(0x0000), */ ! 222: beql aldn /* if correct continue */ ! 223: movl $1,_ercode /* error code data miscompare */ ! 224: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 225: movl r4,_actual /* actual data */ ! 226: movl $EXP2W,_expected /* expected data */ ! 227: jmp *badrtn ! 228: error6: movpsl _actual /* actual = psl */ ! 229: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 230: movl $2,_ercode /* error code flag miscompare */ ! 231: jmp *badrtn ! 232: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 233: jmp *return ! 234: /* */ ! 235: /* variables */ ! 236: /* */ ! 237: .align 2 ! 238: dest: .space 4 ! 239: ! 240: .align 2 ! 241: dest2: .space 4 ! 242: ! 243:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.