|
|
Power 6/32 Unix version 1.2b
/* ADDL2 (add long 2) test */ /* */ /*Test name = addl2 */ /*Description = */ /* This test checks 'addl2' instruction as follows: */ /*add sum result N Z V C (flags) */ /*___ ___ ______ _______________ */ /*0x7fffffff 0x7fffffff 0x7ffffffe 0 0 1 0 */ /*0x80000000 0x80000000 0x00000000 0 1 1 1 */ /*0x80000000 0xffffffff 0x7fffffff 0 0 1 1 */ /*0x80000001 0x7fffffff 0x00000000 0 1 0 1 */ /*0x80000000 0x7fffffff 0xffffffff 1 0 0 0 */ /*0xc0000000 0xc0000000 0x80000000 1 0 0 1 */ /* */ /* */ /* constants definition for 'addx' tests. */ /* */ .set A1B1,0x1111107f/*+127, highest +ve number, byte */ .set A1W1,0x11107fff .set A1L1,0x7fffffff .set A2B1,0x1111107f/* +127 */ .set A2W1,0x11107fff .set A2L1,A1L1 .set RB1,0x111110fe .set RW1,0x1110fffe .set RL1,0xfffffffe .set A1B2,0x11111080/* -128 */ .set A1W2,0x11108000 .set A1L2,0x80000000 .set A2B2,0x11111080/* -128 */ .set A2W2,0x11118000 .set A2L2,0X80000000 .set RB2,0x11111000/* 0 */ .set RW2,0x11100000 .set RL2,0x00000000 .set A1B3,0X80 /* -128 */ .set A1W3,0x8000 .set A1L3,0x80000000 .set A2B3,0xff /* -1 */ .set A2W3,0xffff .set A2L3,0xffffffff .set RB3,0x0000007f .set RW3,0X00007fff .set RL3,0X7fffffff .set A1B4,0x81 /* -127 */ .set A1W4,0x8001 .set A1L4,0x80000001 .set A2B4,0x7f /* 127 */ .set A2W4,0x7fff .set A2L4,0x7fffffff .set RB4,0 /* 0 */ .set RW4,RB4 .set RL4,RB4 .set A1B5,A1B3 /* -128 */ .set A1W5,A1W3 .set A1L5,A1L3 .set A2B5,A2B4 /* 127 */ .set A2W5,A2W4 .set A2L5,A2L4 .set RB5,0xff /* -1 */ .set RW5,0xffff .set RL5,0xffffffff .set A1B6,0xc0 /* -64 */ .set A1W6,0xc000 .set A1L6,0xc0000000 .set A2B6,A1B6 /* -64 */ .set A2W6,A1W6 .set A2L6,A1L6 .set RB6,0x00000080 /* -128 */ .set RW6,0x00008000 .set RL6,0X80000000 .set INITB,0x11111055/* initialization values for 3 operand */ .set INITW,0x11105555 .set INITL,0X55555555 /* */ /* 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 _addl2 _addl2: callf $4,_setjmp /* save context for return from error */ movab _addl2,_stpc /* save subtest program counter */ movl $1,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A1L1,_opr /* first operand */ movl $A2L1,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A1L1,add /*first operand */ movl $A2L1,sum /*second operand */ bispsw $(N|Z|C) /* these flags ON */ addl2 add,sum /* try 'add' instruction memory to memory */ jlss e1 /*error if N = 1 */ jeql e1 /*error if Z = 1 */ jvc e1 /*error if V = 0 */ jcs e1 /*error if C = 1 */ bicpsw $Z movl $RL1,r4 cmpl $RL1,sum /*sum = expected ? */ jeql al1r bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl sum,_actual /* actual data */ movl $RL1,_expected /* expected data */ jmp *badrtn e1: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* reverse operands */ al1r: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal1r: callf $4,_setjmp /* save context for return from error */ movab aal1r,_stpc /* save subtest program counter */ movl $2,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A2L1,_opr /* first operand */ movl $A1L1,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A1L1,sum /*second operand */ bispsw $(N|Z|C) /* these flags ON */ addl2 $A2L1,sum /* try 'add' instructio data to mem */ jlss e2 /*error if N = 1 */ jeql e2 /*error if Z = 1 */ jvc e2 /*error if V = 0 */ jcs e2 /*error if C = 1 */ bicpsw $Z movl $RL1,r4 cmpl $RL1,sum /*sum = expected ? */ jeql al2 movl $1,_ercode /* error code data miscompare */ e2b: bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL1,_expected /* expected data */ jmp *badrtn e2: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn al2: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal2: callf $4,_setjmp /* save context for return from error */ movab aal2,_stpc /* save subtest program counter */ movl $3,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A1L2,_opr /* first operand */ movl $A2L2,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A2L2,r5 /* second operand */ bispsw $N /* these flags ON */ addl2 $A1L2,r5 /* try 'add' instruction data to reg */ jlss e3 /*error if N = 0 */ jneq e3 /*error if Z = 0 */ jvc e3 /*error if V = 0 */ jcc e3 /*error if C = 0 */ bicpsw $Z movl $RL2,r4 cmpl $RL2,r5 /*sum = expected ? */ jeql al2r movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl r5,_actual /* actual data */ movl $RL2,_expected /* expected data */ jmp *badrtn e3: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* reverse operands */ al2r: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal2r: callf $4,_setjmp /* save context for return from error */ movab aal2r,_stpc /* save subtest program counter */ movl $4,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A2L2,_opr /* first operand */ movl $A1L2,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A2L2,r5 /*first operand */ movl $A1L2,sum /*second operand */ bispsw $N /* these flags ON */ addl2 r5,sum /* try 'add' instruction reg to memory */ jlss e4 /*error if N = 0 */ jneq e4 /*error if Z = 0 */ jvc e4 /*error if V = 0 */ jcc e4 /*error if C = 0 */ bicpsw $Z movl $RL2,r4 cmpl $RL2,sum /*sum = expected ? */ jeql al3 movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL2,_expected /* expected data */ jmp *badrtn e4: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn al3: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal3: callf $4,_setjmp /* save context for return from error */ movab aal3,_stpc /* save subtest program counter */ movl $5,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A1L3,_opr /* first operand */ movl $A2L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A1L3,r5 /*first operand */ movl $A2L3,r6 /*second operand */ bispsw $(N|Z) /* these flags ON */ addl2 r5,r6 /* try 'add' instruction reg to reg */ jgeq e5 /*error if N = 0 */ jeql e5 /*error if Z = 1 */ jvc e5 /*error if V = 0 */ jcc e5 /*error if C = 0 */ bicpsw $Z movl $RL3,r4 cmpl r4,r6 /*sum = expected ? */ jeql al3r movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl r6,_actual /* actual data */ movl $RL3,_expected /* expected data */ jmp *badrtn e5: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* reverse operands */ al3r: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal3r: callf $4,_setjmp /* save context for return from error */ movab aal3r,_stpc /* save subtest program counter */ movl $6,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A2L3,_opr /* first operand */ movl $A1L3,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A2L3,add /*first operand */ movl $A1L3,sum /*second operand */ bispsw $(N|Z) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jgeq e6 /*error if N = 0 */ jeql e6 /*error if Z = 1 */ jvc e6 /*error if V = 0 */ jcc e6 /*error if C = 0 */ bicpsw $Z movl $RL3,r4 cmpl $RL3,sum /*sum = expected ? */ jeql al4 movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL3,_expected /* expected data */ jmp *badrtn e6: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn al4: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal4: callf $4,_setjmp /* save context for return from error */ movab aal4,_stpc /* save subtest program counter */ movl $7,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A1L4,_opr /* first operand */ movl $A2L4,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A1L4,add /*first operand */ movl $A2L4,sum /*second operand */ bispsw $(N|V) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jlss e7 /*error if N = 1 */ jneq e7 /*error if Z = 0 */ jvs e7 /*error if V = 1 */ jcc e7 /*error if C = 0 */ bicpsw $Z movl $RL4,r4 cmpl $RL4,sum /*sum = expected ? */ jeql al4r movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL4,_expected /* expected data */ jmp *badrtn e7: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* reverse operands */ al4r: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal4r: callf $4,_setjmp /* save context for return from error */ movab aal4r,_stpc /* save subtest program counter */ movl $8,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A1L4,_opr /* first operand */ movl $A2L4,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A2L4,add /*first operand */ movl $A1L4,sum /*second operand */ bispsw $(N|V) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jlss e8 /*error if N = 1 */ jneq e8 /*error if Z = 0 */ jvs e8 /*error if V = 1 */ jcc e8 /*error if C = 0 */ bicpsw $Z movl $0,r4 cmpl r4,sum /*sum = expected ? */ jeql al5 movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn e8: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn al5: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal5: callf $4,_setjmp /* save context for return from error */ movab aal5,_stpc /* save subtest program counter */ movl $9,_subtst /* subtest number */ movl $2,_no_opr /* number of operands */ movl $A1L5,_opr /* first operand */ movl $A2L5,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A1L5,add /*first operand */ movl $A2L5,sum /*second operand */ bispsw $(V|Z|C) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jgeq e9 /*error if N = 0 */ jeql e9 /*error if Z = 1 */ jvs e9 /*error if V = 1 */ jcs e9 /*error if C = 1 */ bicpsw $Z movl $RL5,r4 cmpl $RL5,sum /*sum = expected ? */ jeql al5r movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL5,_expected /* expected data */ jmp *badrtn e9: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* reverse operands */ al5r: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal5r: callf $4,_setjmp /* save context for return from error */ movab aal5r,_stpc /* save subtest program counter */ movl $0xa,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A2L5,add /*first operand */ movl $A1L5,sum /*second operand */ bispsw $(V|Z|C) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jgeq e10 /*error if N = 0 */ jeql e10 /*error if Z = 1 */ jvs e10 /*error if V = 1 */ jcs e10 /*error if C = 1 */ bicpsw $Z movl $RL5,r4 cmpl r4,sum /*sum = expected ? */ jeql al6 movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL5,_expected /* expected data */ jmp *badrtn e10: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn al6: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal6: callf $4,_setjmp /* save context for return from error */ movab aal6,_stpc /* save subtest program counter */ movl $0xb,_subtst /* subtest number */ movl $A1L6,_opr /* first operand */ movl $A2L6,_opr + 4 /* second operand */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A1L6,add /*first operand */ movl $A2L6,sum /*second operand */ bispsw $(Z|V) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jgeq e11 /*error if N = 0 */ jeql e11 /*error if Z = 1 */ jvs e11 /*error if V = 1 */ jcc e11 /*error if C = 0 */ bicpsw $Z movl $RL6,r4 cmpl $RL6,sum /*sum = expected ? */ jeql al6r movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL6,_expected /* expected data */ jmp *badrtn e11: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* reverse operands */ al6r: bbs $0,_force_lp,0b /* if set loop on last subtest */ aal6r: callf $4,_setjmp /* save context for return from error */ movab aal6r,_stpc /* save subtest program counter */ movl $0xc,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*PSW = 0 */ movl $A2L6,add /*first operand */ movl $A1L6,sum /*second operand */ bispsw $(Z|V) /* these flags ON */ addl2 add,sum /* try 'add' instruction */ jgeq e12 /*error if N = 0 */ jeql e12 /*error if Z = 1 */ jvs e12 /*error if V = 1 */ jcc e12 /*error if C = 0 */ bicpsw $Z movl $RL6,r4 cmpl $RL6,sum /*sum = expected ? */ jeql aldn movl $1,_ercode /* error code data miscompare */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl sum,_actual /* actual data */ movl $RL6,_expected /* expected data */ jmp *badrtn e12: movpsl _actual /* actual = psl */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* */ /* Varialles */ /* */ .align 2 add1: .space 4 add2: .space 4 sum: .space 4 add: .space 4 /* End of file */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.