radeonsi: translate NIR to LLVM

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Nicolai Hähnle 2017-05-19 17:43:51 +02:00
parent d77526ee30
commit 9df23db13d
4 changed files with 22 additions and 4 deletions

View File

@ -30,7 +30,7 @@
#include "amd_family.h"
#include "../vulkan/radv_descriptor_set.h"
#include "ac_shader_info.h"
#include "shader_enums.h"
#include "compiler/shader_enums.h"
struct ac_shader_binary;
struct ac_shader_config;
struct nir_shader;

View File

@ -5652,9 +5652,16 @@ static bool si_compile_tgsi_main(struct si_shader_context *ctx,
ctx->postponed_kill = lp_build_alloca(&ctx->gallivm, ctx->f32, "");
}
if (!lp_build_tgsi_llvm(bld_base, sel->tokens)) {
fprintf(stderr, "Failed to translate shader from TGSI to LLVM\n");
return false;
if (sel->tokens) {
if (!lp_build_tgsi_llvm(bld_base, sel->tokens)) {
fprintf(stderr, "Failed to translate shader from TGSI to LLVM\n");
return false;
}
} else {
if (!si_nir_build_llvm(ctx, sel->nir)) {
fprintf(stderr, "Failed to translate shader from NIR to LLVM\n");
return false;
}
}
si_llvm_build_ret(ctx, ctx->return_value);

View File

@ -307,4 +307,6 @@ LLVMTypeRef si_const_array(LLVMTypeRef elem_type, int num_elements);
void si_shader_context_init_alu(struct lp_build_tgsi_context *bld_base);
void si_shader_context_init_mem(struct si_shader_context *ctx);
bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir);
#endif

View File

@ -22,6 +22,9 @@
*/
#include "si_shader.h"
#include "si_shader_internal.h"
#include "ac_nir_to_llvm.h"
#include "tgsi/tgsi_from_mesa.h"
@ -310,3 +313,9 @@ void si_nir_scan_shader(const struct nir_shader *nir,
}
}
bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
{
ac_nir_translate(&ctx->ac, &ctx->abi, nir, NULL);
return true;
}