Annotation of cci/d/entry/shlq.s, revision 1.1

1.1     ! root        1: /*     SHLQ 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    MAXPOSL,0x7fffffff
        !            20:        .set    MAXNEGL,0x80000000
        !            21:        .set    MAXPOSW,0x7fff
        !            22:        .set    MAXNEGW,0x8000
        !            23:        .set    MAXPOSB,0x7f
        !            24:        .set    MAXNEGB,0x80
        !            25:        .set    ZERO,0
        !            26:        .set    ONES,0xffffffff
        !            27:        .set    HIGH,31                 /* highest interrupt priority   */
        !            28: 
        !            29:        .globl  _shlq
        !            30: _shlq:
        !            31:        callf   $4,_setjmp      /* save context for error return */
        !            32:        movab   _shlq,_stpc     /* save subtest starting address */
        !            33:        movl    $1,_subtst      /* subtest number */
        !            34:        movl    $2,_no_opr      /* number of operands in use */
        !            35:        movl    $32,_opr        /* first operand */
        !            36:        movl    $0xffffffff,_opr + 4 /* second operand */
        !            37: 0:     bicpsw  $(IV|T)         /* disable exceptions           */
        !            38: slq:                           /* SHIFT LEFT QUAD FROM MEMORY TO REGISTER */
        !            39:        movl    $1,r1           /* R1 : indicate which part of the test */
        !            40:        movl    $0,sloc1                /* set sloc1            */
        !            41:        movl    $0xffffffff,sloc0       /* set sloc0 = 0xffffffff       */
        !            42:        movl    $0xffffffff,r4
        !            43:        movl    $0xffffffff,r5
        !            44:        bispsw  $(V|N)                  /* set n,v  flags               */
        !            45:        bicpsw  $(Z|C)                  /* clear z,c flag               */
        !            46:                                /* data memory register */
        !            47:        shlq    $32,sloc0,r4            /* shift left 32 and put in r4,r5 */
        !            48:        jlss    error1                  /* error if n flag set          */
        !            49:        jvs     error1                  /* error if v flag set          */
        !            50:        jneq    error1                  /* error if z flag not set      */
        !            51:        jcc     error1                  /* error if c flag not set      */
        !            52:        jmp     1f
        !            53: error1:        movpsl  _actual         /* actual = psl maybe is incorrect */
        !            54:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            55:        movl    $2,_ercode      /* error code flag failure */
        !            56:        jmp     *badrtn
        !            57: 1:     cmpl    r5,$0x0                 /* check result                 */
        !            58:        jeql    1f              /* if no error continue */
        !            59:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            60:        movl    $1,_ercode      /* error code data miscompare */
        !            61:        movl    r5,_actual      /* actual data */
        !            62:        movl    $0,_expected    /* expected data */
        !            63:        jmp     *badrtn
        !            64: 1:     bicpsw  $Z
        !            65:        cmpl    r4,$0
        !            66:        jeql    1f              /* if no error continue */
        !            67:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            68:        movl    $1,_ercode      /* error code data miscompare */
        !            69:        movl    r4,_actual      /* actual data */
        !            70:        movl    $0,_expected    /* expected data */
        !            71:        jmp     *badrtn
        !            72: 1:     bicpsw  $Z
        !            73:        cmpl    $0xffffffff,sloc0       /* check if source get affected */
        !            74:        jeql    1f              /* if no error continue */
        !            75:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            76:        movl    $3,_ercode      /* error code operand miscompare */
        !            77:        movl    sloc0,_actual   /* actual data */
        !            78:        movl    $0xffffffff,_expected   /* expected data */
        !            79:        jmp     *badrtn
        !            80: 1:     bicpsw  $Z
        !            81:        cmpl    sloc1,$0
        !            82:        jeql    s2              /* if no error continue */
        !            83:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !            84:        movl    $3,_ercode      /* error code operand miscompare */
        !            85:        movl    sloc1,_actual   /* actual data */
        !            86:        movl    $0,_expected    /* expected data */
        !            87:        jmp     *badrtn
        !            88: /*                               SHIFT LEFT QUAD FROM REGISTER TO MEMORY */
        !            89: s2:
        !            90:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !            91: as2:   callf   $4,_setjmp      /* save context for error return */
        !            92:        movab   as2,_stpc       /* save subtest starting address */
        !            93:        movl    $2,_subtst      /* subtest number */
        !            94:        movl    $2,_no_opr      /* number of operands in use */
        !            95:        movl    $32,_opr        /* first operand */
        !            96:        movl    $0,_opr + 4     /* second operand */
        !            97: 0:     movl    $0xffffffff,dloc0       /* set dloc0 = dloc1 = 0xffffffff */
        !            98:        movl    dloc0,dloc1
        !            99:        movb    $32,temp                /* set temp = shift count       */
        !           100:        bispsw  $(V|N)                  /* set v,n flags                */
        !           101:        bicpsw  $(Z|C)                  /* clear z,c flags              */
        !           102:                                /* memory register memory */
        !           103:        shlq    temp,r4,dloc0   /* shift r4,r5 left 32 and put in dloc  */
        !           104:        jvs     error2          /* error if v flag set                  */
        !           105:        jlss    error2          /* error if n flag set                  */
        !           106:        jneq    error2          /* error if z flag not set              */
        !           107:        jcc     error2          /* error if c flag not set              */
        !           108:        jmp     1f
        !           109: error2:        movpsl  _actual         /* actual = psl maybe is incorrect */
        !           110:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           111:        movl    $2,_ercode      /* error code flag failure */
        !           112:        jmp     *badrtn
        !           113: 1:     bicpsw  $Z
        !           114:        cmpl    dloc0,$0        /* check result                         */
        !           115:        jeql    1f              /* if no error continue */
        !           116:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           117:        movl    $1,_ercode      /* error code data miscompare */
        !           118:        movl    dloc0,_actual   /* actual data */
        !           119:        movl    $0,_expected    /* expected data */
        !           120:        jmp     *badrtn
        !           121: 1:     bicpsw  $Z
        !           122:        cmpl    dloc1,dloc0
        !           123:        jeql    1f              /* if no error continue */
        !           124:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           125:        movl    $1,_ercode      /* error code data miscompare */
        !           126:        movl    dloc1,_actual   /* actual data */
        !           127:        movl    dloc0,_expected /* expected data */
        !           128:        jmp     *badrtn
        !           129: 1:     bicpsw  $Z
        !           130:        cmpl    r5,$0x0         /* make sure source unchanged           */
        !           131:        jeql    1f              /* if no error 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: 1:     bicpsw  $Z
        !           138:        cmpl    r4,$0
        !           139:        jeql    s3              /* if no error continue */
        !           140:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           141:        movl    $3,_ercode      /* error code operand miscompare */
        !           142:        movl    r4,_actual      /* actual data */
        !           143:        movl    $0,_expected    /* expected data */
        !           144:        jmp     *badrtn
        !           145: /*                               SHIFT LEFT QUAD FROM MEMORY TO MEMORY */
        !           146: s3:
        !           147:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           148: as3:   callf   $4,_setjmp      /* save context for error return */
        !           149:        movab   as3,_stpc       /* save subtest starting address */
        !           150:        movl    $3,_subtst      /* subtest number */
        !           151:        movl    $2,_no_opr      /* number of operands in use */
        !           152:        movl    $3,_opr         /* first operand */
        !           153:        movl    $0x55555555,_opr + 4    /* second operand */
        !           154: 0:     movl    $0x55555555,sloc0       /* set sloc0 = sloc1 = 0x55555555 */
        !           155:        movl    sloc0,sloc1
        !           156:        movl    $3,r3           /* set r3 = shift count         */
        !           157:        bispsw  $(V|Z)          /* set z flags                          */
        !           158:        bicpsw  $(C|N)          /* clear c,n flags                      */
        !           159:                                /* register memory memory */
        !           160:        shlq    r3,sloc0,sloc0  /* shift and put result back in sloc0  */
        !           161:        jgeq    error3          /* error if n flag not set              */
        !           162:        jvs     error3          /* error if v flag set                  */
        !           163:        jcc     error3          /* error if c flags not set             */
        !           164:        jeql    error3          /* error if z flag still set            */
        !           165:        jmp     1f
        !           166: error3:        movpsl  _actual         /* actual = psl maybe is incorrect */
        !           167:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           168:        movl    $2,_ercode      /* error code flag failure */
        !           169:        jmp     *badrtn
        !           170: 1:     cmpl    sloc0,$0xaaaaaaaa       /* check result                 */
        !           171:        jeql    1f              /* if no error continue */
        !           172:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           173:        movl    $1,_ercode      /* error code data miscompare */
        !           174:        movl    sloc0,_actual   /* actual data */
        !           175:        movl    $0xaaaaaaaa,_expected   /* expected data */
        !           176:        jmp     *badrtn
        !           177: 1:     bicpsw  $Z
        !           178:        cmpl    sloc1,$0xaaaaaaa8
        !           179:        jeql    s4              /* if no error continue */
        !           180:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           181:        movl    $1,_ercode      /* error code data miscompare */
        !           182:        movl    sloc1,_actual   /* actual data */
        !           183:        movl    $0xaaaaaaa8,_expected   /* expected data */
        !           184:        jmp     *badrtn
        !           185: /*                               SPECIAL CASES                         */
        !           186: /*                                     shift count = 0                 */
        !           187: s4:
        !           188:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           189: as4:   callf   $4,_setjmp      /* save context for error return */
        !           190:        movab   as4,_stpc       /* save subtest starting address */
        !           191:        movl    $4,_subtst      /* subtest number */
        !           192:        movl    $3,_no_opr      /* number of operands in use */
        !           193:        movl    $0,_opr         /* first operand */
        !           194:        movl    $0x12345678,_opr + 4    /* second operand */
        !           195:        movl    $0x9abcdef0,_opr + 8 /* third operand */
        !           196: 0:     movl    $0,r10                  /* set r10 = r11 = 0            */
        !           197:        movl    r10,r11
        !           198:        movl    r11,r6                  /* set r6 = shift count         */
        !           199:        movl    $0x12345678,r8          /* set r8 = 0x12345678          */
        !           200:        movl    $0x9abcdef0,r9          /* set r9 = 0x9abcdef0          */
        !           201:        bispsw  $(N|Z|V|C)              /* set n,z,v,c flags            */
        !           202:                                /* register register register */
        !           203:        shlq    r6,r8,r10       /* shift left 0 and put in r10,r11      */
        !           204:        jlss    error4                  /* error if n flag still set    */
        !           205:        jeql    error4                  /* error if z flag still set    */
        !           206:        jvs     error4                  /* error if v flag still set    */
        !           207:        jcc     error4                  /* error if c flag not set      */
        !           208:        jmp     1f
        !           209: error4:        movpsl  _actual         /* actual = psl maybe is incorrect */
        !           210:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           211:        movl    $2,_ercode      /* error code flag failure */
        !           212:        jmp     *badrtn
        !           213: 1:     cmpl    $0x12345678,r10         /* check result                 */
        !           214:        jeql    1f              /* if no error continue */
        !           215:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           216:        movl    $1,_ercode      /* error code data miscompare */
        !           217:        movl    r10,_actual     /* actual data */
        !           218:        movl    $0x12345678,_expected   /* expected data */
        !           219:        jmp     *badrtn
        !           220: 1:     bicpsw  $Z
        !           221:        cmpl    $0x9abcdef0,r11
        !           222:        jeql    1f              /* if no error continue */
        !           223:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           224:        movl    $1,_ercode      /* error code data miscompare */
        !           225:        movl    r11,_actual     /* actual data */
        !           226:        movl    $0x9abcdef0,_expected   /* expected data */
        !           227:        jmp     *badrtn
        !           228: 1:     bicpsw  $Z
        !           229:        cmpl    r8,r10                  /* make sure source unchanged   */
        !           230:        jeql    1f              /* if no error continue */
        !           231:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           232:        movl    $3,_ercode      /* error code operand miscompare */
        !           233:        movl    r8,_actual      /* actual data */
        !           234:        movl    r10,_expected   /* expected data */
        !           235:        jmp     *badrtn
        !           236: 1:     bicpsw  $Z
        !           237:        cmpl    r9,r11
        !           238:        jeql    s5              /* if no error continue */
        !           239:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           240:        movl    $3,_ercode      /* error code operand miscompare */
        !           241:        movl    r9,_actual      /* actual data */
        !           242:        movl    r11,_expected   /* expected data */
        !           243:        jmp     *badrtn
        !           244: /*                                     shift count > 64                */
        !           245: s5:
        !           246:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           247: as5:   callf   $4,_setjmp      /* save context for error return */
        !           248:        movab   as5,_stpc       /* save subtest starting address */
        !           249:        movl    $5,_subtst      /* subtest number */
        !           250:        movl    $3,_no_opr      /* number of operands in use */
        !           251:        movl    $64,_opr                /* first operand */
        !           252:        movl    $0x12345678,_opr + 4    /* second operand */
        !           253:        movl    $0x9abcdef0,_opr + 8 /* third operand */
        !           254: 0:     movb    $64,temp        /* set shift count = 64                 */
        !           255:        bispsw  $(N|V)          /* set n,v flags                        */
        !           256:        bicpsw  $(C|Z)          /* clear c,z flag                       */
        !           257:                                /* memory register memory */
        !           258:        shlq    temp,r10,sloc0  
        !           259:                        /* shift r10,11 left 64 and put in sloc0,sloc1 */
        !           260:        jneq    error5          /* error if z flag not set              */
        !           261:        jcc     error5          /* error if c flags not set             */
        !           262:        jlss    error5          /* error if n,v flags still set         */
        !           263:        jvs     error5
        !           264:        jmp     1f
        !           265: error5:        movpsl  _actual         /* actual = psl maybe is incorrect */
        !           266:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           267:        movl    $2,_ercode      /* error code flag failure */
        !           268:        jmp     *badrtn
        !           269: 1:     bicpsw  $Z
        !           270:        cmpl    sloc0,$0        /* check result                         */
        !           271:        jeql    1f              /* if no error continue */
        !           272:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           273:        movl    $1,_ercode      /* error code data miscompare */
        !           274:        movl    sloc0,_actual   /* actual data */
        !           275:        movl    $0,_expected    /* expected data */
        !           276:        jmp     *badrtn
        !           277: 1:     bicpsw  $Z
        !           278:        cmpl    sloc0,sloc1
        !           279:        jeql    1f              /* if no error continue */
        !           280:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           281:        movl    $1,_ercode      /* error code data miscompare */
        !           282:        movl    sloc0,_actual   /* actual data */
        !           283:        movl    sloc1,_expected /* expected data */
        !           284:        jmp     *badrtn
        !           285: 1:     bicpsw  $Z
        !           286:        cmpl    r10,$0x12345678 /* make sure source unchanged           */
        !           287:        jeql    1f              /* if no error continue */
        !           288:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           289:        movl    $3,_ercode      /* error code operand miscompare */
        !           290:        movl    r10,_actual     /* actual data */
        !           291:        movl    $0x12345678,_expected   /* expected data */
        !           292:        jmp     *badrtn
        !           293: 1:     bicpsw  $Z
        !           294:        cmpl    r11,$0x9abcdef0
        !           295:        jeql    aldn            /* if no error continue */
        !           296:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
        !           297:        movl    $3,_ercode      /* error code operand miscompare */
        !           298:        movl    r11,_actual     /* actual data */
        !           299:        movl    $0x9abcdef0,_expected   /* expected data */
        !           300:        jmp     *badrtn
        !           301: 
        !           302: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
        !           303:        jmp     *return
        !           304: 
        !           305: 
        !           306: /*     test data               */
        !           307: 
        !           308:        .align  2               /* align on longword    */
        !           309: sloc0: .long   0
        !           310: sloc1: .long   0
        !           311: dloc0: .long   0
        !           312: dloc1: .long   0
        !           313: temp:  .long   0
        !           314: 

unix.superglobalmegacorp.com

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