-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework setSIMDExtension to compile with partial SIMD enabled #455
Rework setSIMDExtension to compile with partial SIMD enabled #455
Conversation
Thank you for attempting to clean up the compilation mess. I just looked into it and realized that the ARM-SIMD code cannot work without having So, even with your changes applied, the code does not compile when |
a801022
to
0f3dc73
Compare
Thanks for pointing out the problems with the I think it is still possible to avoid the dependency between the two options: we can simply disable the RdCost optimisations if I also have a patch to remove the AArch64-only requirement for the RdCost kernels such that it also compiles on 32-bit Arm platforms, but I will put that up as a separate PR once this is merged so it doesn't conflict. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, looks good.
There are existing options to enable both Arm native and SIMDe-based intrinsics implementations, however if only one of these is enabled then compilation for Arm targets currently fails. Fix this by adjusting the existing #ifdef guards and adding new ones to cover the previously failing option combinations. Also stop checking REAL_TARGET_ARM since it does not distinguish between which SIMD targets are enabled.
The existing Neon code in RdCostARM.h depends on being able to call into the existing SIMDe-based x86 kernels. If VVENC_ENABLE_X86_SIMD is disabled in the CMake then these kernels are unavailable and compilation fails. Until native Neon kernels are added for the missing functions, simply disable the optimised RdCost Neon code unless the SIMDe kernels are also available.
0f3dc73
to
b183393
Compare
There are existing options to enable both Arm native and SIMDe-based intrinsics implementations, however if only one of these is enabled then compilation for Arm targets currently fails.
Fix this by adjusting the existing
#ifdef
guards and adding new ones to cover the previously failing option combinations. Also stop checkingREAL_TARGET_ARM
since it does not distinguish between which SIMD targets are enabled.Additionally the existing Neon code in RdCostARM.h depends on being able to call into the existing SIMDe-based x86 kernels. If
VVENC_ENABLE_X86_SIMD
is disabled in the CMake then these kernels are unavailable and compilationfails. Until native Neon kernels are added for the missing functions, simply disable the optimised RdCost Neon code unless the SIMDe kernels are also available.