/* * Copyright (C) 2023 Intel Corporation * * SPDX-License-Identifier: MIT * */ #include "shared/source/helpers/addressing_mode_helper.h" #include "shared/source/program/kernel_info.h" #include "gtest/gtest.h" using namespace NEO; TEST(AddressingModeHelperTest, GivenArgIsNotPointerWhenCheckingForStatefulAccessThenReturnFalse) { auto argDescriptor = ArgDescriptor(ArgDescriptor::ArgTValue); KernelDescriptor kernelDescriptor; kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptor); EXPECT_FALSE(AddressingModeHelper::containsStatefulAccess(kernelDescriptor, false)); } TEST(AddressingModeHelperTest, GivenArgIsPointerWithInvalidStatefulOffsetWhenCheckingForStatefulAccessThenReturnFalse) { auto argDescriptor = ArgDescriptor(ArgDescriptor::ArgTPointer); argDescriptor.as().bindful = undefined; argDescriptor.as().bindless = undefined; KernelDescriptor kernelDescriptor; kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptor); EXPECT_FALSE(AddressingModeHelper::containsStatefulAccess(kernelDescriptor, false)); } TEST(AddressingModeHelperTest, GivenArgIsPointerWithValidBindfulOffsetWhenCheckingForStatefulAccessThenReturnTrue) { auto argDescriptor = ArgDescriptor(ArgDescriptor::ArgTPointer); argDescriptor.as().bindful = 0x40; argDescriptor.as().bindless = undefined; KernelDescriptor kernelDescriptor; kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptor); EXPECT_TRUE(AddressingModeHelper::containsStatefulAccess(kernelDescriptor, false)); } TEST(AddressingModeHelperTest, GivenArgIsPointerWithValidBindlessOffsetWhenCheckingForStatefulAccessThenReturnTrue) { auto argDescriptor = ArgDescriptor(ArgDescriptor::ArgTPointer); argDescriptor.as().bindful = undefined; argDescriptor.as().bindless = 0x40; KernelDescriptor kernelDescriptor; kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptor); EXPECT_TRUE(AddressingModeHelper::containsStatefulAccess(kernelDescriptor, false)); } TEST(AddressingModeHelperTest, GivenLastArgIsPointerWithValidBindlessOffsetWhenIgnoreLastArgAndCheckingForStatefulAccessThenReturnFalse) { auto argDescriptor = ArgDescriptor(ArgDescriptor::ArgTPointer); argDescriptor.as().bindful = undefined; argDescriptor.as().bindless = 0x40; KernelDescriptor kernelDescriptor; kernelDescriptor.payloadMappings.explicitArgs.push_back(argDescriptor); EXPECT_FALSE(AddressingModeHelper::containsStatefulAccess(kernelDescriptor, true)); }