mesa/src/intel/compiler/brw
Ian Romanick e301817753 brw: Don't lower phis involved in DPAS instructions to scalar
On my Arc A380 (DG2), this more than doubles the performance of Jeff
Bolz's cooperative matrix benchmark. With llama.cpp modified to use
cooperative matrix on DG2, performance is improved by 37%.

Closes: #15311
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Tested-by: Matt Corallo <git@bluematt.me>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41172>
2026-04-27 18:09:16 +00:00
..
tests brw: Properly set 'desc as register' for SEND in assembler 2025-12-10 19:46:52 +00:00
brw_analysis.cpp
brw_analysis.h brw: Don't mark_invalid in update_for_reads for non-VGRF destination 2026-03-05 00:02:50 +00:00
brw_analysis_def.cpp brw: Also check for ADDRESS file in update_for_reads 2026-03-05 00:02:51 +00:00
brw_analysis_liveness.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_analysis_performance.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_asm.c brw: Remove global variables from brw_asm parser 2026-01-23 23:13:31 +00:00
brw_asm.h
brw_asm_internal.h brw: Remove global variables from brw_asm parser 2026-01-23 23:13:31 +00:00
brw_asm_tool.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_builder.cpp intel: Rename wm_prog_data to fs_prog_data 2026-02-06 20:51:59 -08:00
brw_builder.h brw: Make brw_builder::uniform() ignore previous group 2026-02-20 16:50:41 +00:00
brw_cfg.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_cfg.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_compile_bs.cpp brw: Remove various unused fields 2026-04-24 15:04:25 +00:00
brw_compile_cs.cpp brw: Have brw_nir_apply_key call brw_nir_lower_simd for all stages 2026-04-09 21:02:16 +00:00
brw_compile_fs.cpp brw: make the program key available on pass_tracker 2026-04-03 12:17:01 +00:00
brw_compile_gs.cpp brw: make the program key available on pass_tracker 2026-04-03 12:17:01 +00:00
brw_compile_mesh.cpp brw: add support for < 32bit io values 2026-04-13 14:01:04 +00:00
brw_compile_tcs.cpp brw: make the program key available on pass_tracker 2026-04-03 12:17:01 +00:00
brw_compile_tes.cpp brw: make the program key available on pass_tracker 2026-04-03 12:17:01 +00:00
brw_compile_vs.cpp brw: make the program key available on pass_tracker 2026-04-03 12:17:01 +00:00
brw_compiler.c brw: lower ifind_msb for Jay 2026-04-10 18:21:21 +00:00
brw_compiler.h brw: Remove various unused fields 2026-04-24 15:04:25 +00:00
brw_disasm.c brw: add missing base offset decoding 2026-01-20 21:25:52 +00:00
brw_disasm.h
brw_disasm_info.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_disasm_info.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_disasm_tool.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_eu.c brw: wire up MACL 2026-04-08 16:07:35 +00:00
brw_eu.h brw: Use brw prefix to LSC helpers tied to brw 2026-04-22 18:25:41 +00:00
brw_eu_compact.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_eu_defines.h brw: wire up MACL 2026-04-08 16:07:35 +00:00
brw_eu_emit.c brw: Don't set saturate for SYNC instruction 2026-04-22 16:06:42 +00:00
brw_eu_inst.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_eu_validate.c brw/validate: Eliminate duplicate integer multiply validation 2026-03-09 19:21:38 +00:00
brw_from_nir.cpp brw: Pass write back register for ray query messages 2026-04-21 23:16:09 +00:00
brw_generator.cpp brw: track push constants shader stats 2026-04-21 16:29:14 +00:00
brw_generator.h brw: Rework UIP and JIP setting code 2026-01-08 22:01:45 +00:00
brw_gram.y brw/asm: Don't drop accumulator number in the assembler 2026-03-09 19:21:39 +00:00
brw_inst.cpp brw: Use brw prefix to LSC helpers tied to brw 2026-04-22 18:25:41 +00:00
brw_inst.h intel/compiler: expose inferred_exec_pipe from scoreboarding 2026-04-09 07:30:01 +00:00
brw_isa_info.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_lex.l intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_load_reg.cpp
brw_lower.cpp intel: Rename wm_prog_data to fs_prog_data 2026-02-06 20:51:59 -08:00
brw_lower_dpas.cpp
brw_lower_fill_spill.cpp brw: Use brw prefix to LSC helpers tied to brw 2026-04-22 18:25:41 +00:00
brw_lower_integer_multiplication.cpp
brw_lower_logical_sends.cpp brw: Use brw prefix to LSC helpers tied to brw 2026-04-22 18:25:41 +00:00
brw_lower_pack.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_lower_regioning.cpp brw/lower_regioning: Allow integer conversions in SEL 2026-03-24 01:31:26 +00:00
brw_lower_scoreboard.cpp intel/compiler: expose inferred_exec_pipe from scoreboarding 2026-04-09 07:30:01 +00:00
brw_lower_simd_width.cpp brw: handle lowering of a couple of opcodes 2026-01-12 12:19:21 +00:00
brw_lower_subgroup_ops.cpp
brw_nir.c brw: Don't lower phis involved in DPAS instructions to scalar 2026-04-27 18:09:16 +00:00
brw_nir.h brw: add support for < 32bit io values 2026-04-13 14:01:04 +00:00
brw_nir_fence_shared_stores.c brw: fence SLM writes between workgroups 2026-03-26 22:38:55 +00:00
brw_nir_lower_alpha_to_coverage.c intel: Rename intel_msaa_flags to intel_fs_config 2026-02-06 20:51:43 -08:00
brw_nir_lower_cooperative_matrix.c brw: preserve fp_math_ctrl when lowering cmat alu 2026-03-26 13:15:50 +00:00
brw_nir_lower_cs_intrinsics.c brw/nir_lower_cs_intrinsics: do some math at 16-bit 2026-04-24 17:13:24 +00:00
brw_nir_lower_fs_barycentrics.c intel: Rename intel_msaa_flags to intel_fs_config 2026-02-06 20:51:43 -08:00
brw_nir_lower_fs_load_output.c brw/nir_lower_fs_load_output: optimize pixel coord 2026-04-07 19:32:15 +00:00
brw_nir_lower_fsign.py brw/nir_lower_fsign: try to fix NaN correctness 2026-02-10 18:42:03 +00:00
brw_nir_lower_immediate_offsets.c brw/nir: enable constant offsets for global_constant_uniform_block_intel 2026-03-06 06:34:43 +00:00
brw_nir_lower_intersection_shader.c nir: add and use block predecessor helpers 2026-04-08 15:06:32 +00:00
brw_nir_lower_ray_queries.c intel/compiler: Handle TerminateOnFirstHit in ray query execution 2026-04-06 10:00:05 -07:00
brw_nir_lower_rt_intrinsics.c anv/brw: remove push constant load emulation from the backend compiler 2026-03-06 06:34:43 +00:00
brw_nir_lower_rt_intrinsics_pre_trace.c
brw_nir_lower_sample_index_in_coord.c brw/nir_lower_sample_index_in_coord: use helpers 2025-10-09 09:50:20 -04:00
brw_nir_lower_shader_calls.c nir: add and use block predecessor helpers 2026-04-08 15:06:32 +00:00
brw_nir_lower_storage_image.c brw/lower_storage_image: use f2f32 instead of unpack_half 2026-02-06 06:12:36 +00:00
brw_nir_lower_texel_address.c brw: fixup 64bit atomics emulation on 2D array images 2025-11-14 00:01:50 +00:00
brw_nir_lower_texture.c brw: Use nir_texop_resinfo_intel for query_levels and txs 2026-03-29 12:53:10 +00:00
brw_nir_opt_divergent_atomics.c brw: Implement divergent atomics fusion optimization (single message approach) 2026-04-03 12:17:01 +00:00
brw_nir_opt_fsat.c nir: only set fp_math_ctrl if meaningful 2026-02-18 14:04:22 +00:00
brw_nir_rt.c brw/nir: handle inline_data_intel more like push_data_intel 2026-02-25 10:44:09 +00:00
brw_nir_rt.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_nir_rt_builder.h intel/compiler: Remove unused brw_nir_memclear_global helper 2026-04-09 05:06:05 +00:00
brw_nir_wa_18019110168.c intel: Rename intel_msaa_flags to intel_fs_config 2026-02-06 20:51:43 -08:00
brw_nir_workarounds.py intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_opt.cpp intel/compiler/brw: fix potential unsigned overflow 2025-10-24 07:52:09 -07:00
brw_opt_address_reg_load.cpp
brw_opt_algebraic.cpp brw/algebraic: Allow mixed types in saturate constant folding 2026-03-24 01:31:25 +00:00
brw_opt_bank_conflicts.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_opt_cmod_propagation.cpp brw/cmod: Don't propagate from CMP to ADD if there is a write between 2026-02-19 21:28:54 +00:00
brw_opt_cmp_flag_destination.cpp brw: Change the flags written by some CMP 2026-03-24 01:31:26 +00:00
brw_opt_combine_constants.cpp brw/const: Don't allow type changes when accumulators are involved 2026-04-07 23:37:26 +00:00
brw_opt_copy_propagation.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_opt_cse.cpp brw/cse: use copies in operands_match instead of in-place modification 2026-02-11 18:43:02 +00:00
brw_opt_dead_code_eliminate.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_opt_fill_spill.cpp brw: Eliminate duplicate fills 2025-11-26 17:20:13 +00:00
brw_opt_register_coalesce.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_opt_saturate_propagation.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_opt_txf_combiner.cpp brw: switch to new sampler payload description scheme 2025-10-16 12:08:15 +00:00
brw_opt_virtual_grfs.cpp intel/brw: Add BRW_DEPENDENCY_INSTRUCTIONS invalidation when instructions are added or removed in brw_opt_split_virtual_grfs() 2026-02-02 14:46:50 +00:00
brw_packed_float.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_print.cpp brw/print: Don't print extra space at the end 2026-02-06 01:00:31 +00:00
brw_private.h brw: make the program key available on pass_tracker 2026-04-03 12:17:01 +00:00
brw_reg.cpp brw/algebraic: Allow mixed types in saturate constant folding 2026-03-24 01:31:25 +00:00
brw_reg.h brw: brw_reg::nr for an accumulator is not part of the offset 2026-04-08 00:36:39 +00:00
brw_reg_allocate.cpp brw: Use brw prefix to LSC helpers tied to brw 2026-04-22 18:25:41 +00:00
brw_reg_type.c intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_reg_type.h intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_rt.h anv: Fix Wa_14021821874, Wa_14018813551, Wa_14026600921 2026-04-21 01:38:34 +00:00
brw_sampler.c nir: Add nir_texop_sparse_residency[_txf]_intel operations 2026-04-10 18:21:21 +00:00
brw_sampler.h brw: new Xe2 sampler opcodes 2025-10-16 12:08:16 +00:00
brw_schedule_instructions.cpp brw: use BITSET_LINEAR_ZALLOC 2026-01-26 20:15:43 +00:00
brw_shader.cpp brw: add Jay-specific SIMD selection rule 2026-04-10 18:21:21 +00:00
brw_shader.h intel/compiler: implement dummy mov for Wa_18035690555 2026-04-09 07:30:01 +00:00
brw_simd_selection.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
brw_thread_payload.cpp brw: Remove various unused fields 2026-04-24 15:04:25 +00:00
brw_thread_payload.h brw: Purge source_depth_to_render_target 2026-03-12 21:40:37 +00:00
brw_validate.cpp brw/validate: Perform more 3-src validation in brw_validate instead of brw_eu_emit 2026-03-09 19:21:39 +00:00
brw_vue_map.c brw: Use memset for initializing varying/slot maps 2026-02-16 15:15:38 -08:00
brw_workaround.cpp intel/compiler: implement macl part of Wa_18035690555 2026-04-19 11:39:10 +00:00
meson.build brw: Implement divergent atomics fusion optimization (single message approach) 2026-04-03 12:17:01 +00:00
test_def_analysis.cpp brw: Also check for ADDRESS file in update_for_reads 2026-03-05 00:02:51 +00:00
test_eu_compact.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
test_eu_validate.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
test_helpers.cpp
test_helpers.h brw: brw_reg::nr for an accumulator is not part of the offset 2026-04-08 00:36:39 +00:00
test_insert_load_reg.cpp
test_lower_regioning.cpp brw: brw_reg::nr for an accumulator is not part of the offset 2026-04-08 00:36:39 +00:00
test_lower_scoreboard.cpp brw/scoreboard: Support local implicit out-of-order dependencies 2026-01-21 22:29:28 +00:00
test_opt_algebraic.cpp brw/algebraic: Allow mixed types in saturate constant folding 2026-03-24 01:31:25 +00:00
test_opt_cmod_propagation.cpp brw/cmod: Don't propagate from CMP to ADD if there is a write between 2026-02-19 21:28:54 +00:00
test_opt_combine_constants.cpp brw/const: Don't allow type changes when accumulators are involved 2026-04-07 23:37:26 +00:00
test_opt_copy_propagation.cpp
test_opt_cse.cpp
test_opt_register_coalesce.cpp
test_opt_saturate_propagation.cpp brw: switch to new sampler payload description scheme 2025-10-16 12:08:15 +00:00
test_simd_selection.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00
test_vf_float_conversions.cpp intel/compiler: Use SPDX annotations 2026-01-24 20:37:31 +00:00