Annotation of cci/d/entry/and_l2.s, revision 1.1.1.1

1.1       root        1: /*     ANDL2 (and long 2 operand) test                                 */
                      2: 
                      3: /*Test name = andl2                                                    */
                      4: /*Description =                                                                */
                      5: /*     This test checks 'andl2' instruction as follows:                */
                      6: /*     destination = r1, memory location (dest)                        */
                      7: /*     destination     mask            result        Z N C V(flags)    */
                      8: /*     ___________     ____            _____         _____________     */
                      9: /*     0xaaaaaaaa      0xaaaaaaaa      0xaaaaaaaa    0 1 1 0           */
                     10: /*     0xaaaaaaaa      0x55555555      0x00000000    1 0 1 0           */
                     11: /*                                                                     */
                     12: /*                                                                     */
                     13: /*     Constants                                                       */
                     14: /*                                                                     */
                     15:        .set    VALUEB,0x000000aa
                     16:        .set    VALUEW,0X0000aaaa
                     17:        .set    VALUEL,0xaaaaaaaa
                     18:        .set    MASK1B,0xaa
                     19:        .set    MASK1W,0xaaaa
                     20:        .set    MASK1L,0xaaaaaaaa
                     21:        .set    MASK2B,0x55
                     22:        .set    MASK2W,0x5555
                     23:        .set    MASK2L,0x55555555
                     24:        .set    EXP1B,0x000000aa
                     25:        .set    EXP1W,0x0000aaaa
                     26:        .set    EXP1L,0xaaaaaaaa
                     27:        .set    EXP2B,0x00000000
                     28:        .set    EXP2W,0x00000000
                     29:        .set    EXP2L,0x00000000
                     30: 
                     31: /*                                                                     */
                     32: /*                                                                     */
                     33: /*                                                                     */
                     34: /*     Syst.s - constants                                              */
                     35: /*                                                                     */
                     36:        .set    IPL,8
                     37:        .set    HIGH,31
                     38:        .set    ZERO,0
                     39:        .set    ONES,0xffffffff
                     40:        .set    N,8
                     41:        .set    Z,4
                     42:        .set    V,2
                     43:        .set    C,1
                     44:        .set    T,16
                     45:        .set    IV,32
                     46:        .set    FU,64
                     47:        .set    DV,128
                     48:        .set    PSWMASK,0x003f
                     49:        .globl  _andl2
                     50: _andl2:
                     51:        callf   $4,_setjmp      /* save context for error return */
                     52:        movab   _andl2,_stpc    /* save subtest address */
                     53:        movl    $1,_subtst      /* subtst number */
                     54:        movl    $2,_no_opr      /* number of operands in use */
                     55:        movl    $MASK1L,_opr    /* first operand */
                     56:        movl    $VALUEL,_opr + 4        /* second operand */
                     57: 0:     movl    $VALUEL,r3      /*set r3 = 0xaaaaaaaa                   */
                     58:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                     59:        andl2   $MASK1L,r3      /*mask r3 with 0xaaaaaaaa data to reg   */
                     60:        beql    error1          /*error if Z = 1                        */
                     61:        bgeq    error1          /*error if N = 0                        */
                     62:        bcc     error1          /*error if C = 0                        */
                     63:        bvs     error1          /*error if V = 1                        */
                     64:        cmpl    r3,$EXP1L       /*if r1 <> expected(0xaaaaaaaa),        */
                     65:        beql    a2              /* if correct then continue */
                     66:        movl    $1,_ercode      /* error code data miscompare */
                     67:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     68:        movl    r3,_actual      /* actual data of inst execution */
                     69:        movl    $EXP1L,_expected        /* expected data */
                     70:        jmp     *badrtn
                     71: error1:        movpsl  _actual         /* error code flag miscompare */
                     72:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     73:        movl    $2,_ercode      /* error code flag miscompare */
                     74:        jmp     *badrtn
                     75: 
                     76: /*     Now try another mask(0x55555555) register to memory             */
                     77: /*                                                                     */
                     78: a2:
                     79:        bbs     $0,_force_lp,0b /* if set loop on subtest*/
                     80: aa2:   callf   $4,_setjmp      /* save context for error return */
                     81:        movab   aa2,_stpc       /* save subtest address */
                     82:        movl    $2,_subtst      /* subtst number */
                     83:        movl    $2,_no_opr      /* number of operands in use */
                     84:        movl    $MASK2L,_opr    /* first operand */
                     85:        movl    $VALUEL,_opr + 4        /* second operand */
                     86: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                     87:        movl    $VALUEL,dest    /*set dest = 0xaaaaaaaa                 */
                     88:        movl    $MASK2L,r3      /* mask in reg r3                       */
                     89:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                     90:        andl2   r3,dest         /*mask r3 with 0x55555555 reg to mem    */
                     91:        bneq    error2          /*error if Z = 0                        */
                     92:        blss    error2          /*error if N = 1                        */
                     93:        bcc     error2          /*error if C = 0                        */
                     94:        bvs     error2          /*error if V = 1                        */
                     95:        cmpl    dest,$EXP2L     /*if  dest <> expected(0x00000000),     */
                     96:        beql    andl2m          /* if correct then continue */
                     97:        movl    $1,_ercode      /* error code data miscompare */
                     98:        bbs     $0,_scoplp,0b   /* if set loop on error */
                     99:        movl    dest,_actual    /* actual data of inst execution */
                    100:        movl    $EXP2L,_expected        /* expected data */
                    101:        jmp     *badrtn
                    102: error2:        movpsl  _actual         /* error code flag miscompare */
                    103:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    104:        movl    $2,_ercode      /* error code flag miscompare */
                    105:        jmp     *badrtn
                    106: 
                    107: /*                                                                     */
                    108: /*     Now use memory location instead of register as destination      */
                    109: /*             data to memory operation                                */
                    110: andl2m:        
                    111:        bbs     $0,_force_lp,0b /* if set loop on subtest*/
                    112: aa3:   callf   $4,_setjmp      /* save context for error return */
                    113:        movab   aa3,_stpc       /* save subtest address */
                    114:        movl    $3,_subtst      /* subtst number */
                    115:        movl    $2,_no_opr      /* number of operands in use */
                    116:        movl    $MASK1L,_opr    /* first operand */
                    117:        movl    $VALUEL,_opr + 4        /* second operand */
                    118: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    119:        movl    $VALUEL,dest    /*set dest = 0xaaaaaaaa                 */
                    120:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    121:        andl2   $MASK1L,dest    /*mask dest with 0xaaaaaaaa             */
                    122:        beql    error3          /*error if Z = 1                        */
                    123:        bgeq    error3          /*error if N = 0                        */
                    124:        bcc     error3          /*error if C = 0                        */
                    125:        bvs     error3          /*error if V = 1                        */
                    126:        cmpl    dest,$EXP1L     /*if dest <> expected(0xaaaaaaaa),      */
                    127:        beql    a4              /* if correct then continue */
                    128:        movl    $1,_ercode      /* error code data miscompare */
                    129:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    130:        movl    dest,_actual    /* actual data of inst execution */
                    131:        movl    $EXP1L,_expected        /* expected data */
                    132:        jmp     *badrtn
                    133: error3:        movpsl  _actual         /* error code flag miscompare */
                    134:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    135:        movl    $2,_ercode      /* error code flag miscompare */
                    136:        jmp     *badrtn
                    137: 
                    138: /*     Now try another mask(0x55555555) register to register           */
                    139: /*                                                                     */
                    140: a4:
                    141:        bbs     $0,_force_lp,0b /* if set loop on subtest*/
                    142: aa4:   callf   $4,_setjmp      /* save context for error return */
                    143:        movab   aa4,_stpc       /* save subtest address */
                    144:        movl    $4,_subtst      /* subtst number */
                    145:        movl    $2,_no_opr      /* number of operands in use */
                    146:        movl    $MASK2L,_opr    /* first operand */
                    147:        movl    $VALUEL,_opr + 4        /* second operand */
                    148: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    149:        movl    $VALUEL,r4      /*set r4 = 0xaaaaaaaa                   */
                    150:        movl    $MASK2L,r3      /* set r3 = 0x55555555                  */
                    151:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    152:        andl2   r3,r4           /*mask dest with 0x55555555 reg to reg  */
                    153:        bneq    error4          /*error if Z = 0                        */
                    154:        blss    error4          /*error if N = 1 */
                    155:        bcc     error4          /*error if C = 0                        */
                    156:        bvs     error4          /*error if V = 1                        */
                    157:        movl    $EXP2L,r3
                    158:        cmpl    r4,$EXP2L       /*if dest <> expected(0x00000000),      */
                    159:        beql    aldn            /* if correct then continue */
                    160:        movl    $1,_ercode      /* error code data miscompare */
                    161:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    162:        movl    r4,_actual      /* actual data of inst execution */
                    163:        movl    $EXP2L,_expected        /* expected data */
                    164:        jmp     *badrtn
                    165: error4:        movpsl  _actual         /* error code flag miscompare */
                    166:        bbs     $0,_scoplp,0b   /* if set loop on error */
                    167:        movl    $2,_ercode      /* error code flag miscompare */
                    168:        jmp     *badrtn
                    169: aldn:  bbs     $0,_force_lp,0b /* if set loop on subtest*/
                    170:        jmp     *return         /* return to monitor */
                    171: 
                    172: /*                                                                     */
                    173: /*     variables                                                       */
                    174: /*                                                                     */
                    175:        .align  2
                    176: dest:  .space  4
                    177: 

unix.superglobalmegacorp.com

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