diff options
author | Caio Marcelo de Oliveira Filho <[email protected]> | 2018-06-27 14:39:54 -0700 |
---|---|---|
committer | Caio Marcelo de Oliveira Filho <[email protected]> | 2018-07-27 10:51:25 -0700 |
commit | 134b5a7047f97fbf2537c5e4f31fa08264e1c130 (patch) | |
tree | 9b45982b75c328b58caefd77e4e0321a6726cdd4 /src/compiler/glsl/opt_copy_propagation.cpp | |
parent | 399228ecad37f420be3028165b94d5d8d33516fc (diff) |
glsl: teach copy_propagation_elements to deal with whole variables
Keep information in acp_entry whether the entry is full or not, and
use the ACP in more nodes when visiting the instructions:
- add_copy: write whole variables to the ACP state (regardless the
type).
- visit(ir_dereference_variable *): perform the propagation here if we have a
full candidate. Element-wise here doesn't apply because the mask
isn't available at this point.
- visit_leave(ir_assignment *): process beyond scalar and vector, as
the full variables might have other types.
Also import an improvement from opt_copy_propagation.cpp: if ir_call
is an intrinsic, we know the variables affected, so keep going.
v2: (all from Eric Anholt)
Describe how acp_entry attributes are used.
Don't do book-keeping to avoid adding repeated element to
the dsts in write_elements().
v3: Use _mesa_set_remove_key. (Thomas Helland)
Reviewed-by: Eric Anholt <[email protected]>
Reviewed-by: Thomas Helland <[email protected]>
Diffstat (limited to 'src/compiler/glsl/opt_copy_propagation.cpp')
0 files changed, 0 insertions, 0 deletions