/* 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.
OTI_mov,
/* Move, preserving high part of register. */
OTI_movstrict,
+ /* Move, with a misaligned memory. */
+ OTI_movmisalign,
/* Unary operations */
/* Negation */
OTI_tan,
/* Inverse tangent */
OTI_atan,
+ /* Copy sign */
+ OTI_copysign,
/* Compare insn; two operands. */
OTI_cmp,
OTI_vec_extract,
/* Initialize vector operand. */
OTI_vec_init,
- /* Extract specified elements from vectors, for vector store. */
- OTI_vec_realign_store,
/* Extract specified elements from vectors, for vector load. */
OTI_vec_realign_load,
#define mov_optab (optab_table[OTI_mov])
#define movstrict_optab (optab_table[OTI_movstrict])
+#define movmisalign_optab (optab_table[OTI_movmisalign])
#define neg_optab (optab_table[OTI_neg])
#define negv_optab (optab_table[OTI_negv])
#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])
#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_realign_store_optab (optab_table[OTI_vec_realign_store])
#define vec_realign_load_optab (optab_table[OTI_vec_realign_load])
/* Conversion optabs have their own table and indexes. */
extern rtx expand_binop (enum machine_mode, optab, rtx, rtx, rtx, int,
enum optab_methods);
+extern bool force_expand_binop (enum machine_mode, optab, rtx, rtx, rtx, int,
+ enum optab_methods);
+
/* Expand a binary operation with both signed and unsigned forms. */
extern rtx sign_expand_binop (enum machine_mode, optab, optab, rtx, rtx,
rtx, int, enum optab_methods);
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);
+extern rtx expand_copysign_absneg (enum machine_mode, rtx, rtx, rtx, int, bool);
+
/* 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);
extern int can_compare_p (enum rtx_code, enum machine_mode,
enum can_compare_purpose);
-extern rtx prepare_operand (int, rtx, int, enum machine_mode,
- enum machine_mode, int);
-
/* Return the INSN_CODE to use for an extend operation. */
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,