Leandro Lacerda 2abd58cb7e
[Offload] Add framework for math conformance tests (#149242)
This PR introduces the initial version of a C++ framework for the
conformance testing of GPU math library functions, building upon the
skeleton provided in #146391.

The main goal of this framework is to systematically measure the
accuracy of math functions in the GPU libc, verifying correctness or at
least conformance to standards like OpenCL via exhaustive or random
accuracy tests.
2025-07-29 11:08:27 -05:00

52 lines
1.9 KiB
C++

//===----------------------------------------------------------------------===//
//
// 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 of the helper functions for the error
/// handling macros.
///
//===----------------------------------------------------------------------===//
#include "mathtest/ErrorHandling.hpp"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/ErrorHandling.h"
#include <OffloadAPI.h>
using namespace mathtest;
[[noreturn]] void detail::reportFatalError(const llvm::Twine &Message,
const char *File, int Line,
const char *FuncName) {
// clang-format off
llvm::report_fatal_error(
llvm::Twine("Fatal error in '") + FuncName +
"' at " + File + ":" + llvm::Twine(Line) +
"\n Message: " + Message,
/*gen_crash_diag=*/false);
// clang-format on
}
[[noreturn]] void detail::reportOffloadError(const char *ResultExpr,
ol_result_t Result,
const char *File, int Line,
const char *FuncName) {
// clang-format off
llvm::report_fatal_error(
llvm::Twine("OL_CHECK failed") +
"\n Location: " + File + ":" + llvm::Twine(Line) +
"\n Function: " + FuncName +
"\n Expression: " + ResultExpr +
"\n Error code: " + llvm::Twine(Result->Code) +
"\n Details: " +
(Result->Details ? Result->Details : "No details provided"),
/*gen_crash_diag=*/false);
// clang-format on
}