|
|
Power 6/32 Unix version 1.2b
/* This program tests the instruction LOADR. */ # R2 : error code # 1 = error in flags # 2 = mask operand changed # 3 = register did not get loaded correctly .set N,8 .set Z,4 .set V,2 .set C,1 .globl _loadr _loadr: callf $4,_setjmp /* save context for return from error */ movab _loadr,_stpc /* save subtest starting address */ movl $1,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0,_opr /* first operand */ 0: movl $0xffffffff,r0 /* load r0 - r13 with known data */ movl r0,r1 movl r1,r2 movl r2,r3 movl r3,r4 movl r4,r5 movl r5,r6 movl r6,r7 movl r7,r8 movl r8,r9 movl r9,r10 movl r10,r11 movl r11,r12 movl r12,r13 movl $0,mask /* set mask */ bicpsw $(Z|V) /* clear z,v flags */ bispsw $(N|C) /* set n,c flag */ loadr mask,l0 /* this is the tested instruction */ jeql error0 /* error if Z set */ jvs error0 /* error if V set */ jgeq error0 /* error if N not set */ jcc error0 /* error if C not set */ jmp 1f error0: 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 $0,mask /* check if mask changed */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was changed */ movl mask,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r0 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r0,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r1 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r1,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r2 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r2,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r3 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r4 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 $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r5 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r6 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r6,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r7 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r7,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r8 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r8,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r9 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r9,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r10 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r10,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r11 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r11,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r12 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 $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r13 jeql next bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r13,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn next: bbs $0,_force_lp,0b /* if set loop on last subtest */ al2: callf $4,_setjmp /* save context for return from error */ movab al2,_stpc /* save subtest starting address */ movl $2,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0x2ad5,_opr /* first operand */ 0: movw $0x2ad5,mask /* Set mask to load r0,r2,r4,r6,r7,r9,r11,r13 */ movw mask,r10 /* use a register to contain mask */ bicpsw $(Z|V|N|C) /* clear all flags */ loadr r10,l0 /* this is the tested instruction */ jeql error1 /* error if Z set */ jvs error1 /* error if V set */ jlss error1 /* error if N set */ jcs error1 /* error if C 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 $0x2ad5,r10 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was changed */ movl r10,_actual /* actual data */ movl $0x2ad5,_expected /* expected data */ jmp *badrtn 1: cmpl $0,r0 /* Check if registers loaded correctly */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r0,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r1 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r1,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0x11111111,r2 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r2,_actual /* actual data */ movl $0x11111111,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r3 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0x22222222,r4 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 $0x22222222,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r5 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0x33333333,r6 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r6,_actual /* actual data */ movl $0x33333333,_expected /* expected data */ jmp *badrtn 1: cmpl $0x44444444,r7 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r7,_actual /* actual data */ movl $0x44444444,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r8 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r8,_actual /* actual data */ movl $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0x55555555,r9 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r9,_actual /* actual data */ movl $0x55555555,_expected /* expected data */ jmp *badrtn 1: cmpl $0x66666666,r11 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r11,_actual /* actual data */ movl $0x66666666,_expected /* expected data */ jmp *badrtn 1: cmpl $0xffffffff,r12 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 $0xffffffff,_expected /* expected data */ jmp *badrtn 1: cmpl $0x77777777,r13 jeql next1 bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r13,_actual /* actual data */ movl $0x77777777,_expected /* expected data */ jmp *badrtn next1: bbs $0,_force_lp,0b /* if set loop on last subtest */ al3: callf $4,_setjmp /* save context for return from error */ movab al3,_stpc /* save subtest starting address */ movl $3,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0x3fff,_opr /* first operand */ 0: movl $0xffffffff,r0 /* load r0 - r13 with known data */ movl r0,r1 movl r1,r2 movl r2,r3 movl r3,r4 movl r4,r5 movl r5,r6 movl r6,r7 movl r7,r8 movl r8,r9 movl r9,r10 movl r10,r11 movl r11,r12 movl r12,r13 movw $0x3fff,mask /* Set mask to load all registers */ bicpsw $(Z|V|N|C) /* clear all flags */ loadr mask,l0 /* this is the tested instruction */ jeql error2 /* error if Z set */ jvs error2 /* error if V set */ jlss error2 /* error if N set */ jcs error2 /* error if C 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: cmpl $0x3fff0000,mask jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand was changed */ movl mask,_actual /* actual data */ movl $0x3fff0000,_expected /* expected data */ jmp *badrtn 1: cmpl $0,r0 /* Check if registers loaded correctly */ jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r0,_actual /* actual data */ movl $0,_expected /* expected data */ jmp *badrtn 1: cmpl $0x11111111,r1 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r1,_actual /* actual data */ movl $0x11111111,_expected /* expected data */ jmp *badrtn 1: cmpl $0x22222222,r2 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r2,_actual /* actual data */ movl $0x22222222,_expected /* expected data */ jmp *badrtn 1: cmpl $0x33333333,r3 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r3,_actual /* actual data */ movl $0x33333333,_expected /* expected data */ jmp *badrtn 1: cmpl $0x44444444,r4 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 $0x44444444,_expected /* expected data */ jmp *badrtn 1: cmpl $0x55555555,r5 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r5,_actual /* actual data */ movl $0x55555555,_expected /* expected data */ jmp *badrtn 1: cmpl $0x66666666,r6 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r6,_actual /* actual data */ movl $0x66666666,_expected /* expected data */ jmp *badrtn 1: cmpl $0x77777777,r7 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r7,_actual /* actual data */ movl $0x77777777,_expected /* expected data */ jmp *badrtn 1: cmpl $0x88888888,r8 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r8,_actual /* actual data */ movl $0x88888888,_expected /* expected data */ jmp *badrtn 1: cmpl $0x99999999,r9 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r9,_actual /* actual data */ movl $0x99999999,_expected /* expected data */ jmp *badrtn 1: cmpl $0xaaaaaaaa,r10 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r10,_actual /* actual data */ movl $0xaaaaaaaa,_expected /* expected data */ jmp *badrtn 1: cmpl $0xbbbbbbbb,r11 jeql 1f bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r11,_actual /* actual data */ movl $0xbbbbbbbb,_expected /* expected data */ jmp *badrtn 1: cmpl $0xcccccccc,r12 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 $0xcccccccc,_expected /* expected data */ jmp *badrtn 1: cmpl $0xdddddddd,r13 jeql aldn bbs $0,_scoplp,0b /* if set scope loop on error */ movl $1,_ercode /* error code data miscompare */ movl r13,_actual /* actual data */ movl $0xdddddddd,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* data space */ .align 2 mask: .long 0 l0: .long 0 l1: .long 0x11111111 l2: .long 0x22222222 l3: .long 0x33333333 l4: .long 0x44444444 l5: .long 0x55555555 l6: .long 0x66666666 l7: .long 0x77777777 l8: .long 0x88888888 l9: .long 0x99999999 l10: .long 0xaaaaaaaa l11: .long 0xbbbbbbbb l12: .long 0xcccccccc l13: .long 0xdddddddd .long 0xabababab where: .long 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.