diff options
Diffstat (limited to 'thirdparty/embree-aarch64/common/sys/barrier.h')
-rw-r--r-- | thirdparty/embree-aarch64/common/sys/barrier.h | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/thirdparty/embree-aarch64/common/sys/barrier.h b/thirdparty/embree-aarch64/common/sys/barrier.h deleted file mode 100644 index 89607b8685..0000000000 --- a/thirdparty/embree-aarch64/common/sys/barrier.h +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2009-2020 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#pragma once - -#include "intrinsics.h" -#include "sysinfo.h" -#include "atomic.h" - -namespace embree -{ - /*! system barrier using operating system */ - class BarrierSys - { - public: - - /*! construction / destruction */ - BarrierSys (size_t N = 0); - ~BarrierSys (); - - private: - /*! class in non-copyable */ - BarrierSys (const BarrierSys& other) DELETED; // do not implement - BarrierSys& operator= (const BarrierSys& other) DELETED; // do not implement - - public: - /*! intializes the barrier with some number of threads */ - void init(size_t count); - - /*! lets calling thread wait in barrier */ - void wait(); - - private: - void* opaque; - }; - - /*! fast active barrier using atomitc counter */ - struct BarrierActive - { - public: - BarrierActive () - : cntr(0) {} - - void reset() { - cntr.store(0); - } - - void wait (size_t numThreads) - { - cntr++; - while (cntr.load() != numThreads) - pause_cpu(); - } - - private: - std::atomic<size_t> cntr; - }; - - /*! fast active barrier that does not require initialization to some number of threads */ - struct BarrierActiveAutoReset - { - public: - BarrierActiveAutoReset () - : cntr0(0), cntr1(0) {} - - void wait (size_t threadCount) - { - cntr0.fetch_add(1); - while (cntr0 != threadCount) pause_cpu(); - cntr1.fetch_add(1); - while (cntr1 != threadCount) pause_cpu(); - cntr0.fetch_add(-1); - while (cntr0 != 0) pause_cpu(); - cntr1.fetch_add(-1); - while (cntr1 != 0) pause_cpu(); - } - - private: - std::atomic<size_t> cntr0; - std::atomic<size_t> cntr1; - }; - - class LinearBarrierActive - { - public: - - /*! construction and destruction */ - LinearBarrierActive (size_t threadCount = 0); - ~LinearBarrierActive(); - - private: - /*! class in non-copyable */ - LinearBarrierActive (const LinearBarrierActive& other) DELETED; // do not implement - LinearBarrierActive& operator= (const LinearBarrierActive& other) DELETED; // do not implement - - public: - /*! intializes the barrier with some number of threads */ - void init(size_t threadCount); - - /*! thread with threadIndex waits in the barrier */ - void wait (const size_t threadIndex); - - private: - volatile unsigned char* count0; - volatile unsigned char* count1; - volatile unsigned int mode; - volatile unsigned int flag0; - volatile unsigned int flag1; - volatile size_t threadCount; - }; -} - |