// Copyright Advanced Micro Devices, Inc., or its affiliates. // SPDX-License-Identifier: MIT #include "internal/asan_helpers.hpp" #include // Compile-time tests for rocblas::conditional_v // If any of these fail, the translation unit will not compile. using rocblas::conditional_v; // Basic true/false branch selection static_assert(conditional_v == 1, "true selects IfTrue"); static_assert(conditional_v == 2, "false selects IfFalse"); // Values representative of actual ASAN block-size reductions static_assert(conditional_v == 256, "ASAN-reduced block size"); static_assert(conditional_v == 1024, "normal block size"); static_assert(conditional_v == 4); static_assert(conditional_v == 16); // Identical values (degenerate case) static_assert(conditional_v == 42); static_assert(conditional_v == 42); // Zero as a valid value static_assert(conditional_v == 0); static_assert(conditional_v == 512); // rocblas_enable_asan is a well-formed constexpr bool static_assert(rocblas_enable_asan || !rocblas_enable_asan, "rocblas_enable_asan is a valid bool"); // conditional_v works with rocblas_enable_asan as the condition static_assert(conditional_v == (rocblas_enable_asan ? 256 : 1024)); // Minimal runtime test so the file registers in gtest output TEST(AsanHelpers, ConditionalV) { // Runtime mirror of the static_asserts above — verifies ODR and linkage EXPECT_EQ((conditional_v), 1); EXPECT_EQ((conditional_v), 2); EXPECT_EQ((conditional_v), rocblas_enable_asan ? 256 : 1024); }