intel/fs: Add a helper for emitting scan operations
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 1 Sep 2017 04:50:31 +0000 (21:50 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 7 Mar 2018 20:13:47 +0000 (12:13 -0800)
commit4150920b95b8a7db84cd4607ede09f42b85530bb
tree790ef480633b040a9f9c1bf401890523211a971a
parentb0858c1cc6711168087b6774f3dc02a73b14fed2
intel/fs: Add a helper for emitting scan operations

This commit adds a helper to the builder for emitting "scan" operations.
Given a binary operation #, a scan takes the vector [a0, a1, ..., aN]
and returns the vector [a0, a0 # a1, ..., a0 # a1 # ... # aN] where each
channel contains the combination of all previous channels.  The sequence
of instructions to perform the scan is fairly optimal; a 16-wide scan on
a 32-bit type is only 6 instructions.  The subgroup scan and reduction
operations will be implemented in terms of this.

Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/intel/compiler/brw_fs_builder.h
src/intel/compiler/brw_ir_fs.h