|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.