OSDN Git Service

2005-03-29 Ed Falis <falis@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / optabs.h
index a5942da..53958fc 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for code generation pass of GNU compiler.
-   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -171,6 +171,8 @@ enum optab_index
   OTI_exp2,
   /* Exponential - 1*/
   OTI_expm1,
+  /* Load exponent of a floating point number */
+  OTI_ldexp,
   /* Radix-independent exponent */
   OTI_logb,
   OTI_ilogb,
@@ -189,10 +191,13 @@ enum optab_index
   OTI_round,
   OTI_nearbyint,
   OTI_rint,
+  OTI_lrint,
   /* Tangent */
   OTI_tan,
   /* Inverse tangent */
   OTI_atan,
+  /* Copy sign */
+  OTI_copysign,
 
   /* Compare insn; two operands.  */
   OTI_cmp,
@@ -233,6 +238,9 @@ enum optab_index
   /* Extract specified elements from vectors, for vector load.  */
   OTI_vec_realign_load,
 
+  /* Perform a raise to the power of integer.  */
+  OTI_powi,
+
   OTI_MAX
 };
 
@@ -297,6 +305,7 @@ extern GTY(()) optab optab_table[OTI_MAX];
 #define exp10_optab (optab_table[OTI_exp10])
 #define exp2_optab (optab_table[OTI_exp2])
 #define expm1_optab (optab_table[OTI_expm1])
+#define ldexp_optab (optab_table[OTI_ldexp])
 #define logb_optab (optab_table[OTI_logb])
 #define ilogb_optab (optab_table[OTI_ilogb])
 #define log_optab (optab_table[OTI_log])
@@ -309,8 +318,10 @@ extern GTY(()) optab optab_table[OTI_MAX];
 #define round_optab (optab_table[OTI_round])
 #define nearbyint_optab (optab_table[OTI_nearbyint])
 #define rint_optab (optab_table[OTI_rint])
+#define lrint_optab (optab_table[OTI_lrint])
 #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])
@@ -337,6 +348,8 @@ extern GTY(()) optab optab_table[OTI_MAX];
 #define vec_init_optab (optab_table[OTI_vec_init])
 #define vec_realign_load_optab (optab_table[OTI_vec_realign_load])
 
+#define powi_optab (optab_table[OTI_powi])
+
 /* Conversion optabs have their own table and indexes.  */
 enum convert_optab_index
 {
@@ -450,6 +463,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);
@@ -488,11 +504,6 @@ extern enum insn_code can_extend_p (enum machine_mode, enum machine_mode, int);
 extern rtx gen_extend_insn (rtx, rtx, enum machine_mode,
                            enum machine_mode, int);
 
-/* Initialize the tables that control conversion between fixed and
-   floating values.  */
-extern void init_fixtab (void);
-extern void init_floattab (void);
-
 /* Call this to reset the function entry for one optab.  */
 extern void set_optab_libfunc (optab, enum machine_mode, const char *);
 extern void set_conv_libfunc (convert_optab, enum machine_mode,