mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
r600g/llvm: Move llvm wrapper functions into the radeon directory
This commit is contained in:
parent
28e1693630
commit
97bfcddde0
7 changed files with 35 additions and 38 deletions
|
|
@ -16,8 +16,7 @@ libr600_la_SOURCES = \
|
|||
if R600_NEED_RADEON_GALLIUM
|
||||
|
||||
libr600_la_SOURCES += \
|
||||
$(LLVM_C_SOURCES) \
|
||||
$(LLVM_CXX_SOURCES)
|
||||
$(LLVM_C_SOURCES)
|
||||
|
||||
libr600_la_LIBADD = ../radeon/libllvmradeon@VERSION@.la
|
||||
|
||||
|
|
@ -25,9 +24,6 @@ AM_CFLAGS += \
|
|||
$(LLVM_CFLAGS) \
|
||||
-I$(top_srcdir)/src/gallium/drivers/radeon/
|
||||
|
||||
AM_CXXFLAGS= \
|
||||
$(LLVM_CXXFLAGS) \
|
||||
$(DEFINES)
|
||||
endif
|
||||
|
||||
if USE_R600_LLVM_COMPILER
|
||||
|
|
|
|||
|
|
@ -20,4 +20,3 @@ C_SOURCES = \
|
|||
compute_memory_pool.c
|
||||
|
||||
LLVM_C_SOURCES = r600_llvm.c
|
||||
LLVM_CXX_SOURCES = llvm_wrapper.cpp
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@
|
|||
#include "evergreen_compute_internal.h"
|
||||
#include "compute_memory_pool.h"
|
||||
#ifdef HAVE_OPENCL
|
||||
#include "llvm_wrapper.h"
|
||||
#include "radeon_llvm_util.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
@ -140,12 +140,12 @@ void *evergreen_create_compute_state(
|
|||
shader->input_size = cso->req_input_mem;
|
||||
|
||||
#ifdef HAVE_OPENCL
|
||||
shader->num_kernels = llvm_get_num_kernels(code, header->num_bytes);
|
||||
shader->num_kernels = radeon_llvm_get_num_kernels(code, header->num_bytes);
|
||||
shader->kernels = CALLOC(sizeof(struct r600_kernel), shader->num_kernels);
|
||||
|
||||
for (i = 0; i < shader->num_kernels; i++) {
|
||||
struct r600_kernel *kernel = &shader->kernels[i];
|
||||
kernel->llvm_module = llvm_get_kernel_module(i, code,
|
||||
kernel->llvm_module = radeon_llvm_get_kernel_module(i, code,
|
||||
header->num_bytes);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
#ifndef LLVM_WRAPPER_H
|
||||
#define LLVM_WRAPPER_H
|
||||
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
LLVMModuleRef llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len);
|
||||
void llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_name);
|
||||
unsigned llvm_get_num_kernels(const unsigned char *bitcode, unsigned bitcode_len);
|
||||
LLVMModuleRef llvm_get_kernel_module(unsigned index,
|
||||
const unsigned char *bitcode, unsigned bitcode_len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
CPP_FILES := \
|
||||
radeon_llvm_emit.cpp
|
||||
radeon_llvm_emit.cpp \
|
||||
radeon_llvm_util.cpp
|
||||
|
||||
C_FILES := \
|
||||
radeon_setup_tgsi_llvm.c
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@
|
|||
#include <llvm/Support/SourceMgr.h>
|
||||
#include <llvm/Transforms/IPO.h>
|
||||
|
||||
#include "llvm_wrapper.h"
|
||||
#include "radeon_llvm_util.h"
|
||||
|
||||
|
||||
extern "C" LLVMModuleRef llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len)
|
||||
extern "C" LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len)
|
||||
{
|
||||
llvm::OwningPtr<llvm::Module> M;
|
||||
llvm::StringRef str((const char*)bitcode, bitcode_len);
|
||||
|
|
@ -24,7 +24,7 @@ extern "C" LLVMModuleRef llvm_parse_bitcode(const unsigned char * bitcode, unsig
|
|||
return wrap(M.take());
|
||||
}
|
||||
|
||||
extern "C" void llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_name)
|
||||
extern "C" void radeon_llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_name)
|
||||
{
|
||||
llvm::Module *M = llvm::unwrap(mod);
|
||||
std::vector<const char *> export_list;
|
||||
|
|
@ -35,10 +35,10 @@ extern "C" void llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_
|
|||
PM.run(*M);
|
||||
}
|
||||
|
||||
extern "C" unsigned llvm_get_num_kernels(const unsigned char *bitcode,
|
||||
extern "C" unsigned radeon_llvm_get_num_kernels(const unsigned char *bitcode,
|
||||
unsigned bitcode_len)
|
||||
{
|
||||
LLVMModuleRef mod = llvm_parse_bitcode(bitcode, bitcode_len);
|
||||
LLVMModuleRef mod = radeon_llvm_parse_bitcode(bitcode, bitcode_len);
|
||||
llvm::Module *M = llvm::unwrap(mod);
|
||||
const llvm::NamedMDNode *kernel_node
|
||||
= M->getNamedMetadata("opencl.kernels");
|
||||
|
|
@ -47,15 +47,16 @@ extern "C" unsigned llvm_get_num_kernels(const unsigned char *bitcode,
|
|||
return kernel_count;
|
||||
}
|
||||
|
||||
extern "C" LLVMModuleRef llvm_get_kernel_module(unsigned index,
|
||||
extern "C" LLVMModuleRef radeon_llvm_get_kernel_module(unsigned index,
|
||||
const unsigned char *bitcode, unsigned bitcode_len)
|
||||
{
|
||||
LLVMModuleRef mod = llvm_parse_bitcode(bitcode, bitcode_len);
|
||||
LLVMModuleRef mod = radeon_llvm_parse_bitcode(bitcode, bitcode_len);
|
||||
llvm::Module *M = llvm::unwrap(mod);
|
||||
const llvm::NamedMDNode *kernel_node =
|
||||
M->getNamedMetadata("opencl.kernels");
|
||||
const char* kernel_name = kernel_node->getOperand(index)->
|
||||
getOperand(0)->getName().data();
|
||||
llvm_strip_unused_kernels(mod, kernel_name);
|
||||
radeon_llvm_strip_unused_kernels(mod, kernel_name);
|
||||
return mod;
|
||||
|
||||
}
|
||||
20
src/gallium/drivers/radeon/radeon_llvm_util.h
Normal file
20
src/gallium/drivers/radeon/radeon_llvm_util.h
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#ifndef RADEON_LLVM_UTIL_H
|
||||
#define RADEON_LLVM_UTIL_H
|
||||
|
||||
#include <llvm-c/Core.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode, unsigned bitcode_len);
|
||||
void radeon_llvm_strip_unused_kernels(LLVMModuleRef mod, const char *kernel_name);
|
||||
unsigned radeon_llvm_get_num_kernels(const unsigned char *bitcode, unsigned bitcode_len);
|
||||
LLVMModuleRef radeon_llvm_get_kernel_module(unsigned index,
|
||||
const unsigned char *bitcode, unsigned bitcode_len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Reference in a new issue