ac/llvm: enable wqm for ac_build_quad_swizzle from ac_build_fs_interp_mov

Without this, WQM is only used for the lds_param_load like this:

   s_wqm_b64 exec, exec
   lds_param_load v5, attr0.x wait_vdst:15
   s_mov_b64 exec, s[0:1]
   v_mov_b32_dpp v5, v5 quad_perm:[0,0,0,0] row_mask:0xf bank_mask:0xf

With this change we get:
   s_wqm_b64 exec, exec
   lds_param_load v5, attr0.x wait_vdst:15
   s_mov_b64 exec, s[0:1]
   ...
   s_wqm_b64 exec, exec
   v_mov_b32_dpp v5, v5 quad_perm:[0,0,0,0] row_mask:0xf bank_mask:0xf
   s_mov_b64 exec, s[0:1]

This fixes KHR-GL46.shaders.uniform_block.random.nested_structs_instance_arrays.0
and other similar tests with LLVM.

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32959>
This commit is contained in:
Pierre-Eric Pelloux-Prayer 2025-01-08 15:41:02 +01:00 committed by Marge Bot
parent 182d662ccf
commit 9d4d9e6150
2 changed files with 2 additions and 9 deletions

View file

@ -758,7 +758,7 @@ LLVMValueRef ac_build_fs_interp_mov(struct ac_llvm_context *ctx, unsigned parame
p = ac_build_intrinsic(ctx, "llvm.amdgcn.lds.param.load", p = ac_build_intrinsic(ctx, "llvm.amdgcn.lds.param.load",
ctx->f32, args, 3, 0); ctx->f32, args, 3, 0);
p = ac_build_intrinsic(ctx, "llvm.amdgcn.wqm.f32", ctx->f32, &p, 1, 0); p = ac_build_intrinsic(ctx, "llvm.amdgcn.wqm.f32", ctx->f32, &p, 1, 0);
p = ac_build_quad_swizzle(ctx, p, parameter, parameter, parameter, parameter, false); p = ac_build_quad_swizzle(ctx, p, parameter, parameter, parameter, parameter, true);
return ac_build_intrinsic(ctx, "llvm.amdgcn.wqm.f32", ctx->f32, &p, 1, 0); return ac_build_intrinsic(ctx, "llvm.amdgcn.wqm.f32", ctx->f32, &p, 1, 0);
} else { } else {
args[0] = LLVMConstInt(ctx->i32, (parameter + 2) % 3, 0); args[0] = LLVMConstInt(ctx->i32, (parameter + 2) % 3, 0);

View file

@ -31,7 +31,6 @@ spec@khr_texture_compression_astc@sliced-3d-miptree-gles srgb-fp@sRGB decode ful
# glcts failures # glcts failures
GTF-GL46.gtf30.GL3Tests.fragment_coord_conventions.fragment_coord_conventions_multisample,Fail GTF-GL46.gtf30.GL3Tests.fragment_coord_conventions.fragment_coord_conventions_multisample,Fail
GTF-GL46.gtf32.GL3Tests.fragment_coord_conventions.fragment_coord_conventions_32_multisample,Fail GTF-GL46.gtf32.GL3Tests.fragment_coord_conventions.fragment_coord_conventions_32_multisample,Fail
KHR-GL46.shaders.uniform_block.random.nested_structs_instance_arrays.0,Fail
## Fail because GFX10+ removed MS texture support (see si_get_sparse_texture_virtual_page_size) ## Fail because GFX10+ removed MS texture support (see si_get_sparse_texture_virtual_page_size)
KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r11f_g11f_b10f,Fail KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r11f_g11f_b10f,Fail
KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r16,Fail KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r16,Fail
@ -689,11 +688,5 @@ KHR-GL46.transform_feedback_overflow_query_ARB.advanced-single-stream-separate-a
KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-multiple-buffers-per-stream,Fail KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-multiple-buffers-per-stream,Fail
KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-one-buffer-per-stream,Fail KHR-GL46.transform_feedback_overflow_query_ARB.multiple-streams-one-buffer-per-stream,Fail
# escts failures (pass with ACO) # escts failures (incorrect glMemoryBarrier usage in the test)
KHR-GLES3.shaders.uniform_block.random.nested_structs_instance_arrays.0,Fail
KHR-GLES31.core.shader_image_load_store.basic-allFormats-store-fs,Fail KHR-GLES31.core.shader_image_load_store.basic-allFormats-store-fs,Fail
# deqp failures (pass with ACO)
dEQP-GLES3.functional.ubo.random.all_per_block_buffers.29,Fail
dEQP-GLES3.functional.ubo.random.basic_instance_arrays.22,Fail
dEQP-GLES3.functional.ubo.random.nested_structs.4,Fail

1 # LLVM 20-dev (da439d3af47b)
31 GTF-GL46.gtf32.GL3Tests.fragment_coord_conventions.fragment_coord_conventions_32_multisample,Fail
32 KHR-GL46.shaders.uniform_block.random.nested_structs_instance_arrays.0,Fail ## Fail because GFX10+ removed MS texture support (see si_get_sparse_texture_virtual_page_size)
33 ## Fail because GFX10+ removed MS texture support (see si_get_sparse_texture_virtual_page_size) KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r11f_g11f_b10f,Fail
KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r11f_g11f_b10f,Fail
34 KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r16,Fail
35 KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r16_snorm,Fail
36 KHR-GL46.sparse_texture2_tests.SparseTexture2Allocation_texture_2d_multisample_array_r16f,Fail
688 # escts failures (pass with ACO) # escts failures (incorrect glMemoryBarrier usage in the test)
689 KHR-GLES3.shaders.uniform_block.random.nested_structs_instance_arrays.0,Fail KHR-GLES31.core.shader_image_load_store.basic-allFormats-store-fs,Fail
690
691
dEQP-GLES3.functional.ubo.random.all_per_block_buffers.29,Fail
692
dEQP-GLES3.functional.ubo.random.nested_structs.4,Fail