Repository navigation
Conversation
…fferenceSum and AbsGradientSaturatedSum. (#1072) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…, AlphaBlending, Background, BayerToBgr and BayerToBgra. (#1073) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…a, BgrToGray, BgrToHsl, BgrToHsv and BgrToRgb. (#1074) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…gr, BgraToGray, Binarization, ColSums, Conditional, CreateMask and Deinterleave. (#1075) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…32, GaussianBlur, GrayToBgr, GrayToBgra, Histogram, Int16ToGray and Interleave. (#1076) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…, MaxFilter, MeanFilter3x3, MedianFilter, MidpointFilter, MinFilter and Operation. (#1079) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
Always use unaligned AVX2 loads and stores in color and gray reduce and byte reorder. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
… SquaredDifferenceSum, Statistic, StatisticMoments and StretchGray2x2. (#1081) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
Always use unaligned AVX2 loads and stores in the Synet, activation, add, conversion, math, scale, and unary operation kernels. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…UyvyToYuv, YuvToBgrV2, YuvToBgraV2, YuvToHsl, YuvToHsv, YuvToHue and YuvToUyvy. (#1083) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…bsDifferenceSum, AbsGradientSaturatedSum, AddFeatureDifference and AlphaBlending. (#1084) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…rToBgr, BayerToBgra, BgrToBayer, BgrToBgra, BgrToGray, BgrToHsl, BgrToHsv and BgrToRgb. (#1085) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…aToBgr, BgraToRgb, BgraToRgba, BgraToGray, RgbaToGray, Binarization, AveragingBinarization, AveragingBinarizationV2, GetColSums, GetAbsDxColSums, ConditionalCount8u, ConditionalCount16i, ConditionalSum, ConditionalSquareSum, ConditionalSquareGradientSum, ConditionalFill, CreateMask, DeinterleaveUv, DeinterleaveBgr and DeinterleaveBgra. (#1087) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…a, FillPixel, Float32ToFloat16, Float16ToFloat32, SquaredDifferenceSum16f, CosineDistance16f, Float32ToUint8, Uint8ToFloat32, CosineDistance32f, GaussianBlur3x3, GrayToBgr, GrayToBgra, AbsSecondDerivativeHistogram, HistogramMasked, HistogramConditional and ChangeColors. (#1088) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…erleaveUv, InterleaveBgr, InterleaveBgra, Laplace, LaplaceAbs, LaplaceAbsSum, LbpEstimate, MaxFilterSquare3x3, MaxFilterSquare5x5, MeanFilter3x3, MedianFilterRhomb3x3, MedianFilterRhomb5x5, MedianFilterSquare3x3, MedianFilterSquare5x5, MidpointFilterSquare3x3, MidpointFilterSquare5x5, MinFilterSquare3x3 and MinFilterSquare5x5. (#1089) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…u, OperationBinary16i, ReduceColor2x2, ReduceGray2x2, ReduceGray3x3, ReduceGray5x5, Reorder16bit, Reorder32bit, Reorder64bit and class ResizerByteBilinear. (#1091) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…bGemmV0_ConvertBb. (#1131) AVX-512VNNI SynetDynamicQuantizedInnerProduct16bGemmV0 uses the AVX-512BW convert implementations, so the VNNI copies and the leftover AMX-BF16 declarations are unused. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…1132) * +add SVE2 optimizations of class SynetDynamicQuantizedInnerProduct16bGemmV0. Quantize and multiply dynamic 16-bit inner products with scalable SVE2 vectors and USDOT, using the Neon GemmV0 data layout. Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org> * Use AlgParam::overflow when quantizing B in SVE2 Dqip16bGemmV0. Choose the int8 range from p.overflow or a.overflow, and zero-fill packed B through aK. Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…ip16bGemmV0_ConvertBb. (#1133) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
…_ConvertBb. (#1134) Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
* fix out-of-bounds read of uninitialised cpu info buffers The CPU probe helpers read their stack buffer even when no fgets succeeded, and the lscpu version scan is bounded by PATH_MAX rather than the string terminator, so an empty pipe leaves it one past the array and atoi reads off the end of the frame. * OSS-Fuzz: Move fuzzer to upstream repository Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * reject reserved deflate length and distance codes in png inflate * OSS-Fuzz: Add fuzzer targets pooling process Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * OSS-Fuzz: Update loader fuzzere and add options/corpora Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * OSS-Fuzz: Add new fuzzer and corpora targets gaussian blur process Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * OSS-Fuzz: Add new fuzzer targets gemm process Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * OSS-Fuzz: Add new fuzzer targets image saving Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * OSS-Fuzz: Add new fuzzer targets resizing process Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * OSS-Fuzz: Add new fuzzer targets yuv processing Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> * zero jpeg component planes before decoding scans * reject out-of-range palette indices in avx2 png__expand_png_palette The stb-derived Avx2 PNG decoder keeps its palette in an uninitialised 1024-byte stack array and only fills the PLTE entries, so an index past the palette copied stale stack bytes into the decoded image. Reject such indices before expansion, as the Base decoder already does. * reject jpeg scans using an undefined quantisation table Neither JPEG decoder initialises its dequant tables, and nothing checks that the table a component selects in SOF was loaded by a DQT marker, so a file without that DQT was dequantised with stale heap bytes that ended up in the output pixels. Track which tables were defined and reject such a scan at scan start, as libjpeg does. * fix off-by-one glyph range in font Measure and CreateAlpha FontImpl::Load builds glyphs for [_symbolMin, _symbolMax), but Measure and CreateAlpha accepted _symbolMax itself, so a 0x7F byte in the text indexed one past the end of _currentSymbols and handed that out-of-range View to Simd::Copy. Treat _symbolMax as exclusive so 0x7F is ignored like the other unsupported characters. * fix heap overflow on short input in avx2 Base64Encode * fix uninitialised ResizerNearest indices for 1-pixel sources IsNearest() sends a source with a 1-pixel side to ResizerNearest whatever the method, but EstimateIndex only filled the index tables for the nearest, bilinear, bicubic and PyTorch methods, so BilinearCaffe, BilinearOpenCv, Area and AreaFast resized through stale heap offsets. On x86 the Avx2 and Avx512bw init functions could also hand such a source to the area and bicubic resizers, which read past the source row. Use the standard mapping for every non-PyTorch method and keep 1-pixel sources on a nearest resizer on every backend. --------- Signed-off-by: Arthur Chan <arthur.chan@adalogics.com> Co-authored-by: Sayed Kaif <metsw24@gmail.com> Co-authored-by: Arthur Chan <arthur.chan@adalogics.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: igor.ermolaev <igor.ermolaev@altezza.org>
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Dynamic-quantized GEMM can read past unpadded inputs across four SIMD backends, while fuzz builds have a shared-library linking failure and disabled regression cases leave key behavior untested.
5 open issues
19 files not reviewed
docs/help/annotated.html: Generated filedocs/help/class_simd_1_1_synet_dynamic_quantized_inner_product16b.html: Generated filedocs/help/classes.html: Generated filedocs/help/functions_b.html: Generated filedocs/help/functions_c.html: Generated filedocs/help/functions_e.html: Generated filedocs/help/functions_f.html: Generated filedocs/help/functions_func_c.html: Generated filedocs/help/functions_func_e.html: Generated filedocs/help/functions_func_f.html: Generated filedocs/help/functions_func_i.html: Generated filedocs/help/functions_func_s.html: Generated filedocs/help/functions_func_~.html: Generated filedocs/help/functions_i.html: Generated filedocs/help/functions_s.html: Generated filedocs/help/functions_~.html: Generated filedocs/help/group__cpp__synet.html: Generated filedocs/help/group__synet__dynamic__quantized__inner__product.html: Generated filedocs/help/namespace_simd.html: Generated file
What changed in this PR
Prepares Simd 8.0.167 with expanded dynamic-quantized inner-product support, SIMD refactoring, image-decoder hardening, and fuzzing infrastructure.
Changes:
- Adds FP32 and BF16-capable dynamic-quantized inner-product initialization across supported architectures.
- Refactors SIMD memory access and shared helpers; addresses decoder, resizing, font, and Base64 edge cases.
- Adds fuzz harnesses and seed corpora, updates tests and build integration, and refreshes documentation.
This pull request requires changes. Unresolved findings cover critical out-of-bounds reads, scalar-aliasing behavior, fuzz-build compatibility, missing output validation, and reduced regression coverage. These are noted in the relevant rows below.
| File | Description |
|---|---|
src/Test/TestSynetQuantizedInnerProduct.cpp |
Replaces enabled regression cases with a square benchmark. Moderate, 3 votes — line 292: Restore coverage for transposed weights, bias, and irregular dimensions/tails. |
src/Test/TestResize.cpp |
Adds singleton-source resize checks. |
src/Test/TestFont.cpp |
Tests unsupported-character handling. |
src/Test/TestBase64.cpp |
Adds output guards and small-input cases. |
src/Test/Test.cpp |
Registers separate dynamic-quantized test groups. |
src/Simd/SimdSynetQuantizeLinear.h |
Shares AVX2 quantization helpers. |
src/Simd/SimdSynetConvParam.h |
Corrects tensor-type abbreviations. |
src/Simd/SimdSynetConvolution16bCommon.h |
Removes the relocated BF16 term enumeration. |
src/Simd/SimdSve2SynetDynamicQuantizedInnerProduct32f.cpp |
Adds SVE2 FP32 initialization. |
src/Simd/SimdSve2SynetDynamicQuantizedInnerProduct16b.cpp |
Adds SVE2 mixed-precision initialization. |
src/Simd/SimdStore.h |
Adds partial SSE integer stores. |
src/Simd/SimdSse41SynetSoftmax16b.cpp |
Uses consolidated min/max helpers. |
src/Simd/SimdSse41SynetGridSample2d32fBlZ.cpp |
Includes relocated reduction helpers. |
src/Simd/SimdSse41SynetDynamicQuantizedInnerProduct32f.cpp |
Adds SSE4.1 FP32 initialization. |
src/Simd/SimdSse41SynetDynamicQuantizedInnerProduct16b.cpp |
Adds SSE4.1 mixed-precision initialization. |
src/Simd/SimdSse41DescrInt.cpp |
Exposes pointer-output min/max functions. Critical, 3 votes — line 40: Unpadded GEMM lengths such as M=1, K=9 assert or read beyond input; support arbitrary lengths. |
src/Simd/SimdSse41.h |
Declares shared min/max functions. |
src/Simd/SimdSet.h |
Adds an SSE byte-zeroing overload. |
src/Simd/SimdNeonSynetMath.cpp |
Localizes vector multiply-add helpers. |
src/Simd/SimdNeonSynetGridSample2d32fBlZ.cpp |
Uses shared integer reductions. |
src/Simd/SimdNeonSynetDynamicQuantizedInnerProduct32f.cpp |
Adds NEON FP32 initialization. |
src/Simd/SimdNeonSynetDynamicQuantizedInnerProduct16b.cpp |
Adds NEON mixed-precision initialization. |
src/Simd/SimdNeonDescrInt.cpp |
Exposes pointer-output min/max functions. Critical, 3 votes — line 37: Unpadded GEMM lengths such as M=1, K=9 assert or read beyond input; support arbitrary lengths. |
src/Simd/SimdNeon.h |
Declares shared min/max functions. |
src/Simd/SimdMax.h |
Removes the superseded reduction header. |
src/Simd/SimdMath.h |
Removes obsolete and relocated helpers. |
src/Simd/SimdLoad.h |
Adds partial SSE 16-bit loads. |
src/Simd/SimdImageLoadJpeg.h |
Tracks defined quantization tables. |
src/Simd/SimdImageLoad.h |
Updates AVX2 PNG loader inheritance. |
src/Simd/SimdDescrInt.h |
Changes min/max callbacks to pointer outputs. |
src/Simd/SimdBFloat16.h |
Hosts the shared BF16 term enumeration. |
src/Simd/SimdBaseResizerNearest.cpp |
Handles additional singleton fallback methods. |
src/Simd/SimdBaseImageLoadPng.cpp |
Rejects reserved Huffman codes and adds instrumentation. |
src/Simd/SimdBaseImageLoadJpeg.cpp |
Validates tables and initializes decode buffers. |
src/Simd/SimdBaseFont.cpp |
Enforces exclusive glyph upper bounds. |
src/Simd/SimdBaseDescrInt.cpp |
Exposes scalar min/max functions and updates callers. |
src/Simd/SimdBase.h |
Declares shared min/max functions. |
src/Simd/SimdAvx512vnniSynetDynamicQuantizedInnerProduct32f.cpp |
Adds VNNI FP32 initialization. |
src/Simd/SimdAvx512vnniSynetDynamicQuantizedInnerProduct16b.cpp |
Adds VNNI mixed-precision initialization. |
src/Simd/SimdAvx512bwSynetMath.cpp |
Uses direct vector operations and masked tails. |
src/Simd/SimdAvx512bwSynetDynamicQuantizedInnerProduct32f.cpp |
Adds AVX-512BW FP32 initialization. |
src/Simd/SimdAvx512bwSynetDynamicQuantizedInnerProduct16b.cpp |
Adds AVX-512BW mixed-precision initialization. |
src/Simd/SimdAvx512bwStretchGray2x2.cpp |
Consolidates aligned and unaligned paths. |
src/Simd/SimdAvx512bwResizer.cpp |
Preserves nearest fallback dispatch. |
src/Simd/SimdAvx512bwReduceGray2x2.cpp |
Consolidates memory-access paths. |
src/Simd/SimdAvx512bwInt16ToGray.cpp |
Uses direct unaligned and masked accesses. |
src/Simd/SimdAvx512bwImageLoad.cpp |
Dispatches PNG loading to AVX2. |
src/Simd/SimdAvx512bwDescrInt.cpp |
Exposes pointer-output min/max functions. Critical, 3 votes — line 39: The fixed 0xFF tail mask overreads unpadded GEMM input; use an exact mask or scalar fallback for arbitrary lengths. |
src/Simd/SimdAvx512bwAddFeatureDifference.cpp |
Consolidates memory-access paths. |
src/Simd/SimdAvx512bwAbsGradientSaturatedSum.cpp |
Consolidates gradient memory accesses. |
src/Simd/SimdAvx512bwAbsDifference.cpp |
Consolidates difference memory accesses. |
src/Simd/SimdAvx512bw.h |
Declares shared min/max functions. |
src/Simd/SimdAvx2SynetSoftmax16b.cpp |
Uses consolidated min/max helpers. |
src/Simd/SimdAvx2SynetQuantizeLinear.cpp |
Removes the now-shared quantization helper. |
src/Simd/SimdAvx2SynetMath.cpp |
Replaces neural helpers with direct operations. Moderate, 1 vote — line 52: Capture *value once before both loops to preserve behavior when it aliases dst. |
src/Simd/SimdAvx2SynetGridSample2d32fBlZ.cpp |
Includes relocated reduction helpers. |
src/Simd/SimdAvx2SynetDynamicQuantizedInnerProduct32f.cpp |
Adds AVX2 FP32 initialization. |
src/Simd/SimdAvx2SynetDynamicQuantizedInnerProduct16b.cpp |
Adds AVX2 mixed-precision initialization. |
src/Simd/SimdAvx2StretchGray2x2.cpp |
Consolidates memory-access paths. |
src/Simd/SimdAvx2Resizer.cpp |
Preserves nearest fallback dispatch. |
src/Simd/SimdAvx2ReduceGray2x2.cpp |
Consolidates reduction memory accesses. |
src/Simd/SimdAvx2Int16ToGray.cpp |
Consolidates conversion memory accesses. |
src/Simd/SimdAvx2ImageLoadJpeg.cpp |
Validates tables and initializes decode buffers. |
src/Simd/SimdAvx2GrayToBgra.cpp |
Consolidates conversion memory accesses. |
src/Simd/SimdAvx2GrayToBgr.cpp |
Consolidates conversion memory accesses. |
src/Simd/SimdAvx2DescrInt.cpp |
Exposes pointer-output min/max functions. Critical, 3 votes — line 40: Unpadded GEMM lengths such as M=1, K=9 assert or read beyond input; support arbitrary lengths. |
src/Simd/SimdAvx2CreateMask.cpp |
Consolidates mask memory accesses. |
src/Simd/SimdAvx2BgrToHsv.cpp |
Consolidates HSV conversion memory accesses. |
src/Simd/SimdAvx2BgrToHsl.cpp |
Consolidates HSL conversion memory accesses. |
src/Simd/SimdAvx2Base64.cpp |
Prevents small-input size underflow. |
src/Simd/SimdAvx2AbsGradientSaturatedSum.cpp |
Consolidates gradient memory accesses. |
src/Simd/SimdAvx2AbsDifference.cpp |
Consolidates difference memory accesses. |
src/Simd/SimdAvx2.h |
Declares shared min/max functions. |
src/Simd/SimdAmxBf16SynetDynamicQuantizedInnerProduct32f.cpp |
Adds AMX FP32 initialization. |
src/Simd/SimdAmxBf16SynetDynamicQuantizedInnerProduct16b.cpp |
Adds AMX mixed-precision initialization. |
src/Simd/SimdAlphaBlending.h |
Consolidates AVX2 blending memory accesses. |
src/Fuzz/simd_yuv_fuzzer.options |
Sets the YUV input-size limit. |
src/Fuzz/simd_resizer_fuzzer.options |
Sets the resize input-size limit. |
src/Fuzz/simd_resizer_fuzzer.cpp |
Exercises resize methods, layouts, and dispatch. |
src/Fuzz/simd_pooling_fuzzer.options |
Sets the pooling input-size limit. |
src/Fuzz/simd_load_fuzzer.options |
Sets the image-load input-size limit. |
src/Fuzz/simd_load_fuzzer.cpp |
Fuzzes image decoding across output formats. |
src/Fuzz/simd_image_save_fuzzer.options |
Sets the image-save input-size limit. |
src/Fuzz/simd_image_save_fuzzer.cpp |
Fuzzes image encoding and compares implementations. |
src/Fuzz/simd_gemm_fuzzer.options |
Sets the GEMM input-size limit. |
src/Fuzz/simd_gemm_fuzzer.cpp |
Exercises NN/NT GEMM dimensions and strides. Moderate, 1 vote — line 95: Compare reference and actual logical outputs with floating-point tolerance, failing on mismatches or non-finite results. |
src/Fuzz/simd_gaussian_blur_fuzzer.options |
Sets the blur input-size limit. |
src/Fuzz/corpus/simd_yuv_fuzzer/444_reverse_96 |
Seeds reverse YUV444 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/444_reverse_128 |
Seeds wide reverse YUV444 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/444_forward_98 |
Seeds forward YUV444 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/444_forward_94 |
Seeds a YUV444 tail case. |
src/Fuzz/corpus/simd_yuv_fuzzer/422_reverse_64 |
Seeds reverse YUV422 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/422_forward_66 |
Seeds forward YUV422 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/422_forward_62 |
Seeds a YUV422 tail case. |
src/Fuzz/corpus/simd_yuv_fuzzer/420_small |
Seeds small YUV420 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/420_reverse_32 |
Seeds reverse YUV420 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/420_forward_34 |
Seeds forward YUV420 conversion. |
src/Fuzz/corpus/simd_yuv_fuzzer/420_forward_30 |
Seeds a YUV420 tail case. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_max |
Seeds maximum resize dimensions. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_65_to_63 |
Seeds padded nearest resizing. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_64_to_65 |
Seeds nearest expansion. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_63_to_64_rgba |
Seeds offset RGBA resizing. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_33_to_31_rgb |
Seeds padded RGB resizing. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_32_to_33_uv |
Seeds UV stride variations. |
src/Fuzz/corpus/simd_resizer_fuzzer/nearest_31_to_32 |
Seeds a nearest vector boundary. |
src/Fuzz/corpus/simd_resizer_fuzzer/bilinear_upscale |
Seeds bilinear expansion. |
src/Fuzz/corpus/simd_resizer_fuzzer/bilinear_singleton_width |
Seeds singleton-width resizing. |
src/Fuzz/corpus/simd_resizer_fuzzer/bilinear_singleton_height |
Seeds singleton-height resizing. |
src/Fuzz/corpus/simd_resizer_fuzzer/bilinear_downscale |
Seeds bilinear reduction. |
src/Fuzz/corpus/simd_resizer_fuzzer/bicubic_singleton |
Seeds singleton bicubic fallback. |
src/Fuzz/corpus/simd_resizer_fuzzer/bicubic_normal |
Seeds bicubic interpolation. |
src/Fuzz/corpus/simd_resizer_fuzzer/bicubic_fallback_width2 |
Seeds narrow bicubic fallback. |
src/Fuzz/corpus/simd_resizer_fuzzer/bicubic_fallback_height2 |
Seeds short bicubic fallback. |
src/Fuzz/corpus/simd_resizer_fuzzer/areafast_small |
Seeds small fast-area resizing. |
src/Fuzz/corpus/simd_resizer_fuzzer/areafast_fallback |
Seeds fast-area fallback. |
src/Fuzz/corpus/simd_resizer_fuzzer/areafast_2x2 |
Seeds fast-area reduction. |
src/Fuzz/corpus/simd_resizer_fuzzer/area_upscale |
Seeds area expansion. |
src/Fuzz/corpus/simd_resizer_fuzzer/area_downscale |
Seeds area reduction. |
src/Fuzz/corpus/simd_pooling_fuzzer/max_nhwc_c9_16x17.txt |
Seeds NHWC max-pooling tails. |
src/Fuzz/corpus/simd_pooling_fuzzer/max_nhwc_c8_3x5.txt |
Seeds small NHWC max pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/max_nhwc_c65_64x63.txt |
Seeds wide-channel max pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/max_nchw_c7_7x8.txt |
Seeds NCHW max pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/max_nchw_c16_31x33.txt |
Seeds NCHW spatial tails. |
src/Fuzz/corpus/simd_pooling_fuzzer/avg_nhwc_c65_64x64.txt |
Seeds wide-channel average pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/avg_nhwc_c5_1x9.txt |
Seeds singleton-height average pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/avg_nhwc_c15_17x31.txt |
Seeds NHWC average-pooling tails. |
src/Fuzz/corpus/simd_pooling_fuzzer/avg_nchw_c8_15x16.txt |
Seeds NCHW average pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/avg_nchw_c3_2x2.txt |
Seeds small average pooling. |
src/Fuzz/corpus/simd_pooling_fuzzer/avg_nchw_c17_63x64.txt |
Seeds larger NCHW average pooling. |
src/Fuzz/corpus/simd_load_fuzzer/gray-text.pgm |
Seeds text grayscale decoding. |
src/Fuzz/corpus/simd_load_fuzzer/gray-binary-33.pgm |
Seeds binary grayscale decoding. |
src/Fuzz/corpus/simd_load_fuzzer/color-text.ppm |
Seeds text color decoding. |
src/Fuzz/corpus/simd_load_fuzzer/color-binary-17.ppm |
Seeds binary color decoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/ppm_text |
Seeds text PPM encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/ppm_binary |
Seeds binary PPM encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/png_singleton |
Seeds singleton PNG encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/png_large |
Seeds larger PNG encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/pgm_text |
Seeds text PGM encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/pgm_binary |
Seeds binary PGM encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_91 |
Seeds high-quality JPEG encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_90 |
Seeds JPEG subsampling behavior. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_65 |
Seeds small JPEG encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_50 |
Seeds a JPEG quality boundary. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_49 |
Seeds the lower quality boundary. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_100 |
Seeds maximum-quality JPEG encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/jpeg_quality_10 |
Seeds low-quality JPEG encoding. |
src/Fuzz/corpus/simd_image_save_fuzzer/bmp_rgba |
Seeds padded RGBA BMP encoding. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_8x16x128.txt |
Seeds aligned NT GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_7x15x96.txt |
Seeds NT output tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_6x9x95.txt |
Seeds NT depth tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_64x64x256.txt |
Seeds larger NT GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_5x8x80.txt |
Seeds an NT row boundary. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_4x7x79.txt |
Seeds NT column/depth tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_3x5x65.txt |
Seeds narrow NT GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_1x3x64.txt |
Seeds single-row NT GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_1x128x256.txt |
Seeds wide single-row NT GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_13x25x129.txt |
Seeds multiple NT tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nt_12x24x127.txt |
Seeds an NT depth boundary. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_9x17x31.txt |
Seeds NN output/depth tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_8x16x17.txt |
Seeds an NN depth boundary. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_7x15x16.txt |
Seeds NN output tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_6x8x9.txt |
Seeds small NN GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_5x7x8.txt |
Seeds NN row/column tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_4x5x7.txt |
Seeds narrow NN GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_3x4x5.txt |
Seeds small irregular NN GEMM. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_1x1x1.txt |
Seeds minimum NN dimensions. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_1x128x255.txt |
Seeds wide NN depth tails. |
src/Fuzz/corpus/simd_gemm_fuzzer/nn_128x1x256.txt |
Seeds single-column NN GEMM. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/wide_kernel15 |
Seeds wide, large-kernel blur. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/vector_width32 |
Seeds a blur vector boundary. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/vector_width30 |
Seeds a blur vector tail. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/tiny_kernel15 |
Seeds large-kernel tiny images. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/tiny_copy |
Seeds a tiny blur case. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/tail_width34 |
Seeds multichannel blur tails. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/small_kernel5 |
Seeds small-kernel blur. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/single_row |
Seeds single-row blur. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/single_column |
Seeds single-column blur. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/largest |
Seeds maximum blur dimensions. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/kernel9_width16 |
Seeds blur edge handling. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/kernel7_width15 |
Seeds narrow-kernel blur tails. |
src/Fuzz/corpus/simd_gaussian_blur_fuzzer/kernel11_width17 |
Seeds grayscale blur tails. |
README.md |
Documents fuzzing configuration and execution. |
prj/vs2022/Test.vcxproj.filters |
Organizes split dynamic-quantized tests. |
prj/vs2022/Test.vcxproj |
Builds split dynamic-quantized tests. |
prj/vs2022/Sve2.vcxproj.filters |
Organizes new SVE2 sources and headers. |
prj/vs2022/Sve2.vcxproj |
Registers new SVE2 sources and headers. |
prj/vs2022/Sse41.vcxproj.filters |
Updates SSE4.1 sources and helper headers. |
prj/vs2022/Sse41.vcxproj |
Registers SSE4.1 implementations and headers. |
prj/vs2022/Simd.vcxproj.filters |
Organizes split inner-product headers. |
prj/vs2022/Simd.vcxproj |
Registers split inner-product headers. |
prj/vs2022/Neon.vcxproj.filters |
Updates NEON sources and helper headers. |
prj/vs2022/Neon.vcxproj |
Registers NEON implementations and headers. |
prj/vs2022/Base.vcxproj.filters |
Organizes scalar inner-product implementations. |
prj/vs2022/Base.vcxproj |
Registers scalar inner-product implementations. |
prj/vs2022/Avx512vnni.vcxproj.filters |
Organizes VNNI inner-product implementations. |
prj/vs2022/Avx512vnni.vcxproj |
Registers VNNI inner-product implementations. |
prj/vs2022/Avx512bw.vcxproj.filters |
Updates AVX-512BW sources and helper headers. |
prj/vs2022/Avx512bw.vcxproj |
Registers AVX-512BW implementations and headers. |
prj/vs2022/Avx2.vcxproj.filters |
Updates AVX2 sources and helper headers. |
prj/vs2022/Avx2.vcxproj |
Registers AVX2 implementations and headers. |
prj/vs2022/AmxBf16.vcxproj.filters |
Organizes AMX inner-product implementations. |
prj/vs2022/AmxBf16.vcxproj |
Registers AMX inner-product implementations. |
prj/cmake/CMakeLists.txt |
Adds optional fuzz executables. Moderate, 2 votes — line 205: Extend the visibility guard to SIMD_FUZZ before assigning library flags; shared, hidden-symbol builds with tests disabled cannot link the fuzz harnesses’ internal Base calls. |
docs/index.html |
Updates contributor attribution. |
docs/help/namespace_simd.html |
Lists split dynamic-quantized wrappers. |
docs/help/group__cpp__synet.html |
Updates wrapper group documentation. |
docs/help/functions_func_~.html |
Updates destructor links. |
docs/help/functions_b.html |
Reorders existing member-index entries. |
docs/help/functions_~.html |
Updates destructor index entries. |
docs/2026.html |
Updates release features and fixes. |
Review effort: Balanced
Comment on lines
+40
to
42
| void MinMax32f(const float* src, size_t size, float* min, float* max) | ||
| { | ||
| assert(size % 8 == 0); |
Comment on lines
+39
to
41
| void MinMax32f(const float* src, size_t size, float* min, float* max) | ||
| { | ||
| assert(size % 8 == 0); |
Comment on lines
+37
to
39
| void MinMax32f(const float* src, size_t size, float* min, float* max) | ||
| { | ||
| assert(size % 8 == 0); |
Comment on lines
+40
to
42
| void MinMax32f(const float* src, size_t size, float* min, float* max) | ||
| { | ||
| assert(size % 8 == 0); |
| @@ -289,7 +289,7 @@ namespace Test | |||
| result = result && SynetQuantizedInnerProductForwardAutoTest(e, Param(3, 512, 1024, u8, i8, u8, f, t, f), o, f1, f2); | |||
| result = result && SynetQuantizedInnerProductForwardAutoTest(e, Param(4, 512, 1024, u8, i8, u8, f, t, f), o, f1, f2); | |||
| #endif | |||
| #if 1 | |||
| #if 0 | |||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


No description provided.