File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / entry / b_cond.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (6 years, 11 months ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
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 */






unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.