Skip to content

Dev prepare to Release 8.0.167. - #1140

Merged
ermig1979 merged 110 commits into
masterfrom
dev
Nov 6, 2026
Merged

ermig1979 merged 110 commits into
masterfrom
dev

Conversation

@ermig1979

Copy link
Copy Markdown
Owner

No description provided.

ermig1979 and others added 30 commits October 7, 2026 19:13
…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>
ermig1979 and others added 8 commits October 27, 2026 11:20
…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>
Copilot AI balanced review requested due to automatic review settings November 4, 2026 18:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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 file
  • docs/help/class_simd_1_1_synet_dynamic_quantized_inner_product16b.html: Generated file
  • docs/help/classes.html: Generated file
  • docs/help/functions_b.html: Generated file
  • docs/help/functions_c.html: Generated file
  • docs/help/functions_e.html: Generated file
  • docs/help/functions_f.html: Generated file
  • docs/help/functions_func_c.html: Generated file
  • docs/help/functions_func_e.html: Generated file
  • docs/help/functions_func_f.html: Generated file
  • docs/help/functions_func_i.html: Generated file
  • docs/help/functions_func_s.html: Generated file
  • docs/help/functions_func_~.html: Generated file
  • docs/help/functions_i.html: Generated file
  • docs/help/functions_s.html: Generated file
  • docs/help/functions_~.html: Generated file
  • docs/help/group__cpp__synet.html: Generated file
  • docs/help/group__synet__dynamic__quantized__inner__product.html: Generated file
  • docs/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
@ermig1979
ermig1979 merged commit 2c1a408 into master Nov 6, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants