mirror of
https://chromium.googlesource.com/libyuv/libyuv
synced 2026-10-28 18:07:12 +08:00
loongarch: Fix per-ISA build flags
Compile LSX and LASX sources separately (-mlsx vs -mlasx) to avoid emitting LASX instructions in LSX kernels, which crashed on LSX-only CPUs. Change-Id: I56003cee9bb750cdac8fa19a5c95efb8889ba9e0 Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8294723 Reviewed-by: Wan-Teh Chang <wtc@google.com> Commit-Queue: Wan-Teh Chang <wtc@google.com> Reviewed-by: Frank Barchard <fbarchard@google.com>
This commit is contained in:
parent
60102bd795
commit
2f74e7a784
@ -40,13 +40,10 @@ set ( ly_common_source_files
|
|||||||
${ly_src_dir}/rotate.cc
|
${ly_src_dir}/rotate.cc
|
||||||
${ly_src_dir}/rotate_common.cc
|
${ly_src_dir}/rotate_common.cc
|
||||||
${ly_src_dir}/rotate_gcc.cc
|
${ly_src_dir}/rotate_gcc.cc
|
||||||
${ly_src_dir}/rotate_lsx.cc
|
|
||||||
${ly_src_dir}/rotate_win.cc
|
${ly_src_dir}/rotate_win.cc
|
||||||
${ly_src_dir}/row_any.cc
|
${ly_src_dir}/row_any.cc
|
||||||
${ly_src_dir}/row_common.cc
|
${ly_src_dir}/row_common.cc
|
||||||
${ly_src_dir}/row_gcc.cc
|
${ly_src_dir}/row_gcc.cc
|
||||||
${ly_src_dir}/row_lasx.cc
|
|
||||||
${ly_src_dir}/row_lsx.cc
|
|
||||||
${ly_src_dir}/row_rvv.cc
|
${ly_src_dir}/row_rvv.cc
|
||||||
${ly_src_dir}/row_win.cc
|
${ly_src_dir}/row_win.cc
|
||||||
${ly_src_dir}/scale_any.cc
|
${ly_src_dir}/scale_any.cc
|
||||||
@ -54,7 +51,6 @@ set ( ly_common_source_files
|
|||||||
${ly_src_dir}/scale.cc
|
${ly_src_dir}/scale.cc
|
||||||
${ly_src_dir}/scale_common.cc
|
${ly_src_dir}/scale_common.cc
|
||||||
${ly_src_dir}/scale_gcc.cc
|
${ly_src_dir}/scale_gcc.cc
|
||||||
${ly_src_dir}/scale_lsx.cc
|
|
||||||
${ly_src_dir}/scale_rgb.cc
|
${ly_src_dir}/scale_rgb.cc
|
||||||
${ly_src_dir}/scale_rvv.cc
|
${ly_src_dir}/scale_rvv.cc
|
||||||
${ly_src_dir}/scale_uv.cc
|
${ly_src_dir}/scale_uv.cc
|
||||||
@ -162,10 +158,21 @@ if(LOONGARCH64)
|
|||||||
return 0; }" SUPPORTS_LASX)
|
return 0; }" SUPPORTS_LASX)
|
||||||
|
|
||||||
if(SUPPORTS_LSX)
|
if(SUPPORTS_LSX)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlsx")
|
# These kernels use only LSX (128-bit) instructions and must not be
|
||||||
|
# compiled with -mlasx, which would let the compiler emit 256-bit LASX
|
||||||
|
# code (e.g. for stack-array copies) and crash on LSX-only CPUs.
|
||||||
|
add_library(${ly_lib_name}_lsx OBJECT
|
||||||
|
${ly_src_dir}/rotate_lsx.cc
|
||||||
|
${ly_src_dir}/row_lsx.cc
|
||||||
|
${ly_src_dir}/scale_lsx.cc)
|
||||||
|
target_compile_options(${ly_lib_name}_lsx PRIVATE -mlsx)
|
||||||
|
list(APPEND ly_lib_parts $<TARGET_OBJECTS:${ly_lib_name}_lsx>)
|
||||||
endif()
|
endif()
|
||||||
if(SUPPORTS_LASX)
|
if(SUPPORTS_LASX)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mlasx")
|
add_library(${ly_lib_name}_lasx OBJECT
|
||||||
|
${ly_src_dir}/row_lasx.cc)
|
||||||
|
target_compile_options(${ly_lib_name}_lasx PRIVATE -mlasx)
|
||||||
|
list(APPEND ly_lib_parts $<TARGET_OBJECTS:${ly_lib_name}_lasx>)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user