nir: Add an expression matching framework
authorJason Ekstrand <jason.ekstrand@intel.com>
Fri, 14 Nov 2014 05:19:28 +0000 (21:19 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 15 Jan 2015 15:20:20 +0000 (07:20 -0800)
commit0057dfd673c62741bd9eba34759f3539940068a2
tree6bd84d8edf86393f18b511c7cc5dada280ab64d1
parenta94d1c248153a50923d8639123f956ec1961a837
nir: Add an expression matching framework

This framework provides a simple way to do simple search-and-replace
operations on NIR code.  The nir_search.h header provides four simple data
structures for representing expressions:  nir_value and four subtypes:
nir_variable, nir_constant, and nir_expression.  An expression tree can
then be represented by nesting these data structures as needed.  The
nir_replace_instr function takes an instruction, an expression, and a
value; if the instruction matches the expression, it is replaced with a new
chain of instructions to generate the given replacement value.  The
framework keeps track of swizzles on sources and automatically generates
the currect swizzles for the replacement value.

Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
src/glsl/Makefile.sources
src/glsl/nir/nir_search.c [new file with mode: 0644]
src/glsl/nir/nir_search.h [new file with mode: 0644]