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

1.1       root        1: /*     ANDW2 (and word 2 operand) test                                 */
                      2: 
                      3: /*Test name = andw2                                                    */
                      4: /*Description =                                                                */
                      5: /*     This test checks 'andw2' instruction as follows:                */
                      6: /*     destination = r1, memory location (dest)                        */
                      7: /*     destination     mask            result        Z N C V(flags)    */
                      8: /*     ___________     ____            _____         _____________     */
                      9: /*     0xaaaa          0xaaaa          0xaaaa        0 0 1 0           */
                     10: /*     0xaaaa          0x5555          0x0000        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: 
                     50:        .globl  _andw2
                     51: _andw2:
                     52:        callf   $4,_setjmp      /* save context for return from error */
                     53:        movab   _andw2,_stpc    /* subtest address */
                     54:        movl    $1,_subtst      /* subtest number */
                     55:        movl    $2,_no_opr      /* number of operands in use */
                     56:        movl    $MASK1W,_opr    /* first operand */
                     57:        movl    $VALUEW,_opr + 4        /* second operand */
                     58: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                     59:        movl    $VALUEW,r4      /*set r4 = 0xaaaa                       */
                     60:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                     61:        andw2   $MASK1W,r4      /*mask r4 with 0xaaaa data to reg       */
                     62:        beql    error1          /*error if Z = 1                        */
                     63:        blss    error1          /*error if N = 1                        */
                     64:        bcc     error1          /*error if C = 0                        */
                     65:        bvs     error1          /*error if V = 1                        */
                     66:        movl    $EXP1W,r3
                     67:        cmpl    r4,$EXP1W       /*if r4 <> expected(0xaaaa),            */
                     68:        beql    a2              /* if correct continue */
                     69:        movl    $1,_ercode      /* error code data miscompare   */
                     70:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     71:        movl    r4,_actual      /* actual data */
                     72:        movl    $EXP1W,_expected        /* expected data */
                     73:        jmp     *badrtn
                     74: error1:        movpsl  _actual         /* actual = psl */
                     75:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                     76:        movl    $2,_ercode      /* error code flag miscompare */
                     77:        jmp     *badrtn
                     78: 
                     79: /*     Now try another mask(0x5555) memory to register                 */
                     80: /*                                                                     */
                     81: a2:
                     82:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     83: aa2:   callf   $4,_setjmp      /* save context for return from error */
                     84:        movab   aa2,_stpc       /* subtest address */
                     85:        movl    $2,_subtst      /* subtest number */
                     86:        movl    $2,_no_opr      /* number of operands in use */
                     87:        movl    $MASK2W,_opr    /* first operand */
                     88:        movl    $VALUEW,_opr + 4        /* second operand */
                     89: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                     90:        movl    $VALUEW,r4      /*set r4 = 0xaaaa                       */
                     91:        movl    $MASK2W,dest    /* load mask into location dest         */
                     92:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                     93:        andw2   dest+2,r4       /*mask r4 with 0x5555 memory to reg     */
                     94:        bneq    error2          /*error if Z = 0                        */
                     95:        blss    error2          /*error if N = 1                        */
                     96:        bcc     error2          /*error if C = 1                        */
                     97:        bvs     error2          /*error if V = 1                        */
                     98:        cmpl    r4,$EXP2W       /*if r4 <> expected(0x0000),            */
                     99:        beql    andw2m          /* if correct continue */
                    100:        movl    $1,_ercode      /* error code data miscompare   */
                    101:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    102:        movl    r4,_actual      /* actual data */
                    103:        movl    $EXP2W,_expected        /* expected data */
                    104:        jmp     *badrtn
                    105: error2:        movpsl  _actual         /* actual = psl */
                    106:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    107:        movl    $2,_ercode      /* error code flag miscompare */
                    108:        jmp     *badrtn
                    109: 
                    110: /*                                                                     */
                    111: /*     Now use memory location instead of register as destination      */
                    112: /*             data to memory operation                                */
                    113: andw2m:        
                    114:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    115: aa3:   callf   $4,_setjmp      /* save context for return from error */
                    116:        movab   aa3,_stpc       /* subtest address */
                    117:        movl    $3,_subtst      /* subtest number */
                    118:        movl    $2,_no_opr      /* number of operands in use */
                    119:        movl    $MASK1W,_opr    /* first operand */
                    120:        movl    $VALUEW,_opr + 4        /* second operand */
                    121: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    122:        movl    $VALUEW,dest    /*set dest = 0xaaaa                     */
                    123:        bispsw  $(Z|V|C)        /*overflow, Z & carry bits ON           */
                    124:        andw2   $MASK1W,dest+2  /*mask dest with 0xaaaa data to mem     */
                    125:        jeql    error3          /*error if Z = 1                        */
                    126:        jlss    error3          /*error if N = 1                        */
                    127:        jcc     error3          /*error if C = 0                        */
                    128:        jvs     error3          /*error if V = 1                        */
                    129:        cmpl    dest,$EXP1W     /*if dest <> expected(0xaaaa),          */
                    130:        beql    a4              /* if correct continue */
                    131:        movl    $1,_ercode      /* error code data miscompare   */
                    132:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    133:        movl    dest,_actual    /* actual data */
                    134:        movl    $EXP1W,_expected        /* expected data */
                    135:        jmp     *badrtn
                    136: error3:        movpsl  _actual         /* actual = psl */
                    137:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    138:        movl    $2,_ercode      /* error code flag miscompare */
                    139:        jmp     *badrtn
                    140: 
                    141: /*     Now try another mask(0x5555) memory to memory                   */
                    142: /*                                                                     */
                    143: a4:
                    144:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    145: aa4:   callf   $4,_setjmp      /* save context for return from error */
                    146:        movab   aa4,_stpc       /* subtest address */
                    147:        movl    $4,_subtst      /* subtest number */
                    148:        movl    $2,_no_opr      /* number of operands in use */
                    149:        movl    $MASK2W,_opr    /* first operand */
                    150:        movl    $VALUEW,_opr + 4        /* second operand */
                    151: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    152:        movl    $VALUEW,dest    /*set dest = 0xaaaa                     */
                    153:        movl    $MASK2W,dest2   /* set dest2 = 0x5555                   */
                    154:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    155:        andw2   dest2+2,dest+2  /*mask dest with 0x5555 mem to mem      */
                    156:        jneq    error4          /*error if Z = 0                        */
                    157:        jlss    error4          /*error if N = 1                        */
                    158:        jcc     error4          /*error if C = 1                        */
                    159:        jvs     error4          /*error if V = 1                        */
                    160:        cmpl    dest,$EXP2W     /*if dest <> expected(0x0000),          */
                    161:        beql    a5              /* if correct continue */
                    162:        movl    $1,_ercode      /* error code data miscompare   */
                    163:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    164:        movl    dest,_actual    /* actual data */
                    165:        movl    $EXP2W,_expected        /* expected data */
                    166:        jmp     *badrtn
                    167: error4:        movpsl  _actual         /* actual = psl */
                    168:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    169:        movl    $2,_ercode      /* error code flag miscompare */
                    170:        jmp     *badrtn
                    171: 
                    172: /*     Now try another mask(0x5555) register to memory                 */
                    173: /*                                                                     */
                    174: 
                    175: a5:
                    176:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    177: aa5:   callf   $4,_setjmp      /* save context for return from error */
                    178:        movab   aa5,_stpc       /* subtest address */
                    179:        movl    $5,_subtst      /* subtest number */
                    180:        movl    $2,_no_opr      /* number of operands in use */
                    181:        movl    $MASK2W,_opr    /* first operand */
                    182:        movl    $VALUEW,_opr + 4        /* second operand */
                    183: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    184:        movl    $VALUEW,dest    /*set dest = 0xaaaa                     */
                    185:        movl    $MASK2W,r3      /* set r3 = 0x5555                      */
                    186:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    187:        andw2   r3,dest+2       /*mask dest with 0x5555 reg to mem      */
                    188:        jneq    error5          /*error if Z = 0                        */
                    189:        jlss    error5          /*error if N = 1                        */
                    190:        jcc     error5          /*error if C = 1                        */
                    191:        jvs     error5          /*error if V = 1                        */
                    192:        cmpl    dest,$EXP2W     /*if dest <> expected(0x0000),          */
                    193:        beql    a6              /* if correct continue */
                    194:        movl    $1,_ercode      /* error code data miscompare   */
                    195:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    196:        movl    dest,_actual    /* actual data */
                    197:        movl    $EXP2W,_expected        /* expected data */
                    198:        jmp     *badrtn
                    199: error5:        movpsl  _actual         /* actual = psl */
                    200:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    201:        movl    $2,_ercode      /* error code flag miscompare */
                    202:        jmp     *badrtn
                    203: /*                                                                                                                                                     */
                    204: /*     Now try another mask(0x5555) register to register               */
                    205: /*                                                                     */
                    206: 
                    207: a6:
                    208:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    209: aa6:   callf   $4,_setjmp      /* save context for return from error */
                    210:        movab   aa6,_stpc       /* subtest address */
                    211:        movl    $6,_subtst      /* subtest number */
                    212: 0:     bicpsw  $PSWMASK        /*turn overflow enable bit off          */
                    213:        movl    $VALUEW,r4      /*set r4 = 0xaaaa                       */
                    214:        movl    $MASK2W,r3      /* set r3 = 0x5555                      */
                    215:        bispsw  $(N|V)          /*overflow & negetive bits ON           */
                    216:        andw2   r3,r4           /*mask r4 with 0x5555 reg to r4         */
                    217:        jneq    error6          /*error if Z = 0                        */
                    218:        jlss    error6          /*error if N = 1                        */
                    219:        jcc     error6          /*error if C = 1                        */
                    220:        jvs     error6          /*error if V = 1                        */
                    221:        cmpl    r4,$EXP2W       /*if r5 <> expected(0x0000),            */
                    222:        beql    aldn            /* if correct continue */
                    223:        movl    $1,_ercode      /* error code data miscompare   */
                    224:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    225:        movl    r4,_actual      /* actual data */
                    226:        movl    $EXP2W,_expected        /* expected data */
                    227:        jmp     *badrtn
                    228: error6:        movpsl  _actual         /* actual = psl */
                    229:        bbs     $0,_scoplp,0b   /* if set scope loop on error */
                    230:        movl    $2,_ercode      /* error code flag miscompare */
                    231:        jmp     *badrtn
                    232: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    233:        jmp     *return
                    234: /*                                                                     */
                    235: /*     variables                                                       */
                    236: /*                                                                     */
                    237:        .align  2
                    238: dest:  .space  4
                    239: 
                    240:        .align  2
                    241: dest2: .space  4
                    242: 
                    243: 

unix.superglobalmegacorp.com

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