Annotation of cci/d/fpevent/test_0_ops.s, revision 1.1.1.1

1.1       root        1: 
                      2: 
                      3: # ***************************************************************************
                      4: # *
                      5: # *            Test an instruction that has no operands
                      6: # *
                      7: # *  Only the 1 byte instruction and some NOPs will go into the code buffer.
                      8: # *
                      9: # *  30-May-85 : added pipelined tests
                     10: # *  22-Jul-85 : don't run pipeline 2 test w/ emulated instructions
                     11: # ***************************************************************************
                     12:        .text
                     13:        .align  1
                     14:        .globl  _test_0_ops
                     15: _test_0_ops:
                     16:        .word   0
                     17: /*
                     18:  * Set the sizes for loading and for storing the accumulator
                     19: */
                     20:        cmpl    $SGL,_precision
                     21:        bneq    1f
                     22:        movl    $SGL,_acc_ld_size               /* set ACC. load size      */
                     23:        movl    $SGL,_acc_st_size               /* set ACC. store size     */
                     24:        jmp     2f
                     25: 1:
                     26:        movl    $DBL,_acc_ld_size               /* set ACC. load size      */
                     27:        movl    $DBL,_acc_st_size               /* set ACC. store size     */
                     28:        cmpl    _op_code,$CVDF_OP_CODE          /* "cvdf" instruction?     */
                     29:        bneq    2f
                     30:        movl    $SGL,_acc_st_size               /* store sgl acc. for cvdf */
                     31: 2:
                     32:        callf   $4,_test_0_no_pipe              /* test w/o pipelineing    */
                     33:        callf   $4,_test_0_pipe1                /* test pipeline test #1   */
                     34:        cmpl    _test_event,$FPM_CODE           /* Is this the FPM test?   */
                     35:        beql    1f                              /* don't run pipe #2 w/ FPM */
                     36:        callf   $4,_test_0_pipe2                /* test pipeline test #2   */
                     37: 1:     ret                                     /* return                  */
                     38: 
                     39: 
                     40: 
                     41: 
                     42: # ***************************************************************************
                     43: # *
                     44: # *   TEST A NO OPERAND INSTRUCTION WITH NO FPP INSTRUCTION IN FRONT OF IT
                     45: # *
                     46: # ***************************************************************************
                     47:        .text
                     48:        .align  1
                     49:        .globl  _test_0_no_pipe
                     50: _test_0_no_pipe:
                     51:        .word   0
                     52:        clrl    _pipe_test                      /* reset the pipe-test flag */
                     53:        callf   $4,_pack_inst                   /* pack the instr's code   */
                     54:        pushl   $_load_regs                     /* buffer for loading regs */
                     55:        callf   $8,_fill_reg_buf                /* fill the buffer         */
                     56:        pushl   $_exp_regs                      /* expected reg values     */
                     57:        callf   $8,_fill_reg_buf                /* fill the buffer         */
                     58: /*
                     59:  * test the instruction 
                     60: */
                     61:        clrl    _index
                     62: 3:
                     63:        mull3   $4,_index,r0                    /* get longword offset     */
                     64:        movl    *_data_ptr[r0],_dbl_ld_acc      /* get load data's MSW     */
                     65:        incl    r0
                     66:        movl    *_data_ptr[r0],_dbl_ld_acc+4    /* get load data's LSW     */
                     67: 2:
                     68:        callf   $4,_run_code                    /* execute the instruction */
                     69:        tstl    _force_loop
                     70:        bneq    2b                              /* loop on an error        */
                     71:        cmpl    _index,_max_index               /* last data pattern?      */
                     72:        bgeq    1f
                     73:        incl    _index                          /* bump the index          */
                     74:        jmp     3b                              /* test next data pattern  */
                     75: 1:
                     76:        ret                                     /* return to test_code     */
                     77: 
                     78: 
                     79: 
                     80: 
                     81: # ***************************************************************************
                     82: # *
                     83: # *   TEST A NO OPERAND INSTRUCTION WITH A LOAD INSTRUCION IN FRONT OF IT
                     84: # *
                     85: # ***************************************************************************
                     86:        .text
                     87:        .align  1
                     88:        .globl  _test_0_pipe1
                     89: _test_0_pipe1:
                     90:        .word   0
                     91:        movl    $1,_pipe_test                   /* set the pipe_test flag  */
                     92:        movl    $0x62,_addr_code_p1             /* set the addr mode       */
                     93:        cmpl    $DBL,_acc_ld_size               /* DBL or SGL ACC?         */
                     94:        beql    1f
                     95:        movl    $LDF_OP_CODE,_pipe_inst1        /* pipe inst = load single */
                     96:        brb     2f
                     97: 1:     movl    $LDD_OP_CODE,_pipe_inst1        /* pipe inst = load double */
                     98: 2:
                     99:        callf   $4,_pack_inst                   /* pack the instr's code   */
                    100:        pushl   $_load_regs                     /* buffer for loading regs */
                    101:        callf   $8,_fill_reg_buf                /* fill the buffer         */
                    102:        pushl   $_exp_regs                      /* expected reg values     */
                    103:        callf   $8,_fill_reg_buf                /* fill the buffer         */
                    104:        moval   _dbl_ld_acc,_load_regs+8        /* R2 points to the data   */
                    105:        moval   _dbl_ld_acc,_exp_regs+8         /* R2 points to the data   */
                    106: /*
                    107:  * test the instruction 
                    108: */
                    109:        clrl    _index
                    110: 3:
                    111:        mull3   $4,_index,r0                    /* get longword offset     */
                    112:        movl    *_data_ptr[r0],_dbl_ld_acc      /* get load data's MSW     */
                    113:        incl    r0
                    114:        movl    *_data_ptr[r0],_dbl_ld_acc+4    /* get load data's LSW     */
                    115: 2:
                    116:        callf   $4,_run_code                    /* execute the instruction */
                    117:        tstl    _force_loop
                    118:        bneq    2b                              /* loop on an error        */
                    119:        cmpl    _index,_max_index               /* last data pattern?      */
                    120:        bgeq    1f
                    121:        incl    _index                          /* bump the index          */
                    122:        jmp     3b                              /* test next data pattern  */
                    123: 1:
                    124:        clrl    _pipe_test                      /* reset the pipe-test flag */
                    125:        ret                                     /* return to test_code     */
                    126: 
                    127: 
                    128: 
                    129: 
                    130: # ***************************************************************************
                    131: # *
                    132: # *   TEST A NO OPERAND INSTRUCTION WITH AN ADD INSTRUCION IN FRONT OF IT
                    133: # *
                    134: # ***************************************************************************
                    135:        .text
                    136:        .align  1
                    137:        .globl  _test_0_pipe2
                    138: _test_0_pipe2:
                    139:        .word   0
                    140:        movl    $2,_pipe_test                   /* set the pipe_test flag */
                    141:        movl    $0x62,_addr_code_p1             /* set the addr mode      */
                    142:        cmpl    $DBL,_acc_ld_size               /* DBL or SGL ACC?        */
                    143:        beql    1f
                    144:        movl    $ADDF_OP_CODE,_pipe_inst1       /* pipe inst = add single */
                    145:        brb     2f
                    146: 1:     movl    $ADDD_OP_CODE,_pipe_inst1       /* pipe inst = add double */
                    147: 2:
                    148:        callf   $4,_pack_inst                   /* pack the instr's code  */
                    149:        pushl   $_load_regs                     /* buffer for loading regs */
                    150:        callf   $8,_fill_reg_buf                /* fill the buffer        */
                    151:        pushl   $_exp_regs                      /* expected reg values    */
                    152:        callf   $8,_fill_reg_buf                /* fill the buffer        */
                    153:        moval   _dbl_ld_acc,_load_regs+8        /* R2 points to the data  */
                    154:        moval   _dbl_ld_acc,_exp_regs+8         /* R2 points to the data  */
                    155: /*
                    156:  * test the instruction 
                    157: */
                    158:        clrl    _index
                    159: 3:
                    160:        mull3   $4,_index,r0                    /* get longword offset     */
                    161:        movl    *_data_ptr[r0],_dbl_ld_acc      /* get load data's MSW     */
                    162:        incl    r0
                    163:        movl    *_data_ptr[r0],_dbl_ld_acc+4    /* get load data's LSW     */
                    164: 2:
                    165:        callf   $4,_run_code                    /* execute the instruction */
                    166:        tstl    _force_loop
                    167:        bneq    2b                              /* loop on an error        */
                    168:        cmpl    _index,_max_index               /* last data pattern?      */
                    169:        bgeq    1f
                    170:        incl    _index                          /* bump the index          */
                    171:        jmp     3b                              /* test next data pattern  */
                    172: 1:
                    173:        clrl    _pipe_test                      /* reset the pipe-test flag */
                    174:        ret                                     /* return to test_code     */
                    175: 
                    176: 
                    177: 

unix.superglobalmegacorp.com

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