gallivm: Take helper invocations into account when skipping branches

if %cond {
   %store_reg (%reg, %val)
}

can be skipped if no invocations are active. This did not take helper
invocations into account, meaning the value of %reg could be garbage for
helper invocations.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31802>
This commit is contained in:
Konstantin Seurer 2024-10-23 15:40:18 +02:00 committed by Marge Bot
parent e862bb52bd
commit 5de7a7c5a6
3 changed files with 2 additions and 15 deletions

View file

@ -2071,7 +2071,7 @@ static void lp_build_skip_branch(struct lp_build_nir_context *bld_base, bool fla
struct gallivm_state *gallivm = bld_base->base.gallivm;
LLVMBuilderRef builder = gallivm->builder;
LLVMValueRef exec_mask = mask_vec(bld_base);
LLVMValueRef exec_mask = mask_vec_with_helpers(bld_base);
LLVMValueRef bitmask = LLVMBuildICmp(builder, LLVMIntNE, exec_mask, bld_base->uint_bld.zero, "");
bitmask = LLVMBuildBitCast(builder, bitmask, LLVMIntTypeInContext(gallivm->context, bld_base->uint_bld.type.length), "");

View file

@ -81,7 +81,7 @@ traces:
checksum: 018418bdd7f60a186cce532613b0c7ab
bgfx/33-pom.rdc:
gl-vmware-llvmpipe:
checksum: 79adb4353c683c3bc7789b9311664fd3
checksum: aa3b4f5ea12edf6eb56cbd411fd4d5ac
bgfx/34-mvs.rdc:
gl-vmware-llvmpipe:
checksum: 6ad9c7d97debb7bf495b0bfca921ba9c

View file

@ -820,11 +820,6 @@ dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.formats.r8g8b8a8_unorm.
dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.formats.r8g8b8a8_unorm.input.load.dont_care.clear_draw,Fail
dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.unused_attachment.loadopclear.storeopdontcare.stencilloadopdontcare.stencilstoreopdontcare,Fail
dEQP-VK.ray_query.builtin.instanceid.frag.aabbs,Crash
dEQP-VK.ray_query.builtin.primitiveid.frag.triangles,Crash
dEQP-VK.ray_query.multiple_ray_queries.fragment_shader,Crash
dEQP-VK.ray_query.stress.fragment_shader.triangles,Crash
nir-stress=dEQP-VK.dynamic_rendering.graphics_pipeline_library.dedicated_allocation.attachment_allocation.input_output_chain.66,Fail
nir-stress=dEQP-VK.dynamic_rendering.graphics_pipeline_library.dedicated_allocation.formats.a2b10g10r10_uint_pack32.input.dont_care.dont_care.clear_draw,Fail
nir-stress=dEQP-VK.dynamic_rendering.graphics_pipeline_library.dedicated_allocation.formats.a8b8g8r8_sint_pack32.input.load.dont_care.clear_draw,Fail
@ -861,11 +856,3 @@ nir-stress=dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.formats.r8_u
nir-stress=dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.formats.r8g8_sint.input.clear.dont_care.draw,Fail
nir-stress=dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.formats.r8g8_unorm.input.load.dont_care.draw,Fail
nir-stress=dEQP-VK.dynamic_rendering.primary_cmd_buff.suballocation.unused_attachment.loadopdontcare.storeopdontcare.stencilloadopdontcare.stencilstoreopdontcare,Fail
# New fails in 1.3.10.0
dEQP-VK.ray_query.builtin.instancecustomindex.frag.aabbs,Crash
dEQP-VK.ray_query.builtin.objecttoworld.frag.aabbs,Crash
dEQP-VK.ray_query.builtin.objectraydirection.frag.aabbs,Crash
dEQP-VK.ray_query.builtin.primitiveid.frag.aabbs,Crash
dEQP-VK.ray_query.builtin.worldtoobject.frag.aabbs,Crash