summaryrefslogtreecommitdiff
path: root/gcc/optabs.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r--gcc/optabs.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 2495fedef0b..91afce35a96 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -236,7 +236,8 @@ enum optab_index
OTI_reduc_umax,
OTI_reduc_smin,
OTI_reduc_umin,
- OTI_reduc_plus,
+ OTI_reduc_splus,
+ OTI_reduc_uplus,
/* Set specified field of vector operand. */
OTI_vec_set,
@@ -244,6 +245,9 @@ enum optab_index
OTI_vec_extract,
/* Initialize vector operand. */
OTI_vec_init,
+ /* Whole vector shift. The shift amount is in bits. */
+ OTI_vec_shl,
+ OTI_vec_shr,
/* Extract specified elements from vectors, for vector load. */
OTI_vec_realign_load,
@@ -358,11 +362,14 @@ extern GTY(()) optab optab_table[OTI_MAX];
#define reduc_umax_optab (optab_table[OTI_reduc_umax])
#define reduc_smin_optab (optab_table[OTI_reduc_smin])
#define reduc_umin_optab (optab_table[OTI_reduc_umin])
-#define reduc_plus_optab (optab_table[OTI_reduc_plus])
+#define reduc_splus_optab (optab_table[OTI_reduc_splus])
+#define reduc_uplus_optab (optab_table[OTI_reduc_uplus])
#define vec_set_optab (optab_table[OTI_vec_set])
#define vec_extract_optab (optab_table[OTI_vec_extract])
#define vec_init_optab (optab_table[OTI_vec_init])
+#define vec_shl_optab (optab_table[OTI_vec_shl])
+#define vec_shr_optab (optab_table[OTI_vec_shr])
#define vec_realign_load_optab (optab_table[OTI_vec_realign_load])
#define powi_optab (optab_table[OTI_powi])
@@ -575,4 +582,7 @@ bool expand_vec_cond_expr_p (tree, enum machine_mode);
/* Generate code for VEC_COND_EXPR. */
extern rtx expand_vec_cond_expr (tree, rtx);
+/* Generate code for VEC_LSHIFT_EXPR and VEC_RSHIFT_EXPR. */
+extern rtx expand_vec_shift_expr (tree, rtx);
+
#endif /* GCC_OPTABS_H */