aboutsummaryrefslogtreecommitdiff
path: root/gcc/expmed.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2018-01-03 21:46:16 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2018-01-03 21:46:16 +0000
commit6a3c127cc4e198bd20ae32c37c93cdf7defb0871 (patch)
tree26147d6f8dcd086b063ed6d907ba6ab1c313bf36 /gcc/expmed.c
parent98ac791361227ed388237207baf629981cef03f7 (diff)
downloadgcc-6a3c127cc4e198bd20ae32c37c93cdf7defb0871.zip
gcc-6a3c127cc4e198bd20ae32c37c93cdf7defb0871.tar.gz
gcc-6a3c127cc4e198bd20ae32c37c93cdf7defb0871.tar.bz2
Improve vectorization COND_EXPR <bool op bool, ...>
This patch allows us to recognise: ... = bool1 != bool2 ? x : y as equivalent to: bool tmp = bool1 ^ bool2; ... = tmp ? x : y For the latter we were already able to find the natural number of vector units for tmp based on the types that feed bool1 and bool2, whereas with the former we would simply treat bool1 and bool2 as vectorised 8-bit values, possibly requiring them to be packed and unpacked from their natural width. This is used by a later SVE patch. 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When handling COND_EXPRs with boolean comparisons, try to find a better basis for the mask type than the boolean itself. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r256207
Diffstat (limited to 'gcc/expmed.c')
0 files changed, 0 insertions, 0 deletions