diff options
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/r600/evergreen_compute.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/Makefile.sources | 2 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_llvm_util.c | 124 | ||||
-rw-r--r-- | src/gallium/drivers/radeon/radeon_llvm_util.h | 39 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_compute.c | 1 |
5 files changed, 0 insertions, 169 deletions
diff --git a/src/gallium/drivers/r600/evergreen_compute.c b/src/gallium/drivers/r600/evergreen_compute.c index 6f39c90cc62..6dd6e748a1b 100644 --- a/src/gallium/drivers/r600/evergreen_compute.c +++ b/src/gallium/drivers/r600/evergreen_compute.c @@ -46,9 +46,6 @@ #include "evergreen_compute_internal.h" #include "compute_memory_pool.h" #include "sb/sb_public.h" -#ifdef HAVE_OPENCL -#include "radeon/radeon_llvm_util.h" -#endif #include "radeon/radeon_elf_util.h" #include <inttypes.h> diff --git a/src/gallium/drivers/radeon/Makefile.sources b/src/gallium/drivers/radeon/Makefile.sources index 6fbed81f6c1..d6dd786448d 100644 --- a/src/gallium/drivers/radeon/Makefile.sources +++ b/src/gallium/drivers/radeon/Makefile.sources @@ -30,6 +30,4 @@ LLVM_C_FILES := \ radeon_llvm_emit.c \ radeon_llvm_emit.h \ radeon_llvm.h \ - radeon_llvm_util.c \ - radeon_llvm_util.h \ radeon_setup_tgsi_llvm.c diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.c b/src/gallium/drivers/radeon/radeon_llvm_util.c deleted file mode 100644 index da19533b862..00000000000 --- a/src/gallium/drivers/radeon/radeon_llvm_util.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2012, 2013 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: Tom Stellard <[email protected]> - * - */ - -#include "radeon_llvm_util.h" -#include "util/u_memory.h" - -#include <llvm-c/BitReader.h> -#include <llvm-c/Core.h> -#include <llvm-c/Target.h> -#include <llvm-c/Transforms/IPO.h> -#include <llvm-c/Transforms/PassManagerBuilder.h> - -LLVMModuleRef radeon_llvm_parse_bitcode(LLVMContextRef ctx, - const char * bitcode, unsigned bitcode_len) -{ - LLVMMemoryBufferRef buf; - LLVMModuleRef module; - - buf = LLVMCreateMemoryBufferWithMemoryRangeCopy((const char*)bitcode, - bitcode_len, "radeon"); - LLVMParseBitcodeInContext(ctx, buf, &module, NULL); - LLVMDisposeMemoryBuffer(buf); - return module; -} - -unsigned radeon_llvm_get_num_kernels(LLVMContextRef ctx, - const char *bitcode, unsigned bitcode_len) -{ - LLVMModuleRef mod = radeon_llvm_parse_bitcode(ctx, bitcode, bitcode_len); - return LLVMGetNamedMetadataNumOperands(mod, "opencl.kernels"); -} - -static void radeon_llvm_optimize(LLVMModuleRef mod) -{ -#if HAVE_LLVM < 0x0309 - const char *data_layout = LLVMGetDataLayout(mod); - LLVMTargetDataRef TD = LLVMCreateTargetData(data_layout); -#endif - LLVMPassManagerBuilderRef builder = LLVMPassManagerBuilderCreate(); - LLVMPassManagerRef pass_manager = LLVMCreatePassManager(); - - /* Functions calls are not supported yet, so we need to inline - * everything. The most efficient way to do this is to add - * the always_inline attribute to all non-kernel functions - * and then run the Always Inline pass. The Always Inline - * pass will automaically inline functions with this attribute - * and does not perform the expensive cost analysis that the normal - * inliner does. - */ - - LLVMValueRef fn; - for (fn = LLVMGetFirstFunction(mod); fn; fn = LLVMGetNextFunction(fn)) { - /* All the non-kernel functions have internal linkage */ - if (LLVMGetLinkage(fn) == LLVMInternalLinkage) { - LLVMAddFunctionAttr(fn, LLVMAlwaysInlineAttribute); - } - } - -#if HAVE_LLVM < 0x0309 - LLVMAddTargetData(TD, pass_manager); -#endif - LLVMAddAlwaysInlinerPass(pass_manager); - LLVMPassManagerBuilderPopulateModulePassManager(builder, pass_manager); - - LLVMRunPassManager(pass_manager, mod); - LLVMPassManagerBuilderDispose(builder); - LLVMDisposePassManager(pass_manager); -#if HAVE_LLVM < 0x0309 - LLVMDisposeTargetData(TD); -#endif -} - -LLVMModuleRef radeon_llvm_get_kernel_module(LLVMContextRef ctx, unsigned index, - const char *bitcode, unsigned bitcode_len) -{ - LLVMModuleRef mod; - unsigned num_kernels; - LLVMValueRef *kernel_metadata; - unsigned i; - - mod = radeon_llvm_parse_bitcode(ctx, bitcode, bitcode_len); - num_kernels = LLVMGetNamedMetadataNumOperands(mod, "opencl.kernels"); - kernel_metadata = MALLOC(num_kernels * sizeof(LLVMValueRef)); - LLVMGetNamedMetadataOperands(mod, "opencl.kernels", kernel_metadata); - for (i = 0; i < num_kernels; i++) { - LLVMValueRef kernel_signature, *kernel_function; - unsigned num_kernel_md_operands; - if (i == index) { - continue; - } - kernel_signature = kernel_metadata[i]; - num_kernel_md_operands = LLVMGetMDNodeNumOperands(kernel_signature); - kernel_function = MALLOC(num_kernel_md_operands * sizeof (LLVMValueRef)); - LLVMGetMDNodeOperands(kernel_signature, kernel_function); - LLVMDeleteFunction(*kernel_function); - FREE(kernel_function); - } - FREE(kernel_metadata); - radeon_llvm_optimize(mod); - return mod; -} diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.h b/src/gallium/drivers/radeon/radeon_llvm_util.h deleted file mode 100644 index cc1932aef47..00000000000 --- a/src/gallium/drivers/radeon/radeon_llvm_util.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2012, 2013 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * Authors: Tom Stellard <[email protected]> - * - */ - -#ifndef RADEON_LLVM_UTIL_H -#define RADEON_LLVM_UTIL_H - -#include <llvm-c/Core.h> - -LLVMModuleRef radeon_llvm_parse_bitcode(LLVMContextRef ctx, - const char * bitcode, unsigned bitcode_len); -unsigned radeon_llvm_get_num_kernels(LLVMContextRef ctx, - const char *bitcode, unsigned bitcode_len); -LLVMModuleRef radeon_llvm_get_kernel_module(LLVMContextRef ctx, unsigned index, - const char *bitcode, unsigned bitcode_len); - -#endif diff --git a/src/gallium/drivers/radeonsi/si_compute.c b/src/gallium/drivers/radeonsi/si_compute.c index 323204e2ab2..5a402867d4e 100644 --- a/src/gallium/drivers/radeonsi/si_compute.c +++ b/src/gallium/drivers/radeonsi/si_compute.c @@ -27,7 +27,6 @@ #include "util/u_upload_mgr.h" #include "radeon/r600_pipe_common.h" #include "radeon/radeon_elf_util.h" -#include "radeon/radeon_llvm_util.h" #include "radeon/r600_cs.h" #include "si_pipe.h" |