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.
This patch is going to fix the incomplete compatibility layer by adding more compatibility functions into the HAL compatibility layer.
The HAL compatibility layer was introduced by #22179 when we supported the scalable RVV backend, which mainly includes some new universal intrinsic that have to be introduced in the RVV backend. And then with this HAL compatibility layer, we can use the new universal intrinsic in other non-scalable backends.
However, when the HAL compatibility layer is implemented, I used the compile-time wide universal intrinsic type (e.g. v_float32). It works fine most of the time, but the following special cases have problems: When using a specific narrow universal intrinsic type in a wide SIMD target.
For example, in #22440,
v_add
forv_float32x4
is called. It can be compiled on any 128-bits SIMD target but failed on 256/512 bits SIMD target like AVX2. Because v_float32 is defined as v_float32x8 in this case, then no functions forv_add(v_float32x4 ...)
is defined.This patch fixes the issue and modifies the relevant use case by using the new Universal Intrinsic (like
v_add
).Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
Patch to opencv_extra has the same branch name.