From 5e4aec98743d2122b089a926a74549780d3aee53 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 24 Jul 2012 15:25:18 -0700 Subject: [PATCH] Purge FIXUNS_TRUNC_LIKE_FIX_TRUNC From-SVN: r189826 --- gcc/ChangeLog | 16 ++++++++++++++++ gcc/config/cris/cris.h | 2 -- gcc/config/h8300/h8300.h | 4 ---- gcc/config/mn10300/mn10300.h | 4 ---- gcc/config/rs6000/rs6000.h | 5 ----- gcc/config/v850/v850.h | 4 ---- gcc/config/v850/v850.md | 14 ++++++++++++-- gcc/config/vax/vax.h | 4 ---- gcc/config/vax/vax.md | 7 ++++++- gcc/doc/tm.texi | 6 ------ gcc/doc/tm.texi.in | 6 ------ gcc/system.h | 2 +- 12 files changed, 35 insertions(+), 39 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ee809e01157..afc2b69d7e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2012-07-24 Richard Henderson + + * system.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Poison. + * config/cris/cris.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove. + * config/h8300/h8300.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove. + * config/mn10300/mn10300.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove. + * config/rs6000/rs6000.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove + comment reference. + * config/v850/v850.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove. + * config/v850/v850.md (fixuns_truncsfsi2, fixuns_truncdfsi2): New. + (fix_truncsfsi2, fix_truncdfsi2): Avoid double FIX. + * config/vax/vax.h (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove. + * config/vax/vax.md (fixuns_trunc): New. + * doc/tm.texi.in (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove. + * doc/tm.texi: Rebuild. + 2012-07-24 Richard Henderson * optabs.def: New file. diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h index 0ed4ced31a3..646ba90b4b9 100644 --- a/gcc/config/cris/cris.h +++ b/gcc/config/cris/cris.h @@ -1055,8 +1055,6 @@ enum cris_pic_symbol_type /* FIXME: Investigate CASE_VECTOR_SHORTEN_MODE to make sure HImode is not used when broken-.word could possibly fail (plus testcase). */ -#define FIXUNS_TRUNC_LIKE_FIX_TRUNC - /* This is the number of bytes that can be moved in one reasonably fast instruction sequence. For CRIS, this is two instructions: mem => reg, reg => mem. */ diff --git a/gcc/config/h8300/h8300.h b/gcc/config/h8300/h8300.h index 82e55f6628b..61e0dd2f846 100644 --- a/gcc/config/h8300/h8300.h +++ b/gcc/config/h8300/h8300.h @@ -566,10 +566,6 @@ struct cum_arg are unsigned. */ #define DEFAULT_SIGNED_CHAR 0 -/* This flag, if defined, says the same insns that convert to a signed fixnum - also convert validly to an unsigned one. */ -#define FIXUNS_TRUNC_LIKE_FIX_TRUNC - /* Max number of bytes we can move from memory to memory in one reasonably fast instruction. */ #define MOVE_MAX (TARGET_H8300H || TARGET_H8300S ? 4 : 2) diff --git a/gcc/config/mn10300/mn10300.h b/gcc/config/mn10300/mn10300.h index 79b20f5a4d8..eb4f2f9f42f 100644 --- a/gcc/config/mn10300/mn10300.h +++ b/gcc/config/mn10300/mn10300.h @@ -703,10 +703,6 @@ do { \ #define LOAD_EXTEND_OP(MODE) ZERO_EXTEND -/* This flag, if defined, says the same insns that convert to a signed fixnum - also convert validly to an unsigned one. */ -#define FIXUNS_TRUNC_LIKE_FIX_TRUNC - /* Max number of bytes we can move from memory to memory in one reasonably fast instruction. */ #define MOVE_MAX 4 diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 97d551c2b29..2c8a7dda1f6 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1821,11 +1821,6 @@ do { \ /* Define this as 1 if `char' should by default be signed; else as 0. */ #define DEFAULT_SIGNED_CHAR 0 -/* This flag, if defined, says the same insns that convert to a signed fixnum - also convert validly to an unsigned one. */ - -/* #define FIXUNS_TRUNC_LIKE_FIX_TRUNC */ - /* An integer expression for the size in bits of the largest integer machine mode that should actually be used. */ diff --git a/gcc/config/v850/v850.h b/gcc/config/v850/v850.h index f5b64deab2b..10ddd7b13a6 100644 --- a/gcc/config/v850/v850.h +++ b/gcc/config/v850/v850.h @@ -812,10 +812,6 @@ typedef enum /* Byte and short loads sign extend the value to a word. */ #define LOAD_EXTEND_OP(MODE) SIGN_EXTEND -/* This flag, if defined, says the same insns that convert to a signed fixnum - also convert validly to an unsigned one. */ -#define FIXUNS_TRUNC_LIKE_FIX_TRUNC - /* Max number of bytes we can move from memory to memory in one reasonably fast instruction. */ #define MOVE_MAX 4 diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md index 4ac565383cd..f479ff6322e 100644 --- a/gcc/config/v850/v850.md +++ b/gcc/config/v850/v850.md @@ -1938,7 +1938,7 @@ ;; float -> int (define_insn "fix_truncsfsi2" [(set (match_operand:SI 0 "register_operand" "=r") - (fix:SI (fix:SF (match_operand:SF 1 "register_operand" "r"))))] + (fix:SI (match_operand:SF 1 "register_operand" "r")))] "TARGET_V850E2V3" "trncf.sw %1,%0" [(set_attr "length" "4") @@ -1947,13 +1947,23 @@ (define_insn "fix_truncdfsi2" [(set (match_operand:SI 0 "register_operand" "=r") - (fix:SI (fix:DF (match_operand:DF 1 "even_reg_operand" "r"))))] + (fix:SI (match_operand:DF 1 "even_reg_operand" "r")))] "TARGET_V850E2V3" "trncf.dw %1,%0" [(set_attr "length" "4") (set_attr "cc" "none_0hit") (set_attr "type" "fpu")]) +(define_expand "fixuns_truncsfsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (fix:SI (match_operand:SF 1 "register_operand" "r")))] + "TARGET_V850E2V3") + +(define_expand "fixuns_truncdfsi2" + [(set (match_operand:SI 0 "register_operand" "=r") + (fix:SI (match_operand:DF 1 "even_reg_operand" "r")))] + "TARGET_V850E2V3") + ;; int -> float (define_insn "floatsisf2" [(set (match_operand:SF 0 "register_operand" "=r") diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h index 37e3d108f3f..9d23fd058f5 100644 --- a/gcc/config/vax/vax.h +++ b/gcc/config/vax/vax.h @@ -455,10 +455,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES }; /* Define this as 1 if `char' should by default be signed; else as 0. */ #define DEFAULT_SIGNED_CHAR 1 -/* This flag, if defined, says the same insns that convert to a signed fixnum - also convert validly to an unsigned one. */ -#define FIXUNS_TRUNC_LIKE_FIX_TRUNC - /* Max number of bytes we can move from memory to memory in one reasonably fast instruction. */ #define MOVE_MAX 8 diff --git a/gcc/config/vax/vax.md b/gcc/config/vax/vax.md index 32f50fd3367..afc31293d6d 100644 --- a/gcc/config/vax/vax.md +++ b/gcc/config/vax/vax.md @@ -318,9 +318,14 @@ (define_insn "fix_trunc2" [(set (match_operand:VAXint 0 "nonimmediate_operand" "=g") - (fix:VAXint (fix:VAXfp (match_operand:VAXfp 1 "general_operand" "gF"))))] + (fix:VAXint (match_operand:VAXfp 1 "general_operand" "gF")))] "" "cvt %1,%0") + +(define_expand "fixuns_trunc2" + [(set (match_operand:VAXint 0 "nonimmediate_operand" "") + (fix:VAXint (match_operand:VAXfp 1 "general_operand")))] + "") ;;- All kinds of add instructions. diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 9f6b5dd0ff1..ff743c8f19c 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -10339,12 +10339,6 @@ Define this macro if loading short immediate values into registers sign extends. @end defmac -@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC -Define this macro if the same instructions that convert a floating -point number to a signed fixed point number also convert validly to an -unsigned one. -@end defmac - @deftypefn {Target Hook} {unsigned int} TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum machine_mode @var{mode}) When @option{-ffast-math} is in effect, GCC tries to optimize divisions by the same divisor, by turning them into multiplications by diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index df597c2a207..85d9d1de057 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -10205,12 +10205,6 @@ Define this macro if loading short immediate values into registers sign extends. @end defmac -@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC -Define this macro if the same instructions that convert a floating -point number to a signed fixed point number also convert validly to an -unsigned one. -@end defmac - @hook TARGET_MIN_DIVISIONS_FOR_RECIP_MUL When @option{-ffast-math} is in effect, GCC tries to optimize divisions by the same divisor, by turning them into multiplications by diff --git a/gcc/system.h b/gcc/system.h index 572271c3c70..e3a72887e06 100644 --- a/gcc/system.h +++ b/gcc/system.h @@ -888,7 +888,7 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN; IDENT_ASM_OP UNALIGNED_SHORT_ASM_OP UNALIGNED_INT_ASM_OP \ UNALIGNED_LONG_ASM_OP UNALIGNED_DOUBLE_INT_ASM_OP \ USE_COMMON_FOR_ONE_ONLY IFCVT_EXTRA_FIELDS IFCVT_INIT_EXTRA_FIELDS \ - CASE_USE_BIT_TESTS + CASE_USE_BIT_TESTS FIXUNS_TRUNC_LIKE_FIX_TRUNC /* Hooks that are no longer used. */ #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE \