]> git.ipfire.org Git - thirdparty/gcc.git/commit
Enhance NARROW FLOAT_EXPR vectorization by truncating integer to lower precision.
authorliuhongt <hongtao.liu@intel.com>
Wed, 22 Feb 2023 09:54:46 +0000 (17:54 +0800)
committerliuhongt <hongtao.liu@intel.com>
Tue, 30 May 2023 23:17:43 +0000 (07:17 +0800)
commit3279b6223066d36d2e6880a137f80a46d3c82c8f
tree3c61ab079a190acf2f0b42ef2037194900444714
parente4c8f7024f02d8e223c6df7bd117e7615a553918
Enhance NARROW FLOAT_EXPR vectorization by truncating integer to lower precision.

Similar like WIDEN FLOAT_EXPR, when direct_optab is not existed, try
intermediate integer type whenever gimple ranger can tell it's safe.

.i.e.
When there's no direct optab for vector long long -> vector float, but
the value range of integer can be represented as int, try vector int
-> vector float if availble.

gcc/ChangeLog:

PR tree-optimization/108804
* tree-vect-patterns.cc (vect_get_range_info): Remove static.
* tree-vect-stmts.cc (vect_create_vectorized_demotion_stmts):
Add new parameter narrow_src_p.
(vectorizable_conversion): Enhance NARROW FLOAT_EXPR
vectorization by truncating to lower precision.
* tree-vectorizer.h (vect_get_range_info): New declare.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr108804.c: New test.
gcc/testsuite/gcc.target/i386/pr108804.c [new file with mode: 0644]
gcc/tree-vect-patterns.cc
gcc/tree-vect-stmts.cc
gcc/tree-vectorizer.h