blob: b4396fcc74444dc2c1dd521aa81dcf69094a5158 [file] [log] [blame] [edit]
//===----------------------------------------------------------------------===//
//
// 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<TestConfig, 4> &
mathtest::getAllTestConfigs() {
// Thread-safe initialization of a static local variable
static auto AllTestConfigs = []() -> llvm::SmallVector<TestConfig, 4> {
return {
{"llvm-libm", "amdgpu"},
{"llvm-libm", "cuda"},
{"cuda-math", "cuda"},
{"hip-math", "amdgpu"},
};
}();
return AllTestConfigs;
};
[[nodiscard]] const llvm::SmallVector<TestConfig, 4> &
mathtest::getDefaultTestConfigs() {
// Thread-safe initialization of a static local variable
static auto DefaultTestConfigs = []() -> llvm::SmallVector<TestConfig, 4> {
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;
};