Files
compute-runtime/shared/test/unit_test/utilities/cpuintrinsics.cpp
Zbigniew Zdanowicz a51b385e80 Wait on all tiles when clearing allocation list
Related-To: NEO-6244

Signed-off-by: Zbigniew Zdanowicz <zbigniew.zdanowicz@intel.com>
2021-10-12 11:55:43 +02:00

42 lines
1.0 KiB
C++

/*
* Copyright (C) 2020-2021 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include "shared/source/utilities/cpuintrinsics.h"
#include "shared/source/helpers/ptr_math.h"
#include <atomic>
#include <cstdint>
namespace CpuIntrinsicsTests {
//std::atomic is used for sake of sanitation in MT tests
std::atomic<uintptr_t> lastClFlushedPtr(0u);
std::atomic<uint32_t> pauseCounter(0u);
volatile uint32_t *pauseAddress = nullptr;
uint32_t pauseValue = 0u;
uint32_t pauseOffset = 0u;
} // namespace CpuIntrinsicsTests
namespace NEO {
namespace CpuIntrinsics {
void clFlush(void const *ptr) {
CpuIntrinsicsTests::lastClFlushedPtr = reinterpret_cast<uintptr_t>(ptr);
}
void pause() {
CpuIntrinsicsTests::pauseCounter++;
if (CpuIntrinsicsTests::pauseAddress != nullptr) {
*CpuIntrinsicsTests::pauseAddress = CpuIntrinsicsTests::pauseValue;
CpuIntrinsicsTests::pauseAddress = ptrOffset(CpuIntrinsicsTests::pauseAddress, CpuIntrinsicsTests::pauseOffset);
}
}
} // namespace CpuIntrinsics
} // namespace NEO