aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorHu, Lin1 <lin1.hu@intel.com>2024-02-01 15:15:01 +0800
committerHu, Lin1 <lin1.hu@intel.com>2024-06-27 15:55:48 +0800
commitc320a7efcd35ba6c6be70dc9b2fe562a9673e363 (patch)
tree8bbe1ad48d6751aa112ae15b10d119ef23a8f638 /gcc/tree-vectorizer.h
parentb55798c0fc5cb02512b58502961d8425fb60588f (diff)
downloadgcc-c320a7efcd35ba6c6be70dc9b2fe562a9673e363.zip
gcc-c320a7efcd35ba6c6be70dc9b2fe562a9673e363.tar.gz
gcc-c320a7efcd35ba6c6be70dc9b2fe562a9673e363.tar.bz2
vect: generate suitable convert insn for int -> int, float -> float and int <-> float.
gcc/ChangeLog: PR target/107432 * tree-vect-generic.cc (expand_vector_conversion): Support convert for int -> int, float -> float and int <-> float. * tree-vect-stmts.cc (vectorizable_conversion): Wrap the indirect convert part. (supportable_indirect_convert_operation): New function. * tree-vectorizer.h (supportable_indirect_convert_operation): Define the new function. gcc/testsuite/ChangeLog: PR target/107432 * gcc.target/i386/pr107432-1.c: New test. * gcc.target/i386/pr107432-2.c: Ditto. * gcc.target/i386/pr107432-3.c: Ditto. * gcc.target/i386/pr107432-4.c: Ditto. * gcc.target/i386/pr107432-5.c: Ditto. * gcc.target/i386/pr107432-6.c: Ditto. * gcc.target/i386/pr107432-7.c: Ditto.
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 60224f4..8eb3ec4 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -2277,6 +2277,10 @@ extern bool supportable_widening_operation (vec_info*, code_helper,
extern bool supportable_narrowing_operation (code_helper, tree, tree,
code_helper *, int *,
vec<tree> *);
+extern bool supportable_indirect_convert_operation (code_helper,
+ tree, tree,
+ vec<std::pair<tree, tree_code> > *,
+ tree = NULL_TREE);
extern unsigned record_stmt_cost (stmt_vector_for_cost *, int,
enum vect_cost_for_stmt, stmt_vec_info,