diff options
author | Richard Henderson <rth@redhat.com> | 2011-10-13 20:31:23 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2011-10-13 20:31:23 -0700 |
commit | d7943c8b140b77226e40e32d10fcaf5dd786ef6a (patch) | |
tree | 853fb9c2eda007bb7110b6aeb291f76f4011742d /gcc/optabs.h | |
parent | 5066ab2ee8ccdde331e871303cdfa7d44e461fcc (diff) | |
download | gcc-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.h | 12 |
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); |