-
- Downloads
Rework VEC_PERM_EXPR folding
This patch reworks the VEC_PERM_EXPR folding so that more of it works for variable-length vectors. E.g. it means that we can now recognise variable-length permutes that reduce to a single vector, or cases in which a variable-length permute only needs one input. There should be no functional change for fixed-length vectors. 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * selftest.h (selftest::vec_perm_indices_c_tests): Declare. * selftest-run-tests.c (selftest::run_tests): Call it. * vector-builder.h (vector_builder::operator ==): New function. (vector_builder::operator !=): Likewise. * vec-perm-indices.h (vec_perm_indices::series_p): Declare. (vec_perm_indices::all_from_input_p): New function. * vec-perm-indices.c (vec_perm_indices::series_p): Likewise. (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise. * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder instead of reading the VECTOR_CST directly. Detect whether both vector inputs are the same before constructing the vec_perm_indices, and update the number of inputs argument accordingly. Use the utility functions added above. Only construct sel2 if we need to. From-SVN: r256098
Showing
- gcc/ChangeLog 16 additions, 0 deletionsgcc/ChangeLog
- gcc/fold-const.c 42 additions, 76 deletionsgcc/fold-const.c
- gcc/selftest-run-tests.c 1 addition, 0 deletionsgcc/selftest-run-tests.c
- gcc/selftest.h 1 addition, 0 deletionsgcc/selftest.h
- gcc/vec-perm-indices.c 98 additions, 0 deletionsgcc/vec-perm-indices.c
- gcc/vec-perm-indices.h 11 additions, 0 deletionsgcc/vec-perm-indices.h
- gcc/vector-builder.h 23 additions, 0 deletionsgcc/vector-builder.h
Loading
Please register or sign in to comment