diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-10-25 13:01:14 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-10-25 13:01:14 +0000 |
commit | 5f51ee596ed242a39203cb90a6b2b732b229d251 (patch) | |
tree | a42a7cd31e5e9d2deb0e1ba2a6a9064a8aeaef12 /gcc/optabs.h | |
parent | 08a0952465d102726544e2afb65c72bc6623ee0e (diff) | |
download | gcc-5f51ee596ed242a39203cb90a6b2b732b229d251.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118029 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r-- | gcc/optabs.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h index 69dcbe11b91..4670b5b7fb2 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); |