|
|
1.1 ! root 1: /* SHRQ instruction test */ ! 2: /* Privilege registers */ ! 3: ! 4: .set IPL,8 ! 5: .set MAPEN,9 ! 6: .set KSP,19 ! 7: ! 8: /* PSL fields */ ! 9: .set IV,32 ! 10: .set T,16 ! 11: .set N,8 ! 12: .set Z,4 ! 13: .set V,2 ! 14: .set C,1 ! 15: ! 16: /* constants */ ! 17: .set DISABLE,0 ! 18: .set ENABLE,1 ! 19: .set HIGH,31 /* highest interrupt priority */ ! 20: ! 21: .globl _shrq ! 22: _shrq: ! 23: callf $4,_setjmp /* save context for error return */ ! 24: movab _shrq,_stpc /* starting address of subtest */ ! 25: movl $1,_subtst /* subtest number */ ! 26: movl $3,_no_opr /* number of operands in use */ ! 27: movl $32,_opr /* first operand */ ! 28: movl $0,_opr + 4 /* second operand */ ! 29: movl $0xffffffff,_opr + 8 /* third operand */ ! 30: 0: bicpsw $(IV|T) /* disable exceptions */ ! 31: /* */ ! 32: srq: /* SHIFT RIGHT QUAD FROM MEMORY TO REGISTER */ ! 33: movl $0,sloc0 /* set sloc0 */ ! 34: movl $0xffffffff,sloc1 /* set sloc1 = 0xffffffff */ ! 35: movl $0xffffffff,r4 ! 36: movl $0xffffffff,r5 ! 37: bispsw $(V|N|C) /* set n,v,c flags */ ! 38: bicpsw $Z /* clear z flag */ ! 39: shrq $32,sloc0,r4 /* shift right 32 and put in r4,r5 */ ! 40: jneq error1 /* error if z flag not set */ ! 41: jcc error1 /* error if c flag not set */ ! 42: jvs error1 /* error if v flag set */ ! 43: jlss error1 /* error if n flag set */ ! 44: jmp 1f ! 45: error1: movpsl _actual /* actual = psl maybe incorrect */ ! 46: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 47: movl $2,_ercode /* error code flag failure */ ! 48: jmp *badrtn ! 49: 1: bicpsw $Z ! 50: cmpl r5,$0 /* check result */ ! 51: jeql 1f /* if correct continue */ ! 52: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 53: movl $1,_ercode /* error code data miscompare */ ! 54: movl r5,_actual /* actual data */ ! 55: movl $0,_expected /* expected data */ ! 56: jmp *badrtn ! 57: 1: bicpsw $Z ! 58: cmpl r4,$0 ! 59: jeql 1f /* if correct continue */ ! 60: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 61: movl $1,_ercode /* error code data miscompare */ ! 62: movl r4,_actual /* actual data */ ! 63: movl $0,_expected /* expected data */ ! 64: jmp *badrtn ! 65: 1: bicpsw $Z ! 66: cmpl $0xffffffff,sloc1 /* check if source get affected */ ! 67: jeql 1f /* if correct continue */ ! 68: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 69: movl $3,_ercode /* error code operand miscompare */ ! 70: movl sloc1,_actual /* actual data */ ! 71: movl $0xffffffff,_expected /* expected data */ ! 72: jmp *badrtn ! 73: 1: bicpsw $Z ! 74: cmpl sloc0,$0 ! 75: jeql s2 /* if correct continue */ ! 76: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 77: movl $3,_ercode /* error code operand miscompare */ ! 78: movl sloc0,_actual /* actual data */ ! 79: movl $0,_expected /* expected data */ ! 80: jmp *badrtn ! 81: /* SHIFT RIGHT QUAD FROM REGISTER TO MEMORY */ ! 82: s2: ! 83: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 84: as2: callf $4,_setjmp /* save context for error return */ ! 85: movab as2,_stpc /* starting address of subtest */ ! 86: movl $2,_subtst /* subtest number */ ! 87: movl $3,_no_opr /* number of operands in use */ ! 88: movl $30,_opr /* first operand */ ! 89: movl $0xffffffff,_opr + 4 /* second operand */ ! 90: movl $0xffffffff,_opr + 8 /* third operand */ ! 91: 0: movl $0xffffffff,dloc0 /* set dloc0 = dloc1 = 0xffffffff */ ! 92: movl dloc0,dloc1 ! 93: movb $30,temp /* set temp = shift count */ ! 94: bispsw $(N|V|C) /* set n,v,c flags */ ! 95: bicpsw $Z /* clear z flag */ ! 96: shrq temp,r4,dloc0 /* shift r4,r5 left 32 and put in dloc */ ! 97: jneq error2 /* error if z flag not set */ ! 98: jcc error2 /* error if c flag not set */ ! 99: jvs error2 /* error if v flag set */ ! 100: jlss error2 /* error if n flag set */ ! 101: jmp 1f ! 102: error2: movpsl _actual /* actual = psl maybe incorrect */ ! 103: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 104: movl $2,_ercode /* error code flag failure */ ! 105: jmp *badrtn ! 106: 1: cmpl dloc0,$0 /* check result */ ! 107: jeql 1f /* if correct continue */ ! 108: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 109: movl $1,_ercode /* error code data miscompare */ ! 110: movl dloc0,_actual /* actual data */ ! 111: movl $0,_expected /* expected data */ ! 112: jmp *badrtn ! 113: 1: bicpsw $Z ! 114: cmpl dloc1,dloc0 ! 115: jeql 1f /* if correct continue */ ! 116: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 117: movl $1,_ercode /* error code data miscompare */ ! 118: movl dloc1,_actual /* actual data */ ! 119: movl dloc0,_expected /* expected data */ ! 120: jmp *badrtn ! 121: 1: bicpsw $Z ! 122: cmpl r4,$0 /* make sure source unchanged */ ! 123: jeql 1f /* if correct continue */ ! 124: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 125: movl $3,_ercode /* error code operand miscompare */ ! 126: movl r4,_actual /* actual data */ ! 127: movl $0,_expected /* expected data */ ! 128: jmp *badrtn ! 129: 1: bicpsw $Z ! 130: cmpl r5,$0 ! 131: jeql s3 /* if correct continue */ ! 132: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 133: movl $3,_ercode /* error code operand miscompare */ ! 134: movl r5,_actual /* actual data */ ! 135: movl $0,_expected /* expected data */ ! 136: jmp *badrtn ! 137: /* SHIFT RIGHT QUAD FROM MEMORY TO MEMORY */ ! 138: s3: ! 139: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 140: as3: callf $4,_setjmp /* save context for error return */ ! 141: movab as3,_stpc /* starting address of subtest */ ! 142: movl $3,_subtst /* subtest number */ ! 143: movl $3,_no_opr /* number of operands in use */ ! 144: movl $3,_opr /* first operand */ ! 145: movl $0x55555555,_opr + 4 /* second operand */ ! 146: movl $0x55555555,_opr + 8 /* third operand */ ! 147: 0: movl $0x55555555,sloc0 /* set sloc0 = sloc1 = 0x55555555 */ ! 148: movl sloc0,sloc1 ! 149: movb $3,r3 /* set r3 = shift count */ ! 150: bispsw $(Z|V|C) /* set v,z,c flags */ ! 151: bicpsw $N ! 152: shrq r3,sloc0,sloc0 /* shift and put result back in sloc0 */ ! 153: jlss error3 /* error if n flag still set */ ! 154: jvs error3 /* error if v flag still set */ ! 155: jeql error3 /* error if z flag still set */ ! 156: jcc error3 /* error if c flag not set */ ! 157: jmp 1f ! 158: error3: movpsl _actual /* actual = psl maybe incorrect */ ! 159: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 160: movl $2,_ercode /* error code flag failure */ ! 161: jmp *badrtn ! 162: 1: cmpl sloc0,$0xaaaaaaa /* check result */ ! 163: jeql 1f /* if correct continue */ ! 164: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 165: movl $1,_ercode /* error code data miscompare */ ! 166: movl sloc0,_actual /* actual data */ ! 167: movl $0xaaaaaaaa,_expected /* expected data */ ! 168: jmp *badrtn ! 169: 1: bicpsw $Z ! 170: cmpl sloc1,$0xaaaaaaaa ! 171: jeql s4 /* if correct continue */ ! 172: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 173: movl $1,_ercode /* error code data miscompare */ ! 174: movl sloc1,_actual /* actual data */ ! 175: movl $0xaaaaaaaa,_expected /* expected data */ ! 176: jmp *badrtn ! 177: /* SPECIAL CASES */ ! 178: /* shift count = 0 */ ! 179: s4: ! 180: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 181: as4: callf $4,_setjmp /* save context for error return */ ! 182: movab as4,_stpc /* starting address of subtest */ ! 183: movl $4,_subtst /* subtest number */ ! 184: movl $3,_no_opr /* number of operands in use */ ! 185: movl $0,_opr /* first operand */ ! 186: movl $0xfedcba98,_opr + 4 /* second operand */ ! 187: movl $0x76543210,_opr + 8 /* third operand */ ! 188: 0: movl $0,r10 /* set r10 = r11 = 0 */ ! 189: movl r10,r11 ! 190: movl r11,r6 /* set r6 = shift count */ ! 191: movl $0xfedcba98,r4 /* set r4 = 0xfedcba98 */ ! 192: movl $0x76543210,r5 /* set r8 = 0x76543210 */ ! 193: bispsw $(C|Z|V) /* set c,z,v flags */ ! 194: bicpsw $N ! 195: shrq r6,r4,r10 /* shift right 0 and put in r10,r11 */ ! 196: jgeq error4 /* error if n flag not set */ ! 197: jcc error4 /* error if c flag not set */ ! 198: jeql error4 /* error if z flag still set */ ! 199: jvs error4 /* error if v flag still set */ ! 200: jmp 1f ! 201: error4: movpsl _actual /* actual = psl maybe incorrect */ ! 202: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 203: movl $2,_ercode /* error code flag failure */ ! 204: jmp *badrtn ! 205: 1: cmpl $0xfedcba98,r10 /* check result */ ! 206: jeql 1f /* if correct continue */ ! 207: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 208: movl $1,_ercode /* error code data miscompare */ ! 209: movl r10,_actual /* actual data */ ! 210: movl $0xfedcba98,_expected /* expected data */ ! 211: jmp *badrtn ! 212: 1: bicpsw $Z ! 213: cmpl $0x76543210,r11 ! 214: jeql 1f /* if correct continue */ ! 215: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 216: movl $1,_ercode /* error code data miscompare */ ! 217: movl r11,_actual /* actual data */ ! 218: movl $0x76543210,_expected /* expected data */ ! 219: jmp *badrtn ! 220: 1: bicpsw $Z ! 221: cmpl r4,r10 /* make sure source unchanged */ ! 222: jeql 1f /* if correct continue */ ! 223: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 224: movl $3,_ercode /* error code operand miscompare */ ! 225: movl r4,_actual /* actual data */ ! 226: movl r10,_expected /* expected data */ ! 227: jmp *badrtn ! 228: 1: bicpsw $Z ! 229: cmpl r5,r11 ! 230: jeql s5 /* if correct continue */ ! 231: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 232: movl $3,_ercode /* error code operand miscompare */ ! 233: movl r5,_actual /* actual data */ ! 234: movl r11,_expected /* expected data */ ! 235: jmp *badrtn ! 236: /* shift count = 64 */ ! 237: s5: ! 238: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 239: as5: callf $4,_setjmp /* save context for error return */ ! 240: movab as5,_stpc /* starting address of subtest */ ! 241: movl $5,_subtst /* subtest number */ ! 242: movl $3,_no_opr /* number of operands in use */ ! 243: movl $64,_opr /* first operand */ ! 244: movl $0xfedcba98,_opr + 4 /* second operand */ ! 245: movl $0x76543210,_opr + 8 /* third operand */ ! 246: 0: movl $0xffffffff,r4 ! 247: movl r4,r5 ! 248: movb $64,temp /* set shift count = 64 */ ! 249: bispsw $(N|V|C) /* set n,c,v flags */ ! 250: bicpsw $Z /* clear z flag */ ! 251: shrq temp,r10,r4 /* shift r10,r11 left 64 and put in r4,r5*/ ! 252: jneq error5 /* error if z flag not set */ ! 253: jcc error5 /* error if c flag not set */ ! 254: jlss error5 /* error if v,n flag set */ ! 255: jvs error5 ! 256: jmp 1f ! 257: error5: movpsl _actual /* actual = psl maybe incorrect */ ! 258: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 259: movl $2,_ercode /* error code flag failure */ ! 260: jmp *badrtn ! 261: 1: bicpsw $Z ! 262: cmpl r4,$0 /* check result */ ! 263: jeql 1f /* if correct continue */ ! 264: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 265: movl $1,_ercode /* error code data miscompare */ ! 266: movl r4,_actual /* actual data */ ! 267: movl $0,_expected /* expected data */ ! 268: jmp *badrtn ! 269: 1: bicpsw $Z ! 270: cmpl r4,r5 ! 271: jeql 1f /* if correct continue */ ! 272: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 273: movl $1,_ercode /* error code data miscompare */ ! 274: movl r5,_actual /* actual data */ ! 275: movl r4,_expected /* expected data */ ! 276: jmp *badrtn ! 277: 1: bicpsw $Z ! 278: cmpl r10,$0xfedcba98 /* make sure source unchanged */ ! 279: jeql 1f /* if correct continue */ ! 280: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 281: movl $3,_ercode /* error code operand miscompare */ ! 282: movl r10,_actual /* actual data */ ! 283: movl $0xfedcba98,_expected /* expected data */ ! 284: jmp *badrtn ! 285: 1: bicpsw $Z ! 286: cmpl r11,$0x76543210 ! 287: jeql s6 /* if correct continue */ ! 288: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 289: movl $3,_ercode /* error code operand miscompare */ ! 290: movl r11,_actual /* actual data */ ! 291: movl $0x76543210,_expected /* expected data */ ! 292: jmp *badrtn ! 293: ! 294: /* SHIFT RIGHT QUAD FROM DATA TO MEMORY */ ! 295: s6: ! 296: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 297: as6: callf $4,_setjmp /* save context for error return */ ! 298: movab as6,_stpc /* starting address of subtest */ ! 299: movl $6,_subtst /* subtest number */ ! 300: movl $3,_no_opr /* number of operands in use */ ! 301: movl $32,_opr /* first operand */ ! 302: movl $0xffffffff,_opr + 4 /* second operand */ ! 303: movl $0,_opr + 8 /* third operand */ ! 304: 0: movl $0xffffffff,dloc0 /* set dloc0 = dloc1 = 0xffffffff */ ! 305: movl dloc0,dloc1 ! 306: movb $32,temp /* set temp = shift count */ ! 307: bispsw $(N|V|C) /* set n,v,c flags */ ! 308: bicpsw $Z /* clear z flag */ ! 309: shrq temp,$0xffffffff,dloc0 /* shift data left 32 and put in dloc */ ! 310: jeql error6 /* error if z flag set */ ! 311: jcc error6 /* error if c flag not set */ ! 312: jvs error6 /* error if v flag set */ ! 313: jlss error6 /* error if n flag set */ ! 314: jmp 1f ! 315: error6: movpsl _actual /* actual = psl maybe incorrect */ ! 316: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 317: movl $2,_ercode /* error code flag failure */ ! 318: jmp *badrtn ! 319: 1: cmpl dloc0,$0 /* check result */ ! 320: jeql 1f /* if correct continue */ ! 321: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 322: movl $1,_ercode /* error code data miscompare */ ! 323: movl dloc0,_actual /* actual data */ ! 324: movl $0,_expected /* expected data */ ! 325: jmp *badrtn ! 326: 1: bicpsw $Z ! 327: cmpl dloc1,$0xffffffff ! 328: jeql aldn /* if correct continue */ ! 329: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 330: movl $1,_ercode /* error code data miscompare */ ! 331: movl dloc1,_actual /* actual data */ ! 332: movl $0xffffffff,_expected /* expected data */ ! 333: jmp *badrtn ! 334: ! 335: ! 336: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 337: jmp *return ! 338: ! 339: ! 340: /* test data */ ! 341: .align 2 /* align on longword */ ! 342: sloc0: .long 0 ! 343: sloc1: .long 0 ! 344: dloc0: .long 0 ! 345: dloc1: .long 0 ! 346: temp: .long 0 ! 347:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.