File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / entry / movel.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

/*	MOVL instruction test	*/
/*				*/
/*	constant definitions 	*/

	.set	HIGH,31
	.set	IPL,8
	.set	ZERO,0
	.set	ONES,0xffffffff
	.set	DV,128
	.set	FU,64
	.set	IV,32
	.set 	T,16
	.set	N,8
	.set	Z,4
	.set	V,2
	.set	C,1
	.set    NEGVAL,0xff0fffff

	.globl	_movl
_movl:
	bicpsw  $(IV|T)		/* disable overflow,trace exceptions	*/
movlmr:				/* MOVE MEMORY TO REGISTER	*/
	callf	$4,_setjmp	/* save context for error return */
	movab	movlmr,_stpc	/* save address of subtest start */
	movl	$1,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movl	$NEGVAL,_opr	/* first operand */
	movl	$NEGVAL,negval	/* restore original value of negval	*/
0:	bispsw	$(Z|V)		/* set z,v flags      		*/
	bicpsw  $(N|C)		/* clear n,c flag		*/
	movl	negval,r4	/* move negative value to r4 mem to reg */
	movpsl	actpsl
	jgeq	error1		/* error if n flag not set	*/
	jeql	error1		/* error if z flag set		*/
	jvs	error1		/* error if v flag set  	*/
	jcc	error1		/* error if c flag not set	*/
	jmp	1f
error1:	movpsl	_actual		/* actual = psl MAYBE it is incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	negval,r4	/* compare r4 to negval 	*/
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r4,_actual	/* actual data */
	movl	negval,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$NEGVAL,negval	/* make sure source unchanged   */
	jeql	movlrr		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$3,_ercode	/* error code operand miscompare */
	movl	negval,_actual	/* actual data */
	movl	$NEGVAL,_expected /* expected data */
	jmp	*badrtn
movlrr:				/* MOVE REGISTER TO REGISTER	*/
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
am2:	callf	$4,_setjmp	/* save context for error return */
	movab	am2,_stpc	/* save address of subtest start */
	movl	$2,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movl	$NEGVAL,_opr	/* first operand */
0:	movl	negval,r3	/* move negval to r3*/
	bispsw	$(Z|V|C)	/* set z,v,c flags	*/
	bicpsw	$N		/* clear N flag		*/
	movl	r3,r4		/* move r3 to r4	*/
	movpsl	actpsl
	jgeq	error2		/* error if n flag not set	*/
	jeql	error2		/* error if z flag set	*/
	jvs	error2		/* error if v flag set  */
	jcc	error2		/* error if c flag not set	*/
	jmp	1f
error2:	movpsl	_actual		/* actual = psl MAYBE it is incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	movl	r4,r5		/* move r4 to r5	*/
	movl	r5,r6		/* move r5 to r6	*/
	movl	r6,r7		/* move r6 to r7	*/
	movl	r7,r8		/* move r7 to r8	*/
	movl	r8,r9		/* move r8 to r9	*/
	movl	r9,r10		/* move r9 to r10	*/
	movl	r10,r11		/* move r10 to r11	*/
	movl	r11,r12		/* move r11 to r12	*/
	cmpl	negval,r12	/* compare r12 to negval */
	jeql	1f
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r12,_actual	/* actual data */
	movl	negval,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	r3,r11		/* make sure source unchanged   */
	jeql	movlmm
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r3,_actual	/* actual data */
	movl	negval,_expected /* expected data */
	jmp	*badrtn
movlmm:				/* MOVE  REGISTER TO MEMORY	*/
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
am3:	callf	$4,_setjmp	/* save context for error return */
	movab	am3,_stpc	/* save address of subtest start */
	movl	$3,_subtst	/* subtest number */
	movl	$1,_no_opr	/* number of operands in use */
	movl	zero,_opr	/* first operand */
0:	movl	zero,r3		/* load starting register */
	bispsw	$(N|V|C)	/* set n,v,c flags	*/
	bicpsw	$Z		/* clear z flag		*/
	movl    r3,negval	/* clear negval		*/
	movpsl	actpsl
	jlss	error3		/* error if n flag set	*/
	jneq	error3		/* error if z flag not set	*/
	jvs	error3		/* error if v flag set  */
	jcc	error3		/* error if c flag not set	*/
	jmp	1f
error3:	movpsl	_actual		/* actual = psl MAYBE it is incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl 	$ZERO,negval    /* compare negval to 0	*/
	jeql	1f	
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	negval,_actual	/* actual data */
	movl	$ZERO,_expected /* expected data */
	jmp	*badrtn
1:	cmpl	$ZERO,zero	/* compare source to 0	*/
	jneq	error3		/* error if value changed	*/
	jeql	aldn	
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$3,_ercode	/* error code operand miscompare */
	movl	zero,_actual	/* actual data */
	movl	$ZERO,_expected /* expected data */
	jmp	*badrtn



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

/*	test data		*/
	.align	2
negval:	.long	NEGVAL	
zero:	.long	0
actpsl: .long	0

unix.superglobalmegacorp.com

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