67 lines · cpp
1//===------- Offload API tests - olMemAlloc -------------------------------===//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 olMemAllocTest = OffloadDeviceTest;14OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olMemAllocTest);15 16TEST_P(olMemAllocTest, SuccessAllocManaged) {17 void *Alloc = nullptr;18 ASSERT_SUCCESS(olMemAlloc(Device, OL_ALLOC_TYPE_MANAGED, 1024, &Alloc));19 ASSERT_NE(Alloc, nullptr);20 olMemFree(Alloc);21}22 23TEST_P(olMemAllocTest, SuccessAllocHost) {24 void *Alloc = nullptr;25 ASSERT_SUCCESS(olMemAlloc(Device, OL_ALLOC_TYPE_HOST, 1024, &Alloc));26 ASSERT_NE(Alloc, nullptr);27 olMemFree(Alloc);28}29 30TEST_P(olMemAllocTest, SuccessAllocDevice) {31 void *Alloc = nullptr;32 ASSERT_SUCCESS(olMemAlloc(Device, OL_ALLOC_TYPE_DEVICE, 1024, &Alloc));33 ASSERT_NE(Alloc, nullptr);34 olMemFree(Alloc);35}36 37TEST_P(olMemAllocTest, SuccessAllocMany) {38 std::vector<void *> Allocs;39 Allocs.reserve(1000);40 41 constexpr ol_alloc_type_t TYPES[3] = {42 OL_ALLOC_TYPE_DEVICE, OL_ALLOC_TYPE_MANAGED, OL_ALLOC_TYPE_HOST};43 44 for (size_t I = 1; I < 1000; I++) {45 void *Alloc = nullptr;46 ASSERT_SUCCESS(olMemAlloc(Device, TYPES[I % 3], 1024 * I, &Alloc));47 ASSERT_NE(Alloc, nullptr);48 49 Allocs.push_back(Alloc);50 }51 52 for (auto *A : Allocs) {53 olMemFree(A);54 }55}56 57TEST_P(olMemAllocTest, InvalidNullDevice) {58 void *Alloc = nullptr;59 ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE,60 olMemAlloc(nullptr, OL_ALLOC_TYPE_DEVICE, 1024, &Alloc));61}62 63TEST_P(olMemAllocTest, InvalidNullOutPtr) {64 ASSERT_ERROR(OL_ERRC_INVALID_NULL_POINTER,65 olMemAlloc(Device, OL_ALLOC_TYPE_DEVICE, 1024, nullptr));66}67