diff options
author | Kenneth Graunke <[email protected]> | 2016-08-08 13:57:29 -0700 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-01-12 09:47:29 +1100 |
commit | fd957b17511b9a7654e70e0f4a21c2c7547f95c6 (patch) | |
tree | da402384b559b927f890fbc6e43c8702caf2b6b4 /src/compiler/nir/nir_repair_ssa.c | |
parent | e8328e55e7ac26bbf3b3a47a1bb1cae4ab9130a2 (diff) |
nir: Introduce a nir_opt_move_comparisons() pass.
This tries to move comparisons (a common source of boolean values)
closer to their first use. For GPUs which use condition codes,
this can eliminate a lot of temporary booleans and comparisons
which reload the condition code register based on a boolean.
V2: (Timothy Arceri)
- fix move comparision for phis so we dont end up with:
vec1 32 ssa_227 = phi block_34: ssa_1, block_38: ssa_240
vec1 32 ssa_235 = feq ssa_227, ssa_1
vec1 32 ssa_230 = phi block_34: ssa_221, block_38: ssa_235
- add nir_op_i2b/nir_op_f2b to the list of comparisons.
V3: (Timothy Arceri)
- tidy up suggested by Jason.
- add inot/fnot to move comparison list
V4: (Jason Ekstrand)
- clean up move_comparison_source
- get rid of the tuple
- rework phi handling
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Ian Romanick <[email protected]> [v1]
Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src/compiler/nir/nir_repair_ssa.c')
0 files changed, 0 insertions, 0 deletions