radeonsi: don't wrap the VS prolog in if (ES thread) .. endif
authorMarek Olšák <marek.olsak@amd.com>
Thu, 12 Dec 2019 22:11:40 +0000 (17:11 -0500)
committerMarge Bot <eric+marge@anholt.net>
Mon, 16 Dec 2019 20:06:07 +0000 (20:06 +0000)
We can execute it unconditionally and the values computed for disabled
threads won't be used anyway.

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3095>

src/gallium/drivers/radeonsi/si_shader.c

index 4453976ef9b76be62dd909849a6be0dfb30e9f0d..308be06121b5278f5c0168fa7034a8d26d1eac70 100644 (file)
@@ -7429,17 +7429,6 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
                                           key->vs_prolog.num_input_sgprs + i, "");
        }
 
-       LLVMValueRef original_ret = ret;
-       bool wrapped = false;
-       LLVMBasicBlockRef if_entry_block = NULL;
-
-       if (key->vs_prolog.is_monolithic && key->vs_prolog.as_ngg) {
-               LLVMValueRef ena = si_is_es_thread(ctx);
-               if_entry_block = LLVMGetInsertBlock(ctx->ac.builder);
-               ac_build_ifcc(&ctx->ac, ena, 11501);
-               wrapped = true;
-       }
-
        /* Compute vertex load indices from instance divisors. */
        LLVMValueRef instance_divisor_constbuf = NULL;
 
@@ -7495,20 +7484,6 @@ static void si_build_vs_prolog_function(struct si_shader_context *ctx,
                                           ctx->args.arg_count + i, "");
        }
 
-       if (wrapped) {
-               LLVMBasicBlockRef bbs[2] = {
-                       LLVMGetInsertBlock(ctx->ac.builder),
-                       if_entry_block,
-               };
-               ac_build_endif(&ctx->ac, 11501);
-
-               LLVMValueRef values[2] = {
-                       ret,
-                       original_ret
-               };
-               ret = ac_build_phi(&ctx->ac, LLVMTypeOf(ret), 2, values, bbs);
-       }
-
        si_llvm_build_ret(ctx, ret);
 }