[Mesa-dev] [PATCH 00/21] DW Multiplication fixes (+gpu_shader5 on gen8+)

Ben Widawsky benjamin.widawsky at intel.com
Mon Dec 22 19:29:10 PST 2014


This patch series is kind of a pot luck of dword multiplication patches. It
started off as an attempt to make sure we're adhering to the rigorous
requirements on Cherryview, but turned into making sure we could properly due
SIMD16 multiples across the board.

The series primarily accomplishes 3 things:
1. Enable ARB_gpu_shader5 on gen8+
1b. Enable the new QW type for full 32x32 multiplies on GEN8
2. Enable SIMD16 programs with dword multiplies (falling back as needed to SIMD8
for just the mul operations)
3. Provide an internal dword multiply interface
3b. Add a bunch of assertions for the various cases.

I don't have performance data, and I don't expect measurable improvements.
Although, it is possible that #1b and #2 actually do improve things.

Oddly I was expecting to see some tests get fixed by the patch series, but other
than enabling 1242 new passing tests (and 20 new failures that match other
generations), I see no change. I am however optimistic that the series will
prevent future failures.
(BDW does add 1 new pass, but I am not sure if it's real):
spec/ARB_texture_multisample/texelFetch fs sampler2DMSArray 4 98x1x9-98x129x9:fail pass

Ben Widawsky (19):
  i965/vec4: Correct MUL destination hazard
  i965: Fix assertion in brw_reg_type_letters
  i965: Add QWORD sizes to type_sz macro
  i965/fs: Disallow SIMD16 multiplies on GEN8
  i965/fs: Implement SIMD16 64-bit integer multiplies on Gen 8.
  i965/vec4: implement imul_high for gen8
  i965: Extract is_dword test
  i965/vec4: Address mul/mach constraints
  i965: Add assertions for MACH instruction
  i965: Extract scalar region checking logic
  i965/eu: Add new MUL assertions
  i965: Disallow saturation for MACH operations
  i965: Enable ARB_GPU_SHADER5 for gen8+
  i965/fs: Extract dword multiplies
  i965/fs: Add W*W mul shortcut
  i965/vec4: Extract dword multiplies
  i965: Add some dw mul operands fixes
  i965/fs: Add users of emit_mul_dw
  i965/vec4: Add users of emit_mul_dw

Matt Turner (2):
  i965/fs: Implement SIMD16 integer multiplies on Gen 7.
  i965/fs: Implement SIMD16 64-bit integer multiplies on Gen 7.

 src/mesa/drivers/dri/i965/brw_defines.h            |   3 +
 src/mesa/drivers/dri/i965/brw_eu.c                 |   2 +-
 src/mesa/drivers/dri/i965/brw_eu.h                 |  21 +++
 src/mesa/drivers/dri/i965/brw_eu_emit.c            | 148 +++++++++++++++++----
 src/mesa/drivers/dri/i965/brw_fs.cpp               | 125 +++++++++++++++++
 src/mesa/drivers/dri/i965/brw_fs.h                 |   5 +
 src/mesa/drivers/dri/i965/brw_fs_generator.cpp     |  37 ++----
 .../dri/i965/brw_fs_saturate_propagation.cpp       |   2 +-
 src/mesa/drivers/dri/i965/brw_fs_visitor.cpp       |  72 ++--------
 src/mesa/drivers/dri/i965/brw_reg.h                |  22 +++
 src/mesa/drivers/dri/i965/brw_shader.cpp           |  12 +-
 src/mesa/drivers/dri/i965/brw_shader.h             |   2 +-
 src/mesa/drivers/dri/i965/brw_vec4.cpp             | 103 ++++++++++++--
 src/mesa/drivers/dri/i965/brw_vec4.h               |   6 +
 .../drivers/dri/i965/brw_vec4_copy_propagation.cpp |   3 +-
 src/mesa/drivers/dri/i965/brw_vec4_generator.cpp   |  12 ++
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp     |  38 ++----
 src/mesa/drivers/dri/i965/intel_extensions.c       |   5 +-
 18 files changed, 457 insertions(+), 161 deletions(-)

-- 
2.2.1



More information about the mesa-dev mailing list