Re: [Mesa-dev] [PATCH 3/3] gallium/radeon: drop support for LLVM 3.5

2016-02-11 Thread Nicolai Hähnle

On 10.02.2016 15:49, Marek Olšák wrote:

From: Marek Olšák 

---
  configure.ac   |  2 +-
  src/gallium/drivers/r600/evergreen_compute.c   | 75 --
  .../drivers/r600/evergreen_compute_internal.h  | 19 --
  src/gallium/drivers/r600/r600_pipe.c   |  4 --
  src/gallium/drivers/radeon/r600_pipe_common.c  |  7 +-
  src/gallium/drivers/radeonsi/si_compute.c  | 58 +
  src/gallium/drivers/radeonsi/si_pipe.c | 17 +
  src/gallium/drivers/radeonsi/si_shader.c   | 10 ++-
  src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c  |  3 +-
  9 files changed, 10 insertions(+), 185 deletions(-)

diff --git a/configure.ac b/configure.ac
index b05f33d..57fdde3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2186,7 +2186,7 @@ radeon_llvm_check() {
  if test "x$enable_gallium_llvm" != "xyes"; then
  AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
  fi
-llvm_check_version_for "3" "5" "0" $1
+llvm_check_version_for "3" "6" "0" $1
  if test true && $LLVM_CONFIG --targets-built | grep -iqvw 
$amdgpu_llvm_target_name ; then
  AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM 
build.])
  fi
diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index d92e691..56c7fb9 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -208,23 +208,6 @@ void *evergreen_create_compute_state(
COMPUTE_DBG(ctx->screen, "*** evergreen_create_compute_state\n");
header = cso->prog;
code = cso->prog + sizeof(struct pipe_llvm_program_header);
-#if HAVE_LLVM < 0x0306
-(void)use_kill;
-   (void)p;
-   shader->llvm_ctx = LLVMContextCreate();
-   shader->num_kernels = radeon_llvm_get_num_kernels(shader->llvm_ctx,
-   code, header->num_bytes);
-   shader->kernels = CALLOC(sizeof(struct r600_kernel),
-   shader->num_kernels);
-   {
-   unsigned i;
-   for (i = 0; i < shader->num_kernels; i++) {
-   struct r600_kernel *kernel = >kernels[i];
-   kernel->llvm_module = radeon_llvm_get_kernel_module(
-   shader->llvm_ctx, i, code, header->num_bytes);
-   }
-   }
-#else
radeon_shader_binary_init(>binary);
radeon_elf_read(code, header->num_bytes, >binary);
r600_create_shader(>bc, >binary, _kill);
@@ -235,7 +218,6 @@ void *evergreen_create_compute_state(
memcpy(p, shader->bc.bytecode, shader->bc.ndw * 4);
ctx->b.ws->buffer_unmap(shader->code_bo->buf);
  #endif
-#endif

shader->ctx = ctx;
shader->local_size = cso->req_local_mem;
@@ -255,21 +237,12 @@ void evergreen_delete_compute_state(struct pipe_context 
*ctx_, void* state)
return;

  #ifdef HAVE_OPENCL
-#if HAVE_LLVM < 0x0306
-   for (unsigned i = 0; i < shader->num_kernels; i++) {
-   struct r600_kernel *kernel = >kernels[i];
-   LLVMDisposeModule(module);
-   }
-   FREE(shader->kernels);
-   LLVMContextDispose(shader->llvm_ctx);
-#else
radeon_shader_binary_clean(>binary);
r600_destroy_shader(>bc);

/* TODO destroy shader->code_bo, shader->const_bo
 * we'll need something like r600_buffer_free */
  #endif
-#endif
FREE(shader);
  }

@@ -372,11 +345,7 @@ static void evergreen_emit_direct_dispatch(
int group_size = 1;
int grid_size = 1;
unsigned lds_size = shader->local_size / 4 +
-#if HAVE_LLVM < 0x0306
-   shader->active_kernel->bc.nlds_dw;
-#else
shader->bc.nlds_dw;
-#endif


/* Calculate group_size/grid_size */
@@ -565,18 +534,10 @@ void evergreen_emit_cs_shader(
struct r600_resource *code_bo;
unsigned ngpr, nstack;

-#if HAVE_LLVM < 0x0306
-   struct r600_kernel *kernel = >kernels[state->kernel_index];
-   code_bo = kernel->code_bo;
-   va = kernel->code_bo->gpu_address;
-   ngpr = kernel->bc.ngpr;
-   nstack = kernel->bc.nstack;
-#else
code_bo = shader->code_bo;
va = shader->code_bo->gpu_address + state->pc;
ngpr = shader->bc.ngpr;
nstack = shader->bc.nstack;
-#endif

radeon_compute_set_context_reg_seq(cs, R_0288D0_SQ_PGM_START_LS, 3);
radeon_emit(cs, va >> 8); /* R_0288D0_SQ_PGM_START_LS */
@@ -601,46 +562,10 @@ static void evergreen_launch_grid(
struct r600_pipe_compute *shader = ctx->cs_shader_state.shader;
boolean use_kill;

-#if HAVE_LLVM < 0x0306
-   struct r600_kernel *kernel = >kernels[pc];
-   (void)use_kill;
-if (!kernel->code_bo) {
-void *p;
-struct r600_bytecode *bc = >bc;
-LLVMModuleRef mod 

[Mesa-dev] [PATCH 3/3] gallium/radeon: drop support for LLVM 3.5

2016-02-10 Thread Marek Olšák
From: Marek Olšák 

---
 configure.ac   |  2 +-
 src/gallium/drivers/r600/evergreen_compute.c   | 75 --
 .../drivers/r600/evergreen_compute_internal.h  | 19 --
 src/gallium/drivers/r600/r600_pipe.c   |  4 --
 src/gallium/drivers/radeon/r600_pipe_common.c  |  7 +-
 src/gallium/drivers/radeonsi/si_compute.c  | 58 +
 src/gallium/drivers/radeonsi/si_pipe.c | 17 +
 src/gallium/drivers/radeonsi/si_shader.c   | 10 ++-
 src/gallium/winsys/amdgpu/drm/amdgpu_winsys.c  |  3 +-
 9 files changed, 10 insertions(+), 185 deletions(-)

diff --git a/configure.ac b/configure.ac
index b05f33d..57fdde3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2186,7 +2186,7 @@ radeon_llvm_check() {
 if test "x$enable_gallium_llvm" != "xyes"; then
 AC_MSG_ERROR([--enable-gallium-llvm is required when building $1])
 fi
-llvm_check_version_for "3" "5" "0" $1
+llvm_check_version_for "3" "6" "0" $1
 if test true && $LLVM_CONFIG --targets-built | grep -iqvw 
$amdgpu_llvm_target_name ; then
 AC_MSG_ERROR([LLVM $amdgpu_llvm_target_name not enabled in your LLVM 
build.])
 fi
diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index d92e691..56c7fb9 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -208,23 +208,6 @@ void *evergreen_create_compute_state(
COMPUTE_DBG(ctx->screen, "*** evergreen_create_compute_state\n");
header = cso->prog;
code = cso->prog + sizeof(struct pipe_llvm_program_header);
-#if HAVE_LLVM < 0x0306
-(void)use_kill;
-   (void)p;
-   shader->llvm_ctx = LLVMContextCreate();
-   shader->num_kernels = radeon_llvm_get_num_kernels(shader->llvm_ctx,
-   code, header->num_bytes);
-   shader->kernels = CALLOC(sizeof(struct r600_kernel),
-   shader->num_kernels);
-   {
-   unsigned i;
-   for (i = 0; i < shader->num_kernels; i++) {
-   struct r600_kernel *kernel = >kernels[i];
-   kernel->llvm_module = radeon_llvm_get_kernel_module(
-   shader->llvm_ctx, i, code, header->num_bytes);
-   }
-   }
-#else
radeon_shader_binary_init(>binary);
radeon_elf_read(code, header->num_bytes, >binary);
r600_create_shader(>bc, >binary, _kill);
@@ -235,7 +218,6 @@ void *evergreen_create_compute_state(
memcpy(p, shader->bc.bytecode, shader->bc.ndw * 4);
ctx->b.ws->buffer_unmap(shader->code_bo->buf);
 #endif
-#endif
 
shader->ctx = ctx;
shader->local_size = cso->req_local_mem;
@@ -255,21 +237,12 @@ void evergreen_delete_compute_state(struct pipe_context 
*ctx_, void* state)
return;
 
 #ifdef HAVE_OPENCL
-#if HAVE_LLVM < 0x0306
-   for (unsigned i = 0; i < shader->num_kernels; i++) {
-   struct r600_kernel *kernel = >kernels[i];
-   LLVMDisposeModule(module);
-   }
-   FREE(shader->kernels);
-   LLVMContextDispose(shader->llvm_ctx);
-#else
radeon_shader_binary_clean(>binary);
r600_destroy_shader(>bc);
 
/* TODO destroy shader->code_bo, shader->const_bo
 * we'll need something like r600_buffer_free */
 #endif
-#endif
FREE(shader);
 }
 
@@ -372,11 +345,7 @@ static void evergreen_emit_direct_dispatch(
int group_size = 1;
int grid_size = 1;
unsigned lds_size = shader->local_size / 4 +
-#if HAVE_LLVM < 0x0306
-   shader->active_kernel->bc.nlds_dw;
-#else
shader->bc.nlds_dw;
-#endif
 
 
/* Calculate group_size/grid_size */
@@ -565,18 +534,10 @@ void evergreen_emit_cs_shader(
struct r600_resource *code_bo;
unsigned ngpr, nstack;
 
-#if HAVE_LLVM < 0x0306
-   struct r600_kernel *kernel = >kernels[state->kernel_index];
-   code_bo = kernel->code_bo;
-   va = kernel->code_bo->gpu_address;
-   ngpr = kernel->bc.ngpr;
-   nstack = kernel->bc.nstack;
-#else
code_bo = shader->code_bo;
va = shader->code_bo->gpu_address + state->pc;
ngpr = shader->bc.ngpr;
nstack = shader->bc.nstack;
-#endif
 
radeon_compute_set_context_reg_seq(cs, R_0288D0_SQ_PGM_START_LS, 3);
radeon_emit(cs, va >> 8); /* R_0288D0_SQ_PGM_START_LS */
@@ -601,46 +562,10 @@ static void evergreen_launch_grid(
struct r600_pipe_compute *shader = ctx->cs_shader_state.shader;
boolean use_kill;
 
-#if HAVE_LLVM < 0x0306
-   struct r600_kernel *kernel = >kernels[pc];
-   (void)use_kill;
-if (!kernel->code_bo) {
-void *p;
-struct r600_bytecode *bc = >bc;
-LLVMModuleRef mod = kernel->llvm_module;
-boolean