Changeset 29

Show
Ignore:
Timestamp:
08/04/07 22:31:39 (5 years ago)
Author:
mike
Message:

Attempted to optimize a loop

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/block.c

    r26 r29  
    3434    __m128i bot_left, bot, bot_right; 
    3535 
    36     __m128i temp; 
    37  
    3836    top_left = top = top_right = self = _mm_setzero_si128(); 
    3937 
     
    6866 
    6967    for( i = 0; i < 128; i++ ) { 
    70         temp = _mm_setzero_si128(); 
    7168 
    7269        top_left = left; top = self; top_right = right; 
     
    10198        } 
    10299 
     100        __m128i temp = _mm_setzero_si128(); 
     101        for( j = 0; j < 8; j++ ) { 
     102            __m128i _top_left = unpack(top_left, j); 
     103            __m128i _top = unpack( top, j ); 
     104            __m128i _top_right = unpack( top_right, j ); 
     105            __m128i _left = unpack( left, j ); 
     106            __m128i _right = unpack ( right, j ); 
     107            __m128i _bot = unpack( bot, j ); 
     108            __m128i _bot_left = unpack( bot_right, j ); 
     109            __m128i _bot_right = unpack( bot_right, j ); 
    103110 
    104         for( j = 0; j < 8; j++ ) { 
    105             __m128i sum1 = _mm_add_epi8( unpack( top_left, j ), unpack( top, j ) );  
    106             __m128i sum2 = _mm_add_epi8( unpack( top_right, j ), unpack( right, j ) );  
    107             __m128i sum3 = _mm_add_epi8( unpack( left, j ), unpack( bot_left, j ) );  
    108             __m128i sum4 = _mm_add_epi8( unpack( bot, j ), unpack( bot_right, j ) );  
     111            __m128i sum1 = _mm_add_epi8( _top_left, _top );  
     112            __m128i sum2 = _mm_add_epi8( _top_right, _right );  
     113            __m128i sum3 = _mm_add_epi8( _left, _bot_left );  
     114            __m128i sum4 = _mm_add_epi8( _bot, _bot_right );  
     115 
     116            sum3 = _mm_add_epi8( sum3, sum4 ); 
    109117 
    110118            sum1 = _mm_add_epi8( sum1, sum2 ); 
    111             sum3 = _mm_add_epi8( sum3, sum4 ); 
    112119 
    113120            sum3 = _mm_add_epi8( sum1, sum3 ); 
     
    115122            sum1 = _mm_cmpeq_epi8( sum3, populate ); 
    116123 
    117             sum3 = _mm_add_epi8( unpack( self, j ), sum3 ); 
     124            __m128i _self = unpack( self, j ); 
     125            sum3 = _mm_add_epi8( _self, sum3 ); 
    118126 
    119127            sum3 = _mm_cmpeq_epi8( sum3, populate ); 
    120128 
    121129            sum3 = _mm_or_si128( sum1, sum3 ); 
     130 
    122131 
    123132            temp = _mm_or_si128( temp, pack( sum3, j ) );