aboutsummaryrefslogtreecommitdiff
path: root/gcc/optabs.h
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2006-10-25 13:01:14 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2006-10-25 13:01:14 +0000
commitbb7f04236c6c8c1f248f27eb86d9eb486a93c64b (patch)
treea42a7cd31e5e9d2deb0e1ba2a6a9064a8aeaef12 /gcc/optabs.h
parentef984648a15c2c9b8b5127c1ac2e10f3f9793cec (diff)
downloadgcc-bb7f04236c6c8c1f248f27eb86d9eb486a93c64b.zip
gcc-bb7f04236c6c8c1f248f27eb86d9eb486a93c64b.tar.gz
gcc-bb7f04236c6c8c1f248f27eb86d9eb486a93c64b.tar.bz2
optabs.h (enum optab_index): Remove OTI_lrint.
2006-10-25 Richard Guenther <rguenther@suse.de> * optabs.h (enum optab_index): Remove OTI_lrint. (enum convert_optab_index): Add COI_lrint. (lrint_optab): Adjust. (expand_sfix_optab): Declare. * optabs.c (expand_sfix_optab): New function. (init_optabs): Init lrint_optab as conversion optab. * genopinit.c (lrint_optab): Change to a conversion optab. * builtins.c (expand_builtin_int_roundingfn_2): Adjust to expansion via conversion optab. * config/i386/i386.md (*fistdi2_1): Remove flag_unsafe_math_optimizations guard. (fistdi2, fistdi2_with_temp, *fist<mode>2_1, fist<mode>2, fist<mode>2_with_temp): Likewise. (lrint<mode>2): Split into... (lrintxf<mode>2): ... x87 part (lrint<mode>di2, lrint<mode>si2): ... and SSE parts. * config/i386/sse.md (sse_cvtss2si_2, sse_cvtss2_siq_2, sse2_cvtsd2si_2, sse2_cvtsd2siq_2): New insns for UNSPEC_FIX_NOTRUNC matching non-vector float modes. * doc/md.texi (lrintMN2): Document. From-SVN: r118029
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r--gcc/optabs.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 69dcbe1..4670b5b7 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -196,7 +196,6 @@ enum optab_index
OTI_round,
OTI_nearbyint,
OTI_rint,
- OTI_lrint,
/* Tangent */
OTI_tan,
/* Inverse tangent */
@@ -345,7 +344,6 @@ 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])
@@ -407,6 +405,8 @@ enum convert_optab_index
COI_sfloat,
COI_ufloat,
+ COI_lrint,
+
COI_MAX
};
@@ -421,6 +421,7 @@ extern GTY(()) convert_optab convert_optab_table[COI_MAX];
#define ufixtrunc_optab (convert_optab_table[COI_ufixtrunc])
#define sfloat_optab (convert_optab_table[COI_sfloat])
#define ufloat_optab (convert_optab_table[COI_ufloat])
+#define lrint_optab (convert_optab_table[COI_lrint])
/* These arrays record the insn_code of insns that may be needed to
perform input and output reloads of special objects. They provide a
@@ -597,6 +598,9 @@ extern void expand_float (rtx, rtx, int);
/* Generate code for a FIX_EXPR. */
extern void expand_fix (rtx, rtx, int);
+/* Generate code for float to integral conversion. */
+extern bool expand_sfix_optab (rtx, rtx, convert_optab);
+
/* Return tree if target supports vector operations for COND_EXPR. */
bool expand_vec_cond_expr_p (tree, enum machine_mode);