Changeset 892

Show
Ignore:
Timestamp:
02/24/08 11:17:56 (14 years ago)
Author:
ppalmers
Message:

sse clipping fix

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libffado/src/libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp

    r890 r892  
    571571            // clip 
    572572#if AMDTP_CLIP_FLOATS 
    573             // implement sample<min?min:sample 
    574             // and sample>max?max:sample 
    575             // we use separate masks since that allows the 
    576             // compiler/cpu to do more out-of-order optimization 
    577  
    578             // is any of the pieces less than the minimum? 
    579             // or larger than the maximum? 
    580             __m128 mask1 = _mm_cmplt_ps(v_float, v_min); 
    581             __m128 mask2 = _mm_cmpgt_ps(v_float, v_max); 
    582             // clip the values that need to be clipped 
    583             // pass the values that don't 
    584             v_float = _mm_or_ps(_mm_andnot_ps(mask1, v_float), _mm_and_ps(mask1, v_min)); 
    585             v_float = _mm_or_ps(_mm_andnot_ps(mask2, v_float), _mm_and_ps(mask2, v_max)); 
     573            // do SSE clipping 
     574            v_float = _mm_max_ps(v_float, v_min); 
     575            v_float = _mm_min_ps(v_float, v_max); 
    586576#endif 
    587577 
     
    645635#if AMDTP_CLIP_FLOATS 
    646636                // do SSE clipping 
    647                 v_float = _mm_max_ps(v_float,v_min); 
    648                 v_float = _mm_min_ps(v_float,v_max); 
     637                v_float = _mm_max_ps(v_float, v_min); 
     638                v_float = _mm_min_ps(v_float, v_max); 
    649639#endif 
    650640