summaryrefslogtreecommitdiff
path: root/gcc/optabs.h
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-03 15:13:26 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-03 15:13:26 +0000
commit6cf89e0496c6011f63a9bc1f9a37e09274f1f6ab (patch)
treef49377e311033773555fb0a2471ab04986fefafe /gcc/optabs.h
parent9adacac79c8a02257d837ad96e3428e9d0222c06 (diff)
downloadgcc-6cf89e0496c6011f63a9bc1f9a37e09274f1f6ab.tar.gz
Vector shuffling patch from Artem Shinkarov.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179462 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r--gcc/optabs.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 56df6718462..5d5593bb095 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -617,6 +617,7 @@ enum convert_optab_index
#define vec_store_lanes_optab (&convert_optab_table[COI_vec_store_lanes])
#define vcond_optab (&convert_optab_table[(int) COI_vcond])
#define vcondu_optab (&convert_optab_table[(int) COI_vcondu])
+#define vshuffle_optab (&direct_optab_table[(int) DOI_vshuffle])
/* Contains the optab used for each rtx code. */
extern optab code_to_optab[NUM_RTX_CODE + 1];
@@ -638,6 +639,9 @@ enum direct_optab_index
DOI_reload_in,
DOI_reload_out,
+ /* Vector shuffling. */
+ DOI_vshuffle,
+
/* Block move operation. */
DOI_movmem,
@@ -884,6 +888,12 @@ extern rtx expand_vec_cond_expr (tree, tree, tree, tree, rtx);
/* Generate code for VEC_LSHIFT_EXPR and VEC_RSHIFT_EXPR. */
extern rtx expand_vec_shift_expr (sepops, rtx);
+/* Return tree if target supports vector operations for VEC_SHUFFLE_EXPR. */
+bool expand_vec_shuffle_expr_p (enum machine_mode, tree, tree, tree);
+
+/* Generate code for VEC_SHUFFLE_EXPR. */
+extern rtx expand_vec_shuffle_expr (tree, tree, tree, tree, rtx);
+
/* Return the insn used to implement mode MODE of OP, or CODE_FOR_nothing
if the target does not have such an insn. */