Files
rocm-systems/rocclr/runtime/top.hpp
T
foreman c99d679c9e P4 to Git Change 1230521 by gandryey@gera-w8 on 2016/01/22 17:58:08
SWDEV-86035 - Add OCL backend for PAL
	- PAL backend build is disabled by default. "BUILD_PAL_DEVICE = yes" enables the build. You also have to update the client workspace with PAL mapping: //depot/stg/pal/... //<your_opencl_location>/runtime/device/pal/palbe/...

Affected files ...

... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/build/Makefile.api#130 edit
... //depot/stg/opencl/drivers/opencl/compiler/sclibdefs.opencl#8 edit
... //depot/stg/opencl/drivers/opencl/opencldefs#166 edit
... //depot/stg/opencl/drivers/opencl/openclrules#91 edit
... //depot/stg/opencl/drivers/opencl/runtime/Makefile#21 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#192 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/Makefile#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/build/Makefile#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/build/Makefile.pal#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcompiler.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugger.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldefs.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d10.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d11.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d9.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevicegl.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsched.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palschedcl.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltrap.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.cpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.hpp#1 add
... //depot/stg/opencl/drivers/opencl/runtime/runtimedefs#36 edit
... //depot/stg/opencl/drivers/opencl/runtime/top.hpp#23 edit
2016-01-22 18:18:55 -05:00

179 lines
4.3 KiB
C++

//
// Copyright (c) 2008 Advanced Micro Devices, Inc. All rights reserved.
//
#ifndef TOP_HPP_
#define TOP_HPP_
#if defined(ATI_ARCH_ARM)
# define __EXPORTED_HEADERS__ 1
#endif /*ATI_ARCH_ARM*/
#ifdef _WIN32
# define NOMINMAX 1
# define WIN32_LEAN_AND_MEAN 1
#endif /*_WIN32*/
#include "utils/macros.hpp"
#include "CL/opencl.h"
#if defined(CL_VERSION_2_0)
/* Deprecated in OpenCL 2.0 */
# define CL_DEVICE_QUEUE_PROPERTIES 0x102A
# define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035
#endif
#if !defined(ATI_ARCH_ARM)
#include <xmmintrin.h>
#endif /*!ATI_ARCH_ARM*/
#include <cstdint>
#include <cstddef>
#include <new>
typedef unsigned char* address;
typedef const unsigned char* const_address;
typedef void * pointer;
typedef const void * const_pointer;
typedef unsigned int uint;
typedef unsigned long ulong;
typedef const char* cstring;
#if defined(_WIN32)
# if defined(_WIN64)
typedef __int64 ssize_t;
# else // !_WIN64
typedef __int32 ssize_t;
# endif // !_WIN64
#endif /*_WIN32*/
#ifdef _WIN32
# define SIZE_T_FMT "%Iu"
# define PTR_FMT "0x%p"
# define snprintf sprintf_s
#else /*!_WIN32*/
# define SIZE_T_FMT "%zu"
# define PTR_FMT "%p"
#endif /*!_WIN32*/
typedef uint32_t cl_mem_fence_flags;
//! \cond ignore
#define _BAD_INT32 0xBAADBAAD
#define _BAD_INT64 0XBAADBAADBAADBAADLL
#define _BAD_INTPTR LP64_SWITCH(_BAD_INT32,_BAD_INT64)
const pointer badPointer = (pointer)(intptr_t) _BAD_INTPTR;
const address badAddress = (address)(intptr_t) _BAD_INTPTR;
//! \endcond
const size_t Ki = 1024;
const size_t Mi = Ki*Ki;
const size_t Gi = Ki*Ki*Ki;
const size_t K = 1000;
const size_t M = K*K;
const size_t G = K*K*K;
#include "utils/debug.hpp"
//! \addtogroup Utils
//! Namespace for AMD's OpenCL platform
namespace amd {/*@{*/
//! \brief The default Null object type (!= void*);
struct Null {};
//! \brief Return a const Null object (null)
inline const Null null() { return Null(); }
/*! \brief Equivalent to a namespace (All member functions are static).
*/
class AllStatic
{
WINDOWS_SWITCH(public,private):
AllStatic() { ShouldNotCallThis(); }
AllStatic(const AllStatic&) { ShouldNotCallThis(); }
~AllStatic() { ShouldNotCallThis(); }
};
/*! \brief For embedded objects.
*/
class EmbeddedObject
{
WINDOWS_SWITCH(public,private):
void* operator new(size_t) { ShouldNotCallThis(); return badPointer; }
void operator delete(void *) { ShouldNotCallThis(); }
};
/*! \brief For stack allocated objects.
*/
class StackObject
{
WINDOWS_SWITCH(public,private):
void* operator new(size_t) { ShouldNotCallThis(); return badPointer; }
void operator delete(void *) { ShouldNotCallThis(); }
};
/*! \brief for objects allocated in a dedicate memory pool.
the standard 'new' should not be called,
only the in place version 'new (allocation_pointer) <class>()'
, delete should only invoke the destructors and not release memory
*/
class MemoryPoolObject
{
public:
void* operator new(size_t) { ShouldNotCallThis(); return badPointer; }
void* operator new(size_t size,void * address) { return address; }
void operator delete(void *) { }
void operator delete( void *,void * address) { }
};
/*! \brief For objects allocated on the C-heap.
*/
class HeapObject
{
public:
void* operator new(size_t size);
void operator delete(void* obj);
void* operator new(size_t size, size_t extSize)
{ return HeapObject::operator new (size + extSize); };
void operator delete(void* obj, size_t extSize)
{ HeapObject::operator delete (obj); }
};
/*! \brief For all reference counted objects.
*/
class ReferenceCountedObject
{
volatile uint referenceCount_;
protected:
virtual ~ReferenceCountedObject() { }
virtual bool terminate() { return true; }
public:
ReferenceCountedObject() : referenceCount_(1) { }
void* operator new(size_t size) { return ::operator new(size); }
void operator delete(void* p) { return ::operator delete(p); }
void* operator new(size_t size, size_t extSize)
{ return ReferenceCountedObject::operator new (size + extSize); };
void operator delete(void* obj, size_t extSize)
{ ReferenceCountedObject::operator delete (obj); }
uint referenceCount() const { return referenceCount_; }
uint retain();
uint release();
};
/*@}*/} // namespace amd
#undef min // using std::min
#undef max // using std::max
#endif /*TOP_HPP_*/