• Rostislav Vasilikhin's avatar
    Merge pull request #14106 from savuor:lab_wide · e90e0ef9
    Rostislav Vasilikhin authored
    Lab, Luv and XYZ conversions rewritten to wide intrinsics (#14106)
    
    * rgb2xyz<float> re-vectorized
    
    * rgb2xyz_i vectorized for ushort and uchar
    
    * xyz2rgb<float> vectorized
    
    * xyz2rgb_i vectorized for both uchar and ushort
    
    * intermediate conversions (int->float) rewritten
    
    * packed rgb2luv rewritten
    
    * (some) float conversions rewritten
    
    * burnt volatile int _3 and similar
    
    * RGB2Lab_b rewritten
    
    * tests: logging made better
    
    * RGB2Lab_f (LRGB path) rewritten
    
    * Lab2RGBfloat rewritten
    
    * Lab2RGBinteger and Lab2RGB_b rewritten to wide universal intrinsics
    
    * Luv2RGBinteger wide vectorized
    
    * RGB2Lab_b fixed: v_sub_wrap instead of saturated sub
    
    * warnings fixed
    
    * trying to fix compilation on older compilers
    
    * using 16x8 registers for 8-element dot product
    
    * cleanup added
    
    * splineInterpolate: loop unrolled, perf fix for f32x4
    
    * Lab2RGBfloat: grab 2x more data to process on f32x4
    
    * nrepeats for Luv2RGBfloat, +20% perf
    
    * minor
    
    * nrepeats to RGB2Lab_f
    
    * Lab2RGBinteger: no tab for linear BGR
    
    * nrepeats for RGB2Luvfloat
    
    * Luv2RGBinteger: no tab for linear RGB
    
    * +10% more to perf of Luv2RGBfloat
    
    * nrepeats for 256-simd for Lab2RGBfloat
    
    * less warnings
    
    * BOM removed
    
    * CV_SIMD_WIDTH used for lanes number checking
    
    * trilinearPackedInterpolate: 128-bit specialization added
    
    * fix build; no vx_cleanup(), instrumentation instead
    e90e0ef9
test_color.cpp 101 KB