File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / entry / or_l2.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
Power 6/32 Unix version 1.2b


/*	ORL2 (or long 2 operand) test					*/

/*Test name = orl2							*/
/*Description =								*/
/*	This test checks 'orl2' instruction as follows:		*/
/*	destination = r1, memory location (dest)			*/
/*	destination	mask		result        Z N C V(flags)    */
/*	___________	____		_____         _____________	*/
/*	0xaaaaaaaa	0xaaaaaaaa	0xaaaaaaaa    0 0 1 0   	*/
/*	0xaaaaaaaa	0x55555555	0xffffffff    0 0 1 0   	*/
/*	0x00000000	0x00000000	0x00000000    1 0 x 0		*/
/*									*/
/*									*/
/*									*/
/*									*/
/*	Constants							*/
/*									*/
	.set	VALUEB,0x555555aa
	.set	VALUEW,0X5555aaaa
	.set	VALUEL,0xaaaaaaaa
	.set	VALUE3B,0X00000000
	.set	VALUE3W,VALUE3B
	.set	VALUE3L,VALUE3B
	.set	MASK1B,0xaa
	.set	MASK1W,0xaaaa
	.set	MASK1L,0xaaaaaaaa
	.set	MASK2B,0x55
	.set	MASK2W,0x5555
	.set	MASK2L,0x55555555
	.set	MASK3B,0x00
	.set	MASK3W,0x0000
	.set	MASK3L,0x00000000
	.set	EXP1B,0x555555aa
	.set	EXP1W,0x5555aaaa
	.set	EXP1L,0xaaaaaaaa
	.set	EXP2B,0x555555ff
	.set	EXP2W,0x5555ffff
	.set	EXP2L,0xffffffff
	.set	EXP3B,0x00000000
	.set	EXP3W,EXP3B
	.set	EXP3L,EXP3B

/*									*/
/*									*/
/*									*/
/*	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	_or_l2
_or_l2:
	callf	$4,_setjmp	/* save context for error return */
	movab	_or_l2,_stpc	/* save subtest starting address */
	movl	$1,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$MASK1L,_opr	/* first operand in use */
	movl	$VALUEL,_opr + 4 /* second operand in use */
0:	
	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$VALUEL,r4	/*set r4 = 0xaaaaaaaa			*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl2	$MASK1L,r4	/*mask r4 with 0xaaaaaaaa data to 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	r4,$EXP1L	/*if r4 <> expected,			*/
	jeql	o2
	bbs	$0,_scoplp,0b	/* if set scope loop on error		*/
	movl	$1,_ercode	/* error code data miscompare */
	movl	r4,_actual	/* actual data */
	movl	$EXP1L,_expected /* expected data */
	jmp	*badrtn

/*	Now try another mask(0x55555555) reg to reg			*/
/*									*/

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 subtest starting address */
	movl	$2,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$MASK2L,_opr	/* first operand in use */
	movl	$VALUEL,_opr + 4 /* second operand in use */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$VALUEL,r4	/*set r4 = 0xaaaaaaaaaa			*/
	movl    $MASK2L,r3	/* set up r3 as mask reg		*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl2	r3,r4		/*mask r4 with 0x55555555 reg to reg	*/
	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	r4,$EXP2L	/*if r4 <> expected,			*/
	jeql	o3
	bbs	$0,_scoplp,0b	/* if set scope loop on error		*/
	movl	$1,_ercode	/* error code data miscompare */
	movl	r4,_actual	/* actual data */
	movl	$EXP2L,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now try another mask(0x00000000) & dest(0x00000000)		*/
/*									*/

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 subtest starting address */
	movl	$3,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$MASK3L,_opr	/* first operand in use */
	movl	$VALUE3L,_opr + 4 /* second operand in use */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$VALUE3L,r4	/*set r4 = 0x00000000			*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl2	$MASK3L,r4	/*mask r4 with 0x00000000		*/
	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	r4,$EXP3L	/*if r4 <> expected,			*/
	jeql	orl2m
	bbs	$0,_scoplp,0b	/* if set scope loop on error		*/
	movl	$1,_ercode	/* error code data miscompare */
	movl	r4,_actual	/* actual data */
	movl	$EXP3L,_expected /* expected data */
	jmp	*badrtn

/*									*/
/*	Now use memory location instead of register as destination	*/
/*									*/
orl2m:	
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao4:	callf	$4,_setjmp	/* save context for error return */
	movab	ao4,_stpc	/* save subtest starting address */
	movl	$4,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$MASK1L,_opr	/* first operand in use */
	movl	$VALUEL,_opr + 4 /* second operand in use */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$VALUEL,dest	/*set dest = 0xaaaaaaaa			*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl2	$MASK1L,dest	/*mask dest with 0xaaaaaaaa data to mem	*/
	jeql	error4		/*error if Z = 1			*/
	jgeq	error4		/*error if N = 0			*/
	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,$EXP1L	/*if dest <> expected,			*/
	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	$EXP1L,_expected /* expected data */
	jmp	*badrtn

/*	Now try another mask(0x55555555) reg to mem			*/
/*									*/

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 subtest starting address */
	movl	$5,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$MASK2L,_opr	/* first operand in use */
	movl	$VALUEL,_opr + 4 /* second operand in use */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$VALUEL,dest	/*set dest = 0xaaaaaaaa			*/
	movl	$MASK2L,r3	/* set r3 as mask reg			*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl2	r3,dest		/*mask dest with 0x55555555 reg to mem	*/
	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	dest,$EXP2L	/*if dest <> expected,			*/
	jeql	o6
	bbs	$0,_scoplp,0b	/* if set scope loop on error		*/
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP2L,_expected /* expected data */
	jmp	*badrtn


/*									*/
/*	Now try another mask(0x00000000) & dest(0x00000000)		*/
/*									*/

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 subtest starting address */
	movl	$6,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$MASK3L,_opr	/* first operand in use */
	movl	$VALUE3L,_opr + 4 /* second operand in use */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$VALUE3L,dest	/*set dest = 0x00000000			*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl2	$MASK3L,dest	/*mask dest with 0x00000000		*/
	jneq	error6		/*error if Z = 0			*/
	jlss	error6		/*error if N = 1			*/
	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	dest,$EXP3L	/*if dest <> expected,			*/
	jeql	aldn
	bbs	$0,_scoplp,0b	/* if set scope loop on error		*/
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP3L,_expected /* expected data */
	jmp	*badrtn


aldn:	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
	jmp	*return		/* good, return to monitor */

/*									*/
/*	variables							*/
/*									*/
	.align	2
dest:	.space	4


unix.superglobalmegacorp.com

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