465c1c0287
SWDEV-102733 - [OCL-LC-ROCm] Cmake build Write CMakeLists.txt to enable building with and without the DK environment - Change the coding convention of the runtime files. Use Google's Style (https://google.github.io/styleguide/cppguide.html). Affected files ... ... //depot/stg/opencl/drivers/opencl/.clang-format#1 add ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_agent_amd.h#2 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_command.cpp#13 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_context.cpp#53 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_counter.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_d3d10.cpp#15 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_d3d11.cpp#22 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_d3d9.cpp#32 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_debugger_amd.cpp#8 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_debugger_amd.h#7 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_device.cpp#61 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_event.cpp#10 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_execute.cpp#23 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_gl.cpp#53 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd.cpp#27 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_icd_amd.h#18 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_kernel.h#24 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_kernel_info_amd.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_kernel_info_amd.h#4 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_lqdflash_amd.cpp#17 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_lqdflash_amd.h#6 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_memobj.cpp#81 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_object.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_pipe.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_platform_amd.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_platform_amd.h#2 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_profile_amd.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_profile_amd.h#2 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_program.cpp#41 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_sampler.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_sdi_amd.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_sdi_amd.h#2 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_semaphore_amd.h#3 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_svm.cpp#20 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_thread_trace_amd.cpp#8 edit ... //depot/stg/opencl/drivers/opencl/api/opencl/amdocl/cl_thread_trace_amd.h#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/appprofile.cpp#17 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/appprofile.hpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/blit.cpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/blit.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/blitcl.cpp#11 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubinary.cpp#11 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubinary.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubuiltins.cpp#13 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpubuiltins.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpucommand.cpp#66 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpucommand.hpp#40 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.cpp#280 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpudevice.hpp#96 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpufeat.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpukernel.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpumapping.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpumapping.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuprogram.cpp#70 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuprogram.hpp#14 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpusettings.cpp#33 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpusettings.hpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cputables.hpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuvirtual.cpp#26 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/cpu/cpuvirtual.hpp#13 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/device.cpp#209 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#284 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuappprofile.cpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuappprofile.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpubinary.cpp#58 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpubinary.hpp#27 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpublit.cpp#126 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpublit.hpp#41 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucompiler.cpp#156 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuconstbuf.cpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuconstbuf.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucounters.cpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucounters.hpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudebugger.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudebugmanager.cpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudebugmanager.hpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudefs.hpp#147 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#567 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#163 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.cpp#318 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpukernel.hpp#126 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.cpp#131 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpumemory.hpp#50 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.cpp#44 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprintf.hpp#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#232 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.hpp#69 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.cpp#238 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuresource.hpp#87 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusched.hpp#19 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuschedcl.cpp#35 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuscsi.cpp#37 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.cpp#350 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpusettings.hpp#98 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputhreadtrace.cpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputhreadtrace.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputimestamp.cpp#27 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputimestamp.hpp#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gputrap.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.cpp#410 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuvirtual.hpp#140 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuwavelimiter.cpp#13 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuwavelimiter.hpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hwdebug.cpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/hwdebug.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palappprofile.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palbinary.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.cpp#13 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.hpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcompiler.cpp#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palconstbuf.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.cpp#11 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palcounters.hpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugger.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldebugmanager.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldefs.hpp#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#45 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d10.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d11.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldeviced3d9.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevicegl.cpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.cpp#34 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palkernel.hpp#11 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.cpp#13 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palmemory.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.cpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprintf.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.cpp#39 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palprogram.hpp#17 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.cpp#28 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palresource.hpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsched.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palschedcl.cpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.cpp#24 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palsettings.hpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palthreadtrace.hpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltimestamp.hpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paltrap.hpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#48 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#21 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palwavelimiter.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/mesa_glinterop.h#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocappprofile.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocappprofile.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocbinary.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.cpp#17 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompiler.cpp#32 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompilerlib.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/roccompilerlib.hpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdefs.hpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#48 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#20 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocglinterop.cpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocglinterop.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rockernel.cpp#22 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rockernel.hpp#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.cpp#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocmemory.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprintf.cpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprintf.hpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.cpp#64 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocprogram.hpp#23 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocregisters.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocsettings.cpp#17 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocsettings.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#34 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.hpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/os/alloc.cpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/os/alloc.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/os/os.cpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/os/os.hpp#30 edit ... //depot/stg/opencl/drivers/opencl/runtime/os/os_posix.cpp#42 edit ... //depot/stg/opencl/drivers/opencl/runtime/os/os_win32.cpp#47 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/agent.cpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/agent.hpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/command.cpp#78 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#83 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.cpp#23 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/commandqueue.hpp#18 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/context.cpp#42 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/context.hpp#26 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/counter.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/interop.hpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/kernel.cpp#23 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/kernel.hpp#18 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/memory.cpp#127 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/memory.hpp#100 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/ndrange.cpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/ndrange.hpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/object.cpp#2 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/object.hpp#17 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/perfctr.hpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/program.cpp#86 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/program.hpp#41 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/runtime.cpp#35 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/runtime.hpp#4 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/sampler.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/threadtrace.hpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/atomic.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/monitor.cpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/monitor.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/semaphore.cpp#10 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/semaphore.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/thread.cpp#14 edit ... //depot/stg/opencl/drivers/opencl/runtime/thread/thread.hpp#15 edit ... //depot/stg/opencl/drivers/opencl/runtime/top.hpp#26 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/concurrent.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/debug.cpp#5 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/debug.hpp#7 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.cpp#16 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.hpp#271 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/macros.hpp#8 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/util.hpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#2150 edit
427 строки
15 KiB
C++
427 строки
15 KiB
C++
//
|
|
// Copyright (c) 2011 Advanced Micro Devices, Inc. All rights reserved.
|
|
//
|
|
|
|
#include "device/cpu/cpudevice.hpp"
|
|
#include "device/cpu/cpukernel.hpp"
|
|
#include "platform/program.hpp"
|
|
#include "os/os.hpp"
|
|
#include "device/cpu/cpumapping.hpp"
|
|
#include <algorithm>
|
|
#include <functional>
|
|
#include <string>
|
|
#include <iostream>
|
|
#include <algorithm>
|
|
|
|
#if defined(_WIN32)
|
|
#include <windows.h>
|
|
#endif
|
|
// amdrt.o
|
|
#if defined(WITH_ONLINE_COMPILER) && !defined(_LP64) && !defined(ATI_ARCH_ARM)
|
|
#include "amdrt.inc"
|
|
#endif
|
|
#include "acl.h"
|
|
using std::min;
|
|
using std::max;
|
|
|
|
namespace cpu {
|
|
HCtoDCmap::HCtoDCmap(const clk_parameter_descriptor_t* desc, unsigned int level_alignment,
|
|
unsigned int index, unsigned int init_offset) {
|
|
level_alignment =
|
|
std::max(level_alignment,
|
|
1u); // Minimal possible alignment is 1 and alignment is used as a divisor below.
|
|
// Initialize fields
|
|
hc_offset = 0;
|
|
hc_size = 0;
|
|
dc_offset = 0;
|
|
dc_size = 0;
|
|
hc_alignment = level_alignment;
|
|
dc_alignment = level_alignment;
|
|
internal_field_map = NULL;
|
|
next_field_map = NULL;
|
|
return;
|
|
}
|
|
|
|
HCtoDCmap::~HCtoDCmap() { return; }
|
|
|
|
// Helper to find sizes of each scalar type
|
|
size_t HCtoDCmap::getHostScalarParamSize(const clk_value_type_t type) const {
|
|
size_t size = 0;
|
|
switch (type) {
|
|
case T_CHAR:
|
|
size = 1;
|
|
break;
|
|
case T_SHORT:
|
|
case T_CHAR2:
|
|
size = 2;
|
|
break;
|
|
case T_FLOAT:
|
|
case T_INT:
|
|
case T_CHAR4:
|
|
case T_SHORT2:
|
|
case T_CHAR3:
|
|
size = 4;
|
|
break;
|
|
case T_SAMPLER:
|
|
size = 4;
|
|
break;
|
|
case T_LONG:
|
|
case T_DOUBLE:
|
|
case T_CHAR8:
|
|
case T_SHORT4:
|
|
case T_INT2:
|
|
case T_FLOAT2:
|
|
case T_SHORT3:
|
|
size = 8;
|
|
break;
|
|
case T_INT3:
|
|
case T_FLOAT3:
|
|
case T_CHAR16:
|
|
case T_SHORT8:
|
|
case T_INT4:
|
|
case T_FLOAT4:
|
|
case T_LONG2:
|
|
case T_DOUBLE2:
|
|
size = 16;
|
|
break;
|
|
case T_LONG3:
|
|
case T_DOUBLE3:
|
|
case T_SHORT16:
|
|
case T_INT8:
|
|
case T_FLOAT8:
|
|
case T_LONG4:
|
|
case T_DOUBLE4:
|
|
size = 32;
|
|
break;
|
|
case T_INT16:
|
|
case T_FLOAT16:
|
|
case T_LONG8:
|
|
case T_DOUBLE8:
|
|
size = 64;
|
|
break;
|
|
case T_LONG16:
|
|
case T_DOUBLE16:
|
|
size = 128;
|
|
break;
|
|
case T_POINTER:
|
|
case T_VOID:
|
|
size = sizeof(void*);
|
|
break;
|
|
default:
|
|
assert(0 && "unknown scalar parameter size");
|
|
break;
|
|
}
|
|
return size;
|
|
}
|
|
|
|
size_t HCtoDCmap::getScalarAlignment(const clk_value_type_t type, bool isHost) const {
|
|
size_t align = 0;
|
|
switch (type) {
|
|
case T_CHAR:
|
|
align = 1;
|
|
break;
|
|
case T_SHORT:
|
|
case T_CHAR2:
|
|
align = 2;
|
|
break;
|
|
case T_FLOAT:
|
|
case T_INT:
|
|
case T_CHAR4:
|
|
case T_SHORT2:
|
|
case T_CHAR3:
|
|
align = 4;
|
|
break;
|
|
case T_SAMPLER:
|
|
align = sizeof(uint32_t);
|
|
break;
|
|
case T_LONG:
|
|
#if defined(_WIN32)
|
|
align = 8;
|
|
#else
|
|
align = isHost ? 8 : LP64_SWITCH(4, 8);
|
|
#endif
|
|
break;
|
|
case T_DOUBLE:
|
|
#if defined(_WIN32)
|
|
align = 8;
|
|
#else
|
|
align = LP64_SWITCH(4, 8);
|
|
#endif
|
|
break;
|
|
case T_CHAR8:
|
|
case T_SHORT4:
|
|
case T_INT2:
|
|
case T_FLOAT2:
|
|
case T_SHORT3:
|
|
align = 4;
|
|
break;
|
|
case T_INT3:
|
|
case T_FLOAT3:
|
|
case T_CHAR16:
|
|
case T_SHORT8:
|
|
case T_INT4:
|
|
case T_FLOAT4:
|
|
case T_LONG2:
|
|
case T_DOUBLE2:
|
|
case T_LONG3:
|
|
case T_DOUBLE3:
|
|
case T_SHORT16:
|
|
case T_INT8:
|
|
case T_FLOAT8:
|
|
case T_LONG4:
|
|
case T_DOUBLE4:
|
|
case T_INT16:
|
|
case T_FLOAT16:
|
|
case T_LONG8:
|
|
case T_DOUBLE8:
|
|
case T_LONG16:
|
|
case T_DOUBLE16:
|
|
align = LP64_SWITCH(4, 8);
|
|
break;
|
|
case T_POINTER:
|
|
case T_VOID:
|
|
align = sizeof(void*);
|
|
break;
|
|
default:
|
|
assert(0 && "unknown scalar parameter alignment");
|
|
break;
|
|
}
|
|
return align;
|
|
}
|
|
|
|
// Align up arguments within each map, return the size of current map parameter
|
|
// Input current alignment of the parameter, size of outer struct if it exists
|
|
void HCtoDCmap::align_map(unsigned outer_hc_alignment, unsigned outer_dc_alignment,
|
|
unsigned& outer_hc_size, unsigned& outer_dc_size, int& inStruct) {
|
|
unsigned map_param_size = 0;
|
|
if (internal_field_map != NULL) {
|
|
hc_size = 0; // Recalculate size to account for internal offsets
|
|
inStruct++;
|
|
internal_field_map->align_map(
|
|
hc_alignment, dc_alignment, hc_size, dc_size,
|
|
inStruct); // align internal struct, might alter size of this struct
|
|
if (hc_alignment != 1 && hc_size % hc_alignment)
|
|
hc_size = max(hc_size, hc_size - (hc_size % hc_alignment) + hc_alignment);
|
|
if (dc_alignment != 1 && dc_size % dc_alignment)
|
|
dc_size = max(dc_size, dc_size - (dc_size % dc_alignment) + dc_alignment);
|
|
}
|
|
// Use map_param_size to store current parameter size after adjusting alignment
|
|
if (hc_alignment != 1 && hc_size % hc_alignment != 0) {
|
|
map_param_size = max(hc_alignment, hc_size - (hc_size % hc_alignment) + hc_alignment);
|
|
} else {
|
|
map_param_size = max(hc_alignment, hc_size);
|
|
}
|
|
if (next_field_map != NULL) {
|
|
next_field_map->hc_offset = this->next_offset(hc_offset, map_param_size, inStruct);
|
|
next_field_map->align_map(outer_hc_alignment, outer_dc_alignment, outer_hc_size, outer_dc_size,
|
|
inStruct);
|
|
// Reset parameter size for char padding
|
|
if (next_field_map->type == T_CHAR) map_param_size = 1;
|
|
} else {
|
|
// Moving out of struct
|
|
if (inStruct > 0) inStruct--;
|
|
if (type == T_CHAR) map_param_size = 1;
|
|
}
|
|
outer_hc_size = max(outer_hc_size, hc_offset + map_param_size);
|
|
outer_dc_size = max(outer_dc_size, dc_offset + dc_size);
|
|
return;
|
|
}
|
|
|
|
// Return current size of map, calculate internal maps and process next args if in struct.
|
|
// Alignment: alignment flag for members in case of structs, alignment of scalar otherwise.
|
|
int HCtoDCmap::compute_map(const clk_parameter_descriptor_t* desc, unsigned int& outer_hc_alignment,
|
|
unsigned int& outer_dc_alignment, unsigned int init_offset,
|
|
int& inStruct, int& index_out) {
|
|
unsigned internal_index;
|
|
internal_index = index_out;
|
|
unsigned int next_offset = init_offset;
|
|
unsigned struct_size = 0;
|
|
type = desc[internal_index].type;
|
|
|
|
if (desc[internal_index].type == T_STRUCT) {
|
|
// Moving into struct, go to next index
|
|
inStruct++;
|
|
hc_offset = init_offset;
|
|
if (desc[index_out + 1].type != T_VOID) {
|
|
index_out++;
|
|
internal_index = index_out;
|
|
internal_field_map = new HCtoDCmap(desc, 0, internal_index, init_offset);
|
|
hc_size = internal_field_map->compute_map(desc, hc_alignment, dc_alignment, next_offset,
|
|
inStruct, index_out);
|
|
hc_alignment =
|
|
max(hc_alignment,
|
|
internal_field_map->hc_alignment); // Adjust alignment to biggest member alignment
|
|
struct_size = hc_size;
|
|
internal_index = index_out;
|
|
outer_hc_alignment = max(outer_hc_alignment, hc_alignment);
|
|
if (inStruct > 0) {
|
|
if (desc[index_out + 1].type != T_VOID) {
|
|
// Still inside struct and not done
|
|
index_out++;
|
|
internal_index = index_out;
|
|
next_field_map = new HCtoDCmap(desc, 0, internal_index, next_offset);
|
|
struct_size = hc_size;
|
|
struct_size += next_field_map->compute_map(desc, outer_hc_alignment, outer_dc_alignment,
|
|
next_offset, inStruct, index_out);
|
|
next_offset = max(next_field_map->hc_offset + next_field_map->hc_size,
|
|
next_field_map->hc_offset + hc_alignment);
|
|
// running count of strucdc_size = hc_size + size of next member
|
|
return struct_size;
|
|
} else {
|
|
// Moving out of struct, go to next index
|
|
index_out++;
|
|
internal_index = index_out;
|
|
inStruct--;
|
|
return hc_size; // return last struct member size
|
|
}
|
|
}
|
|
}
|
|
} else if (desc[internal_index].type == T_PAD) {
|
|
// Struct has padding
|
|
hc_offset = init_offset;
|
|
if (desc[index_out + 1].type != T_VOID) {
|
|
index_out++;
|
|
internal_index = index_out;
|
|
internal_field_map = new HCtoDCmap(desc, 0, internal_index, init_offset);
|
|
hc_size = internal_field_map->compute_map(desc, hc_alignment, dc_alignment, next_offset,
|
|
inStruct, index_out);
|
|
// Adjust alignment to biggest member alignment
|
|
hc_alignment = 1;
|
|
dc_alignment = 1;
|
|
unsigned pad_size = hc_size;
|
|
internal_index = index_out;
|
|
if (desc[index_out + 1].type != T_VOID) {
|
|
// Still inside padding and not done
|
|
index_out++;
|
|
internal_index = index_out;
|
|
next_field_map = new HCtoDCmap(desc, 0, internal_index, next_offset);
|
|
pad_size = hc_size;
|
|
pad_size += next_field_map->compute_map(desc, outer_hc_alignment, outer_dc_alignment,
|
|
next_offset, inStruct, index_out);
|
|
next_offset = max(next_field_map->hc_offset + next_field_map->hc_size,
|
|
next_field_map->hc_offset + hc_alignment);
|
|
// running count of padding dc_size = hc_size + size of next member
|
|
return pad_size;
|
|
} else {
|
|
// Moving out of struct, go to next index
|
|
index_out++;
|
|
internal_index = index_out;
|
|
return hc_size; // return last padding member size
|
|
}
|
|
}
|
|
} else {
|
|
// Scalar parameter
|
|
hc_offset = init_offset;
|
|
hc_size = getHostScalarParamSize(desc[internal_index].type);
|
|
dc_size = hc_size;
|
|
hc_alignment = getScalarAlignment(desc[internal_index].type, true);
|
|
dc_alignment = getScalarAlignment(desc[internal_index].type, false);
|
|
outer_hc_alignment = max(outer_hc_alignment, hc_alignment); // Adjust alignment of upper level
|
|
// struct if necessary, upper level
|
|
// alignment = max alignment of
|
|
// members
|
|
outer_dc_alignment = max(outer_dc_alignment, dc_alignment); // Adjust alignment of upper level
|
|
// struct if necessary, upper level
|
|
// alignment = max alignment of
|
|
// members
|
|
if (inStruct > 0) {
|
|
if (desc[index_out + 1].type != T_VOID) {
|
|
// Still inside struct and not done
|
|
index_out++;
|
|
next_field_map = new HCtoDCmap(desc, outer_hc_alignment, internal_index, next_offset);
|
|
struct_size = hc_size;
|
|
struct_size += next_field_map->compute_map(desc, outer_hc_alignment, outer_dc_alignment,
|
|
next_offset, inStruct, index_out);
|
|
next_offset = hc_offset + hc_alignment;
|
|
outer_hc_alignment = max(outer_hc_alignment, next_field_map->hc_alignment);
|
|
outer_dc_alignment = max(outer_dc_alignment, next_field_map->dc_alignment);
|
|
// running count of strucdc_size = hc_size + size of next member
|
|
return struct_size;
|
|
} else {
|
|
// Moving out of struct, go to next index
|
|
index_out++;
|
|
inStruct--;
|
|
return hc_size; // return last struct member size
|
|
}
|
|
}
|
|
}
|
|
return hc_size;
|
|
}
|
|
|
|
// Adjust offset for source and target, return next source offset
|
|
unsigned HCtoDCmap::next_offset(unsigned current_offset, unsigned& map_param_size,
|
|
int& inStruct_flag) {
|
|
unsigned next_offset = current_offset;
|
|
if (next_field_map == NULL) {
|
|
assert(0 && "invalid next struct field map");
|
|
return next_offset;
|
|
} else {
|
|
// Ignore alignment when a char occurs to account for padding
|
|
if (type == T_PAD) {
|
|
next_field_map->dc_offset = dc_offset + dc_size;
|
|
next_offset = current_offset + hc_size;
|
|
} else {
|
|
if ((dc_offset + dc_size) % next_field_map->dc_alignment != 0) {
|
|
this->next_field_map->dc_offset = dc_offset + dc_size -
|
|
(dc_size % next_field_map->dc_alignment) + next_field_map->dc_alignment;
|
|
} else {
|
|
this->next_field_map->dc_offset = dc_offset + max(dc_size, next_field_map->dc_alignment);
|
|
}
|
|
if ((hc_offset + hc_size) % next_field_map->hc_alignment != 0) {
|
|
next_offset = hc_offset + hc_size - (hc_size % next_field_map->hc_alignment) +
|
|
next_field_map->hc_alignment;
|
|
} else {
|
|
next_offset = hc_offset + max(next_field_map->hc_alignment, map_param_size);
|
|
}
|
|
}
|
|
return next_offset;
|
|
}
|
|
}
|
|
|
|
// Copy memory according to mapping
|
|
unsigned int HCtoDCmap::copy_params(void* dst, const void* src, unsigned int arg_offset,
|
|
int& error_code, int& inStruct) const {
|
|
unsigned int padding = 0;
|
|
// Pad offset to be aligned by 8 if parameter is double, not as struct field
|
|
if ((arg_offset) % 8 != 0 && (type == T_DOUBLE) && inStruct == 0)
|
|
padding = hc_alignment - ((arg_offset + dc_offset) % hc_alignment);
|
|
#if defined(_WIN32)
|
|
// In windows, double is aligned by 8, add padding to struct if it contains double
|
|
if ((arg_offset + dc_offset) % 8 != 0 && hc_alignment == 8)
|
|
padding = hc_alignment - ((arg_offset + dc_offset) % hc_alignment);
|
|
#endif
|
|
::memcpy(reinterpret_cast<void*>(reinterpret_cast<unsigned char*>(dst) + padding), src, hc_size);
|
|
#if defined(_WIN32)
|
|
if (internal_field_map != NULL) {
|
|
inStruct++;
|
|
void* internal_dst = reinterpret_cast<void*>(reinterpret_cast<unsigned char*>(dst) + padding);
|
|
internal_field_map->copy_params(internal_dst, src, arg_offset + padding, error_code, inStruct);
|
|
inStruct--;
|
|
}
|
|
if (next_field_map != NULL) {
|
|
void* next_dst =
|
|
reinterpret_cast<void*>(reinterpret_cast<unsigned char*>(dst) +
|
|
next_field_map->dc_offset); // Next field starts with padding
|
|
const void* next_src = reinterpret_cast<const void*>(
|
|
reinterpret_cast<const unsigned char*>(src) + next_field_map->hc_offset);
|
|
next_field_map->copy_params(next_dst, next_src, arg_offset + next_field_map->dc_offset,
|
|
error_code, inStruct);
|
|
}
|
|
#else
|
|
if (internal_field_map != NULL) {
|
|
inStruct++;
|
|
internal_field_map->copy_params(dst, src, arg_offset, error_code, inStruct);
|
|
inStruct--;
|
|
}
|
|
if (next_field_map != NULL) {
|
|
void* next_dst =
|
|
reinterpret_cast<void*>(reinterpret_cast<unsigned char*>(dst) + next_field_map->dc_offset);
|
|
const void* next_src = reinterpret_cast<const void*>(
|
|
reinterpret_cast<const unsigned char*>(src) + next_field_map->hc_offset);
|
|
next_field_map->copy_params(next_dst, next_src, arg_offset, error_code, inStruct);
|
|
}
|
|
#endif
|
|
return padding;
|
|
}
|
|
|
|
} // namespace cpu
|