|
|
Power 6/32 Unix version 1.2b
/* ORL3 (or long 3 operand) test */ /*Test name = orl3 */ /*Description = */ /* This test checks 'orl3' instruction as follows: */ /* source mask destination Z N C V(flags) */ /* ___________ ____ ___________ _____________ */ /* 0xaaaaaaaa 0xaaaaaaaa 0x7fffffaa 0 0 1 0 */ /* 0xaaaaaaaa 0x55555555 0x7fffffff 0 0 1 0 */ /* 0x00000000 0x00000000 0x00000000 1 0 x 0 */ /* R R R --- */ /* M M M --- */ /* R M M --- */ /* M R R --- */ /* */ /* */ /* */ /* Constants */ /* */ .set MASK1B3,0xaa .set MASK1W3,0xaaaa .set MASK1L3,0xaaaaaaaa .set MASK2B3,0x55 .set MASK2W3,0x5555 .set MASK2L3,0x55555555 .set MASK3B3,0x00 .set MASK3W3,0x0000 .set MASK3L3,0x00000000 .set SOURCE1B3,0xaa .set SOURCE1W3,0xaaaa .set SOURCE1L3,0xaaaaaaaa .set SOURCE2B3,0xaa .set SOURCE2W3,0xaaaa .set SOURCE2L3,0xaaaaaaaa .set SOURCE3B3,0x00 .set SOURCE3W3,0x0000 .set SOURCE3L3,0x00000000 .set INIT1B3,0x7fffff00 .set INIT1W3,0x7fff0000 .set INIT1L3,0x00000000 .set INIT3B3,0x7fffffff .set INIT3W3,INIT3B3 .set INIT3L3,INIT3B3 .set EXP1B3,0x7fffffaa .set EXP1W3,0x7fffaaaa .set EXP1L3,0xaaaaaaaa .set EXP2B3,0x7fffffff .set EXP2W3,0x7fffffff .set EXP2L3,0xffffffff .set EXP3B3,0x00000000 .set EXP3W3,EXP3B3 .set EXP3L3,EXP3B3 /* */ /* */ /* */ /* Syst.s - constants */ /* */ .set IPL,8 .set HIGH,31 .set ZERO,0 .set ONES,0xffffffff .set N,8 .set Z,4 .set V,2 .set C,1 .set T,16 .set IV,32 .set FU,64 .set DV,128 .set PSWMASK,0x003f /* */ .globl _orl3 _orl3: callf $4,_setjmp /* save context for error return */ movab _orl3,_stpc /* save starting address of program subtest */ movl $1,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK1L3,_opr /* first operand */ movl $SOURCE1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK1L3,r3 /*mask */ movl $SOURCE1L3,r4 /*source */ movl $INIT1L3,r5 /*destination */ bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ orl3 r3,r4,r5 /*try it reg reg reg */ jeql error1 /*error if Z = 1 */ jgeq error1 /*error if N = 0 */ jcc error1 /*error if C = 0 */ jvs error1 /*error if V = 1 */ jmp 1f error1: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP1L3 /*if dest <> expected value, */ jeql o2 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn /* Now try another mask(0x55555555) */ /* */ o2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao2: callf $4,_setjmp /* save context for error return */ movab ao2,_stpc /* save starting address of program subtest */ movl $2,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK2L3,r3 /*mask */ movl $SOURCE2L3,r4 /*source */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 r3,r4,dest /* try again reg reg mem */ jeql error2 /*error if Z = 1 */ jgeq error2 /*error if N = 0 */ jcc error2 /*error if C = 0 */ jvs error2 /*error if V = 1 */ jmp 1f error2: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */ jeql o3 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP2L3,_expected /* expected data */ jmp *badrtn /* Now try another mask(0), source(0) & dest(0) */ o3: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao3: callf $4,_setjmp /* save context for error return */ movab ao3,_stpc /* save starting address of program subtest */ movl $3,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK3L3,_opr /* first operand */ movl $SOURCE3L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $SOURCE3L3,r4 /*source */ movl $INIT3L3,dest /*destination */ bispsw $(N|V) /*overflow & negetive bits ON */ orl3 $MASK3L3,r4,dest/* try again data reg mem */ jneq error3 /*error if Z = 0 */ jlss error3 /*error if N = 1 */ jcc error3 /*error if C = 0 */ jvs error3 /*error if V = 1 */ jmp 1f error3: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */ jeql o4 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP3L3,_expected /* expected data */ jmp *badrtn o4: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao4: callf $4,_setjmp /* save context for error return */ movab ao4,_stpc /* save starting address of program subtest */ movl $4,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK3L3,_opr /* first operand */ movl $SOURCE3L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK3L3,r3 movl $INIT3L3,dest /*destination */ bispsw $(N|V) /*overflow & negetive bits ON */ orl3 r3,$SOURCE3L3,dest/* try again reg data mem */ jneq error4 /*error if Z = 0 */ jlss error4 /*error if N = 1 */ jcc error4 /*error if C = 0 */ jvs error4 /*error if V = 1 */ jmp 1f error4: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */ jeql o5 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP3L3,_expected /* expected data */ jmp *badrtn o5: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao5: callf $4,_setjmp /* save context for error return */ movab ao5,_stpc /* save starting address of program subtest */ movl $5,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK1L3,_opr /* first operand */ movl $SOURCE1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $SOURCE1L3,r4 /*source */ movl $INIT1L3,r5 /*destination */ bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ orl3 $MASK1L3,r4,r5 /*try it data reg reg */ jeql error5 /*error if Z = 1 */ jgeq error5 /*error if N = 0 */ jcc error5 /*error if C = 0 */ jvs error5 /*error if V = 1 */ jmp 1f error5: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP1L3 /*if dest <> expected value, */ jeql o6 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn o6: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao6: callf $4,_setjmp /* save context for error return */ movab ao6,_stpc /* save starting address of program subtest */ movl $6,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK2L3,r3 /*mask */ movl $INIT1L3,r5 /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 r3,$SOURCE2L3,r5/* try again reg data reg */ jeql error6 /*error if Z = 1 */ jgeq error6 /*error if N = 0 */ jcc error6 /*error if C = 0 */ jvs error6 /*error if V = 1 */ jmp 1f error6: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP2L3 /*if dest <> expected value, */ jeql orl3mmm /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn /* */ /* now try source = M, mask = M, destination = M */ orl3mmm: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao7: callf $4,_setjmp /* save context for error return */ movab ao7,_stpc /* save starting address of program subtest */ movl $7,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK1L3,_opr /* first operand */ movl $SOURCE1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK1L3,mask /*mask */ movl $SOURCE1L3,source/*source */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ orl3 mask,source,dest/*try it mem mem mem */ jeql error7 /*error if Z = 1 */ jgeq error7 /*error if N = 0 */ jcc error7 /*error if C = 0 */ jvs error7 /*error if V = 1 */ jmp 1f error7: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP1L3 /*if dest <> expected value, */ jeql o8 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn /* Now try another mask(0x55555555) */ /* */ o8: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao8: callf $4,_setjmp /* save context for error return */ movab ao8,_stpc /* save starting address of program subtest */ movl $8,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 $MASK2L3,$SOURCE2L3,dest/* try again data data mem */ jeql error8 /*error if Z = 1 */ jgeq error8 /*error if N = 0 */ jcc error8 /*error if C = 0 */ jvs error8 /*error if V = 1 */ jmp 1f error8: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */ jeql o9 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP2L3,_expected /* expected data */ jmp *badrtn o9: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao9: callf $4,_setjmp /* save context for error return */ movab ao9,_stpc /* save starting address of program subtest */ movl $9,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $INIT1L3,r5 /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 $MASK2L3,$SOURCE2L3,r5/* try again data data reg */ jeql error9 /*error if Z = 1 */ jgeq error9 /*error if N = 0 */ jcc error9 /*error if C = 0 */ jvs error9 /*error if V = 1 */ jmp 1f error9: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP2L3 /*if dest <> expected value, */ jeql o10 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP2L3,_expected /* expected data */ jmp *badrtn /* */ /* */ /* Now try another mask(0), source(0), & dest(0) */ /* */ o10: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao10: callf $4,_setjmp /* save context for error return */ movab ao10,_stpc /* save starting address of program subtest */ movl $0xa,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK3L3,_opr /* first operand */ movl $SOURCE3L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $SOURCE3L3,r4 /*source */ movl $INIT3L3,r5 /*destination */ bispsw $(N|V) /*overflow & negetive bits ON */ orl3 $MASK3L3,r4,r5 /* try again data reg reg */ jneq error10 /*error if Z = 0 */ jlss error10 /*error if N = 1 */ jcc error10 /*error if C = 0 */ jvs error10 /*error if V = 1 */ jmp 1f error10: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: movl $EXP3L3,r6 cmpl r5,r6 /*if dest <> expected value, */ jeql orl3mrm /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl r6,_expected /* expected data */ jmp *badrtn /* */ /* Now use mask = R, source & destination = M */ /* */ orl3mrm: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao11: callf $4,_setjmp /* save context for error return */ movab ao11,_stpc /* save starting address of program subtest */ movl $0xb,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK1L3,_opr /* first operand */ movl $SOURCE1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK1L3,r3 /*mask */ movl $SOURCE1L3,source/*source */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ orl3 r3,source,dest /*try it */ jeql error11 /*error if Z = 1 */ jgeq error11 /*error if N = 0 */ jcc error11 /*error if C = 0 */ jvs error11 /*error if V = 1 */ jmp 1f error11: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP1L3 /*if dest <> expected value, */ jeql o12 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn /* */ /* Now try another mask(0x55555555) */ /* */ o12: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao12: callf $4,_setjmp /* save context for error return */ movab ao12,_stpc /* save starting address of program subtest */ movl $0xc,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK2L3,r3 /*mask */ movl $SOURCE2L3,source/*source */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 r3,source,dest /* try again */ jeql error12 /*error if Z = 1 */ jgeq error12 /*error if N = 0 */ jcc error12 /*error if C = 0 */ jvs error12 /*error if V = 1 */ jmp 1f error12: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */ jeql o13 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP2L3,_expected /* expected data */ jmp *badrtn /* */ /* Now try another mask(0), source(0), & dest(0) */ /* */ o13: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao13: callf $4,_setjmp /* save context for error return */ movab ao13,_stpc /* save starting address of program subtest */ movl $0xd,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK3L3,_opr /* first operand */ movl $SOURCE3L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK3L3,r3 /*mask */ movl $SOURCE3L3,source/*source */ movl $INIT3L3,dest /*destination */ bispsw $(N|V) /*overflow & negetive bits ON */ orl3 r3,source,dest /* try again */ jneq error13 /*error if Z = 0 */ jlss error13 /*error if N = 1 */ jcc error13 /*error if C = 0 */ jvs error13 /*error if V = 1 */ jmp 1f error13: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */ jeql orl3rmm /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP3L3,_expected /* expected data */ jmp *badrtn /* */ /* Now try mask = M, source = R, dest = M */ /* */ orl3rmm: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao14: callf $4,_setjmp /* save context for error return */ movab ao14,_stpc /* save starting address of program subtest */ movl $0xe,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK1L3,_opr /* first operand */ movl $SOURCE1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK1L3,mask /*mask */ movl $SOURCE1L3,r4 /*source */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ orl3 mask,r4,dest /*try it */ jeql error14 /*error if Z = 1 */ jgeq error14 /*error if N = 0 */ jcc error14 /*error if C = 0 */ jvs error14 /*error if V = 1 */ jmp 1f error14: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP1L3 /*if dest <> expected value, */ jeql o15 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn /* Now try another mask(0x55555555) */ /* */ o15: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao15: callf $4,_setjmp /* save context for error return */ movab ao15,_stpc /* save starting address of program subtest */ movl $0xf,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK2L3,mask /*mask */ movl $SOURCE2L3,r4 /*source */ movl $INIT1L3,dest /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 mask,r4,dest /* try again */ jeql error15 /*error if Z = 1 */ jgeq error15 /*error if N = 0 */ jcc error15 /*error if C = 0 */ jvs error15 /*error if V = 1 */ jmp 1f error15: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP2L3 /*if dest <> expected value, */ jeql o16 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP2L3,_expected /* expected data */ jmp *badrtn /* */ /* Now try another mask(0), mask(0), dest(0) */ /* */ o16: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao16: callf $4,_setjmp /* save context for error return */ movab ao16,_stpc /* save starting address of program subtest */ movl $0x10,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK3L3,_opr /* first operand */ movl $SOURCE3L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK3L3,mask /*mask */ movl $SOURCE3L3,r4 /*source */ movl $INIT3L3,dest /*destination */ bispsw $(N|V) /*overflow & negetive bits ON */ orl3 mask,r4,dest /* try again */ jneq error16 /*error if Z = 0 */ jlss error16 /*error if N = 1 */ jcc error16 /*error if C = 0 */ jvs error16 /*error if V = 1 */ jmp 1f error16: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl dest,$EXP3L3 /*if dest <> expected value, */ jeql orl3mrr /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl dest,_actual /* actual data */ movl $EXP3L3,_expected /* expected data */ jmp *badrtn /* */ /* Now try mask = R, source = M, dest = R */ /* */ orl3mrr: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao17: callf $4,_setjmp /* save context for error return */ movab ao17,_stpc /* save starting address of program subtest */ movl $0x11,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK1L3,_opr /* first operand */ movl $SOURCE1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK1L3,r3 /*mask */ movl $SOURCE1L3,source/*source */ movl $INIT1L3,r5 /*destination */ bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ orl3 r3,source,r5 /*try it */ jeql error17 /*error if Z = 1 */ jgeq error17 /*error if N = 0 */ jcc error17 /*error if C = 0 */ jvs error17 /*error if V = 1 */ jmp 1f error17: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP1L3 /*if dest <> expected value, */ jeql o18 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP1L3,_expected /* expected data */ jmp *badrtn /* Now try another mask(0x55555555) */ /* */ o18: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao18: callf $4,_setjmp /* save context for error return */ movab ao18,_stpc /* save starting address of program subtest */ movl $0x12,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK2L3,_opr /* first operand */ movl $SOURCE2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK2L3,r3 /*mask */ movl $SOURCE2L3,source/*source */ movl $INIT1L3,r5 /*destination */ bispsw $(Z|V) /*overflow & zero bits ON */ orl3 r3,source,r5 /* try again */ jeql error18 /*error if Z = 1 */ jgeq error18 /*error if N = 0 */ jcc error18 /*error if C = 0 */ jvs error18 /*error if V = 1 */ jmp 1f error18: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP2L3 /*if dest <> expected value, */ jeql o19 /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP2L3,_expected /* expected data */ jmp *badrtn /* */ /* Now try another mask(0), mask(0), & dest(0) */ /* */ o19: bbs $0,_force_lp,0b /* if set loop on last subtest */ ao19: callf $4,_setjmp /* save context for error return */ movab ao19,_stpc /* save starting address of program subtest */ movl $0x13,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $MASK3L3,_opr /* first operand */ movl $SOURCE3L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*turn overflow enable bit off */ movl $MASK3L3,r3 /*mask */ movl $SOURCE3L3,source/*source */ movl $INIT3L3,r5 /*destination */ bispsw $(N|V) /*overflow & negetive bits ON */ orl3 r3,source,r5 /* try again */ jneq error19 /*error if Z = 0 */ jlss error19 /*error if N = 1 */ jcc error19 /*error if C = 0 */ jvs error19 /*error if V = 1 */ jmp 1f error19: movpsl _actual /* actual = psl Maybe incorrect */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn 1: cmpl r5,$EXP3L3 /*if dest <> expected value, */ jeql aldn /* no error then continue */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $EXP3L3,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* */ /* Variables */ /* */ .align 2 mask: .space 4 source: .space 4 dest: .space 4 /* */ /* End of file */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.