summaryrefslogtreecommitdiff
path: root/gcc/optabs.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2011-10-13 20:31:23 -0700
committerRichard Henderson <rth@gcc.gnu.org>2011-10-13 20:31:23 -0700
commitd7943c8b140b77226e40e32d10fcaf5dd786ef6a (patch)
tree853fb9c2eda007bb7110b6aeb291f76f4011742d /gcc/optabs.h
parent5066ab2ee8ccdde331e871303cdfa7d44e461fcc (diff)
downloadgcc-d7943c8b140b77226e40e32d10fcaf5dd786ef6a.tar.gz
Expand vector permutation with vec_perm and vec_perm_const.
From-SVN: r179958
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r--gcc/optabs.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 41ae7eb412d..926d21f09dc 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -638,9 +638,6 @@ enum direct_optab_index
DOI_reload_in,
DOI_reload_out,
- /* Vector shuffling. */
- DOI_vec_perm,
-
/* Block move operation. */
DOI_movmem,
@@ -688,6 +685,10 @@ enum direct_optab_index
/* Atomic clear with release semantics. */
DOI_sync_lock_release,
+ /* Vector permutation. */
+ DOI_vec_perm,
+ DOI_vec_perm_const,
+
DOI_MAX
};
@@ -704,7 +705,6 @@ typedef struct direct_optab_d *direct_optab;
#endif
#define reload_in_optab (&direct_optab_table[(int) DOI_reload_in])
#define reload_out_optab (&direct_optab_table[(int) DOI_reload_out])
-#define vec_perm_optab (&direct_optab_table[(int) DOI_vec_perm])
#define movmem_optab (&direct_optab_table[(int) DOI_movmem])
#define setmem_optab (&direct_optab_table[(int) DOI_setmem])
#define cmpstr_optab (&direct_optab_table[(int) DOI_cmpstr])
@@ -734,6 +734,8 @@ typedef struct direct_optab_d *direct_optab;
(&direct_optab_table[(int) DOI_sync_lock_test_and_set])
#define sync_lock_release_optab \
(&direct_optab_table[(int) DOI_sync_lock_release])
+#define vec_perm_optab (&direct_optab_table[DOI_vec_perm])
+#define vec_perm_const_optab (&direct_optab_table[(int) DOI_vec_perm_const])
/* Target-dependent globals. */
struct target_optabs {
@@ -889,7 +891,7 @@ extern rtx expand_vec_cond_expr (tree, tree, tree, tree, rtx);
extern rtx expand_vec_shift_expr (sepops, rtx);
/* Return tree if target supports vector operations for VEC_PERM_EXPR. */
-bool expand_vec_perm_expr_p (enum machine_mode, tree, tree, tree);
+extern bool can_vec_perm_expr_p (tree, tree);
/* Generate code for VEC_PERM_EXPR. */
extern rtx expand_vec_perm_expr (tree, tree, tree, tree, rtx);