mesa/src/intel/compiler
Francisco Jerez 0ad835a929 intel/fs/xe2: Fix up subdword integer region restriction with strided byte src and packed byte dst.
This fixes a corner case of the LNL sub-dword integer restrictions
that wasn't being detected by has_subdword_integer_region_restriction(),
specifically:

> if(Src.Type==Byte && Dst.Type==Byte && Dst.Stride==1 && W!=2) {
>    // ...
>    if(Src.Stride == 2) && (Src.UniformStride) && (Dst.SubReg%32  ==  Src.SubReg/2 ) { Allowed }
>    // ...
> }

All the other restrictions that require agreement between the SubReg
number of source and destination only affect sources with a stride
greater than a dword, which is why
has_subdword_integer_region_restriction() was returning false except
when "byte_stride(srcs[i]) >= 4" evaluated to true, but as implied by
the pseudocode above, in the particular case of a packed byte
destination, the restriction applies for source strides as narrow as
2B.

The form of the equation that relates the subreg numbers is consistent
with the existing calculations in brw_fs_lower_regioning (see
required_src_byte_offset()), we just need to enable lowering for this
corner case, and change lower_dst_region() to call lower_instruction()
recursively, since some of the cases where we break this restriction
are copy instructions introduced by brw_fs_lower_regioning() itself
trying to lower other instructions with byte destinations.

This fixes some Vulkan CTS test-cases that were hitting these
restrictions with byte data types.

