//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// /// /// \file /// This file contains the implementation for the functions that define the set /// of all and default test configurations. /// //===----------------------------------------------------------------------===// #include "mathtest/TestConfig.hpp" #include "mathtest/DeviceContext.hpp" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/SmallVectorExtras.h" using namespace mathtest; [[nodiscard]] const llvm::SmallVector & mathtest::getAllTestConfigs() { // Thread-safe initialization of a static local variable static auto AllTestConfigs = []() -> llvm::SmallVector { return { {"llvm-libm", "amdgpu"}, {"llvm-libm", "cuda"}, {"cuda-math", "cuda"}, {"hip-math", "amdgpu"}, }; }(); return AllTestConfigs; }; [[nodiscard]] const llvm::SmallVector & mathtest::getDefaultTestConfigs() { // Thread-safe initialization of a static local variable static auto DefaultTestConfigs = []() -> llvm::SmallVector { const auto Platforms = getPlatforms(); const auto AllTestConfigs = getAllTestConfigs(); llvm::StringRef Provider = "llvm-libm"; return llvm::filter_to_vector(AllTestConfigs, [&](const auto &Config) { return Provider.equals_insensitive(Config.Provider) && llvm::any_of(Platforms, [&](llvm::StringRef Platform) { return Platform.equals_insensitive(Config.Platform); }); }); }(); return DefaultTestConfigs; };