brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 1f496b9 Raw
112 lines · cpp
1//===------- Offload API tests - olGetSymbol ---------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "../common/Fixtures.hpp"10#include <OffloadAPI.h>11#include <gtest/gtest.h>12 13using olGetSymbolKernelTest = OffloadProgramTest;14OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetSymbolKernelTest);15 16struct olGetSymbolGlobalTest : OffloadQueueTest {17  void SetUp() override {18    RETURN_ON_FATAL_FAILURE(OffloadQueueTest::SetUp());19    ASSERT_TRUE(TestEnvironment::loadDeviceBinary("global", Device, DeviceBin));20    ASSERT_GE(DeviceBin->getBufferSize(), 0lu);21    ASSERT_SUCCESS(olCreateProgram(Device, DeviceBin->getBufferStart(),22                                   DeviceBin->getBufferSize(), &Program));23  }24 25  void TearDown() override {26    if (Program) {27      olDestroyProgram(Program);28    }29    RETURN_ON_FATAL_FAILURE(OffloadQueueTest::TearDown());30  }31 32  std::unique_ptr<llvm::MemoryBuffer> DeviceBin;33  ol_program_handle_t Program = nullptr;34  ol_kernel_launch_size_args_t LaunchArgs{};35};36OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetSymbolGlobalTest);37 38TEST_P(olGetSymbolKernelTest, Success) {39  ol_symbol_handle_t Kernel = nullptr;40  ASSERT_SUCCESS(olGetSymbol(Program, "foo", OL_SYMBOL_KIND_KERNEL, &Kernel));41  ASSERT_NE(Kernel, nullptr);42}43 44TEST_P(olGetSymbolKernelTest, SuccessSamePtr) {45  ol_symbol_handle_t KernelA = nullptr;46  ol_symbol_handle_t KernelB = nullptr;47  ASSERT_SUCCESS(olGetSymbol(Program, "foo", OL_SYMBOL_KIND_KERNEL, &KernelA));48  ASSERT_SUCCESS(olGetSymbol(Program, "foo", OL_SYMBOL_KIND_KERNEL, &KernelB));49  ASSERT_EQ(KernelA, KernelB);50}51 52TEST_P(olGetSymbolKernelTest, InvalidNullProgram) {53  ol_symbol_handle_t Kernel = nullptr;54  ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE,55               olGetSymbol(nullptr, "foo", OL_SYMBOL_KIND_KERNEL, &Kernel));56}57 58TEST_P(olGetSymbolKernelTest, InvalidNullKernelPointer) {59  ASSERT_ERROR(OL_ERRC_INVALID_NULL_POINTER,60               olGetSymbol(Program, "foo", OL_SYMBOL_KIND_KERNEL, nullptr));61}62 63TEST_P(olGetSymbolKernelTest, InvalidKernelName) {64  ol_symbol_handle_t Kernel = nullptr;65  ASSERT_ERROR(OL_ERRC_NOT_FOUND, olGetSymbol(Program, "invalid_kernel_name",66                                              OL_SYMBOL_KIND_KERNEL, &Kernel));67}68 69TEST_P(olGetSymbolKernelTest, InvalidKind) {70  ol_symbol_handle_t Kernel = nullptr;71  ASSERT_ERROR(72      OL_ERRC_INVALID_ENUMERATION,73      olGetSymbol(Program, "foo", OL_SYMBOL_KIND_FORCE_UINT32, &Kernel));74}75 76TEST_P(olGetSymbolGlobalTest, Success) {77  ol_symbol_handle_t Global = nullptr;78  ASSERT_SUCCESS(79      olGetSymbol(Program, "global", OL_SYMBOL_KIND_GLOBAL_VARIABLE, &Global));80  ASSERT_NE(Global, nullptr);81}82 83TEST_P(olGetSymbolGlobalTest, SuccessSamePtr) {84  ol_symbol_handle_t GlobalA = nullptr;85  ol_symbol_handle_t GlobalB = nullptr;86  ASSERT_SUCCESS(87      olGetSymbol(Program, "global", OL_SYMBOL_KIND_GLOBAL_VARIABLE, &GlobalA));88  ASSERT_SUCCESS(89      olGetSymbol(Program, "global", OL_SYMBOL_KIND_GLOBAL_VARIABLE, &GlobalB));90  ASSERT_EQ(GlobalA, GlobalB);91}92 93TEST_P(olGetSymbolGlobalTest, InvalidNullProgram) {94  ol_symbol_handle_t Global = nullptr;95  ASSERT_ERROR(96      OL_ERRC_INVALID_NULL_HANDLE,97      olGetSymbol(nullptr, "global", OL_SYMBOL_KIND_GLOBAL_VARIABLE, &Global));98}99 100TEST_P(olGetSymbolGlobalTest, InvalidNullGlobalPointer) {101  ASSERT_ERROR(102      OL_ERRC_INVALID_NULL_POINTER,103      olGetSymbol(Program, "global", OL_SYMBOL_KIND_GLOBAL_VARIABLE, nullptr));104}105 106TEST_P(olGetSymbolGlobalTest, InvalidGlobalName) {107  ol_symbol_handle_t Global = nullptr;108  ASSERT_ERROR(OL_ERRC_NOT_FOUND,109               olGetSymbol(Program, "invalid_global",110                           OL_SYMBOL_KIND_GLOBAL_VARIABLE, &Global));111}112