Annotation of cci/d/entry/shlq.s, revision 1.1.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.