[packages/x265] update arm flags patch

atler atler at pld-linux.org
Sun Sep 15 21:06:54 CEST 2024


commit 76a09f3e8a8c596fc52be6f966af9843b064e896
Author: Jan Palus <atler at pld-linux.org>
Date:   Sun Sep 15 21:04:07 2024 +0200

    update arm flags patch

 x265-arm_flags.patch | 122 +++++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 100 insertions(+), 22 deletions(-)
---
diff --git a/x265-arm_flags.patch b/x265-arm_flags.patch
index d7b7d1c..68c17ad 100644
--- a/x265-arm_flags.patch
+++ b/x265-arm_flags.patch
@@ -20,7 +20,7 @@
      if(CROSS_COMPILE_ARM)
          message(STATUS "Cross compiling for ARM arch")
      else()
-@@ -244,45 +244,7 @@
+@@ -244,123 +244,7 @@
              endif()
          endif()
      endif()
@@ -36,28 +36,106 @@
 -            set(ARM_ARGS -mcpu=native -mfloat-abi=hard -mfpu=vfp -marm)
 -        endif()
 -    endif()
--	if(ARM64 OR CROSS_COMPILE_ARM64)
--        find_package(Neon)
--        find_package(SVE)
--        find_package(SVE2)
--        if(CPU_HAS_SVE2 OR CROSS_COMPILE_SVE2)
--            message(STATUS "Found SVE2")
--	        set(ARM_ARGS -O3 -march=armv8-a+sve2 -fPIC -flax-vector-conversions)
--            add_definitions(-DHAVE_SVE2)
--            add_definitions(-DHAVE_SVE)
--            add_definitions(-DHAVE_NEON) # for NEON c/c++ primitives, as currently there is no implementation that use SVE2
--        elseif(CPU_HAS_SVE OR CROSS_COMPILE_SVE)
--            message(STATUS "Found SVE")
--	        set(ARM_ARGS -O3 -march=armv8-a+sve -fPIC -flax-vector-conversions)
--            add_definitions(-DHAVE_SVE)
--            add_definitions(-DHAVE_NEON) # for NEON c/c++ primitives, as currently there is no implementation that use SVE
--        elseif(CPU_HAS_NEON)
--            message(STATUS "Found NEON")
--            set(ARM_ARGS -fPIC -flax-vector-conversions)
--            add_definitions(-DHAVE_NEON)
+-    if(ARM64)
+-        message(STATUS "Found Neon")
+-        set(CPU_HAS_NEON 1)
+-        add_definitions(-DX265_ARCH_ARM64=1 -DHAVE_NEON=1)
+-
+-        if(CROSS_COMPILE_ARM64)
+-            # Handle cross-compilation options.
+-            if(CROSS_COMPILE_NEON_DOTPROD)
+-                set(CPU_HAS_NEON_DOTPROD 1)
+-            endif()
+-            if(CROSS_COMPILE_NEON_I8MM)
+-                set(CPU_HAS_NEON_I8MM 1)
+-                # Impose the constraint that Neon I8MM implies Neon DotProd.
+-                set(CPU_HAS_NEON_DOTPROD 1)
+-            endif()
+-            if(CROSS_COMPILE_SVE)
+-                set(CPU_HAS_SVE 1)
+-                # Impose the constraint that SVE implies Neon DotProd and I8MM.
+-                set(CPU_HAS_NEON_DOTPROD 1)
+-                set(CPU_HAS_NEON_I8MM 1)
+-            endif()
+-            if(CROSS_COMPILE_SVE2)
+-                set(CPU_HAS_SVE2 1)
+-                # SVE2 implies SVE and Neon DotProd.
+-                set(CPU_HAS_SVE 1)
+-                set(CPU_HAS_NEON_DOTPROD 1)
+-                # Impose the constraint that SVE2 implies Neon I8MM.
+-                set(CPU_HAS_NEON_I8MM 1)
+-            endif()
 -        else()
