From 5562b6b06778ec87fd3c49a57ee7b09266d32409 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Tue, 23 Jul 2019 20:34:03 -0400 Subject: [PATCH] radeonsi: don't use lp_build_if for the wrapping if block in the VS prolog --- src/gallium/drivers/radeonsi/si_shader.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 886ee092c22..57c16ae67a1 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -7465,9 +7465,9 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx, key->vs_prolog.num_input_sgprs + i, ""); } - struct lp_build_if_state wrap_if_state; LLVMValueRef original_ret = ret; bool wrapped = false; + LLVMBasicBlockRef if_entry_block = NULL; if (key->vs_prolog.is_monolithic && key->vs_prolog.as_ngg) { LLVMValueRef num_threads; @@ -7476,7 +7476,8 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx, num_threads = si_unpack_param(ctx, 3, 0, 8); ena = LLVMBuildICmp(ctx->ac.builder, LLVMIntULT, ac_get_thread_id(&ctx->ac), num_threads, ""); - lp_build_if(&wrap_if_state, &ctx->gallivm, ena); + if_entry_block = LLVMGetInsertBlock(ctx->ac.builder); + ac_build_ifcc(&ctx->ac, ena, 11501); wrapped = true; } @@ -7536,16 +7537,16 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx, } if (wrapped) { - lp_build_endif(&wrap_if_state); + LLVMBasicBlockRef bbs[2] = { + LLVMGetInsertBlock(ctx->ac.builder), + if_entry_block, + }; + ac_build_endif(&ctx->ac, 11501); LLVMValueRef values[2] = { ret, original_ret }; - LLVMBasicBlockRef bbs[2] = { - wrap_if_state.true_block, - wrap_if_state.entry_block - }; ret = ac_build_phi(&ctx->ac, LLVMTypeOf(ret), 2, values, bbs); } -- 2.30.2