Changeset 851 for proto/u8u16


Ignore:
Timestamp:
Dec 23, 2010, 8:29:41 AM (8 years ago)
Author:
cameron
Message:

Nested if optimization

Location:
proto/u8u16
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • proto/u8u16/u8u16_pablo.py

    r848 r851  
    3131        u8.prefix4 = (u8.prefix & temp2);
    3232        u8.suffix = (bit[0] &~ bit[1]);
    33         temp3 = (bit[2] | bit[3]);
    34         temp4 = (u8.prefix &~ temp3);
    35         temp5 = (bit[4] | bit[5]);
    36         temp6 = (temp5 | bit[6]);
    37         badprefix2 = (temp4 &~ temp6);
    38         temp7 = (bit[6] | bit[7]);
    39         temp8 = (temp5 | temp7);
    40         xE0 = (u8.prefix3 &~ temp8);
    41         temp9 = (bit[4] & bit[5]);
    42         temp10 = (bit[7] &~ bit[6]);
    43         temp11 = (temp9 & temp10);
    44         xED = (u8.prefix3 & temp11);
    45         xA0_xBF = (u8.suffix & bit[2]);
    46         x80_x9F = (u8.suffix &~ bit[2]);
    47         temp12 = (bit[5] & temp7);
    48         temp13 = (bit[4] | temp12);
    49         badprefix4 = (u8.prefix4 & temp13);
    50         xF0 = (u8.prefix4 &~ temp8);
    51         temp14 = (bit[5] &~ bit[4]);
    52         temp15 = (temp14 &~ temp7);
    53         xF4 = (u8.prefix4 & temp15);
    54         x90_xBF = (u8.suffix & temp3);
    55         x80_x8F = (u8.suffix &~ temp3);
    56 
    5733      #
    58         u8.scope22 = bitutil.Advance(u8.prefix2)
    59         u8.scope32 = bitutil.Advance(u8.prefix3)
    60         u8.scope33 = bitutil.Advance(u8.scope32)
    61         u8.scope42 = bitutil.Advance(u8.prefix4)
    62         u8.scope43 = bitutil.Advance(u8.scope42)
    63         u8.scope44 = bitutil.Advance(u8.scope43)
    64         u8lastscope = u8.scope22 | u8.scope33 | u8.scope44
    65         u8anyscope = u8lastscope | u8.scope32 | u8.scope42 | u8.scope43
    66 
    67         adv_bit2 = bitutil.Advance(bit[2])
    68         adv_bit3 = bitutil.Advance(bit[3])
    69         adv_bit4 = bitutil.Advance(bit[4])
    70         adv_bit5 = bitutil.Advance(bit[5])
    71         adv_bit6 = bitutil.Advance(bit[6])
    72         adv_bit7 = bitutil.Advance(bit[7])
    73              
    74         # C0-C1 and F5-FF are illegal
    75         error_mask = badprefix2 | badprefix4
    76              
    77         error_mask |= bitutil.Advance(xE0) & x80_x9F
    78         error_mask |= bitutil.Advance(xED) & xA0_xBF
    79         error_mask |= bitutil.Advance(xF0) & x80_x8F
    80         error_mask |= bitutil.Advance(xF4) & x90_xBF
    81              
     34        delmask = 0
     35        error_mask = 0
     36        u8anyscope = 0
     37        if bit[0]:
     38                temp3 = (bit[2] | bit[3]);
     39                temp4 = (u8.prefix &~ temp3);
     40                temp5 = (bit[4] | bit[5]);
     41                temp6 = (temp5 | bit[6]);
     42                badprefix2 = (temp4 &~ temp6);
     43                error_mask = badprefix2
     44                u8.scope22 = bitutil.Advance(u8.prefix2)
     45                adv_bit3 = bitutil.Advance(bit[3])
     46                adv_bit4 = bitutil.Advance(bit[4])
     47                adv_bit5 = bitutil.Advance(bit[5])
     48                adv_bit6 = bitutil.Advance(bit[6])
     49                adv_bit7 = bitutil.Advance(bit[7])
     50                u8lastscope = u8.scope22
     51                u8anyscope = u8.scope22
     52                u8lastbyte = u8.unibyte | u8lastscope
     53                delmask = u8.prefix
     54                if u8.prefix3 | u8.prefix4:
     55                        temp7 = (bit[6] | bit[7]);
     56                        temp8 = (temp5 | temp7);
     57                        xE0 = (u8.prefix3 &~ temp8);
     58                        temp9 = (bit[4] & bit[5]);
     59                        temp10 = (bit[7] &~ bit[6]);
     60                        temp11 = (temp9 & temp10);
     61                        xED = (u8.prefix3 & temp11);
     62                        xA0_xBF = (u8.suffix & bit[2]);
     63                        x80_x9F = (u8.suffix &~ bit[2]);
     64                        error_mask |= bitutil.Advance(xE0) & x80_x9F
     65                        error_mask |= bitutil.Advance(xED) & xA0_xBF
     66                        u8.scope32 = bitutil.Advance(u8.prefix3)
     67                        u8.scope33 = bitutil.Advance(u8.scope32)
     68                        adv_bit2 = bitutil.Advance(bit[2])
     69                        advadv_bit4 = bitutil.Advance(adv_bit4)
     70                        advadv_bit5 = bitutil.Advance(adv_bit5)
     71                        advadv_bit6 = bitutil.Advance(adv_bit6)
     72                        advadv_bit7 = bitutil.Advance(adv_bit7)
     73                        u8lastscope |= u8.scope33
     74                        u8anyscope = u8lastscope | u8.scope32
     75                        u8lastbyte = u8.unibyte | u8lastscope
     76                        delmask |= u8.scope32
     77                        if u8.prefix4:
     78                                temp12 = (bit[5] & temp7);
     79                                temp13 = (bit[4] | temp12);
     80                                badprefix4 = (u8.prefix4 & temp13);
     81                                error_mask |= badprefix4
     82                                xF0 = (u8.prefix4 &~ temp8);
     83                                temp14 = (bit[5] &~ bit[4]);
     84                                temp15 = (temp14 &~ temp7);
     85                                xF4 = (u8.prefix4 & temp15);
     86                                x90_xBF = (u8.suffix & temp3);
     87                                x80_x8F = (u8.suffix &~ temp3);
     88                                error_mask |= bitutil.Advance(xF0) & x80_x8F
     89                                error_mask |= bitutil.Advance(xF4) & x90_xBF
     90                                u8.scope42 = bitutil.Advance(u8.prefix4)
     91                                u8.scope43 = bitutil.Advance(u8.scope42)
     92                                u8.scope44 = bitutil.Advance(u8.scope43)
     93                                u8surrogate = u8.scope43 | u8.scope44
     94                                u8lastscope |= u8.scope44
     95                                u8anyscope = u8lastscope | u8.scope32 | u8.scope42 | u8.scope43
     96                                u8lastbyte = u8.unibyte | u8lastscope
     97                                delmask |= u8.scope42
     98                                u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
     99                                u16lo[0] = u8lastscope & adv_bit6
     100                                u16hi[5] = u8lastscope & adv_bit3
     101                                u16hi[6] = u8lastscope & adv_bit4
     102                                u16hi[7] = u8lastscope & adv_bit5
     103                                u16hi[0] = u8.scope33 & advadv_bit4 | u8surrogate       
     104                                u16hi[1] = u8.scope33 & advadv_bit5 | u8surrogate
     105                                u16hi[2] = u8.scope33 & advadv_bit6
     106                                u16hi[3] = u8.scope33 & advadv_bit7 | u8surrogate       
     107                                u16hi[4] = u8.scope33 & adv_bit2 | u8surrogate 
     108                                u16hi[5] = u8lastscope & adv_bit3 | u8.scope44
     109                                s43lo1 = ~adv_bit3 # subtract 1
     110                                u16lo[1] = u16lo[1] | u8.scope43 & s43lo1
     111                                s43lo0 = adv_bit2 ^ s43lo1 # borrow *
     112                                u16lo[0] = u16lo[0] | u8.scope43 & s43lo0
     113                                s43borrow1 = s43lo1 & ~adv_bit2
     114                                s43hi7 = advadv_bit7 ^ s43borrow1
     115                                s43borrow2 = s43borrow1 & ~advadv_bit7
     116                                s43hi6 = advadv_bit6 ^ s43borrow2
     117                                u16hi[7] = u8lastscope & adv_bit5 | (u8.scope43 & s43hi7)
     118                                u16hi[6] = u8lastscope & adv_bit4 | (u8.scope43 & s43hi6)
     119                                u16lo[2] = u8lastbyte & bit[2] | (u8.scope43 & adv_bit4)
     120                                u16lo[3] = u8lastbyte & bit[3] | (u8.scope43 & adv_bit5)
     121                                u16lo[4] = u8lastbyte & bit[4] | (u8.scope43 & adv_bit6)
     122                                u16lo[5] = u8lastbyte & bit[5] | (u8.scope43 & adv_bit7)
     123                                u16lo[6] = u8lastbyte & bit[6] | (u8.scope43 & bit[2])
     124                                u16lo[7] = u8lastbyte & bit[7] | (u8.scope43 & bit[3])
     125                        else:
     126                                u8.scope42 = 0
     127                                u8.scope43 = 0
     128                                u8.scope44 = 0
     129                                u16hi[0] = u8.scope33 & advadv_bit4
     130                                u16hi[1] = u8.scope33 & advadv_bit5
     131                                u16hi[2] = u8.scope33 & advadv_bit6
     132                                u16hi[3] = u8.scope33 & advadv_bit7
     133                                u16hi[4] = u8.scope33 & adv_bit2
     134                                u16hi[5] = u8lastscope & adv_bit3
     135                                u16hi[6] = u8lastscope & adv_bit4
     136                                u16hi[7] = u8lastscope & adv_bit5
     137                                u16lo[2] = u8lastbyte & bit[2]
     138                                u16lo[3] = u8lastbyte & bit[3]
     139                                u16lo[4] = u8lastbyte & bit[4]
     140                                u16lo[5] = u8lastbyte & bit[5]
     141                                u16lo[6] = u8lastbyte & bit[6]
     142                                u16lo[7] = u8lastbyte & bit[7]
     143                                u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
     144                                u16lo[0] = u8lastscope & adv_bit6
     145                else:
     146                        u8.scope32 = 0
     147                        u8.scope33 = 0
     148                        u8.scope42 = 0
     149                        u8.scope43 = 0
     150                        u8.scope44 = 0
     151                        u16hi[0] = 0
     152                        u16hi[1] = 0
     153                        u16hi[2] = 0
     154                        u16hi[3] = 0
     155                        u16hi[4] = 0
     156                        u16hi[5] = u8lastscope & adv_bit3
     157                        u16hi[6] = u8lastscope & adv_bit4
     158                        u16hi[7] = u8lastscope & adv_bit5
     159                        u16lo[2] = u8lastbyte & bit[2]
     160                        u16lo[3] = u8lastbyte & bit[3]
     161                        u16lo[4] = u8lastbyte & bit[4]
     162                        u16lo[5] = u8lastbyte & bit[5]
     163                        u16lo[6] = u8lastbyte & bit[6]
     164                        u16lo[7] = u8lastbyte & bit[7]
     165                        u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
     166                        u16lo[0] = u8lastscope & adv_bit6
     167        else:
     168                u8.scope22 = 0
     169                u8.scope32 = 0
     170                u8.scope33 = 0
     171                u8.scope42 = 0
     172                u8.scope43 = 0
     173                u8.scope44 = 0
     174                u16hi[0] = 0
     175                u16hi[1] = 0
     176                u16hi[2] = 0
     177                u16hi[3] = 0
     178                u16hi[4] = 0
     179                u16hi[5] = 0
     180                u16hi[6] = 0
     181                u16hi[7] = 0
     182                u16lo[2] = bit[2]
     183                u16lo[3] = bit[3]
     184                u16lo[4] = bit[4]
     185                u16lo[5] = bit[5]
     186                u16lo[6] = bit[6]
     187                u16lo[7] = bit[7]
     188                u16lo[1] = bit[1]
     189                u16lo[0] = 0
    82190        error_mask |= u8anyscope ^ u8.suffix
    83191        u8.error = error_mask
    84         u8lastbyte = u8.unibyte | u8lastscope
    85         u16lo[2] = u8lastbyte & bit[2]
    86         u16lo[3] = u8lastbyte & bit[3]
    87         u16lo[4] = u8lastbyte & bit[4]
    88         u16lo[5] = u8lastbyte & bit[5]
    89         u16lo[6] = u8lastbyte & bit[6]
    90         u16lo[7] = u8lastbyte & bit[7]
    91         u16lo[1] = (u8.unibyte & bit[1]) | (u8lastscope & adv_bit7)
    92         u16lo[0] = u8lastscope & adv_bit6
    93        
    94         u16hi[5] = u8lastscope & adv_bit3
    95         u16hi[6] = u8lastscope & adv_bit4
    96         u16hi[7] = u8lastscope & adv_bit5
    97         advadv_bit6 = bitutil.Advance(adv_bit6)
    98         advadv_bit7 = bitutil.Advance(adv_bit7)
    99         u16hi[0] = u8.scope33 & bitutil.Advance(adv_bit4)
    100         u16hi[1] = u8.scope33 & bitutil.Advance(adv_bit5)
    101         u16hi[2] = u8.scope33 & bitutil.Advance(adv_bit6)
    102         u16hi[3] = u8.scope33 & bitutil.Advance(adv_bit7)
    103         u16hi[4] = u8.scope33 & adv_bit2
    104192
    105         u8surrogate = u8.scope43 | u8.scope44
    106         u16hi[0] = u16hi[0] | u8surrogate       
    107         u16hi[1] = u16hi[1] | u8surrogate       
    108         u16hi[3] = u16hi[3] | u8surrogate       
    109         u16hi[4] = u16hi[4] | u8surrogate       
    110         u16hi[5] = u16hi[5] | u8.scope44
    111 
    112 
    113         s43lo1 = ~adv_bit3 # subtract 1
    114         u16lo[1] = u16lo[1] | u8.scope43 & s43lo1
    115         s43lo0 = adv_bit2 ^ s43lo1 # borrow *
    116         u16lo[0] = u16lo[0] | u8.scope43 & s43lo0
    117         s43borrow1 = s43lo1 & ~adv_bit2
    118         s43hi7 = advadv_bit7 ^ s43borrow1
    119         s43borrow2 = s43borrow1 & ~advadv_bit7
    120         s43hi6 = advadv_bit6 ^ s43borrow2
    121 
    122 
    123 
    124 
    125         u16hi[7]= u16hi[7] | (u8.scope43 & s43hi7)
    126         u16hi[6] = u16hi[6] | (u8.scope43 & s43hi6)
    127 
    128         u16lo[2] = u16lo[2] | (u8.scope43 & adv_bit4)
    129         u16lo[3] = u16lo[3] | (u8.scope43 & adv_bit5)
    130         u16lo[4] = u16lo[4] | (u8.scope43 & adv_bit6)
    131         u16lo[5] = u16lo[5] | (u8.scope43 & adv_bit7)
    132         u16lo[6] = u16lo[6] | (u8.scope43 & bit[2])
    133         u16lo[7] = u16lo[7] | (u8.scope43 & bit[3])
    134 
    135         delmask = u8.prefix | u8.scope32 | u8.scope42
    136 
Note: See TracChangeset for help on using the changeset viewer.