aboutsummaryrefslogtreecommitdiff
path: root/gcc/optabs.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-01-27 16:55:07 -0800
committerRichard Henderson <rth@gcc.gnu.org>2005-01-27 16:55:07 -0800
commit046625fab2932bdc6827d9abdd895824dfbc80eb (patch)
tree3611918a36fd9acca7d65920e977e8e47fd831c5 /gcc/optabs.h
parent17a7d6d75a9f752c68a64c1a4f1de8e11b8d3384 (diff)
downloadgcc-046625fab2932bdc6827d9abdd895824dfbc80eb.zip
gcc-046625fab2932bdc6827d9abdd895824dfbc80eb.tar.gz
gcc-046625fab2932bdc6827d9abdd895824dfbc80eb.tar.bz2
builtins.c (expand_builtin_copysign): New.
* builtins.c (expand_builtin_copysign): New. (expand_builtin): Call it. * genopinit.c (optabs): Add copysign_optab. * optabs.c (init_optabs): Initialize it. (expand_copysign): New. * optabs.h (OTI_copysign, copysign_optab): New. (expand_copysign): Declare. * config/alpha/alpha.md (UNSPEC_COPYSIGN): New. (copysignsf3, ncopysignsf3, copysigndf3, ncopysigndf3): New. * config/i386/i386.c (ix86_build_signbit_mask): Split from ... (ix86_expand_fp_absneg_operator): ... here. (ix86_split_copysign): New. * config/i386/i386-protos.h: Update. * config/i386/i386.md (UNSPEC_COPYSIGN): New. (copysignsf3, copysigndf3): New. * config/ia64/ia64.md (UNSPEC_COPYSIGN): New. (copysignsf3, ncopysignsf3): New. (copysigndf3, ncopysigndf3): New. (copysignxf3, ncopysignxf3): New. * config/ia64/ia64.c (rtx_needs_barrier): Handle UNSPEC_COPYSIGN. From-SVN: r94357
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r--gcc/optabs.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 56f7e4c..a378a96 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -193,6 +193,8 @@ enum optab_index
OTI_tan,
/* Inverse tangent */
OTI_atan,
+ /* Copy sign */
+ OTI_copysign,
/* Compare insn; two operands. */
OTI_cmp,
@@ -311,6 +313,7 @@ extern GTY(()) optab optab_table[OTI_MAX];
#define rint_optab (optab_table[OTI_rint])
#define tan_optab (optab_table[OTI_tan])
#define atan_optab (optab_table[OTI_atan])
+#define copysign_optab (optab_table[OTI_copysign])
#define cmp_optab (optab_table[OTI_cmp])
#define ucmp_optab (optab_table[OTI_ucmp])
@@ -450,6 +453,9 @@ extern rtx expand_unop (enum machine_mode, optab, rtx, rtx, int);
extern rtx expand_abs_nojump (enum machine_mode, rtx, rtx, int);
extern rtx expand_abs (enum machine_mode, rtx, rtx, int, int);
+/* Expand the copysign operation. */
+extern rtx expand_copysign (rtx, rtx, rtx);
+
/* Generate an instruction with a given INSN_CODE with an output and
an input. */
extern void emit_unop_insn (int, rtx, rtx, enum rtx_code);