mesa/src/intel/compiler
Jason Ekstrand db6ca13efc intel/fs: Emit LINE+MAC for LINTERP with unaligned coordinates
On g4x through Sandy Bridge, src1 (the coordinates) of the PLN
instruction is required to be an even register number.  When it's odd
(which can happen with SIMD32), we have to emit a LINE+MAC combination
instead.  Unfortunately, we can't just fall through to the gen4 case
because the input registers are still set up for PLN which lays out the
four src1 registers differently in SIMD16 than LINE.

v2 (Jason Ekstrand):
 - Take advantage of both accumulators and emit LINE LINE MAC MAC
   (Based on a patch from Francisco Jerez)
 - Unify the gen4 and gen4x-6 cases using a loop

v3 (Jason Ekstrand):
 - Don't unify gen4 with gen4x-6 as this turns out to be more fragile
   than first thought without reworking the gen4 barycentric coordinate
   layout.

Reviewed-by: Matt Turner <mattst88@gmail.com>
2018-06-28 13:19:38 -07:00
..
.gitignore
brw_cfg.cpp intel/cfg: Represent divergent control flow paths caused by non-uniform loop execution. 2017-12-07 18:27:05 -08:00
brw_cfg.h intel/compiler: consistently use ifndef guards over pragma once 2017-03-22 16:55:22 +00:00
brw_clip.h i965: Move clip program compilation to the compiler 2017-05-26 07:58:01 -07:00
brw_clip_line.c i965: Move clip program compilation to the compiler 2017-05-26 07:58:01 -07:00
brw_clip_point.c i965: Move clip program compilation to the compiler 2017-05-26 07:58:01 -07:00
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 i965: Move clip program compilation to the compiler 2017-05-26 07:58:01 -07:00
brw_clip_util.c i965: Move clip program compilation to the compiler 2017-05-26 07:58:01 -07:00
brw_compile_clip.c i965: Rewrite disassembly annotation code 2017-11-17 12:14:38 -08:00
brw_compile_sf.c i965: Move SF compilation to the compiler 2017-05-26 07:58:01 -07:00
brw_compiler.c intel: activate the gl_BaseVertex lowering 2018-05-02 11:24:46 +02:00
brw_compiler.h intel/fs: Rework KSP data to be SIMD width-based 2018-06-28 13:19:38 -07:00
brw_dead_control_flow.cpp
brw_dead_control_flow.h intel/compiler: consistently use ifndef guards over pragma once 2017-03-22 16:55:22 +00:00
brw_disasm.c i965/fs: Add infrastructure for generating CSEL instructions. 2018-03-08 15:26:26 -08:00
brw_disasm_info.c i965: Move mistakenly placed line 2018-02-05 09:50:56 -08:00
brw_disasm_info.h i965: Stop including brw_cfg.h in brw_disasm_info.h 2017-11-17 21:51:16 -08:00
brw_eu.c intel/eu: Use a struct copy instead of a memcpy 2018-06-05 15:51:01 -07:00
brw_eu.h intel/eu: Return new instruction to caller from brw_fb_WRITE(). 2018-06-28 13:19:38 -07:00
brw_eu_compact.c intel/compiler: Add instruction compaction support on Gen11 2018-02-28 11:15:47 -08:00
brw_eu_defines.h i965: Add ARB_fragment_shader_interlock support. 2018-06-01 16:36:39 +01:00
brw_eu_emit.c intel/eu: Fix pixel interpolator queries for SIMD32. 2018-06-28 13:19:38 -07:00
brw_eu_util.c intel/compiler: whitespace cleanups 2017-03-13 11:16:35 +00:00
brw_eu_validate.c intel/compiler: Add Gen11+ native float type 2018-02-28 11:15:47 -08:00
brw_fs.cpp intel/fs: Rework INTERPOLATE_AT_PER_SLOT_OFFSET 2018-06-28 13:19:38 -07:00
brw_fs.h intel/fs: Remove program key argument from generator. 2018-06-28 13:19:38 -07:00
brw_fs_bank_conflicts.cpp intel/fs/bank_conflicts: Use posix_memalign() instead of overaligned new to obtain vector storage. 2017-12-21 15:19:59 -08:00
brw_fs_builder.h i965/fs: Add infrastructure for generating CSEL instructions. 2018-03-08 15:26:26 -08:00
brw_fs_cmod_propagation.cpp i965/fs: Propagate conditional modifiers from not instructions 2018-06-15 17:22:27 -07:00
brw_fs_combine_constants.cpp
brw_fs_copy_propagation.cpp intel/fs: Optimize and simplify the copy propagation dataflow logic. 2018-01-17 11:56:08 -08:00
brw_fs_cse.cpp intel/fs: Replace the CINTERP opcode with a simple MOV 2018-05-29 15:44:50 -07:00
brw_fs_dead_code_eliminate.cpp
brw_fs_generator.cpp intel/fs: Emit LINE+MAC for LINTERP with unaligned coordinates 2018-06-28 13:19:38 -07:00
brw_fs_live_variables.cpp intel/fs: Restrict live intervals to the subset possibly reachable from any definition. 2017-12-07 18:27:04 -08:00
brw_fs_live_variables.h intel/fs: Restrict live intervals to the subset possibly reachable from any definition. 2017-12-07 18:27:04 -08:00
brw_fs_lower_conversions.cpp i965/compiler: handle conversion to smaller type in the lowering pass for that 2018-05-05 12:41:02 +02:00
brw_fs_lower_pack.cpp
brw_fs_nir.cpp intel/fs: Rework INTERPOLATE_AT_PER_SLOT_OFFSET 2018-06-28 13:19:38 -07:00
brw_fs_reg_allocate.cpp intel/fs: Take into account amount of data read in spilling cost heuristic. 2017-04-24 11:01:40 -07:00
brw_fs_register_coalesce.cpp
brw_fs_saturate_propagation.cpp i965/fs: Handle negating immediates on MADs when propagating saturates 2017-11-21 10:13:07 -08:00
brw_fs_sel_peephole.cpp i965/fs: Do not move MOVs writing the flag outside of control flow 2017-07-20 16:56:49 -07:00
brw_fs_surface_builder.cpp i965/fs: Add byte scattered read message and fs support 2017-12-06 08:57:18 +01:00
brw_fs_surface_builder.h i965/fs: Add byte scattered read message and fs support 2017-12-06 08:57:18 +01:00
brw_fs_validate.cpp
brw_fs_visitor.cpp intel/fs: Don't enable dual source blend if no outputs are written 2018-06-28 13:19:38 -07:00
brw_inst.h intel/compiler/icl: Clear "null render target" bit in extended message descriptor 2018-03-22 09:56:09 -07:00
brw_interpolation_map.c
brw_ir_allocator.h
brw_ir_fs.h intel/fs: Add explicit last_rt flag to fb writes orthogonal to eot. 2018-05-29 15:44:50 -07:00
brw_ir_vec4.h intel/compiler: Add scheduler deps for instructions that implicitly read g0 2018-04-24 14:31:21 -04:00
brw_nir.c nir: Rework lower_locals_to_regs to use deref instructions 2018-06-22 20:54:00 -07:00
brw_nir.h i965: remove unused brw_nir_lower_cs_shared() 2018-02-07 08:38:01 +11:00
brw_nir_analyze_boolean_resolves.c
brw_nir_analyze_ubo_ranges.c intel/compiler: Properly consider UBO loads that cross 32B boundaries. 2018-06-14 14:58:59 -07:00
brw_nir_attribute_workarounds.c i965: Drop support for the legacy SNORM -> Float equation. 2018-01-02 16:51:42 -08:00
brw_nir_lower_cs_intrinsics.c i965/fs: Implement basic SPIR-V subgroup intrinsics 2018-03-07 12:13:47 -08:00
brw_nir_opt_peephole_ffma.c
brw_nir_tcs_workarounds.c nir: Get rid of nir_shader::stage 2017-10-20 12:49:17 -07:00
brw_nir_trig_workarounds.py intel: use a flag instead of setting PYTHONPATH 2017-09-27 09:07:28 -07:00
brw_packed_float.c
brw_predicated_break.cpp
brw_reg.h intel/compiler: fix brw_imm_w for negative 16-bit integers 2018-05-03 11:40:25 +02:00
brw_reg_type.c intel/compiler: Check for unsupported register sizes. 2018-03-16 09:27:16 -07:00
brw_reg_type.h intel/compiler: Add Gen11+ native float type 2018-02-28 11:15:47 -08:00
brw_schedule_instructions.cpp intel/compiler: Add scheduler deps for instructions that implicitly read g0 2018-04-24 14:31:21 -04:00
brw_shader.cpp intel/fs: Emit LINE+MAC for LINTERP with unaligned coordinates 2018-06-28 13:19:38 -07:00
brw_shader.h i965: Add negative_equals methods 2018-03-26 08:50:43 -07:00
brw_vec4.cpp intel/fs: Remove program key argument from generator. 2018-06-28 13:19:38 -07:00
brw_vec4.h i965/vec4: Fix null destination register in 3-source instructions 2018-03-26 08:50:44 -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 i965/vec4: Propagate conditional modifiers from compares to adds 2018-03-26 08:50:43 -07:00
brw_vec4_copy_propagation.cpp i965: Support copy propagating of untyped atomic surface indexes. 2017-09-26 15:35:14 -07:00
brw_vec4_cse.cpp i965/vec4: Allow CSE on subset VF constant loads 2018-03-08 15:26:26 -08:00
brw_vec4_dead_code_eliminate.cpp i965/vec4/dce: improve track of partial flag register writes 2017-04-14 14:56:09 -07:00
brw_vec4_generator.cpp i965: Add ARB_fragment_shader_interlock support. 2018-06-01 16:36:39 +01:00
brw_vec4_gs_nir.cpp i965/vec4: Delete the system value infastructure 2017-05-09 15:08:07 -07:00
brw_vec4_gs_visitor.cpp intel/fs: Remove program key argument from generator. 2018-06-28 13:19:38 -07:00
brw_vec4_gs_visitor.h i965/vec4: Delete the system value infastructure 2017-05-09 15:08:07 -07:00
brw_vec4_live_variables.cpp
brw_vec4_live_variables.h i965/vec4: consider subregister offset in live variables 2017-04-14 14:56:08 -07:00
brw_vec4_nir.cpp i965: Combine {VS,FS}_OPCODE_GET_BUFFER_SIZE opcodes. 2017-12-30 20:30:34 -08:00
brw_vec4_reg_allocate.cpp i965/vec4: Return float from spill_cost_for_type() 2017-08-21 14:45:44 -07:00
brw_vec4_surface_builder.cpp i965/vec4: Fix swizzles on atomic sources. 2017-09-26 15:35:11 -07:00
brw_vec4_surface_builder.h
brw_vec4_tcs.cpp intel/fs: Remove program key argument from generator. 2018-06-28 13:19:38 -07:00
brw_vec4_tcs.h i965/vec4: Delete the system value infastructure 2017-05-09 15:08:07 -07:00
brw_vec4_tes.cpp i965/vec4: Delete the system value infastructure 2017-05-09 15:08:07 -07:00
brw_vec4_tes.h i965/vec4: Delete the system value infastructure 2017-05-09 15:08:07 -07:00
brw_vec4_visitor.cpp compiler: int8/uint8 support 2018-03-14 10:08:42 -04:00
brw_vec4_vs.h i965: Drop support for the legacy SNORM -> Float equation. 2018-01-02 16:51:42 -08:00
brw_vec4_vs_visitor.cpp i965: Drop support for the legacy SNORM -> Float equation. 2018-01-02 16:51:42 -08:00
brw_vue_map.c
brw_wm_iz.cpp nir: Embed the shader_info in the nir_shader again 2017-05-09 15:07:47 -07:00
gen6_gs_visitor.cpp i965/gen6/gs: Handle case where a GS doesn't allocate VUE 2018-06-26 08:18:55 +02:00
gen6_gs_visitor.h
meson.build intel/compiler: Use gen_get_device_info() in test_eu_validate 2018-03-16 13:20:21 -07:00
test_eu_compact.cpp intel/ir: Fix invalid type aliasing with undefined behavior in test_eu_compact. 2018-02-27 11:42:39 -08:00
test_eu_validate.cpp intel/compiler: Readd ICL to test_eu_validate.cpp 2018-03-22 09:56:09 -07:00
test_fs_cmod_propagation.cpp i965/fs: Propagate conditional modifiers from compares to adds 2018-03-26 08:50:43 -07:00
test_fs_copy_propagation.cpp
test_fs_saturate_propagation.cpp i965/fs: Check ADD/MAD with immediates in satprop unit test 2017-11-21 10:13:07 -08:00
test_vec4_cmod_propagation.cpp
test_vec4_copy_propagation.cpp
test_vec4_register_coalesce.cpp
test_vf_float_conversions.cpp