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

1.1       root        1: 
                      2: /*     FFC instruction test    */
                      3: /*                             */
                      4: /*     constant definitions    */
                      5: 
                      6:        .set    HIGH,31
                      7:        .set    IPL,8
                      8:        .set    ZERO,0
                      9:        .set    ONES,0xffffffff
                     10:        .set    DV,128
                     11:        .set    FU,64
                     12:        .set    IV,32
                     13:        .set    T,16
                     14:        .set    N,8
                     15:        .set    Z,4
                     16:        .set    V,2
                     17:        .set    C,1
                     18:        .set    NEGVAL,0xff0fffff
                     19:        .set    DAT3,0x4444efff
                     20: 
                     21:        .globl  _ffc
                     22: _ffc:
                     23:        callf   $4,_setjmp      /* save context for error return */
                     24:        movab   _ffc,_stpc      /* save address of subtest start */
                     25:        movl    $1,_subtst      /* subtest number */
                     26:        movl    $1,_no_opr      /* number of operands in use */
                     27:        movl    dat0,_opr       /* first operand */
                     28: 0:     bicpsw  $(IV|T)         /* disable overflow,trace exceptions    */
                     29:        movl    dat0,r6         /* save source op               */
                     30:        bispsw  $(Z|V)          /* set z,v flags                */
                     31:        bicpsw  $(N|C)          /* clear n,c flag               */
                     32:        ffc     dat0,r4         /* find 1st bit clearin dat0 mem to reg */
                     33:        jlss    error1          /* error if n flag set          */
                     34:        jeql    error1          /* error if z flag set          */
                     35:        jvs     error1          /* error if v flag set          */
                     36:        jcc     error1          /* error if c flag not set      */
                     37:        jmp     1f
                     38: error1:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                     39:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                     40:        movl    $2,_ercode      /* error code flag failure */
                     41:        jmp     *badrtn
                     42: 1:     cmpl    expd0,r4        /* compare r4 to exp. result    */
                     43:        jeql    1f              /* if no error continue */
                     44:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                     45:        movl    $1,_ercode      /* error code data miscompare */
                     46:        movl    r4,_actual      /* actual data */
                     47:        movl    expd0,_expected /* expected data */
                     48:        jmp     *badrtn
                     49: 1:     cmpl    dat0,r6         /* make sure source unchanged   */
                     50:        jeql    f2              /* if no error continue */
                     51:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                     52:        movl    $3,_ercode      /* error code operand was changed */
                     53:        movl    r6,_actual      /* actual data */
                     54:        movl    dat0,_expected  /* expected data */
                     55:        jmp     *badrtn
                     56: 
                     57: f2:
                     58:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     59: af2:   callf   $4,_setjmp      /* save context for error return */
                     60:        movab   af2,_stpc       /* save address of subtest start */
                     61:        movl    $2,_subtst      /* subtest number */
                     62:        movl    $1,_no_opr      /* number of operands in use */
                     63:        movl    dat1,_opr       /* first operand */
                     64: 0:     movl    dat1,r3         /* save source op               */
                     65:        bispsw  $(N|V)          /* set n,v flags                */
                     66:        bicpsw  $(Z|C)          /* clear z,c flag               */
                     67:        ffc     r3,dest         /* find 1st bit clear in dat1 reg to mem */
                     68:        jlss    error2          /* error if n flag set          */
                     69:        jneq    error2          /* error if z flag not set      */
                     70:        jvs     error2          /* error if v flag set          */
                     71:        jcc     error2          /* error if c flag not set      */
                     72:        jmp     1f
                     73: error2:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                     74:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                     75:        movl    $2,_ercode      /* error code flag failure */
                     76:        jmp     *badrtn
                     77: 1:     cmpl    expd1,dest      /* compare to exp. result       */
                     78:        jeql    1f              /* if no error continue */
                     79:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                     80:        movl    $1,_ercode      /* error code data miscompare */
                     81:        movl    dest,_actual    /* actual data */
                     82:        movl    expd1,_expected /* expected data */
                     83:        jmp     *badrtn
                     84: 1:     cmpl    dat1,r3         /* paranoid check of dat1 value */
                     85:        jeql    f3              /* if no error continue */
                     86:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                     87:        movl    $3,_ercode      /* error code operand was changed */
                     88:        movl    r3,_actual      /* actual data */
                     89:        movl    dat1,_expected  /* expected data */
                     90:        jmp     *badrtn
                     91: 
                     92: f3:
                     93:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                     94: af3:   callf   $4,_setjmp      /* save context for error return */
                     95:        movab   af3,_stpc       /* save address of subtest start */
                     96:        movl    $3,_subtst      /* subtest number */
                     97:        movl    $1,_no_opr      /* number of operands in use */
                     98:        movl    dat2,_opr       /* first operand */
                     99: 0:     movl    dat2,r3         /* save source op               */
                    100:        bispsw  $(N|V)          /* set n,v flags                */
                    101:        bicpsw  $(Z|C)          /* clear z,c flag               */
                    102:        ffc     r3,r4           /* find 1st bit clear reg to reg */
                    103:        jlss    error3          /* error if n flag set          */
                    104:        jeql    error3          /* error if z flag set  */
                    105:        jvs     error3          /* error if v flag set          */
                    106:        jcc     error3          /* error if c flag not set      */
                    107:        jmp     1f
                    108: error3:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    109:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    110:        movl    $2,_ercode      /* error code flag failure */
                    111:        jmp     *badrtn
                    112: 1:     cmpl    expd2,r4        /* compare r4 to exp. result    */
                    113:        jeql    1f              /* if no error continue */
                    114:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    115:        movl    $1,_ercode      /* error code data miscompare */
                    116:        movl    r4,_actual      /* actual data */
                    117:        movl    expd2,_expected /* expected data */
                    118:        jmp     *badrtn
                    119: 1:     cmpl    dat2,r3         /* make sure source unchanged   */
                    120:        jeql    f4              /* if no error continue */
                    121:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    122:        movl    $3,_ercode      /* error code operand was changed */
                    123:        movl    r3,_actual      /* actual data */
                    124:        movl    dat2,_expected  /* expected data */
                    125:        jmp     *badrtn
                    126: 
                    127: f4:
                    128:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    129: af4:   callf   $4,_setjmp      /* save context for error return */
                    130:        movab   af4,_stpc       /* save address of subtest start */
                    131:        movl    $4,_subtst      /* subtest number */
                    132:        movl    $1,_no_opr      /* number of operands in use */
                    133:        movl    dat3,_opr       /* first operand */
                    134: 0:     bispsw  $(N|V)          /* set n,v flags                */
                    135:        bicpsw  $(Z|C)          /* clear z,c flag               */
                    136:        ffc     $DAT3,dest      /* find 1st bit clear data to mem */
                    137:        jlss    error4          /* error if n flag set          */
                    138:        jeql    error4          /* error if z flag  set */
                    139:        jvs     error4          /* error if v flag set          */
                    140:        jcc     error4          /* error if c flag not set      */
                    141:        jmp     1f
                    142: error4:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    143:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    144:        movl    $2,_ercode      /* error code flag failure */
                    145:        jmp     *badrtn
                    146: 1:     cmpl    expd3,dest      /* compare  exp. result */
                    147:        jeql    f5              /* if no error continue */
                    148:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    149:        movl    $1,_ercode      /* error code data miscompare */
                    150:        movl    dest,_actual    /* actual data */
                    151:        movl    expd3,_expected /* expected data */
                    152:        jmp     *badrtn
                    153: 
                    154: f5:
                    155:        bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    156: af5:   callf   $4,_setjmp      /* save context for error return */
                    157:        movab   af5,_stpc       /* save address of subtest start */
                    158:        movl    $5,_subtst      /* subtest number */
                    159:        movl    $1,_no_opr      /* number of operands in use */
                    160:        movl    dat4,_opr       /* first operand */
                    161: 0:     bispsw  $(N|V)          /* set n,v flags                */
                    162:        bicpsw  $(Z|C)          /* clear z,c flag               */
                    163:        ffc     dat4,dest       /* find 1st bit clear mem to mem */
                    164:        jeql    error5          /* error if z flag  set */
                    165:        jgeq    error5          /* error if n flag not set      */
                    166:        jvs     error5          /* error if v flag set          */
                    167:        jcc     error5          /* error if c flag not set      */
                    168:        jmp     1f
                    169: error5:        movpsl  _actual         /* actual = psl MAYBE it is incorrect */
                    170:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    171:        movl    $2,_ercode      /* error code flag failure */
                    172:        jmp     *badrtn
                    173: 1:     cmpl    expd4,dest      /* compare  exp. result */
                    174:        jeql    aldn            /* if no error continue */
                    175:        bbs     $0,_scoplp,0b   /* if set scpe loop on error */
                    176:        movl    $1,_ercode      /* error code data miscompare */
                    177:        movl    dest,_actual    /* actual data */
                    178:        movl    expd4,_expected /* expected data */
                    179:        jmp     *badrtn
                    180: 
                    181: aldn:  bbs     $0,_force_lp,0b /* if set loop on last subtest */
                    182:        jmp     *return
                    183: 
                    184: /*     test data               */
                    185:        .align  2
                    186: dat0:  .long   0x7fffffff      /* Last bit clear */
                    187: expd0: .long   31
                    188: dat1:  .long   0xfffffffe      /* First bit clear */
                    189: expd1: .long   0
                    190: dat2:  .long   0x3fffffff      /* Bit 30 clear */
                    191: expd2: .long   30
                    192: dat3:  .long   0x4444efff      /* Bit 12 clear */
                    193: expd3: .long   12
                    194: dat4:  .long   0xffffffff      /* All bit set */
                    195: expd4: .long   -1
                    196: dest:  .long   0
                    197: temp:  .long   0
                    198: 

unix.superglobalmegacorp.com

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