Fixes: 217d412360 ("intel/fs/gfx20+: Implement sub-dword integer regioning restrictions.")
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30630>
2024-11-15 07:39:33 +00:00
..
elk nir_lower_mem_access_bit_sizes: pass access to callback 2024-11-13 12:59:26 +00:00
tests intel/brw: Remove assembler tests for Gfx8- 2024-02-24 02:10:56 +00:00
brw_asm.c intel/brw: Add DUMP flag to brw_assemble 2024-09-27 02:46:28 +00:00
brw_asm.h intel/brw: Add DUMP flag to brw_assemble 2024-09-27 02:46:28 +00:00
brw_asm_internal.h intel/brw_asm: Add BranchCtrl support 2024-11-02 18:01:19 +00:00
brw_asm_tool.c intel/brw: Split off assembler logic into library 2024-07-12 19:34:23 +00:00
brw_cfg.cpp intel/brw: Add a file parameter to idom_tree::dump() 2024-08-22 22:54:45 +00:00
brw_cfg.h intel/brw: Add a file parameter to idom_tree::dump() 2024-08-22 22:54:45 +00:00
brw_compile_bs.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compile_cs.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compile_fs.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compile_gs.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compile_mesh.cpp brw: fix task/mesh push constant loading 2024-10-26 18:12:41 +00:00
brw_compile_tcs.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compile_tes.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compile_vs.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_compiler.c nir: always emit ddx intrinsics 2024-10-17 09:50:19 +00:00
brw_compiler.h intel/brw: Allow Xe3 in brw_stage_has_packed_dispatch() 2024-10-26 07:39:30 +00:00
brw_debug_recompile.c intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_def_analysis.cpp intel: Add statistic for Non SSA registers after NIR to BRW 2024-10-11 06:40:29 +00:00
brw_device_sha1_gen_c.py intel/compiler: drop unused ray-tracing fields from cache hash 2024-03-22 00:01:28 +00:00
brw_disasm.c intel/brw_asm: Add BranchCtrl support 2024-11-02 18:01:19 +00:00
brw_disasm.h intel/brw: Expose functions to convert LSC enums to strings 2024-09-12 20:54:36 +00:00
brw_disasm_info.cpp intel/brw: Simplify fs_inst annotation 2024-08-28 03:59:50 +00:00
brw_disasm_info.h intel/brw: Simplify fs_inst annotation 2024-08-28 03:59:50 +00:00
brw_disasm_tool.c intel/brw: Remove Gfx8- code from disassembler 2024-02-28 05:45:38 +00:00
brw_eu.c brw,elk: Fix opening flags on dumping shader binaries 2024-08-27 08:26:08 +00:00
brw_eu.h intel/brw_asm: Add BranchCtrl support 2024-11-02 18:01:19 +00:00
brw_eu_compact.c intel/compiler: Xe2 and Xe3 use the same compaction tables 2024-10-26 07:39:30 +00:00
brw_eu_defines.h intel/brw: Add SHADER_OPCODE_VOTE_* 2024-10-19 02:44:20 +00:00
brw_eu_emit.c brw/emit: Add correct 3-source instruction assertions for each platform 2024-11-08 16:48:57 +00:00
brw_eu_validate.c brw/validate: Return an error for Align16 access mode on Icelake+ 2024-10-25 20:31:44 +00:00
brw_fs.cpp intel/brw: Add SHADER_OPCODE_VOTE_* 2024-10-19 02:44:20 +00:00
brw_fs.h brw/algebraic: Refactor constant folding out of brw_fs_opt_algebraic 2024-10-25 23:39:36 +00:00
brw_fs_bank_conflicts.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_builder.h brw/build: Add scalar_group() helper 2024-11-08 17:46:45 +00:00
brw_fs_cmod_propagation.cpp brw: Fix mov cmod propagation when there's int signedness mismatch 2024-09-09 22:13:08 +00:00
brw_fs_combine_constants.cpp intel/brw: Allow immediates in the BFE instruction on Gfx12+ 2024-10-24 21:31:28 +00:00
brw_fs_copy_propagation.cpp brw/copy: Don't copy propagate through smaller entry dest size 2024-11-08 17:46:45 +00:00
brw_fs_cse.cpp brw/cse: Don't eliminate instructions that write flags 2024-11-08 17:46:45 +00:00
brw_fs_dead_code_eliminate.cpp intel/brw: Delete old-style surface and A64 message opcodes 2024-09-12 20:54:36 +00:00
brw_fs_generator.cpp brw: add a NOP in between WHILE instructions on LNL 2024-10-31 23:57:10 +00:00
brw_fs_live_variables.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_live_variables.h intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower.cpp intel/brw: Simplify fs_inst annotation 2024-08-28 03:59:50 +00:00
brw_fs_lower_dpas.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower_integer_multiplication.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower_pack.cpp intel/brw: Replace uses of fs_reg with brw_reg 2024-07-03 02:53:19 +00:00
brw_fs_lower_regioning.cpp intel/fs/xe2: Fix up subdword integer region restriction with strided byte src and packed byte dst. 2024-11-15 07:39:33 +00:00
brw_fs_lower_simd_width.cpp intel/brw: Delete old-style surface and A64 message opcodes 2024-09-12 20:54:36 +00:00
brw_fs_nir.cpp brw/build: Add scalar_group() helper 2024-11-08 17:46:45 +00:00
brw_fs_opt.cpp brw/opt: Always do both kinds of copy propagation before lower_load_payload 2024-11-08 17:46:45 +00:00
brw_fs_opt_algebraic.cpp brw/algebraic: Refactor constant folding out of brw_fs_opt_algebraic 2024-10-25 23:39:36 +00:00
brw_fs_opt_virtual_grfs.cpp brw: fix virtual register splitting to not go below physical register size 2024-09-18 23:26:34 +00:00
brw_fs_reg_allocate.cpp brw: allocate physical register sizes for spilling 2024-11-14 08:44:03 +00:00
brw_fs_register_coalesce.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_saturate_propagation.cpp intel/brw: Use def analysis for simple cases of saturate propagation 2024-08-09 14:26:05 -07:00
brw_fs_scoreboard.cpp intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
brw_fs_thread_payload.cpp brw/nir: rework inline_data_intel to work with compute 2024-10-17 19:35:59 +00:00
brw_fs_validate.cpp intel/brw: Add SHADER_OPCODE_VOTE_* 2024-10-19 02:44:20 +00:00
brw_fs_visitor.cpp intel/brw: Add phases to backend 2024-10-11 06:40:29 +00:00
brw_fs_workaround.cpp intel/brw/gfx9: Implement WaClearArfDependenciesBeforeEot 2024-10-23 15:02:27 +00:00
brw_gram.y intel/brw_asm: Add BranchCtrl support 2024-11-02 18:01:19 +00:00
brw_inst.h brw/emit: Fix align16 3src subregister encodings for HF types 2024-10-25 20:31:44 +00:00
brw_ir.h intel/brw: Fold backend_reg into fs_reg 2024-03-01 17:52:09 +00:00
brw_ir_allocator.h intel/compiler,intel/blorp,intel/vulkan: decouple vulkan driver and compiler from gallium 2023-08-03 22:00:15 +00:00
brw_ir_analysis.h
brw_ir_fs.h intel/fs/xe2: Fix up subdword integer region restriction with strided byte src and packed byte dst. 2024-11-15 07:39:33 +00:00
brw_ir_performance.cpp intel/brw/xe2+: Adjust performance analysis divergence weight due to EU fusion removal. 2024-10-24 22:06:52 +00:00
brw_ir_performance.h intel/brw: Fold backend_shader into fs_visitor 2024-02-29 19:28:05 +00:00
brw_isa_info.h
brw_kernel.c intel-clc: missing printf lowering 2024-08-06 17:55:18 +00:00
brw_kernel.h intel-clc: Use correct set of nir_options when building for Gfx8 2024-02-24 00:24:32 +00:00
brw_lex.l intel/brw_asm: Add BranchCtrl support 2024-11-02 18:01:19 +00:00
brw_lower_logical_sends.cpp brw: remove EOT handling from sampler messages 2024-09-25 10:22:40 +00:00
brw_lower_subgroup_ops.cpp intel/brw: Add SHADER_OPCODE_VOTE_* 2024-10-19 02:44:20 +00:00
brw_nir.c nir_lower_mem_access_bit_sizes: pass access to callback 2024-11-13 12:59:26 +00:00
brw_nir.h brw/nir: rework inline_data_intel to work with compute 2024-10-17 19:35:59 +00:00
brw_nir_analyze_ubo_ranges.c intel/brw/xe2: Update brw_nir_analyze_ubo_ranges to account for 512b physical registers 2024-04-01 00:00:03 +00:00
brw_nir_lower_alpha_to_coverage.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
brw_nir_lower_cooperative_matrix.c intel/brw/xe2+: Allow vec16 for cooperative matrix 2024-06-25 14:17:47 -07:00
brw_nir_lower_cs_intrinsics.c compiler: Allow derivative_group to be used for all stages in shader_info 2024-09-03 20:03:18 +00:00
brw_nir_lower_fsign.py intel/brw: Use range analysis to optimize fsign 2024-05-14 01:28:21 +00:00
brw_nir_lower_intersection_shader.c intel/rt: fix terminateOnFirstHit handling 2024-08-05 21:43:36 +00:00
brw_nir_lower_ray_queries.c intel/rt: fix ray_query stack address calculation 2024-11-08 18:31:52 +00:00
brw_nir_lower_rt_intrinsics.c brw/rt: fix ray_object_(direction|origin) for closest-hit shaders 2024-08-13 10:28:50 +00:00
brw_nir_lower_shader_calls.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
brw_nir_lower_storage_image.c intel/brw: Drop image_{load,store}_raw_intel handling 2024-08-09 07:20:08 +00:00
brw_nir_opt_fsat.c intel/brw: Move fsat instructions closer to the source 2024-08-09 14:26:10 -07:00
brw_nir_rt.c brw/nir: rework inline_data_intel to work with compute 2024-10-17 19:35:59 +00:00
brw_nir_rt.h
brw_nir_rt_builder.h intel/rt: fix ray_query stack address calculation 2024-11-08 18:31:52 +00:00
brw_nir_trig_workarounds.py
brw_packed_float.c
brw_prim.h
brw_print.cpp intel/brw: Add SHADER_OPCODE_VOTE_* 2024-10-19 02:44:20 +00:00
brw_private.h intel/brw: fix subgroup size of geometry stages for lnl+ 2024-05-14 23:13:37 +00:00
brw_reg.h intel/brw: Pack brw_reg struct 2024-08-28 03:59:50 +00:00
brw_reg_type.c intel/brw: Rename brw_reg_type_to_hw_type to brw_type_encode 2024-04-25 11:41:48 +00:00
brw_reg_type.h intel/brw: Make a helper for finding the largest of two types 2024-04-29 07:51:45 +00:00
brw_rt.h intel: Use ALIGN_POT instead of ALIGN inside macro define 2024-01-03 12:46:10 +00:00
brw_schedule_instructions.cpp intel/brw: Only force g0's liveness to be the whole program if spilling 2024-08-01 16:37:34 -07:00
brw_shader.cpp intel/brw: Delete old-style surface and A64 message opcodes 2024-09-12 20:54:36 +00:00
brw_simd_selection.cpp intel/brw: fix subgroup size of geometry stages for lnl+ 2024-05-14 23:13:37 +00:00
brw_vue_map.c intel/brw: Simplify @file annotations 2024-07-22 22:48:03 +00:00
intel_clc.c intel: Set shader_spilling_rate=11 in intel_clc 2024-11-06 01:57:10 +00:00
intel_gfx_ver_enum.h intel/compiler: Add compiler enum for Xe3 2024-10-26 07:39:30 +00:00
intel_nir.c intel/compiler: Rename the passes and files related to intel_nir.h 2024-02-16 22:35:05 +00:00
intel_nir.h intel/nir: add printf lowering 2024-05-15 13:13:38 +00:00
intel_nir_blockify_uniform_loads.c nir: change signature of nir_src_is_divergent() 2024-10-24 10:06:17 +00:00
intel_nir_clamp_image_1d_2d_array_sizes.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_clamp_per_vertex_loads.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_conversions.c intel/nir: Don't needlessly split u2f16 for nir_type_uint32 2024-07-11 02:37:05 -07:00
intel_nir_lower_non_uniform_barycentric_at_sample.c nir: change signature of nir_src_is_divergent() 2024-10-24 10:06:17 +00:00
intel_nir_lower_non_uniform_resource_intel.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_printf.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_shading_rate_output.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_sparse.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_lower_texture.c intel/compiler: Pack texture LOD and offset to a single 32-bit value 2024-02-27 00:22:46 +00:00
intel_nir_opt_peephole_ffma.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_opt_peephole_imul32x16.c treewide: use nir_metadata_control_flow 2024-06-17 16:28:14 -04:00
intel_nir_tcs_workarounds.c intel/nir: Set src_type on TCS quads workaround store_output 2024-05-02 13:58:21 -07:00
intel_shader_enums.h intel/compiler: Use "intel" prefix for walk_order enum 2024-02-21 00:38:35 +00:00
meson.build intel/brw: Add SHADER_OPCODE_REDUCE 2024-10-11 06:40:29 +00:00
test_eu_compact.cpp intel/brw: Enable EU validation and compaction tests for Xe2 2024-10-01 16:03:35 -07:00
test_eu_validate.cpp intel/brw: Enable EU validation and compaction tests for Xe2 2024-10-01 16:03:35 -07:00
test_fs_cmod_propagation.cpp brw: Fix mov cmod propagation when there's int signedness mismatch 2024-09-09 22:13:08 +00:00
test_fs_combine_constants.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
test_fs_copy_propagation.cpp intel/brw: Copy prop from raw integer moves with mismatched types 2024-08-30 03:39:31 +00:00
test_fs_cse.cpp intel/brw: Move calculate_cfg out of fs_visitor 2024-07-25 15:37:13 +00:00
test_fs_saturate_propagation.cpp brw/sat: Convert nearly all tests to use new style builders 2024-10-25 20:31:45 +00:00
test_fs_scoreboard.cpp intel/brw: Consider pipe when comparing SWSB in tests 2024-09-25 19:32:31 +00:00
test_simd_selection.cpp intel: Remove brw_ prefix from process debug function 2024-02-16 22:35:05 +00:00
test_vf_float_conversions.cpp