add_executable(test_column test_column.cpp)
target_link_libraries(test_column PRIVATE regresslens_core)

add_executable(test_correctness_harness test_correctness_harness.cpp)
target_link_libraries(test_correctness_harness PRIVATE regresslens_core)

add_executable(test_reduction_scalar test_reduction_scalar.cpp)
target_link_libraries(test_reduction_scalar PRIVATE regresslens_core)

add_executable(test_reduction_avx2 test_reduction_avx2.cpp)
target_link_libraries(test_reduction_avx2 PRIVATE regresslens_core)
# AVX2 opt-in applied ONLY to this target, not globally, so scalar
# code stays portable per the project's kernel isolation policy.
target_compile_options(test_reduction_avx2 PRIVATE -mavx2)

add_executable(test_projection_scalar test_projection_scalar.cpp)
target_link_libraries(test_projection_scalar PRIVATE regresslens_core)

add_executable(test_projection_avx2 test_projection_avx2.cpp)
target_link_libraries(test_projection_avx2 PRIVATE regresslens_core)
target_compile_options(test_projection_avx2 PRIVATE -mavx2 -mfma)

add_executable(test_filter_scalar test_filter_scalar.cpp)
target_link_libraries(test_filter_scalar PRIVATE regresslens_core)

add_executable(test_filter_avx2 test_filter_avx2.cpp)
target_link_libraries(test_filter_avx2 PRIVATE regresslens_core)
target_compile_options(test_filter_avx2 PRIVATE -mavx2)

add_executable(test_rolling_scalar test_rolling_scalar.cpp)
target_link_libraries(test_rolling_scalar PRIVATE regresslens_core)

add_executable(test_rolling_avx2 test_rolling_avx2.cpp)
target_link_libraries(test_rolling_avx2 PRIVATE regresslens_core)
target_compile_options(test_rolling_avx2 PRIVATE -mavx2)

add_executable(test_reduction_mt_avx2 test_reduction_mt_avx2.cpp)
target_link_libraries(test_reduction_mt_avx2 PRIVATE regresslens_core Threads::Threads)
target_compile_options(test_reduction_mt_avx2 PRIVATE -mavx2)

add_executable(test_filter_mt_avx2 test_filter_mt_avx2.cpp)
target_link_libraries(test_filter_mt_avx2 PRIVATE regresslens_core Threads::Threads)
target_compile_options(test_filter_mt_avx2 PRIVATE -mavx2)

add_executable(test_kernel_selector test_kernel_selector.cpp)
target_link_libraries(test_kernel_selector PRIVATE regresslens_core)
