diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-21 21:45:06 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-21 21:45:06 +0000 |
commit | 27eda24040c703c6ecd3eadc44c78eb80098b995 (patch) | |
tree | 2e34198e0e1a0497de165774678adb850f5fdf36 /gcc/optabs.h | |
parent | ba9293d743480d445cf092990fc04951477c5871 (diff) | |
download | gcc-27eda24040c703c6ecd3eadc44c78eb80098b995.tar.gz |
* optabs.h (enum optab_index): Add new OTI_signbit.
(signbit_optab): Define corresponding macro.
(enum insn_code signbit_optab[]): Remove array.
* optabs.c (init_optabs): Initialize signbit_optab using init_optab.
(expand_copysign_absneg): If back end provides signbit insn, use it
instead of bit operations on floating point argument.
* builtins.c (enum insn_code signbit_optab[]): Remove array.
(expand_builtin_signbit): Check signbit_optab->handlers[].insn_code for
availability of signbit insn.
* config/i386/i386.md (signbit<mode>2): New insn pattern to implement
signbitf, signbit and signbitl built-ins as inline x87 intrinsics when
SSE mode is not active.
(isinf<mode>2): Disable for mfpmath=sse,387.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126813 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/optabs.h')
-rw-r--r-- | gcc/optabs.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/optabs.h b/gcc/optabs.h index aed7a5488a3..d8917ab5734 100644 --- a/gcc/optabs.h +++ b/gcc/optabs.h @@ -219,7 +219,8 @@ enum optab_index OTI_atan, /* Copy sign */ OTI_copysign, - + /* Signbit */ + OTI_signbit, /* Test for infinite value */ OTI_isinf, @@ -409,7 +410,7 @@ extern GTY(()) optab optab_table[OTI_MAX]; #define tan_optab (optab_table[OTI_tan]) #define atan_optab (optab_table[OTI_atan]) #define copysign_optab (optab_table[OTI_copysign]) - +#define signbit_optab (optab_table[OTI_signbit]) #define isinf_optab (optab_table[OTI_isinf]) #define cmp_optab (optab_table[OTI_cmp]) @@ -553,9 +554,6 @@ extern enum insn_code vcondu_gen_code[NUM_MACHINE_MODES]; /* This array records the insn_code of insns to perform block moves. */ extern enum insn_code movmem_optab[NUM_MACHINE_MODES]; -/* This array records the insn_code of insns to implement the signbit function. */ -extern enum insn_code signbit_optab[NUM_MACHINE_MODES]; - /* This array records the insn_code of insns to perform block sets. */ extern enum insn_code setmem_optab[NUM_MACHINE_MODES]; |