|
|
Power 6/32 Unix version 1.2b
/* MOVB instruction test */ /* MOVL,MOVW have been tested prior to this test. */ /* constant definitions */ .set HIGH,31 .set IPL,8 .set ZERO,0 .set ONES,0xffffffff .set IV,32 .set T,16 .set N,8 .set Z,4 .set V,2 .set C,1 .set NEGNO,0xa0ffffff .set NEGVAL,0xff0fffff .set WORD,0xffff .set BYTE,0xff .set MASKHW,0x55550000 .set MASKLB,0x55 .set MASKB,0x55555500 .globl _moveb _moveb: /* MOVE MEMORY TO REGISTER */ callf $4,_setjmp /* save context for error return */ movab _moveb,_stpc /* save starting address of subtest */ movl $1,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl negno,_opr /* first operand */ 0: movl $MASKHW,r4 /* initialize r4 = 0x55550000 */ bispsw $(Z|V|C) /* set z,v,c flags */ bicpsw $N /* clear n flag */ movb negno,r4 /* move word 0xa0 to r4 */ 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 expr4,r4 /* compare r4 to 0xffffffa0 */ jeql 1f /* 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 r4,_actual /* actual data */ movl expr4,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl $NEGNO,negno /* make sure source unchanged */ jeql movwrr /* error if not equal; z flag not set */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand miscompare */ movl negno,_actual /* actual data */ movl $NEGNO,_expected /* expected data */ jmp *badrtn movwrr: /* 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 starting address of subtest */ movl $2,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $MASKLB,_opr /* first operand */ 0: movl $MASKLB,r3 /* initialize r3 = 0x55 */ movl r3,expval movl $0xffffffff,r4 /* initialize r4 = 0xffffffff */ bispsw $(Z|N|V) /* set Z,V,N flags */ bicpsw $C /* clear C flag */ movb r3,r4 /* move r3 to r4 */ jlss error2 /* error if n flag 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: cmpl r4,expval jeql 1f /* 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 r4,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: movb r4,r5 movb r5,r6 /* move r5 to r6 */ movb r6,r7 /* move r6 to r7 */ movb r7,r9 /* move r7 to r9 */ movl r9,oldval /* save value of source = 0x00000055 */ movb r9,r11 /* move r9 to r11 */ cmpl expval,r11 /* compare r11 to 0x00000055 */ jeql 1f /* 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 r11,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl oldval,r9 /* make sure source unchanged */ jeql m3 /* 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 r9,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn m3: bbs $0,_force_lp,0b /* if set loop on last subtest */ am3: callf $4,_setjmp /* save context for error return */ movab am3,_stpc /* save starting address of subtest */ movl $3,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $-16,_opr /* first operand */ 0: movl $0x0,r4 movb $-16,r3 /* move byte 0xf0 to r3 */ movl r3,expval /* save source */ bispsw $(Z|V) bicpsw $(C|N) movb r3,r4 /* move 0xfffffff0 to r4 */ jgeq error3 /* error if n flag not set */ jeql error3 /* error if z flag 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 r4,expval jeql 1f /* 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 r4,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl r3,expval jeql movbmm /* error if not equal; z flag not set */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand miscompare */ movl r3,_actual /* actual data */ movl expval,_expected /* expected data */ jmp *badrtn movbmm: /* MOVE MEMORY TO MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ am4: callf $4,_setjmp /* save context for error return */ movab am4,_stpc /* save starting address of subtest */ movl $4,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0xff000000,_opr /* first operand */ 0: movl $0x0,tstloc movl $0xff000000,oprd movl oprd,oldval /* save source */ bispsw $(Z|V) /* set z,v flags */ bicpsw $(C|N) /* clear n,c flag */ movb oprd,tstloc+3 jgeq error4 /* error if n flag not set */ jeql error4 /* error if z flag set */ jvs error4 /* error if v flag set */ jcc error4 /* error if c flag not set */ jmp 1f error4: 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 $0x000000ff,tstloc /* compare tstloc to expected value */ jeql 1f /* 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 tstloc,_actual /* actual data */ movl $0x000000ff,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl oprd,oldval /* make sure source unchanged */ jeql m5 /* error if not equal; z flag not set */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand miscompare */ movl oprd,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn m5: bbs $0,_force_lp,0b /* if set loop on last subtest */ am5: callf $4,_setjmp /* save context for error return */ movab am5,_stpc /* save starting address of subtest */ movl $5,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0x55,_opr /* first operand */ 0: movl $0x55,tstloc movl tstloc,oldval /* save source */ bispsw $(N|V|Z) /* set n,v,z flags */ bicpsw $C /* clear c flag */ movb tstloc+3,oprd+3 jlss error5 /* error if n flag set */ jeql error5 /* error if z flag set */ jvs error5 /* error if v flag set */ jcc error5 /* error if c flag not set */ jmp 1f error5: 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 $0xff000055,oprd /* compare oprd to expected value */ jeql 1f /* 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 oprd,_actual /* actual data */ movl $0xff000055,_expected /* expected data */ jmp *badrtn 1: bicpsw $Z cmpl tstloc,oldval /* make sure source unchanged */ jeql movbdm /* error if not equal; z flag not set */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $3,_ercode /* error code operand miscompare */ movl tstloc,_actual /* actual data */ movl oldval,_expected /* expected data */ jmp *badrtn movbdm: /* MOVE DATA TO MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ am6: callf $4,_setjmp /* save context for error return */ movab am6,_stpc /* save starting address of subtest */ movl $6,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $-1,_opr /* first operand */ 0: movl $0x0,tstloc bispsw $(Z|V) /* set z,v flags */ bicpsw $(C|N) /* clear n,c flag */ movb $-1,tstloc+3 jgeq error6 /* error if n flag not set */ jeql error6 /* error if z flag set */ jvs error6 /* error if v flag set */ jcc error6 /* error if c flag not set */ jmp 1f error6: 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 $0x000000ff,tstloc /* compare tstloc to expected value */ jeql movbrm /* 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 tstloc,_actual /* actual data */ movl $0x000000ff,_expected /* expected data */ jmp *badrtn movbrm: /* MOVE DATA TO MEMORY */ bbs $0,_force_lp,0b /* if set loop on last subtest */ am7: callf $4,_setjmp /* save context for error return */ movab am7,_stpc /* save starting address of subtest */ movl $7,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0xaa,_opr /* first operand */ 0: movl $0x0,tstloc movl $0xaa,tmp /* load tmp to sign extend r5 contents */ movb tmp+3,r3 bispsw $(Z|V) /* set z,v flags */ bicpsw $(C|N) /* clear n,c flag */ movb r3,tstloc+3 jgeq error7 /* error if n flag not set */ jeql error7 /* error if z flag set */ jvs error7 /* error if v flag set */ jcc error7 /* error if c flag not set */ jmp 1f error7: 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 $0x000000aa,tstloc /* compare tstloc to expected value */ jeql movbdr /* 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 tstloc,_actual /* actual data */ movl $0x000000aa,_expected /* expected data */ jmp *badrtn movbdr: /* MOVE DATA TO REGISTER */ bbs $0,_force_lp,0b /* if set loop on last subtest */ am8: callf $4,_setjmp /* save context for error return */ movab am8,_stpc /* save starting address of subtest */ movl $8,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $0x55,_opr /* first operand */ 0: movl $MASKHW,r5 /* initialize r5 = 0x55550000 */ bispsw $(Z|V|C) /* set z,v,c flags */ bicpsw $N /* clear n flag */ movb $-0x60,r5 /* move word 0xa0 to r5 */ jgeq error8 /* error if n flag not set */ jeql error8 /* error if z flag set */ jvs error8 /* error if v flag set */ jcc error8 /* error if c flag not set */ jmp 1f error8: 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 expr4,r5 /* compare r5 to 0xffffffa0 */ 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 r5,_actual /* actual data */ movl expr4,_expected /* expected data */ jmp *badrtn aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ jmp *return /* test data */ .align 2 expval: .long 0x0 oldval: .long 0x0 negno: .long NEGNO expr4: .long 0xffffffa0 tstloc: .long 0x0 oprd: .long 0x0 tmp: .long 0x0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.