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

/*	INDEXing mode 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	_index
_index:
	callf	$4,_setjmp	/* save context for error return */
	movab	_index,_stpc	/* save starting address of subtest */
	movl	$1,_subtst	/* subtst number */
	movl	$3,_no_opr	/* number of operands in use */
	movl	$0,_opr		/* first operand */
	movl	$1,_opr + 4	/* second operand */
	movl	$2,_opr + 8	/* third operand */
0:	movl	$0x1fffffff,tab1	/* Initialize data */
	movl	$0xaabbccdd,tab1+4
	movl 	$0xccddeeff,tab1+8
	movl	$0xeeeecaca,tab1+12

	movl 	$0x00000001,tab2
	movl 	$0x20000000,tab2+4
	movl 	$0x06ffffff,tab2+8

	movl 	$0,tab3
	movl 	$0xffff0000,tab3+4
	movl 	$0xaaaaaaaa,tab3+8
	movl 	$0xcc00eeff,tab3+12	
	movl 	$0xffffffff,tab3+16

	movl 	$0x3fffffff,result
	movl 	$0x20000000,result+4
	movl 	$0xffffffb0,result+8
	movl 	$0xcce0eeff,result+12
	movl 	$0xcaccffff,result+16

	movl	$1,r1		/* R1 : indidate which part of the test */
	clrl	r3		/* R3 = 0; R4 = 1; R5 = 2 */
	movl	$1,r4
	movl	$2,r5
	addl3	tab1[r3],tab2[r4],tab3[r5]
	cmpl	tab3+8,result	/* compare result 	*/
	jeql	i2		/* error if not equal; z flag not set */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	tab3+8,_actual	/* actual data */
	movl	result,_expected	/* expected data */
	jmp	*badrtn

i2:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai2:	callf	$4,_setjmp	/* save context for error return */
	movab	ai2,_stpc	/* save starting address of subtest */
	movl	$2,_subtst	/* subtst number */
0:	addw3	tab1[r3],tab2[r4],tab3[r5]
	cmpl	tab3+4,result+4	/* compare result 	*/
	jeql	i3		/* error if not equal; z flag not set */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	tab3+4,_actual	/* actual data */
	movl	result+4,_expected	/* expected data */
	jmp	*badrtn

i3:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai3:	callf	$4,_setjmp	/* save context for error return */
	movab	ai3,_stpc	/* save starting address of subtest */
	movl	$3,_subtst	/* subtst number */
	movl	$2,_no_opr	/* number of operands in use */
	movl	$4,_opr		/* first operand */
	movl	$8,_opr + 4	/* second operand */
0:	movl	$4,r3		/* R3 = 4; R4 = 8 */
	movl	$8,r4
	addb3	tab1[r3],tab2[r4],r5
	cmpl	r5,result+8	/* compare result 	*/
	jeql	i4		/* error if not equal; z flag not set */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	result+8,_expected	/* expected data */
	jmp	*badrtn

i4:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai4:	callf	$4,_setjmp	/* save context for error return */
	movab	ai4,_stpc	/* save starting address of subtest */
	movl	$4,_subtst	/* subtst number */
	movl	$3,_no_opr	/* number of operands in use */
	movl	$9,_opr		/* first operand */
	movl	$3,_opr + 4	/* second operand */
	movl	$13,_opr + 8	/* third operand */
0:	movl	$9,r3		/* R3 = 9; R5 = 13 */
	movl	$13,r5
	movl	$3,r4
	addb3	tab1[r3],r4,tab3[r5]
	cmpl	tab3+12,result+12	/* compare result 	*/
	jeql	i5		/* error if not equal; z flag not set */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	tab3+12,_actual	/* actual data */
	movl	result+12,_expected	/* expected data */
	jmp	*badrtn

i5:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ai5:	callf	$4,_setjmp	/* save context for error return */
	movab	ai5,_stpc	/* save starting address of subtest */
	movl	$5,_subtst	/* subtst number */
	movl	$3,_no_opr	/* number of operands in use */
	movl	$2,_opr		/* first operand */
	movl	$7,_opr + 4	/* second operand */
	movl	$8,_opr + 8	/* third operand */
0:	movl	$7,r4		/* R4 = 7; R5 = 8 */
	movl	$8,r5
	movl	$2,r3
	addw3	r3,tab1[r4],tab3[r5]
	cmpl	tab3+16,result+16	/* compare result 	*/
	jeql	aldn		/* error if not equal; z flag not set */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	tab3+12,_actual	/* actual data */
	movl	result+12,_expected	/* expected data */
	jmp	*badrtn


aldn:	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
	jmp	*return
/*	test data		*/
	.align	2
tab1:
	.long	0x1fffffff
	.long	0xaabbccdd
	.long	0xccddeeff
	.long	0xeeeecaca
tab2:
	.long	0x00000001
	.long	0x20000000
	.long	0x06ffffff
tab3:
	.long	0
	.long	0xffff0000	/* should have expected result of 0x20000000 */
	.long	0xaaaaaaaa	/* should have expected result of 0x3fffffff */
	.long	0xcc00eeff	/* should have expected result of 0xcce0eeff */
	.long	0xffffffff
result:				/* Table contains expected results	*/
	.long	0x3fffffff
	.long	0x20000000
	.long	0xffffffb0
	.long	0xcce0eeff
	.long	0xcaccffff


unix.superglobalmegacorp.com

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