Purge FIXUNS_TRUNC_LIKE_FIX_TRUNC
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Jul 2012 22:25:18 +0000 (22:25 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 24 Jul 2012 22:25:18 +0000 (22:25 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189826 138bc75d-0d04-0410-961f-82ee72b054a4

12 files changed:
gcc/ChangeLog
gcc/config/cris/cris.h
gcc/config/h8300/h8300.h
gcc/config/mn10300/mn10300.h
gcc/config/rs6000/rs6000.h
gcc/config/v850/v850.h
gcc/config/v850/v850.md
gcc/config/vax/vax.h
gcc/config/vax/vax.md
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/system.h

index ee809e0..afc2b69 100644 (file)
@@ -1,5 +1,21 @@
 2012-07-24  Richard Henderson  <rth@redhat.com>
 
+       * 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<VAXfp><VAXint>): New.
+       * doc/tm.texi.in (FIXUNS_TRUNC_LIKE_FIX_TRUNC): Remove.
+       * doc/tm.texi: Rebuild.
+
+2012-07-24  Richard Henderson  <rth@redhat.com>
+
        * optabs.def: New file.
        * Makefile.in (OPTABS_H): Add insn-opinit.h.
        (MOSTLYCLEANFILES): Likewise.
index 0ed4ced..646ba90 100644 (file)
@@ -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.  */
index 82e55f6..61e0dd2 100644 (file)
@@ -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)
index 79b20f5..eb4f2f9 100644 (file)
@@ -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
index 97d551c..2c8a7dd 100644 (file)
@@ -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.  */
 
index f5b64de..10ddd7b 100644 (file)
@@ -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
index 4ac5653..f479ff6 100644 (file)
 ;; 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")
 
 (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")
index 37e3d10..9d23fd0 100644 (file)
@@ -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
index 32f50fd..afc3129 100644 (file)
 
 (define_insn "fix_trunc<VAXfp:mode><VAXint:mode>2"
   [(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<VAXfp:fsfx><VAXint:isfx> %1,%0")
+
+(define_expand "fixuns_trunc<VAXfp:mode><VAXint:mode>2"
+  [(set (match_operand:VAXint 0 "nonimmediate_operand" "")
+       (fix:VAXint (match_operand:VAXfp 1 "general_operand")))]
+  "")
 \f
 ;;- All kinds of add instructions.
 
index 9f6b5dd..ff743c8 100644 (file)
@@ -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
index df597c2..85d9d1d 100644 (file)
@@ -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
index 572271c..e3a7288 100644 (file)
@@ -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  \