|
|
Power 6/32 Unix version 1.2b
/* B (branch on condition) test */ /* */ /*Test name = bxxxx */ /*Description = */ /* This test checks 'branch on condition' instructions as follows: */ /* (1) forward & backward branch on condition true */ /* (2) no branch (continue with the next instruction) on */ /* condition false. */ /* */ /* */ /* */ /* 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 /* */ /* beql & bneq (Z flag On & OFF) test */ /* */ .globl _b_cond _b_cond: callf $4,_setjmp /* save context for error return */ movab _b_cond,_stpc /* save address of subtest */ movl $1,_subtst /* subtest number */ movl $0,_no_opr /* number of operands in use */ 0: bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ beql erz /*should not branch */ bneq fwdz0 /*check forward branch on Z off */ jmp *$9f 9: movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backz0: bneq z1 /*goto Z on test */ .space 4 /*bad -should never come here */ erz: .space 20 fwdz0: bneq backz0 /*ckeck backward branch on Z off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ z1: bbs $0,_force_lp,0b /* if set loop on last subtest */ b2: callf $4,_setjmp /* save context for error return */ movab b2,_stpc /* save address of subtest */ movl $2,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*Z ON test */ bispsw $Z /*turn Z ON */ bneq erz /*should not branch */ beql fwdz1 /*forward branch on Z on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $Z /*turn Z ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backz1: beql n0 /*next test */ .space 50 fwdz1: beql backz1 /*backward branch on Z on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $Z /*turn Z ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ /* */ /* blss & bgeq (N flag ON & OFF) test */ /* */ n0: bbs $0,_force_lp,0b /* if set loop on last subtest */ b3: callf $4,_setjmp /* save context for error return */ movab b3,_stpc /* save address of subtest */ movl $3,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*N TEST */ bispsw $(Z|V|C) /*N off; others ON */ blss ern /*should not branch */ bgeq fwdn0 /*check forward branch on N off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(Z|V|C) /*N off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backn0: bgeq n1 /*goto N on test */ .space 4 /*bad -should never come here */ ern: .space 20 fwdn0: bgeq backn0 /*ckeck backward branch on N off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(Z|V|C) /*N off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ n1: bbs $0,_force_lp,0b /* if set loop on last subtest */ b4: callf $4,_setjmp /* save context for error return */ movab b4,_stpc /* save address of subtest */ movl $4,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*N ON test */ bispsw $N /*turn N ON */ bgeq ern /*should not branch */ blss fwdn1 /*forward branch on N on */ jmp *$9f 9: movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $N /*turn N ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backn1: blss v0 /*next test */ .space 50 fwdn1: blss backn1 /*backward branch on N on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $N /*turn N ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ /* */ /* bvc & bvs (V flag ON & OFF) test */ /* */ v0: bbs $0,_force_lp,0b /* if set loop on last subtest */ b5: callf $4,_setjmp /* save context for error return */ movab b5,_stpc /* save address of subtest */ movl $5,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*V TEST */ bispsw $(N|Z|C) /*V off; others ON */ bvs erv /*should not branch */ bvc fwdv0 /*check forward branch on V off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|Z|C) /*V off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backv0: bvc v1 /*goto V on test */ .space 4 /*bad -should never come here */ erv: .space 20 fwdv0: bvc backv0 /*ckeck backward branch on V off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|Z|C) /*V off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ v1: bbs $0,_force_lp,0b /* if set loop on last subtest */ b6: callf $4,_setjmp /* save context for error return */ movab b6,_stpc /* save address of subtest */ movl $6,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*V ON test */ bispsw $V /*turn V ON */ bvc erv /*should not branch */ bvs fwdv1 /*forward branch on V on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $V /*turn V ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backv1: bvs c0 /*next test */ .space 50 fwdv1: bvs backv1 /*backward branch on V on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $V /*turn V ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ /* */ /* bcs & bcc (C flag ON & OFF) test */ /* */ c0: bbs $0,_force_lp,0b /* if set loop on last subtest */ b7: callf $4,_setjmp /* save context for error return */ movab b7,_stpc /* save address of subtest */ movl $7,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*C TEST */ bispsw $(N|V|Z) /*C off; others ON */ bcs erc /*should not branch */ bcc fwdc0 /*check forward branch on C off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|Z) /*C off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backc0: bcc c1 /*goto C on test */ .space 4 /*bad -should never come here */ erc: .space 20 fwdc0: bcc backc0 /*ckeck backward branch on C off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|Z) /*C off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ c1: bbs $0,_force_lp,0b /* if set loop on last subtest */ b8: callf $4,_setjmp /* save context for error return */ movab b8,_stpc /* save address of subtest */ movl $8,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*C ON test */ bispsw $C /*turn C ON */ bcc erc /*should not branch */ bcs fwdc1 /*forward branch on C on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $C /*turn C ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backc1: bcs zn0 /*next test */ .space 50 fwdc1: bcs backc1 /*backward branch on C on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $C /*turn C ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ /* */ /* bgtr & bleq (N|Z ON & OFF) test */ /* */ zn0: bbs $0,_force_lp,0b /* if set loop on last subtest */ b9: callf $4,_setjmp /* save context for error return */ movab b9,_stpc /* save address of subtest */ movl $9,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ bgtr erzn /*should not branch */ bleq fwdzn0 /*check forward branch on Z off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backzn0: bleq zn1 /*goto Z on test */ .space 4 /*bad -should never come here */ erzn: .space 20 fwdzn0: bleq backzn0 /*ckeck backward branch on Z off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ zn1: bbs $0,_force_lp,0b /* if set loop on last subtest */ b10: callf $4,_setjmp /* save context for error return */ movab b10,_stpc /* save address of subtest */ movl $0xa,_subtst /* subtest number */ 0: bicpsw $PSWMASK /*Z ON test */ bispsw $Z /*turn Z ON */ bgtr erzn /*should not branch */ bleq fwdzn1 /*forward branch on Z on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $Z /*turn Z ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backzn1: bleq nz0 /*next test */ .space 50 fwdzn1: bleq backzn1 /*backward branch on Z on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $Z /*turn Z ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ nz0: bbs $0,_force_lp,0b /* if set loop on last subtest */ b11: callf $4,_setjmp /* save context for error return */ movab b11,_stpc /* save address of subtest */ movl $0xb,_subtst /* subtest number */ bicpsw $PSWMASK /*N TEST */ bispsw $(V|C) /*N off; Z off; others ON */ bleq ernz /*should not branch */ bgtr fwdnz0 /*check forward branch on N off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(V|C) /*N off; Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backnz0: bgtr zc0 /*goto N on test */ .space 4 /*bad -should never come here */ ernz: .space 50 fwdnz0: bgtr backnz0 /*ckeck backward branch on N off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(V|C) /*N off; Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ /* bgtru & blequ (C|Z flags ON & OFF) test */ /* */ zc0: bbs $0,_force_lp,0b /* if set loop on last subtest */ b12: callf $4,_setjmp /* save context for error return */ movab b12,_stpc /* save address of subtest */ movl $0xc,_subtst /* subtest number */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ blequ erzc /*should not branch */ bgtru fwdzc0 /*check forward branch on Z off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backzc0: bgtru zc1 /*goto Z on test */ .space 4 /*bad -should never come here */ erzc: .space 20 fwdzc0: bgtru backzc0 /*ckeck backward branch on Z off */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $(N|V|C) /*Z off; others ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ zc1: bbs $0,_force_lp,0b /* if set loop on last subtest */ b13: callf $4,_setjmp /* save context for error return */ movab b13,_stpc /* save address of subtest */ movl $0xd,_subtst /* subtest number */ bicpsw $PSWMASK /*Z ON test */ bispsw $Z /*turn Z ON */ bgtru erzc /*should not branch */ blequ fwdzc1 /*forward branch on Z on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $Z /*turn Z ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ backzc1: blequ x0 /*next test */ .space 50 fwdzc1: blequ backzc1 /*backward branch on Z on */ movpsl _actual /* actual data */ bbs $0,_scoplp,0b /* if set loop on error */ movl $2,_ercode /* flag failure did not jump */ bicpsw $PSWMASK /*Z TEST */ bispsw $Z /*turn Z ON */ movpsl _expected /* expected data */ jmp *badrtn /* error - did not branch */ x0: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* good, return to monitor */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.