mesa/src/intel/compiler
Jason Ekstrand e581ddeeee intel/fs: Don't delete coalesced MOVs if they have a cmod
Shader-db results on ICL:

    total instructions in shared programs: 17133088 -> 17133287 (<.01%)
    instructions in affected programs: 61300 -> 61499 (0.32%)
    helped: 0
    HURT: 199

This means it's likely fixing 199 bugs. :-)  All the changed shaders are
in Mad Max.  It's surprisingly difficult to get the back-end compiler to
generate a pattern that hits this we don't tend to emit a lot coalescable
MOVs.  The pattern in Mad Max that's able to hit is fsign(fsat(x)) under
the right conditions.

Closes: #2820
Cc: mesa-stable@lists.freedesktop.org
Tested-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4773>
2020-04-29 16:45:51 +00:00
..
brw_cfg.cpp intel/ir: Remove scheduling-based cycle count estimates. 2020-04-28 23:01:27 -07:00
brw_cfg.h intel/ir: Remove scheduling-based cycle count estimates. 2020-04-28 23:01:27 -07:00
brw_clip.h
brw_clip_line.c
brw_clip_point.c
brw_clip_tri.c i965: Don't emit MOVs with undefined registers for Gen4 point clipping. 2018-02-28 15:03:51 -08:00
brw_clip_unfilled.c
brw_clip_util.c
brw_compile_clip.c intel/common: move gen_debug to intel/dev 2019-04-10 13:15:33 -07:00
brw_compile_sf.c intel/common: move gen_debug to intel/dev 2019-04-10 13:15:33 -07:00
brw_compiler.c nir/algebraic: don't undo lowering of 8/16-bit comparisons to 32-bit 2020-04-23 10:57:38 +00:00
brw_compiler.h anv: Emit pushed UBO bounds checking code in the back-end compiler 2020-04-17 14:48:06 +00:00
brw_dead_control_flow.cpp intel/compiler: Pass detailed dependency classes to invalidate_analysis() 2020-03-06 10:20:39 -08:00
brw_dead_control_flow.h
brw_debug_recompile.c intel/compiler: Add a "base class" for program keys 2019-07-10 19:35:55 +00:00
brw_disasm.c intel/gen12: Take into account opcode when decoding SWSB 2020-02-18 09:17:51 -08:00
brw_disasm_info.c intel/ir: Pass block cycle count information explicitly to disassembler. 2020-04-28 23:01:27 -07:00
brw_disasm_info.h intel/ir: Pass block cycle count information explicitly to disassembler. 2020-04-28 23:01:27 -07:00
brw_eu.cpp intel/disasm: SEND has two sources on Gen12+ 2020-01-31 17:23:39 +00:00
brw_eu.h intel/fs,vec4: Pull stall logic for memory fences up into the IR 2020-04-29 07:17:27 +00:00
brw_eu_compact.c intel/compiler: Handle invalid compacted immediates 2020-01-22 00:19:21 +00:00
brw_eu_defines.h intel/fs,vec4: Pull stall logic for memory fences up into the IR 2020-04-29 07:17:27 +00:00
brw_eu_emit.c intel/fs,vec4: Pull stall logic for memory fences up into the IR 2020-04-29 07:17:27 +00:00
brw_eu_util.c
brw_eu_validate.c remove final imports.h and imports.c bits 2020-04-21 11:09:04 -07:00
brw_fs.cpp intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_fs.h intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_fs_bank_conflicts.cpp intel/fs: Replace fs_visitor::bank_conflict_cycles() with stand-alone function. 2020-04-28 23:00:29 -07:00
brw_fs_builder.h intel/fs: Rename half() helpers to quarter(), allow index up to 3. 2020-04-28 23:00:29 -07:00
brw_fs_cmod_propagation.cpp intel/compiler: fix cmod propagation optimisations 2020-03-11 21:21:25 +00:00
brw_fs_combine_constants.cpp intel/compiler: Move idom tree calculation and related logic into analysis object 2020-03-06 10:21:03 -08:00
brw_fs_copy_propagation.cpp intel/compiler: Only GE and L modifiers are commutative for SEL 2020-04-17 08:21:43 -07:00
brw_fs_cse.cpp intel/compiler/fs: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:57 -08:00
brw_fs_dead_code_eliminate.cpp intel/compiler/fs: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:57 -08:00
brw_fs_generator.cpp intel/fs,vec4: Pull stall logic for memory fences up into the IR 2020-04-29 07:17:27 +00:00
brw_fs_live_variables.cpp intel/compiler: Silence unused parameter warning in fs_live_variables::setup_one_read 2020-04-17 08:21:40 -07:00
brw_fs_live_variables.h intel/compiler: Silence unused parameter warning in fs_live_variables::setup_one_read 2020-04-17 08:21:40 -07:00
brw_fs_lower_pack.cpp intel/compiler: Pass detailed dependency classes to invalidate_analysis() 2020-03-06 10:20:39 -08:00
brw_fs_lower_regioning.cpp intel/compiler: Pass detailed dependency classes to invalidate_analysis() 2020-03-06 10:20:39 -08:00
brw_fs_nir.cpp intel/fs: Only stall after sending all memory fence messages 2020-04-29 07:17:27 +00:00
brw_fs_reg_allocate.cpp replace _mesa_logbase2 with util_logbase2 2020-04-21 11:09:03 -07:00
brw_fs_register_coalesce.cpp intel/fs: Don't delete coalesced MOVs if they have a cmod 2020-04-29 16:45:51 +00:00
brw_fs_saturate_propagation.cpp intel/compiler/fs: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:57 -08:00
brw_fs_scoreboard.cpp intel/compiler: Silence unused parameter warning in update_inst_scoreboard 2020-04-17 08:21:42 -07:00
brw_fs_sel_peephole.cpp intel/compiler: Don't create 64-bit src1 immediates in opt_peephole_sel 2020-04-23 00:53:14 +00:00
brw_fs_validate.cpp intel: disable FS IR validation in release mode. 2018-10-15 18:10:27 -07:00
brw_fs_visitor.cpp intel/ir: Import shader performance analysis pass. 2020-04-28 23:01:03 -07:00
brw_gen_enum.h intel/compiler: Extract GEN_* macros into separate file 2020-01-22 00:19:20 +00:00
brw_inst.h intel/compiler: Fix array bounds warning on GCC 10. 2020-01-22 08:35:18 +01:00
brw_interpolation_map.c intel/compiler: Silence unused parameter warning in brw_interpolation_map.c 2019-03-06 08:35:36 -08:00
brw_ir.h intel/ir: Add missing initialization of backend_reg::offset during construction. 2020-04-28 23:00:29 -07:00
brw_ir_allocator.h intel/ir: Don't allow allocating zero registers 2018-12-11 21:26:23 -06:00
brw_ir_analysis.h intel/compiler: Define more detailed analysis dependency classes 2020-03-06 10:20:37 -08:00
brw_ir_fs.h intel/fs: Replace fs_visitor::bank_conflict_cycles() with stand-alone function. 2020-04-28 23:00:29 -07:00
brw_ir_performance.cpp intel/ir: Import shader performance analysis pass. 2020-04-28 23:01:03 -07:00
brw_ir_performance.h intel/ir: Import shader performance analysis pass. 2020-04-28 23:01:03 -07:00
brw_ir_vec4.h intel/vec4: Fix constness of vec4_instruction::reads_flag() and ::writes_flag(). 2020-04-28 23:00:29 -07:00
brw_nir.c intel/compiler: Drop nir_lower_to_source_mods() and related handling. 2020-04-21 21:42:21 +00:00
brw_nir.h intel/compiler: detect if atomic load store operations are used 2020-03-16 10:34:21 +00:00
brw_nir_analyze_boolean_resolves.c intel/fs: Mark source 0 of bcsel as needing Boolean resolve 2019-06-11 12:12:07 -07:00
brw_nir_analyze_ubo_ranges.c intel/compiler: Do not qsort zero sized array 2020-02-19 12:07:24 +02:00
brw_nir_attribute_workarounds.c nir/builder: Remove the use_fmov parameter from nir_swizzle 2019-05-24 08:38:11 -05:00
brw_nir_clamp_image_1d_2d_array_sizes.c intel: Implement Gen12 workaround for array textures of size 1 2020-01-26 22:27:03 +02:00
brw_nir_lower_alpha_to_coverage.c nir: Add alpha_to_coverage lowering pass 2019-10-21 11:27:29 -07:00
brw_nir_lower_conversions.c intel/compiler: add a NIR pass to lower conversions 2019-04-18 11:05:18 +02:00
brw_nir_lower_cs_intrinsics.c intel/compiler: Add support for variable workgroup size 2020-04-09 19:23:12 -07:00
brw_nir_lower_image_load_store.c intel/compiler: detect if atomic load store operations are used 2020-03-16 10:34:21 +00:00
brw_nir_lower_mem_access_bit_sizes.c anv: Improve brw_nir_lower_mem_access_bit_sizes 2020-04-03 20:26:54 +00:00
brw_nir_opt_peephole_ffma.c util: rename list_empty() to list_is_empty() 2019-10-28 11:24:38 +00:00
brw_nir_tcs_workarounds.c util: use C99 declaration in the for-loop set_foreach() macro 2018-10-25 12:43:18 +01:00
brw_nir_trig_workarounds.py intel/nir: do not apply the fsin and fcos trig workarounds for consts 2019-09-17 23:39:18 +03:00
brw_packed_float.c intel/compiler: Cast to target type before shifting left 2019-10-24 16:19:23 +02:00
brw_predicated_break.cpp intel/compiler: Pass detailed dependency classes to invalidate_analysis() 2020-03-06 10:20:39 -08:00
brw_reg.h replace _mesa_is_pow_two with util_is_power_of_two_* 2020-04-21 11:09:03 -07:00
brw_reg_type.c intel/compiler: Handle invalid inputs to brw_reg_type_to_*() 2020-01-22 00:19:21 +00:00
brw_reg_type.h intel/compiler: Add a INVALID_{,HW_}REG_TYPE macros 2020-01-22 00:19:20 +00:00
brw_schedule_instructions.cpp intel/ir: Remove scheduling-based cycle count estimates. 2020-04-28 23:01:27 -07:00
brw_shader.cpp intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_shader.h intel/compiler: Mark some methods and parameters const 2020-03-09 04:44:11 +00:00
brw_vec4.cpp intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_vec4.h intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_vec4_builder.h intel/compiler: Lower flrp32 on Gen11+ 2018-02-28 11:15:47 -08:00
brw_vec4_cmod_propagation.cpp intel/compiler: Pass detailed dependency classes to invalidate_analysis() 2020-03-06 10:20:39 -08:00
brw_vec4_copy_propagation.cpp intel/compiler: Don't copy prop source mods into PICK_HIGH_32BIT 2020-04-22 17:03:18 -07:00
brw_vec4_cse.cpp intel/compiler/vec4: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:59 -08:00
brw_vec4_dead_code_eliminate.cpp intel/compiler/vec4: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:59 -08:00
brw_vec4_generator.cpp intel/fs,vec4: Pull stall logic for memory fences up into the IR 2020-04-29 07:17:27 +00:00
brw_vec4_gs_nir.cpp intel/vec4: Drop all of the 64-bit varying code 2019-07-31 18:14:09 -05:00
brw_vec4_gs_visitor.cpp intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_vec4_gs_visitor.h
brw_vec4_live_variables.cpp intel/compiler: Drop invalidate_live_intervals() 2020-03-06 10:21:01 -08:00
brw_vec4_live_variables.h intel/compiler/vec4: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:59 -08:00
brw_vec4_nir.cpp intel/fs,vec4: Pull stall logic for memory fences up into the IR 2020-04-29 07:17:27 +00:00
brw_vec4_reg_allocate.cpp intel/compiler/vec4: Switch liveness analysis to IR analysis framework 2020-03-06 10:20:59 -08:00
brw_vec4_surface_builder.cpp intel/compiler: Re-prefix non-logical surface opcodes with VEC4 2019-02-28 16:58:20 -06:00
brw_vec4_surface_builder.h intel/vec4: Drop dead code for handling typed surface messages 2019-02-28 16:58:20 -06:00
brw_vec4_tcs.cpp intel/ir: Use brw::performance object instead of CFG cycle counts for codegen stats. 2020-04-28 23:01:27 -07:00
brw_vec4_tcs.h intel/compiler: Silence unused parameter warnings in vec4_tcs_visitor 2020-04-17 08:21:37 -07:00
brw_vec4_tes.cpp intel/vec4: Drop all of the 64-bit varying code 2019-07-31 18:14:09 -05:00
brw_vec4_tes.h
brw_vec4_visitor.cpp intel/ir: Import shader performance analysis pass. 2020-04-28 23:01:03 -07:00
brw_vec4_vs.h i965: Use NIR to lower legacy userclipping. 2019-07-24 18:00:13 +00:00
brw_vec4_vs_visitor.cpp i965: Use NIR to lower legacy userclipping. 2019-07-24 18:00:13 +00:00
brw_vue_map.c intel/fs: Allow multiple slots for position 2020-04-07 17:16:09 +00:00
brw_wm_iz.cpp intel: Use a system value for gl_FragCoord 2019-07-29 23:30:26 +00:00
gen6_gs_visitor.cpp intel/compiler: Prevent warnings in the following patch 2019-01-09 16:42:41 -08:00
gen6_gs_visitor.h
meson.build intel/ir: Import shader performance analysis pass. 2020-04-28 23:01:03 -07:00
test_eu_compact.cpp intel/compiler: Test compaction on Gen <= 12 2020-01-22 00:19:21 +00:00
test_eu_validate.cpp intel/ir: Pass block cycle count information explicitly to disassembler. 2020-04-28 23:01:27 -07:00
test_fs_cmod_propagation.cpp intel/compiler: fix cmod propagation optimisations 2020-03-11 21:21:25 +00:00
test_fs_copy_propagation.cpp intel/compiler: Pass backend_shader * to cfg_t() 2020-03-09 04:44:12 +00:00
test_fs_saturate_propagation.cpp intel/compiler: Pass backend_shader * to cfg_t() 2020-03-09 04:44:12 +00:00
test_fs_scoreboard.cpp intel/compiler: Pass backend_shader * to cfg_t() 2020-03-09 04:44:12 +00:00
test_vec4_cmod_propagation.cpp i965/vec4: Silence unused parameter warnings in vec4 compiler tests 2018-12-17 13:47:06 -08:00
test_vec4_copy_propagation.cpp i965/vec4: Silence unused parameter warnings in vec4 compiler tests 2018-12-17 13:47:06 -08:00
test_vec4_dead_code_eliminate.cpp i965/vec4/dce: Don't narrow the write mask if the flags are used 2018-12-17 13:47:06 -08:00
test_vec4_register_coalesce.cpp i965/vec4: Silence unused parameter warnings in vec4 compiler tests 2018-12-17 13:47:06 -08:00
test_vf_float_conversions.cpp