--            set(ARM_ARGS -fPIC -flax-vector-conversions)
--        endif()        
+-            if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin")
+-                find_package(NEON_DOTPROD)
+-                find_package(NEON_I8MM)
+-                find_package(SVE)
+-                find_package(SVE2)
+-            else()
+-                message(STATUS "Compile time feature detection unsupported on this platform")
+-            endif()
+-        endif()
+-
+-        if(CPU_HAS_NEON_DOTPROD)
+-            # Neon DotProd is mandatory from Armv8.4.
+-            message(STATUS "Found Neon DotProd")
+-            set(ARM_ARGS -O3 -march=armv8.2-a+dotprod)
+-            add_definitions(-DHAVE_NEON_DOTPROD=1)
+-        endif()
+-        if(CPU_HAS_NEON_I8MM)
+-            # Neon I8MM is mandatory from Armv8.6.
+-            message(STATUS "Found Neon I8MM")
+-            # Impose the constraint that Neon I8MM implies Neon DotProd.
+-            if(NOT CPU_HAS_NEON_DOTPROD)
+-                message(FATAL_ERROR "Unsupported AArch64 feature combination (Neon I8MM without Neon DotProd)")
+-            endif()
+-            set(ARM_ARGS -O3 -march=armv8.2-a+dotprod+i8mm)
+-            add_definitions(-DHAVE_NEON_I8MM=1)
+-        endif()
+-        if(CPU_HAS_SVE)
+-            message(STATUS "Found SVE")
+-            # Impose the constraint that SVE implies Neon I8MM.
+-            if(NOT CPU_HAS_NEON_I8MM)
+-                message(FATAL_ERROR "Unsupported AArch64 feature combination (SVE without Neon I8MM)")
+-            endif()
+-            set(ARM_ARGS -O3 -march=armv8.2-a+dotprod+i8mm+sve)
+-            add_definitions(-DHAVE_SVE=1)
+-        endif()
+-        if(CPU_HAS_SVE2)
+-            message(STATUS "Found SVE2")
+-            # SVE2 is only available from Armv9.0, and armv9-a implies +dotprod
+-            set(ARM_ARGS -O3 -march=armv9-a+i8mm+sve2)
+-            add_definitions(-DHAVE_SVE2=1)
+-        endif()
+-        set(ARM_ARGS ${ARM_ARGS} -fPIC)
+-        # Do not allow implicit vector type conversions in Clang builds (this
+-        # is already the default in GCC builds).
+-        check_cxx_compiler_flag(-flax-vector-conversions=none CC_HAS_FLAX_VEC_CONV_NONE)
+-        if(CC_HAS_FLAX_VEC_CONV_NONE)
+-            set(ARM_ARGS ${ARM_ARGS} -flax-vector-conversions=none)
+-        endif()
+-        if(CPU_HAS_SVE)
+-            set(SVE_HEADER_TEST "
+-#ifndef __ARM_NEON_SVE_BRIDGE
+-#error 1
+-#endif
+-#include <arm_sve.h>
+-#include <arm_neon_sve_bridge.h>
+-int main() { return 0; }")
+-            set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+-            # CMAKE_REQUIRED_FLAGS requires a space-delimited string, whereas
+-            # ARM_ARGS is defined and used elsewhere as a ;-list.
+-            foreach(ARM_ARG ${ARM_ARGS})
+-                string(APPEND CMAKE_REQUIRED_FLAGS " ${ARM_ARG}")
+-            endforeach()
+-            check_c_source_compiles("${SVE_HEADER_TEST}" SVE_HEADER_C_TEST_COMPILED)
+-            check_cxx_source_compiles("${SVE_HEADER_TEST}" SVE_HEADER_CXX_TEST_COMPILED)
+-            set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
+-            if(SVE_HEADER_C_TEST_COMPILED AND SVE_HEADER_CXX_TEST_COMPILED)
+-                add_definitions(-DHAVE_SVE_BRIDGE=1)
+-                set(HAVE_SVE_BRIDGE 1)
+-            endif()
+-        endif()
 -    endif()
 -	if(ENABLE_PIC)
 -	list(APPEND ARM_ARGS -DPIC)
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/x265.git/commitdiff/76a09f3e8a8c596fc52be6f966af9843b064e896



More information about the pld-cvs-commit mailing list